电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

BOS批量插入数据然后关联表实战

来源:金蝶云社区作者:金蝶2024-09-1617

BOS批量插入数据然后关联表实战

引用的dll:
Kingdee.K3.FIN.App.Core.dll
Kingdee.BOS.App.dll
Kingdee.BOS.ServiceHelper.dll

方法:SaveFPJSZZGLRW

    [Description("发票反写应收"), HotUpdate]
    public class INVOPRT : AbstractOperationServicePlugIn
    {
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            //e.FieldKeys.Add("");将需要应用的字段Key加入
            e.FieldKeys.Add("FBillNo");
            //结算组织
            e.FieldKeys.Add("FSETTLEORGID");
        }
  public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
 if (strOP.EqualsIgnoreCase("Save"))
            {
                //销售普通发票,销售增值税专票 等 要更新(开票人、收款人、复核人)字段;
                List<Dto> dtos = e.DataEntitys.Select(P => new Dto()
                {
                    FId = Convert.ToInt64(P["Id"])
                   ,FSettle_ParentOrg_Id = Convert.ToInt64((P["SETTLEORGID"] as DynamicObject)["ParentOrg_Id"])
                }).Distinct().ToList();
                this.SaveFPJSZZGLRW(this.Context, dtos);
            }
        }

#region 销售普通发票,销售增值税专票 等 要更新(开票人、收款人、复核人)字段

        private class Dto
        {
            public Int64 FId { get; set; }
            public Int64 FSettle_ParentOrg_Id { get; set; }
        }

        private void SaveFPJSZZGLRW(Context context, List<Dto> list)
        {
            if (context == null || list.IsEmpty()) return;

            //创建表结构
            string tmpTableName = CommonFunction.GetTempTableName(context);
            StringBuilder sbSQL = new StringBuilder();
            sbSQL.AppendFormat(" Create table {0}  ( ", tmpTableName);
            sbSQL.Append("FId int not null ");
            sbSQL.Append(",FSettle_ParentOrg_Id int not null");
            sbSQL.Append(" ) ");
            DBUtils.Execute(context, sbSQL.ToString());

            //插入数据
            Dictionary<string, DbType> columnInfos = new Dictionary<string, DbType>();
            columnInfos.Add("FId", DbType.Int64);
            columnInfos.Add("FSettle_ParentOrg_Id", DbType.Int64);
            BulkInsertAdapter bulkInsertAdapter = new BulkInsertAdapter(context, columnInfos, tmpTableName, list.Count);
            foreach (Dto dto in list)
            {
                DataRow newRow = bulkInsertAdapter.NewRow;
                newRow["FId"] = dto.FId;
                newRow["FSettle_ParentOrg_Id"] = dto.FSettle_ParentOrg_Id;
                bulkInsertAdapter.Insert(newRow);
            }
            bulkInsertAdapter.Finish();

            //创建索引
            string indexPrefix12 = tmpTableName.Substring(6, 12);
            List<SqlObject> listSqlObject = new List<SqlObject>();
            string text = string.Format(" IF NOT EXISTS (SELECT 1 FROM KSQL_INDEXES WHERE KSQL_INDNAME = 'idx_{0}_1') CREATE INDEX idx_{0}_1 ON {1} (FId)", indexP

BOS批量插入数据然后关联表实战

引用的dll:Kingdee.K3.FIN.App.Core.dllKingdee.BOS.App.dllKingdee.BOS.ServiceHelper.dll方法:SaveFPJSZZGLRW [Description("发票反写...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信