From ddc23c8a38e7df3c294ca3227793ef717beb6580 Mon Sep 17 00:00:00 2001 From: 王 垚 <1402714037@qq.com> Date: 星期一, 14 十二月 2020 14:21:39 +0800 Subject: [PATCH] JIT分析更改后代码上传 --- src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 217 insertions(+), 4 deletions(-) diff --git a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs index 605431d..080462a 100644 --- a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs +++ b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs @@ -25,6 +25,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; +using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.CompilerServices; @@ -95,7 +96,8 @@ if (e.BarItemKey.ToUpper() == "TBCOMPLETE") { - COMPLETEMAIN(); + CompleteSetAnalysis(); + //COMPLETEMAIN(); // COMPLETE(); } //鎻愭枡璁″垝 @@ -122,7 +124,7 @@ /// <summary> /// 琛屽弻鍑� 璺冲嚭榻愬鍒嗘瀽鏄庣粏鍒楄〃 /// </summary> - /// <param name="e"></param> + /// <param name="e"></param> public override void EntityRowDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e) { var m = e.Row; @@ -515,7 +517,6 @@ else { grid.SetForecolor("FT" + "" + i + "", "#FF0000", m); - } } @@ -544,7 +545,7 @@ /// <param name="FMainInterID"> 鐢熶骇璁㈠崟涓荤爜</param> /// <param name="FMainEntryID"> 鐢熶骇璁㈠崟瀛愮爜</param> /// <param name="FDayPlanWorkID"> 鏃ヨ鍒掑伐鍗旻ID</param> - /// <param name="FDayPlanWorkID"> 璁″垝鎬绘暟閲�</param> + /// <param name="SumPlan"> 璁″垝鎬绘暟閲�</param> /// <param name="FStockOrgId"> 搴撳瓨缁勭粐</param> /// <returns></returns> public string SumGetComplete(string FMATERIALID, string FMainInterID, string FMainEntryID, string FDayPlanWorkID, decimal SumPlan, string FStockOrgId) @@ -755,6 +756,204 @@ + ///榻愬鍒嗘瀽 + + public void CompleteSetAnalysis() + { + Stopwatch sw = new Stopwatch(); + sw.Start();//寮�濮嬭鏃� + //鑾峰彇褰撳墠鍗虫椂搴撳瓨 鎸夌収鐗╂枡+搴撳瓨缁勭粐+璐т富+搴撳瓨鏁伴噺 + DataSet ds = DBServiceHelper.ExecuteDataSet(Context, @" +/*dialect*/ + select isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0) FBASEQTY,T1.FStockOrgId,T1.FMATERIALID,a.FOWNERID,c.FNUMBER from +( +select a.FHPRDORGID FStockOrgId,T2.FMATERIALID from SC_WORKBILLSORTBILLMAIN a +join SC_WORKBILLSORTBILLSub b on a.FID = b.FID +join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID +LEFT JOIN(select FID,FMATERIALID from T_PRD_PPBOMENTRY +group by FMATERIALID,FID) T2 on T1.FID = t2.FID +group by a.FHPRDORGID,T2.FMATERIALID +) T1 +LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID +LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID and a.FOwnerId = b.FOwnerId +LEFT join T_ORG_Organizations c on a.FOWNERID = c.FORGID +where isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0)>0 +"); + ListInventory = ds.ToModelList<PRD_Inventory>(); + + //鎬诲簱瀛� 鐗╂枡+搴撳瓨缁勭粐+搴撳瓨鏁伴噺 + ds = DBServiceHelper.ExecuteDataSet(Context, @" +/*dialect*/ + select sum(isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0))FBASEQTY,T1.FStockOrgId,T1.FMATERIALID from +( +select a.FHPRDORGID FStockOrgId,T2.FMATERIALID from SC_WORKBILLSORTBILLMAIN a +join SC_WORKBILLSORTBILLSub b on a.FID = b.FID +join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID +LEFT JOIN(select FID,FMATERIALID from T_PRD_PPBOMENTRY +group by FMATERIALID,FID) T2 on T1.FID = t2.FID +group by a.FHPRDORGID,T2.FMATERIALID +) T1 +LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID +LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID +group by T1.FStockOrgId,T1.FMATERIALID + +"); + ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>(); + + + //闇�瑕侀綈濂楀垎鏋愮殑鏁版嵁 + string sql = @" +/*dialect*/ +select a.FPRDMOMAINID,a.FPRDMOENTYID,a.FID,b.FEntryID,a.FHPRDORGID FStockOrgId,t5.FNUMBER as OrgFnumber,a.FHOrderLev,b.FHQTY,b.FHMASTERDATE,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty, +T2.FMATERIALID FMATERIALID2, T4.FNumber,T2.FNeedQty,FNeedQty/FQty dwyl,FHQTY*(FNeedQty/FQty) PlanCount from SC_WORKBILLSORTBILLMAIN a +join SC_WORKBILLSORTBILLSub b on a.FID = b.FID +join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID +LEFT JOIN(select FID, MAX(FENTRYID) FENTRYID, SUM(FNeedQty) FNeedQty, FMATERIALID from T_PRD_PPBOMENTRY +group by FMATERIALID, FID ) T2 on T1.FID = t2.FID + --LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID +JOIN T_BD_MATERIAL T4 on T2.FMATERIALID = T4.FMATERIALID +JOIN T_ORG_Organizations t5 on a.FHPRDORGID = t5.FORGID +--where FPRDMOMAINID = 100010 +ORDER BY b.FHMASTERDATE,a.FHOrderLev "; + ds = DBServiceHelper.ExecuteDataSet(Context, sql); + List<PRD_PPBOM> BomList = ds.ToModelList<PRD_PPBOM>(); + + //鏃ヨ鍒�+鐢熶骇璁㈠崟瀛愯〃缂栫爜ID + var DatePlanList = BomList.GroupBy(p => new { p.FHMASTERDATE, p.FPRDMOENTYID }).Select(x => new PRD_PPBOM { FHMASTERDATE = x.Key.FHMASTERDATE, FPRDMOENTYID = x.Key.FPRDMOENTYID }).ToList(); + + //CompleteAnalysisTempModel 鐢ㄤ簬瀛樺偍涓存椂闇�瑕佹彃鍏ユ暟鎹� + List<CompleteAnalysisTempModel> completeAnalysisTempModel = new List<CompleteAnalysisTempModel>(); + foreach (var item in DatePlanList) + { + //绛涢�夊嚭褰撴棩璁″垝鏁版嵁 + var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList(); + foreach (var _item in _BomList) + { + //璇ユ棩璁″垝鐗╂枡闇�瑕佹暟 + decimal need = _item.PlanCount; + //瀹為檯鎬诲簱瀛� + decimal sjkc = 0; + var sjkcList = ListInventoryByStockOrgId.Where(x => x.FMATERIALID == _item.FMATERIALID2 && x.FStockOrgId == _item.FStockOrgId).FirstOrDefault(); + sjkc = sjkcList.FBASEQTY; + //鐪熸闇�瑕佸彇璁$畻鐨勬暟閲忥紙鎷嗗垎璐т富锛� + //璐т富鍖归厤 + List<PRD_Inventory> _ListInventory = ListInventory.Where(c => c.FMATERIALID == _item.FMATERIALID2 && c.FStockOrgId == _item.FStockOrgId && c.FBASEQTY > 0).ToList(); + if (_ListInventory.Count > 0) + { + foreach (var Inventory in _ListInventory) + { + if (need == 0) + break; + decimal fCompleteCount = need >= Inventory.FBASEQTY ? Inventory.FBASEQTY : need;//榻愬鏁伴噺 + decimal fLackCount = _item.PlanCount - fCompleteCount;//缂烘枡鏁伴噺 + completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel + { + FHMainICMOInterIDr = _item.FPRDMOMAINID, + FHMainICMOEntryID = _item.FPRDMOENTYID, + FHICMOInterID = _item.FID.ToString(), + FHICMOEntryID = _item.FEntryID.ToString(), + FHMaterID = _item.FNumber, + FHStockOrgID = _item.OrgFnumber, + FHPRDORGID = _item.OrgFnumber, + FPRDBillNo = _item.FMOBillNO, + FOwnerTypeId = "BD_OwnerOrg", + FOwnerId = Inventory.Fnumber, + FUnitDosage = _item.dwyl.ToString(),//鍗曚綅鐢ㄩ噺 + FSumPlanCount = _item.PlanCount.ToString(),//璁″垝鎬绘暟閲� + FCompleteCount = fCompleteCount, //榻愬鏁伴噺 + FLackCount = fLackCount,//缂烘枡鏁伴噺 + FHStockQty = sjkcList.FBASEQTY,//鍗虫椂搴撳瓨 + FHLeftQty = sjkcList.FBASEQTY,//鍙敤鏁伴噺 + FComPlete = fLackCount > 0 ? "鏈綈濂�" : "榻愬", + FPlanDate = item.FHMASTERDATE // 鏃ヨ鍒掓棩鏈� + }); + + //鎵e噺鎬诲簱瀛樻暟閲� + sjkcList.FBASEQTY = sjkc - fCompleteCount > 0 ? sjkc - fCompleteCount : 0; + need = need >= Inventory.FBASEQTY ? need - Inventory.FBASEQTY : 0; + } + } + else + { + completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel + { + FHMainICMOInterIDr = _item.FPRDMOMAINID, + FHMainICMOEntryID = _item.FPRDMOENTYID, + FHICMOInterID = _item.FID.ToString(), + FHICMOEntryID = _item.FEntryID.ToString(), + FHMaterID = _item.FNumber, + FHStockOrgID = _item.OrgFnumber, + FHPRDORGID = _item.OrgFnumber, + FPRDBillNo = _item.FMOBillNO, + FOwnerTypeId = "BD_OwnerOrg", + FUnitDosage = _item.dwyl.ToString(),//鍗曚綅鐢ㄩ噺 + FSumPlanCount = _item.PlanCount.ToString(),//璁″垝鎬绘暟閲� + FCompleteCount = 0, //榻愬鏁伴噺 + FLackCount = _item.PlanCount,//缂烘枡鏁伴噺 + FHStockQty = 0,//鍗虫椂搴撳瓨 + FHLeftQty = 0,//鍙敤鏁伴噺 + FComPlete = "鏈綈濂�", + FPlanDate = item.FHMASTERDATE // 鏃ヨ鍒掓棩鏈� + }); + } + } + } + foreach (var item in completeAnalysisTempModel) + { + + JObject jsonRoot = new JObject(); + jsonRoot.Add("Creator", ""); + jsonRoot.Add("NeedUpDateFields", new JArray()); + jsonRoot.Add("NeedReturnFields", new JArray()); + jsonRoot.Add("IsDeleteEntry", "true"); + jsonRoot.Add("SubSystemId", ""); + jsonRoot.Add("IsVerifyBaseDataField", ""); + + JObject jsonModel = new JObject(); + jsonModel.Add("FHMainICMOInterIDr", item.FHMainICMOInterIDr); + jsonModel.Add("FHMainICMOEntryID", item.FHMainICMOEntryID); + jsonModel.Add("FHICMOInterID", item.FHICMOInterID); + jsonModel.Add("FHICMOEntryID", item.FHICMOEntryID); + jsonModel.Add("FHMaterID", new JObject() { ["FNUMBER"] = item.FHMaterID }); + jsonModel.Add("FHUseQty", item.FHUseQty); + jsonModel.Add("FHStockOrgID", new JObject() { ["FNUMBER"] = item.FHStockOrgID }); + jsonModel.Add("FHStockQty", item.FHStockQty); + jsonModel.Add("FHLeftQty", item.FHLeftQty); + jsonModel.Add("FHPRDORGID", new JObject() { ["FNUMBER"] = item.FHStockOrgID }); + jsonModel.Add("FUnitDosage", item.FUnitDosage); + jsonModel.Add("FSumPlanCount", item.FSumPlanCount); + jsonModel.Add("FCompleteCount", item.FCompleteCount); + jsonModel.Add("FPRDBillNo", item.FPRDBillNo); + jsonModel.Add("FOwnerTypeId", item.FOwnerTypeId); + jsonModel.Add("FComPlete", item.FComPlete); + jsonModel.Add("FPlanDate", item.FPlanDate); + if (item.FOwnerId != null) + jsonModel.Add("FOwnerId", new JObject() { ["FNUMBER"] = item.FOwnerId }); + + + jsonRoot.Add("Model", jsonModel); + + CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); + var result = cloudClient.Save("paez_CompleteAnalysisTemp", jsonRoot.ToString()); + JObject saveObj = JObject.Parse(result); + string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); + + if (saveIsSuc != "TRUE") + { + LogHelper.Error(jsonRoot.ToString()); + } + } + //鎵ц瀹屾垚鍚� 鏇存柊鏃ヨ鍒掑伐鍗曠姸鎬� + DBServiceHelper.Execute(Context, @" +/*dialect*/update Sc_WorkBillSortBillSub set FComplete = '涓嶉綈濂�' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'鏈綈濂�') ='鏈綈濂�') +"); + sw.Stop();//缁撴潫璁℃椂 + LogHelper.Info("杩愯鎬绘椂闀匡細" + sw.Elapsed); + + } + + + /// <summary> /// 鏌ヨ /// </summary> @@ -808,6 +1007,7 @@ DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; DateTime DateNow = DateTime.Now;//鑾峰彇褰撳墠鏃ユ湡 this.Model.DeleteEntryData("FEntity"); + EntryGrid grid = this.View.GetControl<EntryGrid>("FEntity"); for (int i = 0; i < dt.Rows.Count; i++) { this.Model.CreateNewEntryRow("FEntity"); @@ -840,6 +1040,7 @@ sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + dt.Rows[i]["FID"].ToString(); DataTable _dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; + foreach (DataRow dr in _dt.Rows) { /* @@ -855,6 +1056,8 @@ this.Model.SetValue("FT" + getDay.Days.ToString(), dr["FHQTY"].ToString(), i);//鏃ヨ鍒掑伐鍗旻ID if (dr["FHLockedSub"].ToString() == "1") this.View.GetFieldEditor("FT" + getDay.Days.ToString(), i).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁 + + } @@ -876,6 +1079,16 @@ if (dr["FHLockedSub"].ToString() == "1") this.View.GetFieldEditor("FT" + getDay.Days.ToString(), j).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁 + if (dr["FCOMPLETE"].ToString() == "鏈綈濂�") + { + this.View.GetFieldEditor("FT" + getDay.Days.ToString(), j).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁 + grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#FF0000", j); + } + else + { + this.View.GetFieldEditor("FT" + getDay.Days.ToString(), j).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁 + grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#00FF00", j); + } } } -- Gitblit v1.9.1