From 211bb749ab809dab4276c66a5d23bb5ea053ba8f Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期二, 16 二月 2021 15:28:30 +0800
Subject: [PATCH] nothing

---
 src/BLL/Demo.BillView/Demo.BillView.csproj                       |    6 
 src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs                          |   10 
 src/BLL/Demo.BillView/PRD/SAL_SaleOrderSplitBill.cs              |  840 ++++++++++++++++++++++++++++
 src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs                |    6 
 src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs |    6 
 src/Model/Demo.Model/Model/DayPlanMaterial.cs                    |    8 
 src/BLL/Demo.BillView/PRD/Pro_DayPlanPushSCHB.cs                 |    6 
 src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs                         |  150 +++++
 src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs                 |    6 
 src/BLL/Demo.BillView/PRD/Pro_PPBomSave.cs                       |  266 +++++++++
 src/BLL/Demo.BillView/PRD/Pro_TlPushAudit.cs                     |    6 
 src/BLL/Demo.BillView/PRD/Pro_TlPush.cs                          |    2 
 src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs                          |   82 ++
 src/BLL/Demo.BillView/PRD/Pro_PPBomSubmit.cs                     |  292 ++++++++++
 src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs                |   38 
 15 files changed, 1,677 insertions(+), 47 deletions(-)

diff --git a/src/BLL/Demo.BillView/Demo.BillView.csproj b/src/BLL/Demo.BillView/Demo.BillView.csproj
index 2b286e1..353a3df 100644
--- a/src/BLL/Demo.BillView/Demo.BillView.csproj
+++ b/src/BLL/Demo.BillView/Demo.BillView.csproj
@@ -46,6 +46,9 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>C:\Users\14027\Desktop\鏈�鏂扮増bin鏂囦欢3.16\Kingdee.BOS.dll</HintPath>
     </Reference>
+    <Reference Include="Kingdee.BOS.App">
+      <HintPath>..\..\..\..\..\鍔炲叕\K3Cloud\WebSite\bin\Kingdee.BOS.App.dll</HintPath>
+    </Reference>
     <Reference Include="Kingdee.BOS.App.Core, Version=7.6.2003.9, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>C:\Users\14027\Desktop\鏈�鏂扮増bin鏂囦欢3.16\Kingdee.BOS.App.Core.dll</HintPath>
@@ -219,13 +222,16 @@
     <Compile Include="PRD\ProTardinessDetails.cs" />
     <Compile Include="PRD\ProCompleteAnalysisMateriel.cs" />
     <Compile Include="PRD\ProCompleteAnalysisDetails.cs" />
+    <Compile Include="PRD\Pro_DayPlan.cs" />
     <Compile Include="PRD\Pro_DayPlanCheckSelectMenu.cs" />
     <Compile Include="PRD\Pro_DayPlanPushSCHB.cs" />
+    <Compile Include="PRD\Pro_PPBomSubmit.cs" />
     <Compile Include="PRD\Pro_SCHBFSH.cs" />
     <Compile Include="PRD\Pro_SCLLFSH.cs" />
     <Compile Include="PRD\Pro_SCHBSH.cs" />
     <Compile Include="PRD\Pro_SCLLSH.cs" />
     <Compile Include="PRD\Pro_RjhylqdDatachange.cs" />
+    <Compile Include="PRD\Pro_PPBomSave.cs" />
     <Compile Include="PRD\Pro_WorkBillPlatformXNQT.cs" />
     <Compile Include="PRD\Pro_ShowParameter.cs" />
     <Compile Include="PRD\Pro_ZJDBSH.cs" />
diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs
new file mode 100644
index 0000000..585f532
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs
@@ -0,0 +1,150 @@
+锘縰sing Kingdee.BOS;
+using Kingdee.BOS.Core.Bill.PlugIn;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
+using Kingdee.BOS.Core.List;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+namespace Demo.BillView.PRD
+{
+    [Description("[鏃ヨ鍒掑伐鍗昡 琛ㄥ崟鎻掍欢"), HotUpdate]
+    public class Pro_DayPlan : AbstractBillPlugIn
+    {
+        public override void BarItemClick(BarItemClickEventArgs e)
+        {
+            base.BarItemClick(e);
+            try
+            {
+                if (e.BarItemKey.ToUpper() == "TBDAYPLANMENU")
+                {
+                    string pageId = Guid.NewGuid().ToString();
+                    ListShowParameter showParameter = new ListShowParameter();
+                    showParameter.FormId = "Paez_Sc_WorkBillAutoSortBill";
+                    showParameter.PageId = pageId;
+                    showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID;
+                    showParameter.IsLookUp = true;
+                    this.View.ShowForm(showParameter);
+
+                    this.View.ShowForm(showParameter, delegate (FormResult result)
+                    {
+                        object returnData = result.ReturnData;
+                        if (returnData is ListSelectedRowCollection)
+                        {
+                            ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
+                            if (listSelectedRowCollection != null)
+                            {
+                                DynamicObjectDataRow datarow = (DynamicObjectDataRow)listSelectedRowCollection[0].DataRow;
+
+                                this.View.Model.SetValue("FMATERIALID", datarow.DynamicObject["FHMaterID_Id"].ToString());
+                                this.View.Model.SetValue("FPROORDERNO", datarow.DynamicObject["FSCOrderNo"].ToString());
+                                this.View.Model.SetValue("FQty", datarow.DynamicObject["FHOrderNeedQty"].ToString());
+                                this.View.Model.SetValue("FDayPlanFID", datarow.DynamicObject["FID"].ToString());
+                                this.View.Model.SetValue("FDayPlanFentryID", datarow.DynamicObject["t1_FENTRYID"].ToString());
+                                this.View.Model.SetValue("FSourceBillNo", datarow.DynamicObject["FBillNo"].ToString());
+                                this.View.Model.SetValue("FSourceBillType", datarow.DynamicObject["FBillTypeID"].ToString());
+                            }
+                        }
+                    });
+                }
+            }
+            catch (Exception ex)
+            {
+                this.View.ShowErrMessage(ex.Message.ToString());
+            }
+        }
+
+        public override void EntryBarItemClick(BarItemClickEventArgs e)
+        {
+            base.EntryBarItemClick(e);
+            if (e.BarItemKey.ToUpper() == "TBROWCLOSE")
+            {
+                int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();        //鍗曟嵁浣撴暟鎹� 聽聽
+                Array.Sort(selectedIndexsR);
+                DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;聽 聽聽 聽聽聽//閫変腑琛屾暟鎹� 聽
+              聽聽DynamicObject selectedRow;
+                StringBuilder result = new StringBuilder();
+                List<string> sqlList = new List<string>();
+                foreach (var item in selectedIndexsR)
+                {
+                    selectedRow = selectedRowsDy[item];
+                    string sql = string.Format(@"
+/*dialect*/
+select isnull(c.FRealQty,0)FRealQty from Sc_WorkBillSortBillSub a
+left join T_PRD_MORPTENTRY b on a.FEntryID = b.FDAYPLANFID
+left join T_PRD_INSTOCKENTRY c on b.FENTRYID = c.FSrcEntryId
+where a.FEntryID in ({0})", selectedRow["Id"]);
+                    decimal FRealQty = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);
+                    if (FRealQty == 0)
+                    {
+                        result.Append($"鍒嗗綍琛岋細{selectedRow["Seq"]}锛屾棩璁″垝鏄庣粏鏈笅鎺ㄧ敓鎴愮敓浜у叆搴撳崟\r\n");
+                        continue;
+                    }
+                    sql = string.Format(@"
+/*dialect*/
+select count(*)res from Sc_WorkBillSortBillSub a 
+left join Sc_DayPlanPPBomBillMain b on a.FEntryID = b.FDayPlanFID
+left join Sc_DayPlanPPBomBillSub c on b.FID = c.FID
+where a.FEntryID in ({0})
+and FISSUETYPE in (1, 2)
+and FDwyl * {1} < FPickedQty", selectedRow["Id"], FRealQty);
+                    decimal Count = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);
+                    if (Count > 0)
+                    {
+                        result.Append($"鍒嗗綍琛岋細{selectedRow["Seq"]}锛屼笅娓搁鏂欏崟鐨勫凡棰嗘枡鏁板皬浜庡叆搴撶殑鏍囧噯鐢ㄩ噺\r\n");
+                        continue;
+                    }
+                    sql = string.Format(@"
+/*dialect*/
+update Sc_WorkBillSortBillSub set 
+FInStockCount = {0},
+FNotInStockCount = FHQty - {0},
+FHEntryCloseDate = getdate(),
+FHCloseTypeSub = 1
+where FEntryID={1}", FRealQty, selectedRow["Id"]);
+                    sqlList.Add(sql);
+                }
+                DBServiceHelper.ExecuteBatch(Context, sqlList);
+                this.View.Refresh();
+                if (string.IsNullOrEmpty(result.ToString()))
+                    this.View.ShowMessage("鎿嶄綔鎴愬姛");
+                else
+                    this.View.ShowErrMessage(result.ToString());
+                
+            }
+            else if (e.BarItemKey.ToUpper() == "TBROWCANCELCLOSE")
+            {
+                int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();        //鍗曟嵁浣撴暟鎹� 聽聽
+                Array.Sort(selectedIndexsR);
+                DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;聽 聽聽 聽聽聽//閫変腑琛屾暟鎹� 聽
+              聽聽DynamicObject selectedRow;
+                List<string> sqlList = new List<string>();
+                foreach (var item in selectedIndexsR)
+                {
+                    selectedRow = selectedRowsDy[item];
+                    string sql = string.Format(@"
+/*dialect*/
+update Sc_WorkBillSortBillSub set 
+FInStockCount = 0,
+FNotInStockCount =0,
+FHEntryCloseDate = null,
+FHCloseTypeSub = 0
+where FEntryID={0}", selectedRow["Id"]);
+                    sqlList.Add(sql);
+                }
+                DBServiceHelper.ExecuteBatch(Context, sqlList);
+                this.View.Refresh();
+                this.View.ShowMessage("鎿嶄綔鎴愬姛");
+            }
+
+        }
+    }
+}
diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushSCHB.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushSCHB.cs
index c4b36a9..53d2e61 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushSCHB.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushSCHB.cs
@@ -145,7 +145,7 @@
                 }
             }
             // 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
-            IDBService dbService = ServiceHelper.GetService<IDBService>();
+            IDBService dbService =Kingdee.K3.SCM.App.ServiceHelper.GetService<IDBService>();
             dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
         }
 
@@ -188,7 +188,7 @@
         /// <returns></returns>
         private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos)
         {
-            IViewService viewService = ServiceHelper.GetService<IViewService>();
+            IViewService viewService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IViewService>();
             string formId = "PRD_MO";
 
             // 鎸囧畾闇�瑕佸姞杞界殑鐢ㄦ枡娓呭崟瀛楁
@@ -238,7 +238,7 @@
         /// <returns></returns>
         private string GetPOEntryTableNumber()
         {
-            IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>();
+            IBusinessFlowService bfMetaService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IBusinessFlowService>();
             var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FTreeEntity");
             return tableDefine.TableNumber;
         }
diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs
index 75c3257..b0b1e2e 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB.cs
@@ -141,7 +141,7 @@
                 }
             }
             // 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
-            IDBService dbService = ServiceHelper.GetService<IDBService>();
+            IDBService dbService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IDBService>();
             dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
         }
 
@@ -186,7 +186,7 @@
         /// <returns></returns>
         private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos)
         {
-            IViewService viewService = ServiceHelper.GetService<IViewService>();
+            IViewService viewService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IViewService>();
             string formId = "PRD_PPBOM";
 
             // 鎸囧畾闇�瑕佸姞杞界殑鐢ㄦ枡娓呭崟瀛楁
@@ -239,7 +239,7 @@
         /// <returns></returns>
         private string GetPOEntryTableNumber()
         {
-            IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>();
+            IBusinessFlowService bfMetaService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IBusinessFlowService>();
             var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity");
             return tableDefine.TableNumber;
         }
diff --git a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs
index 14eaf46..9592eaa 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_DayPlanPushZJDB2.cs
@@ -143,7 +143,7 @@
                 }
             }
             // 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
-            IDBService dbService = ServiceHelper.GetService<IDBService>();
+            IDBService dbService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IDBService>();
             dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
         }
 
@@ -179,7 +179,7 @@
         /// <returns></returns>
         private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos)
         {
-            IViewService viewService = ServiceHelper.GetService<IViewService>();
+            IViewService viewService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IViewService>();
             string formId = "Paez_Sc_DayPlanPPBomBill";
 
             // 鎸囧畾闇�瑕佸姞杞界殑閿�鍞鍗曞瓧娈�
@@ -230,7 +230,7 @@
         /// <returns></returns>
         private string GetPOEntryTableNumber()
         {
-            IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>();
+            IBusinessFlowService bfMetaService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IBusinessFlowService>();
             var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity");
             return tableDefine.TableNumber;
         }
diff --git a/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs b/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs
index 83fd6ca..7a4d035 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_MaterialRequisitionAuditDayPlan.cs
@@ -145,7 +145,7 @@
                 }
             }
             // 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
-            IDBService dbService = ServiceHelper.GetService<IDBService>();
+            IDBService dbService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IDBService>();
             dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
         }
         /// <summary>
@@ -185,7 +185,7 @@
         /// <returns></returns>
         private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos)
         {
-            IViewService viewService = ServiceHelper.GetService<IViewService>();
+            IViewService viewService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IViewService>();
             string formId = "PRD_PPBOM";
 
             // 鎸囧畾闇�瑕佸姞杞界殑閿�鍞鍗曞瓧娈�
@@ -237,7 +237,7 @@
         /// <returns></returns>
         private string GetPOEntryTableNumber()
         {
-            IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>();
+            IBusinessFlowService bfMetaService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IBusinessFlowService>();
             var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity");
             return tableDefine.TableNumber;
         }
diff --git a/src/BLL/Demo.BillView/PRD/Pro_PPBomSave.cs b/src/BLL/Demo.BillView/PRD/Pro_PPBomSave.cs
new file mode 100644
index 0000000..4d030c4
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/Pro_PPBomSave.cs
@@ -0,0 +1,266 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using Kingdee.BOS.Core.Bill;
+using Kingdee.BOS.Core.Bill.PlugIn;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Newtonsoft.Json.Linq;
+using ZD.Cloud.Logger;
+using ZD.Cloud.WebApi;
+using Demo.Model.Model;
+using System.Diagnostics;
+using System.Linq;
+using Kingdee.BOS.Core.Bill.PlugIn.Args;
+
+namespace Demo.BillView.PRD
+{
+    /// <summary>
+    /// 鐢熶骇鐢ㄦ枡娓呭崟淇濆瓨 鍒锋柊鏃ヨ鍒掔敤鏂欐竻鍗曟暟鎹�
+    /// </summary>
+    [Description("鐢熶骇鐢ㄦ枡娓呭崟淇濆瓨琛ㄥ崟鎻掍欢")]
+    [Kingdee.BOS.Util.HotUpdate]
+    public class Pro_PPBomSave : AbstractBillPlugIn
+    {
+        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+        public override void AfterSave(AfterSaveEventArgs e)
+        {
+            base.AfterSave(e);
+            try
+            {
+                string a;
+                string sql = "";
+
+                //var FID = this.View.Model.GetPKValue();
+                var fBillNo = this.View.Model.GetValue("FBILLNO");
+                Stopwatch sw = new Stopwatch();
+                sw.Start();//寮�濮嬭鏃�
+                LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曞噯澶囨暟鎹�");
+                //閿佸畾鐨勬棩璁″垝涓嶇敓鎴�
+                try
+                {
+                    //鍙樻洿 鍏堝幓鍒犻櫎璋冩暣杩囩殑鏁版嵁
+                    sql = $"/*dialect*/ exec deleteDayPlanPpbomBillSub '{fBillNo}'";
+                    DBServiceHelper.Execute(Context, sql);
+                    sql = string.Format(@"
+/*dialect*/
+  select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,t4.FNumerator,t4.FDenominator,convert(decimal(18,2),(t4.FNumerator/t4.FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,t4.FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO,
+t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,Tc.FIssueType,t4.FMaterialType,t12.FEntryID
+as FDayPlanPpbomFEntryId
+FROM Sc_WorkBillSortBillSub t1
+JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
+JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
+JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID
+JOIN T_PRD_PPBOMENTRY_C Tc ON T4.FENTRYID=Tc.FENTRYID
+join T_ORG_Organizations torg ON tc.FOWNERID = torg.FORGID 
+JOIN T_BD_MATERIAL T5 ON T3.FMATERIALID=T5.FMATERIALID
+JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID
+LEFT JOIN T_BD_UNIT T7 ON T3.FUNITID = T7.FUNITID
+LEFT JOIN T_BD_UNIT T8 ON T4.FUNITID = T8.FUNITID
+ LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID
+ LEFT join Sc_DayPlanPPBomBillSub t12 on t9.FID=t12.FID and T4.FENTRYID=t12.FHPPBomEntryID 
+ LEFT join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID
+ LEFT join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID
+ WHERE T4.FMustQty>0
+and T3.FBILLNO='{0}'
+", fBillNo);
+                    LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曞噯澶囨暟鎹畇ql:" + sql);
+                    DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
+                    DataTable dt = ds.Tables[0];
+                    List<DayPlanMaterial> DayPlanMaterial = new List<DayPlanMaterial>();
+                    if (dt.Rows.Count > 0)
+                    {
+                        foreach (DataRow dr in dt.Rows)
+                        {
+                            DayPlanMaterial.Add(new Demo.Model.Model.DayPlanMaterial
+                            {
+                                FID = dr["DayPlanFID"].ToString(),
+                                FEntryID = dr["FEntryID"].ToString(),
+                                FHDate = DateTime.Now.ToString(),
+                                FOrgId = dr["FORGNUMBER"].ToString(),
+                                FHMaterID = dr["FNUMBER"].ToString(),
+                                FHWorkDate = dr["FHMASTERDATE"].ToString(),
+                                FHQty = dr["FHQTY"].ToString(),
+                                FHUnitID = dr["FUNITNUMBER"].ToString(),
+                                FDayPlanFID = dr["FEntryID"].ToString(),
+                                FHMaterSubID = dr["FNUMBER2"].ToString(),
+                                FHUnitSubID = dr["FUNITNUMBER2"].ToString(),
+                                FHQtyMust = dr["FHQtyMust"].ToString(),
+                                FHQtySub = dr["FHQtyMust"].ToString(),
+                                FHPPBomInterID = dr["FPPBOM"].ToString(),
+                                FHPPBomEntryID = dr["FPPBOMENTRYID"].ToString(),
+                                FHSourceID = dr["FHSOURCENUMBER"].ToString(),
+                                FNumerator = dr["FNumerator"].ToString(),
+                                FDenominator = dr["FDenominator"].ToString(),
+                                FFIXSCRAPQTY = dr["FFIXSCRAPQTY"].ToString(),
+                                FHQtyScrap = dr["FSCRAPRATE"].ToString(),
+                                FMOBILLNO = dr["FSCORDERNO"].ToString(),
+                                FMOENTRYID = dr["FMOENTRYID"].ToString(),
+                                FPPBOMBILLNO = dr["FPPBOMBILLNO"].ToString(),
+                                FPPBOMFSEQ = dr["FSEQ"].ToString(),
+                                FOwnerTypeId = dr["FOWNERTYPEID"].ToString(),
+                                FOwnerID = dr["FORGNUMBER"].ToString(),
+                                FEntrustPickOrgId = dr["FORGNUMBER"].ToString(),
+                                FMOID = dr["FMOID"].ToString(),
+                                FIssueType = dr["FIssueType"].ToString(),
+                                FMaterialType = dr["FMaterialType"].ToString(),
+                                FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(),
+                                FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString(),
+                                FDayPlanPpbomFEntryId = dr["FDayPlanPpbomFEntryId"].ToString(),
+
+                            });
+                        }
+                        LogHelper.Info($"鏃ヨ鍒掔敤鏂欐竻鍗曪紝鏁版嵁鍑嗗瀹屾垚锛屼繚瀛樺埌Model瀹炰綋锛屾�昏鏁帮細{DayPlanMaterial.Count}锛岃�楁椂锛�" + sw.Elapsed);
+                        var fidList = DayPlanMaterial.Select(x => x.FEntryID).Distinct().ToList();
+                        int i = 1;
+                        JArray Fentity = new JArray();
+                        foreach (var item in fidList)
+                        {
+                            var _DayPlanMaterial = DayPlanMaterial.Where(x => x.FEntryID == item).ToList();
+                            JObject model = new JObject();
+
+                            if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID))
+                                model.Add("FID", _DayPlanMaterial[0].FID);
+                            model.Add("FHDate", DateTime.Now);
+                            model.Add("FOrgId", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FOrgId });//鍙戞枡缁勭粐
+                            model.Add("FHMaterID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHMaterID });//鐗╂枡
+                            model.Add("FHWorkDate", _DayPlanMaterial[0].FHWorkDate);//鏃ュ伐鍗曟棩鏈� FHWorkDate
+                            model.Add("FHQty", _DayPlanMaterial[0].FHQty);//涓讳骇鍝佹暟閲忥細FHQty 
+                            model.Add("FHUnitID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHUnitID });//鍗曚綅锛欶HUnitID 
+                            model.Add("FDayPlanFID", _DayPlanMaterial[0].FDayPlanFID);//鏃ヨ鍒掑伐鍗曞唴鐮� 
+                            model.Add("FDayPlanFSEQ", _DayPlanMaterial[0].FDayPlanFSEQ);//鏃ヨ鍒掑伐鍗曟槑缁嗚鍙�
+                            model.Add("FDayPlanFBillNo", _DayPlanMaterial[0].FDayPlanFBILLNO);//鏃ヨ鍒掑伐鍗曞崟鎹紪鍙�
+                            JArray Entry = new JArray();
+                            foreach (var _item in _DayPlanMaterial)
+                            {
+                                JObject ModelEnty = new JObject();
+                                ModelEnty.Add("FHMaterSubID", new JObject() { ["Fnumber"] = _item.FHMaterSubID });//瀛愮墿鏂橣HMaterSubID
+                                ModelEnty.Add("FHUnitSubID", new JObject() { ["Fnumber"] = _item.FHUnitSubID });//鍗曚綅FHUnitSubID
+                                ModelEnty.Add("FHQtyMust", _item.FHQtyMust);//搴斿彂鏁伴噺FHQtyMust
+                                ModelEnty.Add("FHQtySub", _item.FHQtySub);//鏁伴噺FHQtySub
+                                ModelEnty.Add("FHPPBomInterID", _item.FHPPBomInterID);//鐢ㄦ枡娓呭崟涓诲唴鐮丗HPPBomInterID
+                                ModelEnty.Add("FHPPBomEntryID", _item.FHPPBomEntryID);//鐢ㄦ枡娓呭崟瀛愬唴鐮丗HPPBomEntryID
+                                ModelEnty.Add("FHSourceID", new JObject() { ["Fnumber"] = _item.FHSourceID });//鐢熶骇璧勬簮FHSourceID
+                                ModelEnty.Add("FNumerator", _item.FNumerator);//鍒嗘瘝
+                                ModelEnty.Add("FDenominator", _item.FDenominator);//鍒嗗瓙
+                                ModelEnty.Add("FDwyl", Convert.ToDecimal(_item.FNumerator) / Convert.ToDecimal(_item.FDenominator));//鍗曚綅鐢ㄦ枡
+                                ModelEnty.Add("FFIXSCRAPQTY", _item.FFIXSCRAPQTY);//鍥哄畾鎹熻��
+                                ModelEnty.Add("FHQtyScrap", _item.FHQtyScrap);//鍙樺姩鎹熻�楃巼%
+                                ModelEnty.Add("FMOBILLNO", _item.FMOBILLNO);//  
+                                ModelEnty.Add("FMOENTRYIDINT", _item.FMOENTRYID);//  
+                                ModelEnty.Add("FPPBOMBILLNO", _item.FPPBOMBILLNO);//  
+                                ModelEnty.Add("FPPBOMFSEQINT", _item.FPPBOMFSEQ);//  
+                                ModelEnty.Add("FOwnerTypeId", _item.FOwnerTypeId);//  
+                                ModelEnty.Add("FOwnerID", new JObject() { ["Fnumber"] = _item.FOwnerID });// 
+                                ModelEnty.Add("FEntrustPickOrgId", new JObject() { ["Fnumber"] = _item.FEntrustPickOrgId });// 
+                                ModelEnty.Add("FMOID", _item.FMOID);//  
+                                ModelEnty.Add("FISSUETYPE", _item.FIssueType);//  
+                                ModelEnty.Add("FMaterialType", _item.FMaterialType);//  
+                                if (!string.IsNullOrEmpty(_item.FDayPlanPpbomFEntryId))
+                                    ModelEnty.Add("FEntryId", _item.FDayPlanPpbomFEntryId);//  
+
+                                Entry.Add(ModelEnty);
+
+                            }
+                            model.Add("FEntity", Entry);
+
+                            Fentity.Add(model);
+                            if ((i >= 20 || i == fidList.Count) && (i % 20 == 0 || i == fidList.Count))
+                            {
+                                LogHelper.Info("鏃ヨ鍒掔敤鏂欐竻鍗曟壒閲忔墽琛岋紝璁板綍寰幆鐨勫綋鍓嶆潯鏁�" + i);
+                                JObject jsonRoot = new JObject()
+                                {
+                                    ["Creator"] = "",
+                                    ["NeedUpDateFields"] = new JArray(),
+                                    ["NeedReturnFields"] = new JArray(),
+                                    ["SubSystemId"] = "",
+                                    ["IsVerifyBaseDataField"] = "false",
+                                    ["IsDeleteEntry"] = "false",
+                                    ["Model"] = Fentity
+                                };
+                                CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+                                var result = cloudClient.BatchSave("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString());
+                                JObject saveObj = JObject.Parse(result);
+                                string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                                if (saveIsSuc == "TRUE")
+                                {
+                                    var Success = saveObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToString().TrimStart('{').TrimEnd('}');
+                                    var allList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Success);
+                                    List<string> ls = new List<string>();
+                                    foreach (var it in allList)
+                                    {
+                                        it.TryGetValue("Id", out string value);
+                                        ls.Add(value);
+                                    }
+                                    var resultAA = String.Join(",", ls.ToArray());
+                                    string resSql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set Sc_WorkBillSortBillSub.FDAYPLANPPBOMBILLNO = Sc_DayPlanPPBomBillMain.FBILLNO from Sc_WorkBillSortBillSub   join Sc_DayPlanPPBomBillMain   on Sc_WorkBillSortBillSub.FEntryID = Sc_DayPlanPPBomBillMain.FDayPlanFID where Sc_DayPlanPPBomBillMain.FID in ({0})", resultAA);
+                                    DBServiceHelper.Execute(Context, resSql);
+                                    //JArray array = JArray.Parse(m);
+                                    //for (int mm = 0; mm < array.Count; mm++)
+                                    //{
+                                    //    JObject b = JObject.Parse(array[mm].ToString());
+                                    //    var id = b["ID"].ToString();
+                                    //}
+
+                                }
+                                if (saveIsSuc != "TRUE")
+                                {
+                                    LogHelper.Error("鏃ヨ鍒掔敤鏂欐竻鍗曞垪琛ㄧ敓鎴愬け璐�:" + jsonRoot.ToString());
+                                    this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
+                                }
+                                Fentity = new JArray();
+                            }
+                            i++;
+                        }
+                    }
+                    sw.Stop();//缁撴潫璁℃椂
+                    LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曡繍琛屾�绘椂闀匡細" + sw.Elapsed);
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Error("鏃ヨ鍒掔敤鏂欐竻鍗�+" + ex.Message.ToString());
+                }
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
+        public override void BeforeSave(BeforeSaveEventArgs e)
+        {
+            base.BeforeSave(e);
+            var fBillNo = this.View.Model.GetValue("FBILLNO");
+            string sql = string.Format(@"
+/*dialect*/ 
+select T9.FBILLNO,t12.FSEQ,t4.FMATERIALID,t6.FNUMBER ,convert(decimal(18,2),(t4.FNumerator/t4.FDenominator) *t1.FHQTY) FQty ,FPickedQty from 
+Sc_WorkBillSortBillSub t1
+JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
+JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
+JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID
+JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID
+ LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID
+ LEFT join Sc_DayPlanPPBomBillSub t12 on t9.FID=t12.FID and T4.FENTRYID=t12.FHPPBomEntryID 
+ WHERE T4.FMustQty>0
+and T3.FBILLNO='{0}'
+and convert(decimal(18,2),(t4.FNumerator/t4.FDenominator) *t1.FHQTY)< t12.FPickedQty", fBillNo);
+            DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+            string result = "淇濆瓨澶辫触锛屼慨鏀瑰悗灏嗚鏇存柊鐨勬棩璁″垝鐢ㄦ枡娓呭崟鏁版嵁浣庝簬棰嗘枡鎴栬皟鎷ㄦ暟閲�";    
+            if (dt.Rows.Count > 0)
+            {
+                foreach (DataRow dr in dt.Rows)
+                {
+                    result += $"鏃ヨ鍒掔敤鏂欐竻鍗曞崟鍙凤細{dr["FBILLNO"].ToString()},鍒嗗綍琛屽彿锛歿dr["FSEQ"]}瀵瑰簲鐨勭墿鏂欑紪鐮亄dr["FNUMBER"]}";
+                }
+                this.View.ShowErrMessage(result);
+            }
+           
+        }
+    }
+}
+
diff --git a/src/BLL/Demo.BillView/PRD/Pro_PPBomSubmit.cs b/src/BLL/Demo.BillView/PRD/Pro_PPBomSubmit.cs
new file mode 100644
index 0000000..cf0a1b7
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/Pro_PPBomSubmit.cs
@@ -0,0 +1,292 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using Kingdee.BOS.Core.Bill;
+using Kingdee.BOS.Core.Bill.PlugIn;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Metadata.EntityElement;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Newtonsoft.Json.Linq;
+using ZD.Cloud.Logger;
+using ZD.Cloud.WebApi;
+using Demo.Model.Model;
+using System.Diagnostics;
+using System.Linq;
+using Kingdee.BOS.Core.Bill.PlugIn.Args;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+
+namespace Demo.BillView.PRD
+{
+    /// <summary>
+    /// 鐢熶骇鐢ㄦ枡娓呭崟鎻愪氦 鍒锋柊鏃ヨ鍒掔敤鏂欐竻鍗曟暟鎹�
+    /// </summary>
+    [Description("鐢熶骇鐢ㄦ枡娓呭崟鎻愪氦鏈嶅姟鎻掍欢")]
+    [Kingdee.BOS.Util.HotUpdate]
+    public class Pro_PPBomSubmit : AbstractOperationServicePlugIn
+    {
+        CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+        Dictionary<string, string> dictionary = new Dictionary<string, string>();
+        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
+        {
+            base.OnPrepareOperationServiceOption(e);
+
+            //涓轰簡鍦˙eginOperationTransaction閲屾鏌ユ暟鎹姏鍑哄紓甯告椂
+            //鍙洖婊氬綋鍓嶅崟鎹殑浜嬪姟锛岃繖閲岃缃负涓嶆敮鎸佹壒閲忎簨鍔★紝杩欐牱BOS浼�
+            //寰幆涓烘瘡涓�寮犲崟鎹垱寤轰簨鍔¤皟鐢ㄦ搷浣�
+            e.SupportTransaction = true;
+            e.SurportBatchTransaction = false;
+        }
+        public override void OnPreparePropertys(PreparePropertysEventArgs e)
+        {
+            base.OnPreparePropertys(e);
+            e.FieldKeys.Add("FID");
+            e.FieldKeys.Add("FBillNo");
+        }
+        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+        {
+            base.AfterExecuteOperationTransaction(e);
+            try
+            {
+                string sql = "";
+                var fBillNo = "";
+                foreach (var select in e.SelectedRows)
+                {
+                    fBillNo = select["Billno"].ToString();
+                    if (dictionary.ContainsKey(fBillNo))
+                        continue;
+                    //鍙樻洿 鍏堝幓鍒犻櫎璋冩暣杩囩殑鏁版嵁
+                    sql = $"/*dialect*/ exec deleteDayPlanPpbomBillSub '{fBillNo}'";
+                    DBServiceHelper.Execute(Context, sql);
+                    sql = string.Format(@"
+/*dialect*/
+  select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,t4.FNumerator,t4.FDenominator,convert(decimal(18,2),(t4.FNumerator/t4.FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,t4.FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO,
+t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,Tc.FIssueType,t4.FMaterialType,t12.FEntryID
+as FDayPlanPpbomFEntryId
+FROM Sc_WorkBillSortBillSub t1
+JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
+JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
+JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID
+JOIN T_PRD_PPBOMENTRY_C Tc ON T4.FENTRYID=Tc.FENTRYID
+join T_ORG_Organizations torg ON tc.FOWNERID = torg.FORGID 
+JOIN T_BD_MATERIAL T5 ON T3.FMATERIALID=T5.FMATERIALID
+JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID
+LEFT JOIN T_BD_UNIT T7 ON T3.FUNITID = T7.FUNITID
+LEFT JOIN T_BD_UNIT T8 ON T4.FUNITID = T8.FUNITID
+ LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID
+ LEFT join Sc_DayPlanPPBomBillSub t12 on t9.FID=t12.FID and T4.FENTRYID=t12.FHPPBomEntryID 
+ LEFT join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID
+ LEFT join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID
+ WHERE T4.FMustQty>0
+and T3.FBILLNO='{0}'
+", fBillNo);
+                    LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曞噯澶囨暟鎹畇ql:" + sql);
+                    DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
+                    DataTable dt = ds.Tables[0];
+                    List<DayPlanMaterial> DayPlanMaterial = new List<DayPlanMaterial>();
+                    if (dt.Rows.Count > 0)
+                    {
+                        foreach (DataRow dr in dt.Rows)
+                        {
+                            DayPlanMaterial.Add(new Demo.Model.Model.DayPlanMaterial
+                            {
+                                FID = dr["DayPlanFID"].ToString(),
+                                FEntryID = dr["FEntryID"].ToString(),
+                                FHDate = DateTime.Now.ToString(),
+                                FOrgId = dr["FORGNUMBER"].ToString(),
+                                FHMaterID = dr["FNUMBER"].ToString(),
+                                FHWorkDate = dr["FHMASTERDATE"].ToString(),
+                                FHQty = dr["FHQTY"].ToString(),
+                                FHUnitID = dr["FUNITNUMBER"].ToString(),
+                                FDayPlanFID = dr["FEntryID"].ToString(),
+                                FHMaterSubID = dr["FNUMBER2"].ToString(),
+                                FHUnitSubID = dr["FUNITNUMBER2"].ToString(),
+                                FHQtyMust = dr["FHQtyMust"].ToString(),
+                                FHQtySub = dr["FHQtyMust"].ToString(),
+                                FHPPBomInterID = dr["FPPBOM"].ToString(),
+                                FHPPBomEntryID = dr["FPPBOMENTRYID"].ToString(),
+                                FHSourceID = dr["FHSOURCENUMBER"].ToString(),
+                                FNumerator = dr["FNumerator"].ToString(),
+                                FDenominator = dr["FDenominator"].ToString(),
+                                FFIXSCRAPQTY = dr["FFIXSCRAPQTY"].ToString(),
+                                FHQtyScrap = dr["FSCRAPRATE"].ToString(),
+                                FMOBILLNO = dr["FSCORDERNO"].ToString(),
+                                FMOENTRYID = dr["FMOENTRYID"].ToString(),
+                                FPPBOMBILLNO = dr["FPPBOMBILLNO"].ToString(),
+                                FPPBOMFSEQ = dr["FSEQ"].ToString(),
+                                FOwnerTypeId = dr["FOWNERTYPEID"].ToString(),
+                                FOwnerID = dr["FORGNUMBER"].ToString(),
+                                FEntrustPickOrgId = dr["FORGNUMBER"].ToString(),
+                                FMOID = dr["FMOID"].ToString(),
+                                FIssueType = dr["FIssueType"].ToString(),
+                                FMaterialType = dr["FMaterialType"].ToString(),
+                                FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(),
+                                FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString(),
+                                FDayPlanPpbomFEntryId = dr["FDayPlanPpbomFEntryId"].ToString(),
+                            });
+                        }
+                        var fidList = DayPlanMaterial.Select(x => x.FEntryID).Distinct().ToList();
+                        int i = 1;
+                        JArray Fentity = new JArray();
+                        foreach (var item in fidList)
+                        {
+                            var _DayPlanMaterial = DayPlanMaterial.Where(x => x.FEntryID == item).ToList();
+                            JObject model = new JObject();
+                            if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID))
+                                model.Add("FID", _DayPlanMaterial[0].FID);
+                            model.Add("FHDate", DateTime.Now);
+                            model.Add("FOrgId", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FOrgId });//鍙戞枡缁勭粐
+                            model.Add("FHMaterID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHMaterID });//鐗╂枡
+                            model.Add("FHWorkDate", _DayPlanMaterial[0].FHWorkDate);//鏃ュ伐鍗曟棩鏈� FHWorkDate
+                            model.Add("FHQty", _DayPlanMaterial[0].FHQty);//涓讳骇鍝佹暟閲忥細FHQty 
+                            model.Add("FHUnitID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHUnitID });//鍗曚綅锛欶HUnitID 
+                            model.Add("FDayPlanFID", _DayPlanMaterial[0].FDayPlanFID);//鏃ヨ鍒掑伐鍗曞唴鐮� 
+                            model.Add("FDayPlanFSEQ", _DayPlanMaterial[0].FDayPlanFSEQ);//鏃ヨ鍒掑伐鍗曟槑缁嗚鍙�
+                            model.Add("FDayPlanFBillNo", _DayPlanMaterial[0].FDayPlanFBILLNO);//鏃ヨ鍒掑伐鍗曞崟鎹紪鍙�
+                            JArray Entry = new JArray();
+                            foreach (var _item in _DayPlanMaterial)
+                            {
+                                JObject ModelEnty = new JObject();
+                                ModelEnty.Add("FHMaterSubID", new JObject() { ["Fnumber"] = _item.FHMaterSubID });//瀛愮墿鏂橣HMaterSubID
+                                ModelEnty.Add("FHUnitSubID", new JObject() { ["Fnumber"] = _item.FHUnitSubID });//鍗曚綅FHUnitSubID
+                                ModelEnty.Add("FHQtyMust", _item.FHQtyMust);//搴斿彂鏁伴噺FHQtyMust
+                                ModelEnty.Add("FHQtySub", _item.FHQtySub);//鏁伴噺FHQtySub
+                                ModelEnty.Add("FHPPBomInterID", _item.FHPPBomInterID);//鐢ㄦ枡娓呭崟涓诲唴鐮丗HPPBomInterID
+                                ModelEnty.Add("FHPPBomEntryID", _item.FHPPBomEntryID);//鐢ㄦ枡娓呭崟瀛愬唴鐮丗HPPBomEntryID
+                                ModelEnty.Add("FHSourceID", new JObject() { ["Fnumber"] = _item.FHSourceID });//鐢熶骇璧勬簮FHSourceID
+                                ModelEnty.Add("FNumerator", _item.FNumerator);//鍒嗘瘝
+                                ModelEnty.Add("FDenominator", _item.FDenominator);//鍒嗗瓙
+                                ModelEnty.Add("FDwyl", Convert.ToDecimal(_item.FNumerator) / Convert.ToDecimal(_item.FDenominator));//鍗曚綅鐢ㄦ枡
+                                ModelEnty.Add("FFIXSCRAPQTY", _item.FFIXSCRAPQTY);//鍥哄畾鎹熻��
+                                ModelEnty.Add("FHQtyScrap", _item.FHQtyScrap);//鍙樺姩鎹熻�楃巼%
+                                ModelEnty.Add("FMOBILLNO", _item.FMOBILLNO);//  
+                                ModelEnty.Add("FMOENTRYIDINT", _item.FMOENTRYID);//  
+                                ModelEnty.Add("FPPBOMBILLNO", _item.FPPBOMBILLNO);//  
+                                ModelEnty.Add("FPPBOMFSEQINT", _item.FPPBOMFSEQ);//  
+                                ModelEnty.Add("FOwnerTypeId", _item.FOwnerTypeId);//  
+                                ModelEnty.Add("FOwnerID", new JObject() { ["Fnumber"] = _item.FOwnerID });// 
+                                ModelEnty.Add("FEntrustPickOrgId", new JObject() { ["Fnumber"] = _item.FEntrustPickOrgId });// 
+                                ModelEnty.Add("FMOID", _item.FMOID);//  
+                                ModelEnty.Add("FISSUETYPE", _item.FIssueType);//  
+                                ModelEnty.Add("FMaterialType", _item.FMaterialType);//  
+                                if (!string.IsNullOrEmpty(_item.FDayPlanPpbomFEntryId))
+                                    ModelEnty.Add("FEntryId", _item.FDayPlanPpbomFEntryId);//  
+                                Entry.Add(ModelEnty);
+                            }
+                            model.Add("FEntity", Entry);
+
+                            Fentity.Add(model);
+                            if ((i >= 20 || i == fidList.Count) && (i % 20 == 0 || i == fidList.Count))
+                            {
+                                JObject jsonRoot = new JObject()
+                                {
+                                    ["Creator"] = "",
+                                    ["NeedUpDateFields"] = new JArray(),
+                                    ["NeedReturnFields"] = new JArray(),
+                                    ["SubSystemId"] = "",
+                                    ["IsVerifyBaseDataField"] = "false",
+                                    ["IsDeleteEntry"] = "false",
+                                    ["Model"] = Fentity
+                                };
+                                CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+                                var result = cloudClient.BatchSave("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString());
+                                JObject saveObj = JObject.Parse(result);
+                                string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                                if (saveIsSuc == "TRUE")
+                                {
+                                    var Success = saveObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToString().TrimStart('{').TrimEnd('}');
+                                    var allList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Success);
+                                    List<string> ls = new List<string>();
+                                    foreach (var it in allList)
+                                    {
+                                        it.TryGetValue("Id", out string value);
+                                        ls.Add(value);
+                                    }
+                                    var resultAA = String.Join(",", ls.ToArray());
+                                    string resSql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set Sc_WorkBillSortBillSub.FDAYPLANPPBOMBILLNO = Sc_DayPlanPPBomBillMain.FBILLNO from Sc_WorkBillSortBillSub   join Sc_DayPlanPPBomBillMain   on Sc_WorkBillSortBillSub.FEntryID = Sc_DayPlanPPBomBillMain.FDayPlanFID where Sc_DayPlanPPBomBillMain.FID in ({0})", resultAA);
+                                    DBServiceHelper.Execute(Context, resSql);
+                                }
+                                if (saveIsSuc != "TRUE")
+                                {
+                                    LogHelper.Error("鏃ヨ鍒掔敤鏂欐竻鍗曞垪琛ㄧ敓鎴愬け璐�:" + jsonRoot.ToString());
+                                    //this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
+                                }
+                                Fentity = new JArray();
+                            }
+                            i++;
+                        }
+                    }
+                }
+                foreach (var item in dictionary)
+                {
+                    ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value);
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("鏃ヨ鍒掔敤鏂欐竻鍗曞垪琛ㄧ敓鎴愬け璐�:" + ex.Message.ToString());
+            }
+        }
+
+        public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
+        {
+            base.BeginOperationTransaction(e);
+            try
+            {
+                var fBillNo = "";
+                var sql = "";
+                string result = "淇濆瓨澶辫触锛屾彁浜ゅ悗灏嗚鏇存柊鐨勬棩璁″垝鐢ㄦ枡娓呭崟鏁伴噺灏戜簬棰嗘枡鎴栬皟鎷ㄦ暟閲忥紝";
+                foreach (var select in e.DataEntitys)
+                {
+                    fBillNo = select["Billno"].ToString();
+                    sql = string.Format(@"
+/*dialect*/ 
+select T9.FBILLNO,t12.FSEQ,t4.FMATERIALID,t6.FNUMBER ,convert(decimal(18,2),(t4.FNumerator/t4.FDenominator) *t1.FHQTY) FQty ,FPickedQty from 
+Sc_WorkBillSortBillSub t1
+JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
+JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
+JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID
+JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID
+ LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID
+ LEFT join Sc_DayPlanPPBomBillSub t12 on t9.FID=t12.FID and T4.FENTRYID=t12.FHPPBomEntryID 
+ WHERE T4.FMustQty>0
+and T3.FBILLNO='{0}'
+and convert(decimal(18,2),(t4.FNumerator/t4.FDenominator) *t1.FHQTY)< t12.FPickedQty", fBillNo);
+                    DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+                    if (dt.Rows.Count > 0)
+                    {
+                        e.CancelOperation = true;
+                        foreach (DataRow dr in dt.Rows)
+                        {
+                            result += $"鏃ヨ鍒掔敤鏂欐竻鍗曞崟鍙凤細{dr["FBILLNO"].ToString()},鍒嗗綍琛屽彿锛歿dr["FSEQ"]},鐗╂枡缂栫爜{dr["FNUMBER"]}";
+                        }
+                        dictionary.Add(fBillNo, result);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("鏃ヨ鍒掔敤鏂欐竻鍗曞垪琛ㄧ敓鎴愬け璐�:" + ex.Message.ToString());
+            }
+        }
+
+        public static class ResultMessage
+        {/// <summary>
+         /// 淇敼鎻愮ず淇℃伅
+         /// </summary>
+         /// <param name="operateResult"></param>
+         /// <param name="billno"></param>
+            public static void dataError(OperateResultCollection operateResult, string billno, string message)
+            {
+                OperateResult operate = operateResult.Where(n => n.Number == billno).First();
+                operate.Message = message;
+                operate.SuccessStatus = false;
+                operate.MessageType = MessageType.FatalError;
+            }
+        }
+    }
+}
+
diff --git a/src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs b/src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs
index e9b04cc..d09064f 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs
@@ -34,6 +34,7 @@
             e.FieldKeys.Add("FBaseJoinQty");
             e.FieldKeys.Add("FDayPlanBillNo");
             e.FieldKeys.Add("FDayPlanFentryId");
+            e.FieldKeys.Add("FBaseActualQty");
         }
         /// <summary>
         ///鍙嶅鏍� 鍙嶆洿鏂版棩璁″垝鐢ㄦ枡娓呭崟棰嗘枡鏁伴噺
@@ -52,12 +53,11 @@
                             as DynamicObjectCollection;
                 foreach (var entryRow in entryRows)
                 {
-                    //鐢熶骇鐢ㄦ枡娓呭崟涓虹┖鏃�
-                    if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
-                        continue;
                     string fentryId = entryRow["FDayPlanFentryId"].ToString();
-                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FPickedQty = (select sum(FBaseActualQty) from T_PRD_PICKMTRLDATA where FDayPlanFentryId = {fentryId})where FEntryID = {fentryId} ");
-                    LogHelper.Info("棰嗘枡鍗曠殑鏃ヨ鍒掔敤鏂欐竻鍗旾D:" + fentryId);
+                    if (fentryId == "0")
+                        continue;
+                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FPickedQty = FPickedQty + {Convert.ToDecimal(entryRow["BaseActualQty"])} where FEntryID = {fentryId} ");
+                    //LogHelper.Info("棰嗘枡鍗曠殑鏃ヨ鍒掔敤鏂欐竻鍗旾D:" + fentryId);
                     sqlList.Add(sql);
                 }
             }
diff --git a/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs b/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
index b327d7a..7ff670a 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
@@ -138,7 +138,7 @@
                             ["IsDeleteEntry"] = "false",
                             ["SubSystemId"] = "",
                             ["IsVerifyBaseDataField"] = "false",
-                           // ["IsAutoSubmitAndAudit"] = true,//鑷姩璋冪敤鎻愪氦鍜屽鏍稿姛鑳�
+                            // ["IsAutoSubmitAndAudit"] = true,//鑷姩璋冪敤鎻愪氦鍜屽鏍稿姛鑳�
                             ["Model"] = model
                         };
 
diff --git a/src/BLL/Demo.BillView/PRD/Pro_TlPushAudit.cs b/src/BLL/Demo.BillView/PRD/Pro_TlPushAudit.cs
index 010b513..b5c0b7f 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_TlPushAudit.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_TlPushAudit.cs
@@ -124,7 +124,7 @@
                 }
             }
             // 涓烘柊寤虹殑婧愬崟鍏宠仈淇℃伅锛岃缃唴鐮�
-            IDBService dbService = ServiceHelper.GetService<IDBService>();
+            IDBService dbService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IDBService>();
             dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType);
         }
 
@@ -135,7 +135,7 @@
         /// <returns></returns>
         private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos)
         {
-            IViewService viewService = ServiceHelper.GetService<IViewService>();
+            IViewService viewService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IViewService>();
             string formId = "paez_PODemandPlan";
 
             // 鎸囧畾闇�瑕佸姞杞界殑閿�鍞鍗曞瓧娈�
@@ -185,7 +185,7 @@
         /// <returns></returns>
         private string GetPOEntryTableNumber()
         {
-            IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>();
+            IBusinessFlowService bfMetaService = Kingdee.K3.SCM.App.ServiceHelper.GetService<IBusinessFlowService>();
             var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity");
             return tableDefine.TableNumber;
         }
diff --git a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
index 9d1b236..935d741 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -1037,7 +1037,6 @@
             {
                 Stopwatch sw = new Stopwatch();
                 sw.Start();//寮�濮嬭鏃�
-                LogHelper.Info("榻愬鍒嗘瀽寮�濮嬪噯澶囨暟鎹細" + sw.Elapsed);
                 //娓呯┖榻愬涓存椂琛�
                 DBServiceHelper.Execute(Context, "/*dialect*/  delete JIT_MOMaterReadysBill ");
                 //鏇存柊鐘舵��
@@ -1109,9 +1108,9 @@
                 int i = 1;
                 //鍒涘缓瀛楀吀 鐢ㄤ簬鍌ㄥ瓨鐗╂枡 + 鍗犵敤鏁伴噺
                 Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>();
+                LogHelper.Info("榻愬鍒嗘瀽鍑嗗鏁版嵁瀹屾垚锛�" + sw.Elapsed);
                 foreach (var item in DatePlanList)
                 {
-
                     //绛涢�夊嚭褰撴棩璁″垝鏁版嵁
                     var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList();
                     foreach (var _item in _BomList)
@@ -1127,7 +1126,6 @@
                             decimal _fLackCount = _item.PlanCount > sjkcList.FBASEQTY ? (_item.PlanCount - sjkcList.FBASEQTY) : 0;//缂烘枡鏁伴噺
                             foreach (var Inventory in _ListInventory)
                             {
-
                                 if (need == 0)
                                     break;
                                 decimal fCompleteCount = need >= Inventory.FBASEQTY ? Inventory.FBASEQTY : need;//榻愬鏁伴噺
@@ -1848,7 +1846,7 @@
                 string sql = string.Format(@"
 /*dialect*/
  select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO,
-t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType
+t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType,td.FNUMBER as FWORKSHOPID
 FROM Sc_WorkBillSortBillSub t1
 JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
 JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
@@ -1862,10 +1860,16 @@
  LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID
  LEFT join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID
  LEFT join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID
- WHERE t1.FHQTY>0
- and t9.FID not in(
- select distinct FID from  Sc_DayPlanPPBomBillSub WHERE FTranslateQty >0 or FPickedQty >0
- )
+ left join T_BD_DEPARTMENT td on t3.FWORKSHOPID=td.FDEPTID
+ WHERE t1.FEntryID not in 
+(
+select distinct FDAYPLANFID from Sc_DayPlanPPBomBillMain where FID IN (
+select distinct FDAYPLANFID from T_PRD_PICKMTRLDATA)
+)
+and T4.FMustQty>0
+-- (
+-- select  FDayPlanFID FROM Sc_DayPlanPPBomBillMain WHERE FID IN ( select distinct FID from  Sc_DayPlanPPBomBillSub WHERE FTranslateQty >0 or FPickedQty >0)
+-- )
 "
 );
                 LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曞噯澶囨暟鎹畇ql:" + sql);
@@ -1909,7 +1913,8 @@
                             FIssueType = dr["FIssueType"].ToString(),
                             FMaterialType = dr["FMaterialType"].ToString(),
                             FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(),
-                            FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString()
+                            FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString(),
+                            FWORKSHOPID = dr["FWORKSHOPID"].ToString()
                         });
                     }
                     LogHelper.Info($"鏃ヨ鍒掔敤鏂欐竻鍗曪紝鏁版嵁鍑嗗瀹屾垚锛屼繚瀛樺埌Model瀹炰綋锛屾�昏鏁帮細{DayPlanMaterial.Count}锛岃�楁椂锛�" + sw.Elapsed);
@@ -1959,7 +1964,8 @@
                             ModelEnty.Add("FMOID", _item.FMOID);//  
                             ModelEnty.Add("FISSUETYPE", _item.FIssueType);//  
                             ModelEnty.Add("FMaterialType", _item.FMaterialType);//  
-                                                                                // ModelEnty.Add("FSEQ", FSEQ);//  
+                            ModelEnty.Add("FWORKSHOPID", new JObject() { ["Fnumber"] = _item.FWORKSHOPID });// 
+
                             Entry.Add(ModelEnty);
                             FSEQ++;
 
@@ -1997,13 +2003,7 @@
                                 var resultAA = String.Join(",", ls.ToArray());
                                 string resSql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set Sc_WorkBillSortBillSub.FDAYPLANPPBOMBILLNO = Sc_DayPlanPPBomBillMain.FBILLNO from Sc_WorkBillSortBillSub   join Sc_DayPlanPPBomBillMain   on Sc_WorkBillSortBillSub.FEntryID = Sc_DayPlanPPBomBillMain.FDayPlanFID where Sc_DayPlanPPBomBillMain.FID in ({0})", resultAA);
                                 DBServiceHelper.Execute(Context, resSql);
-                                //JArray array = JArray.Parse(m);
-                                //for (int mm = 0; mm < array.Count; mm++)
-                                //{
-                                //    JObject b = JObject.Parse(array[mm].ToString());
-                                //    var id = b["ID"].ToString();
-                                //}
-
+                            
                             }
                             if (saveIsSuc != "TRUE")
                             {
@@ -2137,7 +2137,7 @@
                         _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();
                         if (_PurchaseInventory.Count == 0)
                         {
-                            LogHelper.Info("[鎻愭枡璁″垝寮�濮媇褰撳墠鐗╂枡鏄庣粏鏃犻噰璐俊鎭細" + item.FMATERIALID + " 搴撳瓨缁勭粐锛�" + item.FStockOrgId);
+                            //LogHelper.Info("[鎻愭枡璁″垝寮�濮媇褰撳墠鐗╂枡鏄庣粏鏃犻噰璐俊鎭細" + item.FMATERIALID + " 搴撳瓨缁勭粐锛�" + item.FStockOrgId);
                             break;
                         }
 
@@ -2161,7 +2161,7 @@
                         //{
                         foreach (var Purchase in _PurchaseInventory)
                         {
-                            LogHelper.Info("閲囪喘璁㈠崟鍙锋祴璇曪細" + Purchase.FBillNo);
+                            //LogHelper.Info("閲囪喘璁㈠崟鍙锋祴璇曪細" + Purchase.FBillNo);
                             //LogHelper.Info("鐗╂枡锛�" + Purchase.FMATERIALID + ",閲囪喘璁㈠崟鏁伴噺锛�" + Purchase.FQTY);
                             if (Purchase.FQTY >= NeedQty)
                             {
diff --git a/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs b/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs
index a5cbd51..1743116 100644
--- a/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs
+++ b/src/BLL/Demo.BillView/PRD/Pro_ZJDBSH.cs
@@ -12,10 +12,15 @@
 using System.ComponentModel;
 using Kingdee.BOS.ServiceHelper;
 using Kingdee.K3.SCM.App;
+using System.Diagnostics;
+using ZD.Cloud.Logger;
+using System.Data;
+using Kingdee.BOS;
+using Kingdee.BOS.App.Data;
 
 namespace Demo.DynamicForm.PRD
 {
-   
+
     [Description("[鐩存帴璋冩嫧鍗�-瀹℃牳]鎸夐挳鍔熻兘]")]
     [HotUpdate]
     public class Pro_ZJDBSH : AbstractOperationServicePlugIn
@@ -34,9 +39,41 @@
             e.FieldKeys.Add("FBaseJoinQty");
             e.FieldKeys.Add("FDayPlanBillNo");
             e.FieldKeys.Add("FDayPlanFentryId");
+            e.FieldKeys.Add("FBaseQty");
         }
+        ///// <summary>
+        /////鍙嶅鏍� 鍙嶆洿鏂版棩璁″垝鐢ㄦ枡娓呭崟璋冩嫧鏁伴噺
+        ///// </summary>
+        ///// <param name="e"></param>
+        //public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+        //{
+        //    base.AfterExecuteOperationTransaction(e);
+        //    Stopwatch sw = new Stopwatch();
+        //    sw.Start();//寮�濮嬭鏃�
+        //    List<string> sqlList = new List<string>();
+        //    string sql = "";
+        //    //瀹℃牳鏃舵洿鏂扮敓浜х敤鏂欐竻鍗曡〃鏄庣粏璋冩嫧鏁伴噺
+        //    Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//鑾峰彇鏄庣粏淇℃伅
+        //    foreach (var billObj in e.SelectedRows)
+        //    {
+        //        DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
+        //                    as DynamicObjectCollection;
+        //        foreach (var entryRow in entryRows)
+        //        {
+        //            //鐢熶骇鐢ㄦ枡娓呭崟涓虹┖鏃�
+        //            if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
+        //                continue;
+        //            string fentryId = entryRow["FDayPlanFentryId"].ToString();
+        //            sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FTranslateQty + = {Convert.ToDecimal(entryRow["FBaseQty"])} where FEntryID = { fentryId} ");
+        //            sqlList.Add(sql);
+        //        }
+        //    }
+        //    DBServiceHelper.ExecuteBatch(Context, sqlList);
+        //    sw.Stop();//缁撴潫璁℃椂
+        //    LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曡繍琛屾�绘椂闀匡細" + sw.Elapsed);
+        //}
         /// <summary>
-        ///鍙嶅鏍� 鍙嶆洿鏂版棩璁″垝鐢ㄦ枡娓呭崟璋冩嫧鏁伴噺
+        ///鍙嶅鏍� 鍙嶆洿鏂版棩璁″垝鐢ㄦ枡娓呭崟璋冩嫧鏁伴噺   
         /// </summary>
         /// <param name="e"></param>
         public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
@@ -44,23 +81,54 @@
             base.AfterExecuteOperationTransaction(e);
             List<string> sqlList = new List<string>();
             string sql = "";
-            //瀹℃牳鏃舵洿鏂扮敓浜х敤鏂欐竻鍗曡〃鏄庣粏璋冩嫧鏁伴噺
             Entity entity = this.BusinessInfo.GetEntity("FBillEntry");//鑾峰彇鏄庣粏淇℃伅
+            //瀹℃牳鏃舵洿鏂版棩璁″垝鐢ㄦ枡娓呭崟琛ㄦ槑缁嗚皟鎷ㄦ暟閲�
             foreach (var billObj in e.SelectedRows)
             {
                 DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity)
                             as DynamicObjectCollection;
                 foreach (var entryRow in entryRows)
                 {
-                    //鐢熶骇鐢ㄦ枡娓呭崟涓虹┖鏃�
-                    if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "")
-                        continue;
                     string fentryId = entryRow["FDayPlanFentryId"].ToString();
-                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FTranslateQty = (select sum(FBaseQty) from T_STK_STKTRANSFERINENTRY where FDayPlanFentryId = { fentryId})where FEntryID = { fentryId} ");
+                    //if (fentryId == "0")
+                    //    continue;
+                    sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set  FTranslateQty  = FTranslateQty+{Convert.ToDecimal(entryRow["BaseQty"])} where FEntryID = { fentryId} ");
                     sqlList.Add(sql);
                 }
             }
             DBServiceHelper.ExecuteBatch(Context, sqlList);
         }
+        private void BatchUpdate()
+        {
+            // 瀹氫箟涓�涓狣ataTable锛氬瓨鍌ㄥ緟鏇存柊鐨勬暟鎹�
+            DataTable dt = new DataTable();
+            dt.TableName = "JD_t_Cust_Entry100001";
+            var idCol = dt.Columns.Add("FID");
+            idCol.DataType = typeof(long);
+            var billNoCol = dt.Columns.Add("FBillNo");
+            billNoCol.DataType = typeof(string);
+            // 鐏屽叆娴嬭瘯鏁版嵁
+            dt.BeginLoadData(); // 鎵ц姝ゆ柟娉曪紝鍙互鎻愬崌鐏屽叆鏁版嵁鎬ц兘
+            for (int i = 1; i <= 10; i++)
+            {
+                dt.LoadDataRow(new object[] { i, i.ToString() }, true);
+            }
+            dt.EndLoadData(); // 鐏屽叆鏁版嵁缁撴潫
+                              // 鍑嗗鎵归噺鏇存柊鏈嶅姟鍙傛暟
+                              // tableName : 寰呮洿鏂扮殑鐗╃悊琛ㄦ牸鍚�
+                              // dt : 寰呮洿鏂扮殑鏁版嵁
+            BatchSqlParam batchUpdateParam = new BatchSqlParam("JD_t_Cust_Entry100001", dt);
+            // 璁剧疆鍖归厤瀛楁锛氬嵆DataTable涓殑鏁版嵁锛屼笌鐗╃悊琛ㄦ牸浠ラ偅涓瓧娈佃繘琛屽尮閰�
+            // 鍖归厤瀛楁鍙互娣诲姞澶氫釜
+            // columnName: DataTable涓殑鍒楀悕
+            // fieldName : 鐗╂枡琛ㄦ牸涓尮閰嶇殑瀛楁鍚�
+            batchUpdateParam.AddWhereExpression("FID", KDDbType.Int64, "FID");
+            // 璁剧疆寰呮洿鏂扮殑瀛楁
+            // columnName: DataTable涓殑鍒楀悕
+            // fieldName : 瀵瑰簲鐨勭墿鏂欒〃鏍煎瓧娈靛悕
+            batchUpdateParam.AddSetExpression("FBillNo", KDDbType.String, "FBillNo");
+            // 鎵ц鎵归噺鏇存柊
+            DBUtils.BatchUpdate(this.Context, batchUpdateParam);
+        }
     }
 }
diff --git a/src/BLL/Demo.BillView/PRD/SAL_SaleOrderSplitBill.cs b/src/BLL/Demo.BillView/PRD/SAL_SaleOrderSplitBill.cs
new file mode 100644
index 0000000..53cf055
--- /dev/null
+++ b/src/BLL/Demo.BillView/PRD/SAL_SaleOrderSplitBill.cs
@@ -0,0 +1,840 @@
+锘縰sing Demo.Common.Untility;
+using Demo.Model.Log;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using Kingdee.BOS.WebApi.Client;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using ZD.Cloud.Logger;
+using ZD.Cloud.WebApi;
+
+namespace Demo.OperationService.SCM.SAL_SaleOrder
+{
+    [HotUpdate]
+    [Description("閿�鍞鍗曞鏍告媶鍗�")]
+    public class SAL_SaleOrderSplitBill : AbstractOperationServicePlugIn
+    {
+        private void CreateQkForm(AfterExecuteOperationTransaction e)
+        {
+            var client = KingdeeClient.ApiLogin(Context);
+
+            foreach (var data in e.DataEntitys)
+            {
+                var billNo = data.GetValue<string>("BillNo");
+
+                LogService.WriteAsync("SAL_SaleOrderSplitBill=>"+billNo);
+
+                if (data.GetValue<bool>("FIsSplitBill") || data.GetValue<string>("RedBule") == "1") continue;
+
+                //LogService.WriteAsync($"BillNo={billNo},FIsSplitBill={data.GetValue<bool>("FIsSplitBill")},FISLAST={data.GetValue<bool>("FISLAST")},RedBule={data.GetValue<string>("RedBule")}");
+
+                var id = data.GetValue<int>("Id");
+
+                //濡傛灉鍗曟嵁宸茬粡鏄痏A,鍦ㄥ鏍告椂鍊欑洿鎺ヨ烦杩囨墽琛�
+                if (billNo.EndsWith("_A")) continue;
+
+                var sql = $"Exec V_FilterSaleOrder @id={id}";
+
+                var table = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
+                LogService.WriteAsync(table);
+
+                if (table.Rows.Count == 0) continue;
+
+                string sql3 = $"select top 1 F_YQN_ZDR,FNOTE from T_SAL_ORDER WHERE FID={id}";
+                var table3 = DBServiceHelper.ExecuteDataSet(this.Context, sql3).Tables[0];
+
+                var model = new
+                {
+                    FBillTypeID = new
+                    {
+                        FNUMBER = Context.DBId == "5ffd9795291fb7" ? "XSDD01_SYS" : "XSDD101_SYS"
+                    },
+                    FDate = DateTime.Now,
+                    FSaleOrgId = new
+                    {
+                        FNumber = "100"
+                    },
+                    FCustId = new
+                    {
+                        FNumber = "AR07000000022"
+                    },
+                    FReceiveId = new
+                    {
+                        FNumber = "AR07000000022"
+                    },
+                    FSaleGroupId = new
+                    {
+                        FNumber = "100002"
+                    },
+                    FSalerId = new
+                    {
+                        FNumber = "D080190016"
+                    },
+                    //FLinkPhone= "13757508209",
+                    FSettleId = new
+                    {
+                        FNumber = "AR07000000022"
+                    },
+                    FChargeId = new
+                    {
+                        FNumber = "AR07000000022"
+                    },
+                    F_zzzz_Assistant = new
+                    {
+                        FNumber = "087"
+                    },
+                    FPAYCUSTOMER = new
+                    {
+                        FNUMBER = "AR07000000022"
+                    },
+                    FISGUARANTEE = true,
+                    FBillNo = $"{billNo}_A",
+                    F_YQN_ZDR = table3.Rows.Count == 0 ? string.Empty : table3.Rows[0][0],//鍒跺崟浜�
+                    FNOTE = table3.Rows.Count == 0 ? string.Empty : table3.Rows[0][1],//鏁村崟鎽樿
+                    FSaleOrderEntry = table.AsEnumerable().Select(row => new
+                    {
+                        FSUBMATERIALNUMBER = new
+                        {
+                            FNumber = Context.DBId == "5ffd9795291fb7" ? "CSCS0001" : "F9900000000"
+                        },
+
+                        FRowType = "Standard",
+                        FDeliveryDate = DateTime.Now,
+                        FStockOrgId = new
+                        {
+                            FNumber = "100"
+                        },
+                        FSettleOrgIds = new
+                        {
+                            FNumber = "100"
+                        },
+                        FSupplyOrgId = new
+                        {
+                            FNumber = "100"
+                        },
+                        FOwnerTypeId = "BD_OwnerOrg",
+                        FOwnerId = new
+                        {
+                            FNumber = "100"
+                        },
+                        FReserveType = "1",
+                        FOUTLMTUNIT = "SAL",
+                        FMaterialId = new
+                        {
+                            FNumber = row["MaterialNo"]
+                        },
+
+                        F_YQN_DYXH = "CS001",
+                        FSOSTOCKID = new
+                        {
+                            FNumber = row["FStockNo"]
+                        },
+                        FLot = new
+                        {
+                            FNumber = row["LotNo"]
+                        },
+                        FLOT_TEXT=row["FLotName"],
+                        FQty = row["Qty"]
+                    })
+                };
+
+                LogService.WriteAsync(model);
+
+
+                var restlt = client.Save("SAL_SaleOrder", JsonConvert.SerializeObject(new { Model = model }));
+                LogService.WriteAsync(restlt);
+
+                var response = JsonConvert.DeserializeObject<KingdeeResponse2>(restlt);
+                if (response.Result.ResponseStatus.IsSuccess)
+                {
+                    var ids = JsonConvert.SerializeObject(new { Ids = response.Result.ResponseStatus.SuccessEntitys[0].Id });
+                    LogService.WriteAsync(ids);
+                    var r = client.Submit("SAL_SaleOrder", ids);
+                    LogService.WriteAsync(r);
+                    r = client.Audit("SAL_SaleOrder", ids);
+                }
+
+                foreach (var item in this.OperationResult.OperateResult)
+                {
+                    if (item.PKValue?.ToString() == id.ToString())
+                    {
+                        item.Message += response.Result.ResponseStatus.IsSuccess ? $"鐢熸垚澧欏挃棰嗘枡鍗曟嵁{billNo}_A" : $"{billNo}鐢熸垚寮哄崱棰嗘枡鍗曟嵁澶辫触:{JsonConvert.SerializeObject(response.Result.ResponseStatus.Errors.Select(x => x.Message + ";"))}";
+                    }
+                }
+            }
+
+        }
+
+
+        public override void OnPreparePropertys(PreparePropertysEventArgs e)
+        {
+            base.OnPreparePropertys(e);
+            #region 瀛楁淇℃伅鍔犺浇
+            e.FieldKeys.Add("FOrderEntryPlan");
+            e.FieldKeys.Add("FIsSplitBill");
+            e.FieldKeys.Add("FOverOrgTransDirect");
+            e.FieldKeys.Add("FExchangeTypeId");
+            e.FieldKeys.Add("FIsIncludedTax");
+            e.FieldKeys.Add("FSettleModeId");
+            e.FieldKeys.Add("FIsPriceExcludeTax");
+            e.FieldKeys.Add("FRecConditionId");
+            e.FieldKeys.Add("FSettleCurrId");
+            e.FieldKeys.Add("FIsSplitBill");
+            e.FieldKeys.Add("F_zzzz_CheckBox2");
+            e.FieldKeys.Add("F_zzzz_Text7");
+            e.FieldKeys.Add("FCollectionTime");
+            e.FieldKeys.Add("F_zzzz_Assistant");
+            e.FieldKeys.Add("FDifferenceAmount");
+            e.FieldKeys.Add("F_zzzz_Text8");
+            e.FieldKeys.Add("FLCLSituation");
+            e.FieldKeys.Add("FCustInvioce");
+            e.FieldKeys.Add("FPAYCUSTOMER");
+            e.FieldKeys.Add("FWEBANKACCOUNT");
+            e.FieldKeys.Add("FHEADLOCID");
+            e.FieldKeys.Add("FIsMobile");
+            e.FieldKeys.Add("FNote");
+            e.FieldKeys.Add("FISINIT");
+            e.FieldKeys.Add("FChargeId");
+            e.FieldKeys.Add("FReceiveContact");
+            e.FieldKeys.Add("FSettleId");
+            e.FieldKeys.Add("FReceiveAddress");
+            e.FieldKeys.Add("FLinkPhone");
+            e.FieldKeys.Add("FSalerId");
+            e.FieldKeys.Add("FSaleGroupId");
+            e.FieldKeys.Add("FSaleDeptId");
+            e.FieldKeys.Add("FReceiveId");
+            e.FieldKeys.Add("FCOLLECTBALANCEAMOUNT");
+            e.FieldKeys.Add("FCustId");
+            e.FieldKeys.Add("FSaleOrgId");
+            e.FieldKeys.Add("FDate");
+            e.FieldKeys.Add("FBillTypeID");
+            e.FieldKeys.Add("FRowType");
+            e.FieldKeys.Add("FMaterialId");
+            e.FieldKeys.Add("FSUBMATERIALNUMBER");
+            e.FieldKeys.Add("FMapId");
+            e.FieldKeys.Add("FUnitID");
+            e.FieldKeys.Add("FQty");
+            e.FieldKeys.Add("FPrice");
+            e.FieldKeys.Add("FTaxPrice");
+            e.FieldKeys.Add("F_zzzz_Decimal4");
+            e.FieldKeys.Add("FLot");
+            e.FieldKeys.Add("FIsFree");
+            e.FieldKeys.Add("FEntryTaxRate");
+            e.FieldKeys.Add("FDeliveryDate");
+            e.FieldKeys.Add("FStockOrgId");
+            e.FieldKeys.Add("FSettleOrgIds");
+            e.FieldKeys.Add("FSupplyOrgId");
+            e.FieldKeys.Add("FOwnerTypeId");
+            e.FieldKeys.Add("FOwnerId");
+            e.FieldKeys.Add("FEntryNote");
+            e.FieldKeys.Add("FReserveType");
+            e.FieldKeys.Add("F_zzzz_Text9");
+            e.FieldKeys.Add("FPriceBaseQty");
+            e.FieldKeys.Add("FStockUnitID");
+            e.FieldKeys.Add("FStockQty");
+            e.FieldKeys.Add("FStockBaseQty");
+            e.FieldKeys.Add("FOUTLMTUNIT");
+            e.FieldKeys.Add("FOutLmtUnitID");
+            e.FieldKeys.Add("FISMRP");
+            e.FieldKeys.Add("FLOCKSTOCK");
+            e.FieldKeys.Add("F_zzzz_Combo1");
+            e.FieldKeys.Add("F_zzzz_CheckBox");
+            e.FieldKeys.Add("F_zzzz_Text");
+            e.FieldKeys.Add("F_zzzz_Assistant2");
+            e.FieldKeys.Add("F_zzzz_Decimal7");
+            e.FieldKeys.Add("F_zzzz_Decimal8");
+            e.FieldKeys.Add("FSpecialOffer");
+            e.FieldKeys.Add("FMESScheduling");
+            e.FieldKeys.Add("FMESScheduling");
+            e.FieldKeys.Add("FIsUnsalablePrd");
+            e.FieldKeys.Add("FPlanProdDate");
+            e.FieldKeys.Add("FQitao");
+            e.FieldKeys.Add("FOrderEntryPlan");
+            e.FieldKeys.Add("FDetailLocId");
+            e.FieldKeys.Add("FDetailLocAddress");
+            e.FieldKeys.Add("FPlanDate");
+            e.FieldKeys.Add("FTransportLeadTime");
+            e.FieldKeys.Add("FPlanQty");
+            e.FieldKeys.Add("FCOLLECTIONNO");
+            e.FieldKeys.Add("FOtherARBillNo");
+            e.FieldKeys.Add("F_YQN_ZDR");
+            e.FieldKeys.Add("FCreatorId");
+            e.FieldKeys.Add("FISGuarantee");
+            e.FieldKeys.Add("F_zzzz_DDBZ");
+            e.FieldKeys.Add("F_YQN_CSHDDBH");
+            e.FieldKeys.Add("FCreatorId");
+            e.FieldKeys.Add("FModifierId");
+            e.FieldKeys.Add("F_YQN_DYXH");
+            e.FieldKeys.Add("F_YQN_GYS");
+            e.FieldKeys.Add("F_YQN_CGY1");
+            e.FieldKeys.Add("FFIRSTPRINTTIME");
+            e.FieldKeys.Add("F_ZZZZ_PRINTTIMES");
+            e.FieldKeys.Add("F_zzzz_PrintDateTime");
+            e.FieldKeys.Add("FFirstTime");
+            e.FieldKeys.Add("FLastTime");
+            e.FieldKeys.Add("FPrintCount");
+            e.FieldKeys.Add("FIsNeedCheck");
+            e.FieldKeys.Add("FISCASHSALE");
+            e.FieldKeys.Add("F_ZZZZ_QIAO");
+            e.FieldKeys.Add("F_ZZZZ_OEM");
+            e.FieldKeys.Add("FPushPrdPlan");
+            e.FieldKeys.Add("FLotTxt");
+            e.FieldKeys.Add("F_zzzz_Decimal");
+            e.FieldKeys.Add("F_zzzz_Decimal1");
+            e.FieldKeys.Add("F_zzzz_Assistant3");
+            e.FieldKeys.Add("F_zzzz_Assistant4");
+            e.FieldKeys.Add("F_zzzz_Assistant6");
+            e.FieldKeys.Add("F_zzzz_Assistant7");
+            e.FieldKeys.Add("F_zzzz_Assistant8");
+            e.FieldKeys.Add("F_zzzz_Assistant9");
+            e.FieldKeys.Add("FLossParam");
+            e.FieldKeys.Add("F_zzzz_Decimal5");
+            e.FieldKeys.Add("F_zzzz_Text1");
+            e.FieldKeys.Add("F_zzzz_Assistant1");
+            e.FieldKeys.Add("FSOStockId");
+            e.FieldKeys.Add("F_zzzz_FLBZ");
+            e.FieldKeys.Add("F_zzzz_WBBZ");
+            e.FieldKeys.Add("FISLAST");
+            e.FieldKeys.Add("F_zzzz_CQFS");
+            e.FieldKeys.Add("F_zzzz_MLKD");
+            e.FieldKeys.Add("F_zzzz_BGD");
+            e.FieldKeys.Add("F_zzzz_BKD");
+            e.FieldKeys.Add("F_zzzz_DDSL");
+            e.FieldKeys.Add("F_CUT_TIME");
+            e.FieldKeys.Add("F_BZ_TIME");
+            e.FieldKeys.Add("F_loss_backup");
+            e.FieldKeys.Add("FIsCustomerProvide");
+            e.FieldKeys.Add("FISREFRESHLOT");
+            e.FieldKeys.Add("F_zzzz_WBBZ1");
+            e.FieldKeys.Add("FSaleQty");
+            e.FieldKeys.Add("FTotalAmount");
+            e.FieldKeys.Add("FLotEmptyDate");
+            e.FieldKeys.Add("FSaleOutLot");
+            e.FieldKeys.Add("FIsClose");
+            e.FieldKeys.Add("FIsStatistics");
+            e.FieldKeys.Add("F_zzzz_CheckBox1");
+            e.FieldKeys.Add("F_zzzz_Text3");
+            e.FieldKeys.Add("F_zzzz_Text4");
+            e.FieldKeys.Add("F_zzzz_Text5");
+            e.FieldKeys.Add("F_zzzz_Text10");
+            e.FieldKeys.Add("F_zzzz_Text11");
+            e.FieldKeys.Add("F_zzzz_Integer");
+            e.FieldKeys.Add("FParentDateTime");
+            e.FieldKeys.Add("FChildrenDatetime");
+            e.FieldKeys.Add("FSplitSBillNo");
+            e.FieldKeys.Add("FIsNeedAllSend");
+            e.FieldKeys.Add("F_XSDD_PGBZ");
+            e.FieldKeys.Add("F_XSDD_PGSJ");
+            #endregion
+
+
+
+
+        }
+        public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+        {
+            base.AfterExecuteOperationTransaction(e);
+
+            CreateQkForm(e);
+
+            var srcDatas = e.SelectedRows;
+            //// 浣跨敤webapi寮曠敤缁勪欢Kingdee.BOS.WebApi.Client.dll锛岃繘琛屽崟鎹鐞�
+            //K3CloudApiClient client = new K3CloudApiClient("http://localhost/k3Cloud/");
+            ////var loginResult = client.ValidateLogin("5fe40ecc0b7bf2", "Administrator", "888888", 2052);//鏈湴鐜
+            //var loginResult = client.ValidateLogin("5f56ea565892f4", "Administrator", "ycy123", 2052);//姝e紡鐜
+            //var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>();
+            ////鐧诲綍缁撴灉绫诲瀷绛変簬1锛屼唬琛ㄧ櫥褰曟垚鍔�
+            //if (resultType == 1)
+            //{
+            CloudClient client = new CloudClient("http://localhost/k3Cloud/");
+            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟", "API鐧诲綍鎴愬姛");
+            Dictionary<string, string> dictionary = new Dictionary<string, string>();
+            foreach (var srcData in srcDatas)
+            {
+                //string billno = srcData["BillNo"].ToString();//鍗曟嵁缂栧彿
+                //string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}");
+                //JObject UnAuditResultObj = JObject.Parse(UnAuditResult);
+                //if (UnAuditResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                //{
+                //    string DeleteResult = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"NetworkCtrl\":\"\"}");
+                //}
+                bool curr = false;
+                string idlist = string.Empty;//鏆傚瓨鍗曟嵁闆嗗悎
+                string savejsonlist = string.Empty;//鏆傚瓨鍗曟嵁淇濆瓨JSON
+                string billno = srcData["BillNo"].ToString();//鍗曟嵁缂栧彿
+                bool IsSplitBill = bool.Parse(srcData["FIsSplitBill"].ToString());//鏄惁鎷嗗崟
+                if (IsSplitBill)
+                {
+                    try
+                    {
+                        WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "绗﹀悎鎷嗗崟鏉′欢锛�" + billno);
+                        string sql = $@"/*dialect*/SELECT B.FQitao
+                                    FROM dbo.T_SAL_ORDER A(NOLOCK)
+                                    JOIN dbo.T_SAL_ORDERENTRY B(NOLOCK) ON B.FID = A.FID
+                                    WHERE A.FBILLNO='{billno}'
+                                    GROUP BY B.FQitao";
+                        DataTable data = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
+                        //鎷嗗崟
+                        for (int i = 0; i < data.Rows.Count; i++)
+                        {
+                            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "杩涘叆鎷嗗崟寰幆");
+                            #region 鎷兼帴琛ㄥご
+                            string SplitBillNo = billno + "-" + (i + 1);//鎷嗗崟鍗曞彿
+                            StringBuilder sJson = new StringBuilder();
+                            sJson.Append("{");
+                            sJson.Append("\"NeedUpDateFields\": [],");
+                            sJson.Append("\"NeedReturnFields\": [],");
+                            sJson.Append("\"IsDeleteEntry\": \"true\",");
+                            sJson.Append("\"SubSystemId\": \"\",");
+                            sJson.Append("\"IsVerifyBaseDataField\": \"true\",");
+                            sJson.Append("\"IsEntryBatchFill\": \"true\",");
+                            sJson.Append("\"ValidateFlag\": \"true\",");
+                            sJson.Append("\"NumberSearch\": \"true\",");
+                            sJson.Append("\"InterationFlags\": \"\",");
+                            sJson.Append("\"Model\": {");
+                            sJson.Append("\"FID\": 0,");
+                            sJson.Append("\"FBillTypeID\": {\"FNUMBER\": \"" + ((srcData["BillTypeID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FDate\": \"" + (srcData["Date"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FSaleOrgId\": {\"FNumber\": \"" + ((srcData["SaleOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FCustId\": {\"FNumber\": \"" + ((srcData["CustId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FBillNo\": \"" + SplitBillNo + "\",");
+                            sJson.Append("\"FCOLLECTBALANCEAMOUNT\": " + (srcData["COLLECTBALANCEAMOUNT"]?.ToString() ?? "0") + ",");
+                            sJson.Append("\"FReceiveId\": {\"FNumber\": \"" + ((srcData["ReceiveId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FSaleDeptId\": {\"FNumber\": \"" + ((srcData["SaleDeptId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FSaleGroupId\": {\"FNumber\": \"" + ((srcData["SaleGroupId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FSalerId\": {\"FNumber\": \"" + ((srcData["SalerId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FSettleId\": {\"FNumber\": \"" + ((srcData["SettleId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FReceiveContact\": {\"FNumber\": \"" + ((srcData["ReceiveContact"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FChargeId\": {\"FNumber\": \"" + ((srcData["ChargeId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FISINIT\": \"" + (srcData["ISINIT"]?.ToString() ?? "False") + "\",");
+                            sJson.Append("\"FISGuarantee\": \"" + (srcData["ISGuarantee"]?.ToString() ?? "false") + "\",");
+                            if ((srcData["F_YQN_ZDR"]?.ToString() ?? "") == "")
+                            {
+                                sJson.Append("\"F_YQN_ZDR\": \"" + ((srcData["CreatorId"] as DynamicObject)?["Name"].ToString() ?? "") + "\",");
+                            }
+                            else
+                            {
+                                sJson.Append("\"F_YQN_ZDR\": \"" + (srcData["F_YQN_ZDR"]?.ToString() ?? "") + "\",");
+                            }
+                            sJson.Append("\"FISCASHSALE\": \"" + (srcData["ISCASHSALE"]?.ToString() ?? "false") + "\",");
+                            sJson.Append("\"FIsNeedCheck\": \"True\",");
+                            sJson.Append("\"FISLAST\": \"False\",");
+                            sJson.Append("\"FFIRSTPRINTTIME\": \"" + (srcData["FFIRSTPRINTTIME"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"F_zzzz_PrintDateTime\": \"" + (srcData["F_zzzz_PrintDateTime"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"F_ZZZZ_PRINTTIMES\": " + (srcData["F_ZZZZ_PRINTTIMES"]?.ToString() ?? "0") + ",");
+                            sJson.Append("\"FFirstTime\": \"" + (srcData["FFirstTime"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FLastTime\": \"" + (srcData["FLastTime"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FPrintCount\": " + (srcData["FPrintCount"]?.ToString() ?? "0") + ",");
+                            sJson.Append("\"F_YQN_CSHDDBH\": \"" + (srcData["F_YQN_CSHDDBH"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FCOLLECTIONNO\": \"" + (srcData["COLLECTIONNO"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FOtherARBillNo\": \"" + (srcData["OtherARBillNo"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FNote\": \"" + (srcData["Note"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FIsMobile\": \"" + (srcData["IsMobile"]?.ToString() ?? "false") + "\",");
+                            sJson.Append("\"FHEADLOCID\": {\"FNUMBER\": \"" + ((srcData["HEADLOCID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FWEBANKACCOUNT\": {\"FNUMBER\": \"" + ((srcData["WEBANKACCOUNT"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FPAYCUSTOMER\": {\"FNUMBER\": \"" + ((srcData["PAYCUSTOMER"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FCustInvioce\": {\"FNUMBER\": \"" + ((srcData["CustInvioce"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FLCLSituation\": \"" + (srcData["LCLSituation"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"F_zzzz_Text8\": \"" + (srcData["F_zzzz_Text8"]?.ToString() ?? "") + "\",");
+                            //sJson.Append("\"FDifferenceAmount\": " + (srcData["FDifferenceAmount"]?.ToString() ?? "0") + ",");
+                            sJson.Append("\"FCollectionTime\": \"" + (srcData["CollectionTime"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"F_zzzz_CheckBox2\": \"" + (srcData["F_zzzz_CheckBox2"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FIsSplitBill\": \"false\",");
+                            sJson.Append("\"F_zzzz_Assistant\": {\"FNumber\": \"" + ((srcData["F_zzzz_Assistant"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FLinkPhone\": \"" + (srcData["FLinkPhone"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FReceiveAddress\": \"" + (srcData["ReceiveAddress"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"F_zzzz_Text7\": \"" + (srcData["F_zzzz_Text7"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FCreatorId\": {\"FUserID\": " + (srcData["CreatorId_Id"]?.ToString() ?? "0") + "},");
+                            sJson.Append("\"FModifierId\": {\"FUserID\": " + (srcData["ModifierId_Id"]?.ToString() ?? "0") + "},");
+                            sJson.Append("\"F_zzzz_FLBZ\": \"" + (srcData["F_zzzz_FLBZ"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"F_zzzz_WBBZ\": \"" + (srcData["F_zzzz_WBBZ"]?.ToString() ?? "") + "\",");
+                            sJson.Append("\"FIsStatistics\": \"True\",");
+                            string no = billno;
+                            string bno = string.Empty;
+                            if ((no.IndexOf("_") == -1 ? 99999 : no.IndexOf("_")) > (no.IndexOf("-") == -1 ? 99999 : no.IndexOf("-")))
+                            {
+                                bno = no.Substring(0, no.IndexOf("-"));
+                            }
+                            else if ((no.IndexOf("_") == -1 ? 99999 : no.IndexOf("_")) < (no.IndexOf("-") == -1 ? 99999 : no.IndexOf("-")))
+                            {
+                                bno = no.Substring(0, no.IndexOf("_"));
+                            }
+                            else if ((no.IndexOf("_") == -1 ? 99999 : no.IndexOf("_")) == (no.IndexOf("-") == -1 ? 99999 : no.IndexOf("-")))
+                            {
+                                bno = no;
+                            }
+                            sJson.Append("\"FSplitSBillNo\": \""+ bno + "\",");
+                            sJson.Append("\"FIsNeedAllSend\": \"" + (srcData["FIsNeedAllSend"]?.ToString() ?? "false") + "\",");
+                            sJson.Append("\"F_zzzz_CheckBox1\": \"" + (srcData["F_zzzz_CheckBox1"]?.ToString() ?? "false") + "\",");
+                            sJson.Append("\"FIsCustomerProvide\": \"" + (srcData["FIsCustomerProvide"]?.ToString() ?? "false") + "\",");
+                            DynamicObjectCollection SaleDataFinance = srcData["SaleOrderFinance"] as DynamicObjectCollection;//璐㈠姟鏄庣粏
+                            sJson.Append("\"FSaleOrderFinance\":");
+                            sJson.Append("{");
+                            sJson.Append("\"FSettleCurrId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["SettleCurrId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FRecConditionId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["RecConditionId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FIsPriceExcludeTax\": \"" + (SaleDataFinance[0]["IsPriceExcludeTax"]?.ToString() ?? "false") + "\",");
+                            sJson.Append("\"FSettleModeId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["SettleModeId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FIsIncludedTax\": \"" + (SaleDataFinance[0]["IsIncludedTax"]?.ToString() ?? "false") + "\",");
+                            sJson.Append("\"FExchangeTypeId\": {\"FNumber\": \"" + ((SaleDataFinance[0]["ExchangeTypeId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                            sJson.Append("\"FOverOrgTransDirect\": \"" + (SaleDataFinance[0]["OverOrgTransDirect"]?.ToString() ?? "false") + "\"");
+                            sJson.Append("},");
+                            sJson.Append("\"FSaleOrderEntry\": [");
+                            #endregion
+                            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "琛ㄥごJSON澶勭悊瀹�");
+                            //鎷嗘槑缁�
+                            DynamicObjectCollection SaleData = srcData["SaleOrderEntry"] as DynamicObjectCollection;//璁㈠崟鏄庣粏
+                            string sqldtl = $@"/*dialect*/SELECT B.FSEQ
+                                        FROM dbo.T_SAL_ORDER A(NOLOCK)
+                                        JOIN dbo.T_SAL_ORDERENTRY B(NOLOCK) ON B.FID = A.FID
+                                        WHERE A.FBILLNO='{billno}' AND B.FQitao='{data.Rows[i]["FQitao"]}'";
+                            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "琛ㄤ綋鎷兼帴sql鎵ц璇彞锛�" + sqldtl);
+                            DataTable datadtl = DBServiceHelper.ExecuteDataSet(this.Context, sqldtl).Tables[0];
+                            for (int j = 0; j < datadtl.Rows.Count; j++)
+                            {
+                                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "琛ㄤ綋寰幆寮�濮�");
+                                int fseq = int.Parse(datadtl.Rows[j]["FSEQ"].ToString());
+                                sJson.Append("{");
+                                sJson.Append("\"FRowType\": \"" + (SaleData[fseq - 1]["RowType"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FMapId\": {\"FName\": \"" + ((SaleData[fseq - 1]["MapId"] as DynamicObject)?["Name"].ToString() ?? "") + "\"},");
+                                //sJson.Append("\"FSUBMATERIALNUMBER\": {\"FName\": \"" + ((SaleData[fseq - 1]["SUBMATERIALNUMBER"] as DynamicObject)?["Name"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FSUBMATERIALNUMBER\": {\"FNUMBER\": \"" + ((SaleData[fseq - 1]["SUBMATERIALNUMBER"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                //sJson.Append("\"FMaterialId\": {\"FName\": \"" + ((SaleData[fseq - 1]["MaterialId"] as DynamicObject)?["Name"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FMaterialId\": {\"FNUMBER\": \"" + ((SaleData[fseq - 1]["MaterialId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FUnitID\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["UnitID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                //sJson.Append("\"FPrice\": " + (SaleData[fseq - 1]["Price"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_Decimal4\": " + (SaleData[fseq - 1]["F_zzzz_Decimal4"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FIsFree\": \"" + (SaleData[fseq - 1]["IsFree"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"FEntryTaxRate\": " + (SaleData[fseq - 1]["TaxRate"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FDeliveryDate\": \"" + (SaleData[fseq - 1]["DeliveryDate"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FStockOrgId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["StockOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FSettleOrgIds\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["SettleOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FSupplyOrgId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["SupplyOrgId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FOwnerTypeId\": \"" + (SaleData[fseq - 1]["OwnerTypeId"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FOwnerId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["OwnerId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FReserveType\": \"" + (SaleData[fseq - 1]["ReserveType"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text9\": \" " + (SaleData[fseq - 1]["F_zzzz_Text9"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FPriceBaseQty\": " + (SaleData[fseq - 1]["PriceBaseQty"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FStockUnitID\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["StockUnitID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FStockQty\": " + (SaleData[fseq - 1]["StockQty"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FStockBaseQty\": " + (SaleData[fseq - 1]["StockBaseQty"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_DDBZ\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_DDBZ"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FOUTLMTUNIT\": \"" + (SaleData[fseq - 1]["OUTLMTUNIT"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FOutLmtUnitID\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["OutLmtUnitID"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FISMRP\": \"" + (SaleData[fseq - 1]["FISMRP"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"FLOCKSTOCK\": \"" + (SaleData[fseq - 1]["LOCKSTOCK"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"F_zzzz_CheckBox\": \"" + (SaleData[fseq - 1]["F_zzzz_CheckBox"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"FPushPrdPlan\": \"" + (SaleData[fseq - 1]["FPushPrdPlan"]?.ToString() ?? "false") + "\",");
+                                //sJson.Append("\"F_zzzz_CheckBox1\": \"" + (SaleData[fseq - 1]["F_zzzz_CheckBox1"]?.ToString() ?? "false") + "\",");
+                                //sJson.Append("\"F_zzzz_Combo7\": \"" + (SaleData[fseq - 1]["F_zzzz_Combo7"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_BKD\": " + (SaleData[fseq - 1]["F_zzzz_BKD"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_BGD\": " + (SaleData[fseq - 1]["F_zzzz_BGD"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_MLKD\": " + (SaleData[fseq - 1]["F_zzzz_MLKD"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_CQFS\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_CQFS"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_DDSL\": " + (SaleData[fseq - 1]["F_zzzz_DDSL"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_ZZZZ_OEM\": \"" + (SaleData[fseq - 1]["F_ZZZZ_OEM"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_ZZZZ_QIAO\": \"" + (SaleData[fseq - 1]["F_ZZZZ_QIAO"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_YQN_DYXH\": \"" + (SaleData[fseq - 1]["F_YQN_DYXH"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_YQN_GYS\": \"" + (SaleData[fseq - 1]["F_YQN_GYS"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_YQN_CGY1\": \"" + (SaleData[fseq - 1]["F_YQN_CGY1"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text\": \"" + (SaleData[fseq - 1]["F_zzzz_Text"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Assistant2\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant2"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Decimal7\": " + (SaleData[fseq - 1]["F_zzzz_Decimal7"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_Decimal8\": " + (SaleData[fseq - 1]["F_zzzz_Decimal8"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FSpecialOffer\": \"" + (SaleData[fseq - 1]["SpecialOffer"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"FIsClose\": \"" + (SaleData[fseq - 1]["FIsClose"]?.ToString() ?? "A") + "\",");
+                                sJson.Append("\"FMESScheduling\": \"" + (SaleData[fseq - 1]["FMESScheduling"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"FIsUnsalablePrd\": \"" + (SaleData[fseq - 1]["IsUnsalablePrd"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"FPlanProdDate\": \"" + (SaleData[fseq - 1]["PlanProdDate"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FISREFRESHLOT\": \"" + (SaleData[fseq - 1]["FISREFRESHLOT"]?.ToString() ?? "false") + "\",");
+                                sJson.Append("\"F_zzzz_Assistant3\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant3"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Assistant4\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant4"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Assistant6\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant6"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Assistant7\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant7"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Assistant8\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant8"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Assistant9\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant9"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Assistant1\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["F_zzzz_Assistant1"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"F_zzzz_Decimal\": " + (SaleData[fseq - 1]["F_zzzz_Decimal"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_Decimal1\": " + (SaleData[fseq - 1]["F_zzzz_Decimal1"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_zzzz_Decimal5\": " + (SaleData[fseq - 1]["F_zzzz_Decimal5"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"F_XSDD_PGBZ\": \"" + (SaleData[fseq - 1]["F_XSDD_PGBZ"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_XSDD_PGSJ\": \"" + (SaleData[fseq - 1]["F_XSDD_PGSJ"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text1\": \"" + (SaleData[fseq - 1]["F_zzzz_Text1"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_WBBZ1\": \"" + (SaleData[fseq - 1]["F_zzzz_WBBZ1"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FSaleQty\": " + (SaleData[fseq - 1]["FSaleQty"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FTotalAmount\": " + (SaleData[fseq - 1]["FTotalAmount"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FLossParam\": " + (SaleData[fseq - 1]["LossParam"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FEntryNote\": \"" + (SaleData[fseq - 1]["Note"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_BZ_TIME\": \"" + (SaleData[fseq - 1]["F_BZ_TIME"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_CUT_TIME\": \"" + (SaleData[fseq - 1]["F_CUT_TIME"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_loss_backup\": " + (SaleData[fseq - 1]["F_loss_backup"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FSOStockId\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["SOStockId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                //sJson.Append("\"FQitao\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["FQitao"] as DynamicObject)?["FNumber"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FQty\": " + (SaleData[fseq - 1]["Qty"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FLot\": {\"FNumber\": \"" + ((SaleData[fseq - 1]["Lot"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                sJson.Append("\"FTaxPrice\": " + (SaleData[fseq - 1]["TaxPrice"]?.ToString() ?? "0") + ",");
+                                sJson.Append("\"FLotEmptyDate\": \"" + (SaleData[fseq - 1]["FLotEmptyDate"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FSaleOutLot\": \"" + (SaleData[fseq - 1]["FSaleOutLot"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text3\": \"" + (SaleData[fseq - 1]["F_zzzz_Text3"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text4\": \"" + (SaleData[fseq - 1]["F_zzzz_Text4"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text5\": \"" + (SaleData[fseq - 1]["F_zzzz_Text5"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text10\": \"" + (SaleData[fseq - 1]["F_zzzz_Text10"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Text11\": \"" + (SaleData[fseq - 1]["F_zzzz_Text11"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"F_zzzz_Integer\": \"" + (SaleData[fseq - 1]["F_zzzz_Integer"]?.ToString() ?? "0") + "\",");
+                                sJson.Append("\"FParentDateTime\": \"" + (SaleData[fseq - 1]["FParentDateTime"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FChildrenDatetime\": \"" + (SaleData[fseq - 1]["FChildrenDatetime"]?.ToString() ?? "") + "\",");
+                                sJson.Append("\"FLotTxt\": \"" + (SaleData[fseq - 1]["FLotTxt"]?.ToString() ?? "0") + "\"");
+                                //sJson.Append("\"FLotTxt\": \"" + (SaleData[fseq - 1]["FLotTxt"]?.ToString() ?? "0") + "\",");
+                                //鎶ラ敊鏈煡鍑哄師鍥狅紝鏆傛嬁鎺変氦璐ф槑缁嗚〃浣�20210302
+                                //DynamicObjectCollection SaleDataPlan = SaleData[fseq - 1]["OrderEntryPlan"] as DynamicObjectCollection;
+                                //sJson.Append("\"FOrderEntryPlan\": [{");
+                                //sJson.Append("\"FDetailLocId\": {\"FNumber\": \"" + ((SaleDataPlan[0]["DetailLocId"] as DynamicObject)?["Number"].ToString() ?? "") + "\"},");
+                                //sJson.Append("\"FDetailLocAddress\": \"" + (SaleDataPlan[0]["DetailLocAddress"]?.ToString() ?? "") + "\",");
+                                //sJson.Append("\"FPlanDate\": \"" + (SaleDataPlan[0]["PlanDate"]?.ToString() ?? "") + "\",");
+                                //sJson.Append("\"FTransportLeadTime\": " + (SaleDataPlan[0]["TransportLeadTime"]?.ToString() ?? "") + ",");
+                                //sJson.Append("\"FPlanQty\": " + (SaleDataPlan[0]["PlanQty"]?.ToString() ?? "0") + "}]");
+                                sJson.Append("}");
+
+                                if (j != datadtl.Rows.Count - 1)
+                                {
+                                    sJson.Append(",");
+                                }
+                                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "琛ㄤ綋寰幆缁撴潫");
+                            }
+                            sJson.Append("]");
+                            //sJson.Append("\"FSaleOrderPlan\": [");
+                            //sJson.Append("{");
+                            //sJson.Append("\"FNeedRecAdvance\": " + SaleData[fseq - 1]["RowType"].ToString() + ",");
+                            //sJson.Append("\"FRecAdvanceRate\": " + SaleData[fseq - 1]["RowType"].ToString() + ",");
+                            //sJson.Append("\"FRecAdvanceAmount\": " + SaleData[fseq - 1]["RowType"].ToString() + ",");
+                            //sJson.Append("\"FIsOutStockByRecamount\": " + SaleData[fseq - 1]["RowType"].ToString() + "");
+                            //sJson.Append("}");
+                            //sJson.Append("]");
+                            sJson.Append("}");
+                            sJson.Append("}");
+                            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "琛ㄤ綋JSON澶勭悊缁撴潫锛屽崟鎹甁SON锛�" + sJson.ToString());
+                            JObject aa = JObject.Parse(JObject.Parse(sJson.ToString())["Model"].ToString());
+                            savejsonlist += aa.ToString() + ",";
+                            #region 绗竴鐗�
+                            ////鏆傚瓨澶勭悊
+                            //string DraftResult = client.Draft("SAL_SaleOrder", sJson.ToString());
+                            //WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "琛ㄤ綋JSON澶勭悊缁撴潫锛屾殏瀛樼粨鏋滐細" + DraftResult);
+                            //JObject DraftResultObj = JObject.Parse(DraftResult);
+                            //if (DraftResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                            //{
+                            //    JObject aa = JObject.Parse(JObject.Parse(sJson.ToString())["Model"].ToString());
+                            //    aa["FID"] = DraftResultObj["Result"]["Id"].ToString();
+                            //    savejsonlist += aa.ToString() + ",";
+                            //    idlist += DraftResultObj["Result"]["Id"].ToString() + ",";
+                            //    //LogHelper.Info("璁㈠崟瀹℃牳鎷嗗崟json:"+ aa.ToString());
+                            //}
+                            //else//鏆傚瓨澶辫触鍒欏垹闄ゅ綋鍓嶅崟鎹媶鍑烘潵鐨勬墍鏈夋殏瀛樺崟鎹紝骞朵笖璺冲嚭褰撳墠鎷嗗崟鍗曟嵁锛岃繘琛屼笅涓�涓媶鍗曞鐞�
+                            //{
+                            //    idlist = idlist.Substring(0, idlist.Length - 1);
+                            //    string deletemessage = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"NetworkCtrl\":\"\"}");
+                            //    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鏆傚瓨澶辫触锛屽垹闄ゅ師璁㈠崟鎷嗗崟缁撴灉锛�" + deletemessage);
+                            //    dictionary.Add(billno, DraftResultObj["Result"]["ResponseStatus"]["Errors"].ToString());
+                            //    curr = true;
+                            //    break;
+                            //}
+                            #endregion  
+
+                        }
+                        string successNo = string.Empty;
+                        savejsonlist = savejsonlist.Substring(0, savejsonlist.Length - 1);
+                        WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺淇濆瓨JSON锛�" + "{\"NumberSearch\":\"true\",\"ValidateFlag\":\"true\",\"IsDeleteEntry\":\"true\",\"IsEntryBatchFill\":\"true\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"SubSystemId\":\"\",\"InterationFlags\":\"\",\"Model\":[" + savejsonlist.Replace("\r", "").Replace("\n", "") + "],\"BatchCount\":" + data.Rows.Count.ToString() + "}");
+                        string message = client.BatchSave("SAL_SaleOrder", "{\"NumberSearch\":\"true\",\"ValidateFlag\":\"true\",\"IsDeleteEntry\":\"true\",\"IsEntryBatchFill\":\"true\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"SubSystemId\":\"\",\"InterationFlags\":\"\",\"Model\":[" + savejsonlist.Replace("\r", "").Replace("\n", "") + "],\"BatchCount\":" + data.Rows.Count.ToString() + "}");
+                        WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺淇濆瓨缁撴灉锛�" + message);
+                        JObject messageObj = JObject.Parse(message);
+                        for (int i = 0; i < messageObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToList().Count; i++)
+                        {
+                            successNo += messageObj["Result"]["ResponseStatus"]["SuccessEntitys"][i]["Id"].ToString() + ",";
+                        }
+                        if (successNo.Length > 0)
+                        {
+                            successNo = successNo.Substring(0, successNo.Length - 1);
+                        }
+                        if (messageObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                        {
+                            string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}");
+                            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍙嶅鏍哥粨鏋滐細" + UnAuditResult);
+                            JObject UnAuditResultObj = JObject.Parse(UnAuditResult);
+                            if (UnAuditResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                            {
+                                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍒犻櫎鍘熷崟寮�濮嬫椂闂达細" + DateTime.Now.ToString());
+                                string DeleteResult = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"NetworkCtrl\":\"\"}");
+                                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍒犻櫎鍘熷崟缁撴潫鏃堕棿" + DateTime.Now.ToString());
+                                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍒犻櫎缁撴灉锛�" + DeleteResult);
+                                JObject DeleteResultObj = JObject.Parse(DeleteResult);
+                                if (DeleteResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                                {
+                                    sql = $@"/*dialect*/UPDATE  A
+                                            SET A.FIsStatistics=0
+                                            FROM dbo.T_SAL_ORDER A
+                                            WHERE A.FID IN ({successNo})";
+                                    int rows = DBServiceHelper.Execute(this.Context, sql);
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鏇存柊鏄惁缁熻缁撴灉锛�" + rows);
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺鎻愪氦寮�濮嬫椂闂�" + DateTime.Now.ToString());
+                                    string mes = client.Submit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"SelectedPostId\":0,\"NetworkCtrl\":\"\"}");
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺鎻愪氦缁撴潫鏃堕棿" + DateTime.Now.ToString());
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺鎻愪氦缁撴灉锛�" + mes);
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺瀹℃牳寮�濮嬫椂闂�" + DateTime.Now.ToString());
+                                    string mess = client.Audit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}");
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺瀹℃牳缁撴潫鏃堕棿" + DateTime.Now.ToString());
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺瀹℃牳缁撴灉锛�" + mess);
+
+
+
+                                    //dictionary.Add(billno, "鎷嗗崟鎴愬姛锛�");
+                                }
+                                else
+                                {
+                                    if (successNo.Length > 0)
+                                    {
+                                        string deletestr = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"NetworkCtrl\":\"\"}");
+                                        WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍘熷崟鍒犻櫎澶辫触--鎷嗗崟鎴愬姛鐨勫崟鎹垹闄ょ粨鏋滐細" + deletestr);
+                                        dictionary.Add(billno, "鎷嗗崟澶辫触,璇︾粏鍘熷洜锛氬師鍗曞垹闄ゅけ璐ワ紒");
+                                    }
+                                        
+                                }
+                            }
+                            else
+                            {
+                                if (successNo.Length > 0)
+                                {
+                                    string unaduitstr = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"NetworkCtrl\":\"\"}");
+                                    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍘熷崟鍙嶅鏍稿け璐�--鎷嗗崟鎴愬姛鐨勫崟鎹垹闄ょ粨鏋滐細" + unaduitstr);
+                                    dictionary.Add(billno, "鎷嗗崟澶辫触,璇︾粏鍘熷洜锛氬師鍗曞弽瀹℃牳澶辫触锛�");
+                                }
+
+                            }
+                        }
+                        else
+                        {
+                            if (successNo.Length > 0)
+                            {
+                                string spiltstr = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + successNo + "\",\"NetworkCtrl\":\"\"}");
+                                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍘熷崟鎷嗗崟澶辫触--鎷嗗崟鎴愬姛鐨勫崟鎹垹闄ょ粨鏋滐細" + spiltstr);
+                                dictionary.Add(billno, "鎷嗗崟澶辫触,璇︾粏鍘熷洜锛氬師鍗曟媶鍗曞け璐ワ紒");
+                            }
+
+                        }
+
+                        #region 绗竴鐗�
+                        //if (curr)
+                        //{
+                        //    string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}");
+                        //    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎷嗗崟鏆傚瓨澶辫触锛岃繘琛屽師鍗曞弽瀹℃牳锛�" + UnAuditResult);
+                        //}
+                        //else
+                        //{
+                        //    savejsonlist = savejsonlist.Substring(0, savejsonlist.Length - 1);
+                        //    idlist = idlist.Substring(0, idlist.Length - 1);
+                        //    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "JSON锛�" + savejsonlist);
+                        //    //鎷嗗崟鏆傚瓨瀹屽悗鍒犻櫎鍘熷崟鎹紝鍦ㄥ鏆傚瓨鍗曟嵁杩涜淇濆瓨
+                        //    string UnAuditResult = client.UnAudit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}");
+                        //    WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍙嶅鏍哥粨鏋滐細" + UnAuditResult);
+                        //    JObject UnAuditResultObj = JObject.Parse(UnAuditResult);
+                        //    if (UnAuditResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                        //    {
+                        //        string DeleteResult = client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":['" + billno + "'],\"Ids\":\"\",\"NetworkCtrl\":\"\"}");
+                        //        WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鍒犻櫎缁撴灉锛�" + DeleteResult);
+                        //        JObject DeleteResultObj = JObject.Parse(DeleteResult);
+                        //        if (DeleteResultObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                        //        {
+                        //            string message = client.BatchSave("SAL_SaleOrder", "{\"NumberSearch\":\"true\",\"ValidateFlag\":\"true\",\"IsDeleteEntry\":\"true\",\"IsEntryBatchFill\":\"true\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"SubSystemId\":\"\",\"InterationFlags\":\"\",\"Model\":[" + savejsonlist.Replace("\r", "").Replace("\n", "") + "],\"BatchCount\":" + data.Rows.Count.ToString() + "}");
+                        //            WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺淇濆瓨缁撴灉锛�" + message);
+                        //            JObject messageObj = JObject.Parse(message);
+                        //            if (messageObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
+                        //            {
+                        //                string str = $@"/*dialect*/UPDATE A
+                        //                                SET A.FLOT=A.FLotTxt,A.FLOT_TEXT=ISNULL(C.FNAME,'')
+                        //                                FROM dbo.T_SAL_ORDERENTRY A(NOLOCK)
+                        //                                JOIN dbo.T_SAL_ORDER B(NOLOCK) ON B.FID = A.FID
+                        //                                JOIN T_BD_LOTMASTER_L C(NOLOCK) ON C.FLOTID=A.FLotTxt
+                        //                                WHERE B.FBILLNO LIKE '%{billno}%'";
+                        //                DBServiceHelper.Execute(this.Context, str);
+                        //                string mes = client.Submit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"SelectedPostId\":0,\"NetworkCtrl\":\"\"}");
+                        //                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺鎻愪氦缁撴灉锛�" + mes);
+                        //                string mess = client.Audit("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"InterationFlags\":\"\",\"NetworkCtrl\":\"\"}");
+                        //                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎵归噺瀹℃牳缁撴灉锛�" + mess);
+                        //                //dictionary.Add(billno, messageObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToString());
+                        //            }
+                        //            else
+                        //            {
+                        //                dictionary.Add(billno, messageObj["Result"]["ResponseStatus"]["Errors"].ToString());
+                        //            }
+
+                        //        }
+                        //        else
+                        //        {
+                        //            client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"NetworkCtrl\":\"\"}");
+                        //        }
+                        //    }
+                        //    else
+                        //    {
+                        //        client.Delete("SAL_SaleOrder", "{\"CreateOrgId\":0,\"Numbers\":[],\"Ids\":\"" + idlist + "\",\"NetworkCtrl\":\"\"}");
+                        //    }
+                        //}
+                        #endregion 
+
+
+                    }
+                    catch (Exception ex)
+                    {
+                        WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "寮傚父淇℃伅锛�" + JsonConvert.SerializeObject(ex));
+                        throw new Exception(ex.Message);
+                    }
+
+
+                }
+                WriteLog.SAL_SaleOrderSplitBill("璁㈠崟瀹℃牳鎷嗗崟锛�" + billno, "鎴鏃堕棿:" + DateTime.Now.ToString());
+
+            }
+            //瀵规媶鍗曠粨鏋滆繘琛屾彁绀�
+            foreach (var item in dictionary)
+            {
+                ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, "鎷嗗崟淇℃伅锛�" + item.Value);
+            }
+
+            //}
+            //else
+            //{
+            //    throw new Exception("閲戣澏API鐧诲綍澶辫触锛佽缁嗗師鍥狅細1.妫�鏌ュ瘑鐮佹槸鍚﹁皟鏁达紝璋冩暣璇疯仈绯婚噾铦跺紑鍙戜汉鍛樸��2.璇锋鏌ョ綉缁滅姸鍐碉紒");
+            //}
+            
+        }
+
+        public static class ResultMessage
+        {/// <summary>
+         /// 淇敼鎻愮ず淇℃伅
+         /// </summary>
+         /// <param name="operateResult"></param>
+         /// <param name="billno"></param>
+         /// <param name="message"></param>
+            public static void dataError(OperateResultCollection operateResult, string billno, string message)
+            {
+                OperateResult operate = operateResult.Where(n => n.Number == billno).First();
+                operate.Message = message;
+                operate.SuccessStatus = false;
+                operate.MessageType = MessageType.Normal;
+            }
+
+
+        }
+
+
+
+    }
+}
diff --git a/src/Model/Demo.Model/Model/DayPlanMaterial.cs b/src/Model/Demo.Model/Model/DayPlanMaterial.cs
index b3835a5..56f70d8 100644
--- a/src/Model/Demo.Model/Model/DayPlanMaterial.cs
+++ b/src/Model/Demo.Model/Model/DayPlanMaterial.cs
@@ -110,5 +110,13 @@
         /// </summary>
         public string FDayPlanFBILLNO { get; set; }
 
+        /// <summary>
+        /// FDayPlanPpbomFEntryId
+        /// 鏃ヨ鍒掔敤鏂欐竻鍗旻entryID
+        /// </summary>
+        public string FDayPlanPpbomFEntryId { get; set; }
+
+        public string FWORKSHOPID { get; set; }
+
     }
 }

--
Gitblit v1.9.1