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