From 8e68896d21f1da755d3b7610f33b8e7cee376099 Mon Sep 17 00:00:00 2001 From: 王 垚 <1402714037@qq.com> Date: 星期三, 18 十一月 2020 18:52:43 +0800 Subject: [PATCH] 代码上传 --- src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs | 310 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 229 insertions(+), 81 deletions(-) diff --git a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs index 4275c62..5bea80b 100644 --- a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs +++ b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs @@ -481,10 +481,15 @@ { var ls = ListInventory.Where(c => c.FMATERIALID == t.FMATERIALID2).FirstOrDefault(); if (ls == null) + { + list.Add(0); continue; + } + SumGetComplete = Math.Floor(ls.FBASEQTY / (t.FNeedQty / t.FQty)); list.Add(SumGetComplete); } + //娌℃湁鐗╂枡鐨勫簱瀛樹俊鎭� SumGetComplete = list.Min(); if (SumGetComplete > SumPlan)//绯荤粺鍙敓浜ф渶澶ч綈濂楁暟澶т簬璁″垝闇�姹傞噺鏃讹紝鍙栬鍒� @@ -808,11 +813,6 @@ public void Extraction3() { - //閲囪喘璁㈠崟鏁版嵁 - string sql = @"select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,t2.FQTY from t_PUR_POOrder t1 -join t_PUR_POOrderEntry t2 on t1.FID = t2.FID -join t_BD_Supplier t3 on t1.FSUPPLIERID = t3.FSUPPLIERID"; - List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<PurchaseInventory>(); //鑾峰彇鍗曟嵁浣撲俊鎭� Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); @@ -832,70 +832,114 @@ FDayPlanWorkID += Convert.ToString(current["FDayPlanWorkID"]) + ","; } } - FDayPlanWorkID = FDayPlanWorkID.Substring(0, FDayPlanWorkID.Length - 1); + + //鎻愭枡璁″垝棰勫鐞� 娓呯悊鎻愭枡璁″垝鍗曟暟鎹� 鏇存柊閲囪喘璁㈠崟鎻愭枡璁″垝鏁伴噺 + string sql = string.Format(@" + /*dialect*/ + exec [鎻愭枡璁″垝棰勫鐞哴 '{0}' + ", FDayPlanWorkID.Replace(",", "-")); + + DBServiceHelper.Execute(Context, sql); + + //閲囪喘璁㈠崟鏁版嵁 + sql = @"select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY from t_PUR_POOrder t1 +join t_PUR_POOrderEntry t2 on t1.FID = t2.FID +join t_BD_Supplier t3 on t1.FSUPPLIERID = t3.FSUPPLIERID +where t2.FQTY-t2.FPODemandPlanCount>0 +"; + List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<PurchaseInventory>(); + sql = string.Format(@" -/*dialect*/ + /*dialect*/ SELECT T1.FID,FHMATERID,FHMASTERDATE,FHQTY,FCOMPLETECOUNT,FPRDMOMAINID,T2.FENTRYID,T1.FBILLNO, FNeedQty,t5.FFIXLEADTIME,t5.FMAXPOQTY,t5.FMINPOQTY,t3.FMATERIALID,t6.FNumber,FHQTY*FNeedQty NeedQty FROM SC_WORKBILLSORTBILLMAIN T1 JOIN SC_WORKBILLSORTBILLSUB T2 ON T1.FID=T2.FID -LEFT JOIN(SELECT FID, max(FMoId)FMoId,MAX(FENTRYID) FENTRYID, SUM(convert(decimal(18, 2), FBASENUMERATOR / FBASEDENOMINATOR))FNeedQty, FMATERIALID from T_PRD_PPBOMENTRY -group by FMATERIALID, FID) T3 on T1.FPRDMOMAINID = t3.FMoId +LEFT JOIN(SELECT T1.FID,max(t2.FMATERIALID)FMATERIALIDMAIN, max(t2.FMoId)FMoId,MAX(FENTRYID) FENTRYID, SUM(convert(decimal(18, 2), FBASENUMERATOR / FBASEDENOMINATOR))FNeedQty, T1.FMATERIALID from T_PRD_PPBOMENTRY T1 +JOIN T_PRD_PPBOM T2 on t1.FID = t2.FID +group by T1.FMATERIALID, T1.FID) T3 on T1.FPRDMOMAINID = t3.FMoId and T1.FHMATERID = t3.FMATERIALIDMAIN JOIN T_BD_MATERIAL T6 ON T3.FMATERIALID = T6.FMATERIALID join t_BD_MaterialBase t4 on t3.FMATERIALID = t4.FMATERIALID join t_BD_MaterialPlan t5 on t3.FMATERIALID = t5.FMATERIALID WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE) >=0 AND FPLANCOUNT>FCOMPLETECOUNT -AND FERPCLSID=1 -AND T1.FID='{0}'", FDayPlanWorkID); +AND FERPCLSID=1 +AND T2.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0})) +AND T1.FID in ({0}) +order by FHMASTERDATE +", FDayPlanWorkID); DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); List<DayPlanPpbom> DayPlanPpbom = ds.ToModelList<DayPlanPpbom>(); - + //鐗╂枡闆嗗悎 鐢辩墿鏂欏幓鍒嗙粍 List<string> MaterialIDList = DayPlanPpbom.Select(x => x.FMATERIALID).Distinct().ToList(); - - //鎻愭枡璁″垝鏁版嵁闆� + //鎻愭枡璁″垝鏁版嵁闆嗕复鏃跺瓨鍌ㄩ泦鍚� List<PODemandPlanTemp> PODemandPlanTemp = new List<PODemandPlanTemp>(); + //sql闆嗗悎 鏇存柊閲囪喘璁㈠崟鍗犵敤鐨勬彁鏂欒鍒掓暟閲� + List<string> sqlList = new List<string>(); foreach (string item in MaterialIDList) { List<DayPlanPpbom> _DayPlanPpbom = DayPlanPpbom.Where(x => x.FMATERIALID == item).ToList(); decimal FMINPOQTY = _DayPlanPpbom.FirstOrDefault().FMINPOQTY;//鏈�灏忚捣璁㈤噺 + double FFIXLEADTIME = _DayPlanPpbom.FirstOrDefault().FFIXLEADTIME;//鎻愬墠鏈� decimal NeedQty = 0; DateTime DATE = _DayPlanPpbom.FirstOrDefault().FHMASTERDATE; int i = 1; + //璁板綍鍦ㄦ渶灏忛噰璐噺闇�姹備笅鐨勬棩璁″垝鏄庣粏FentyrID + List<int> FEntryIdList = new List<int>(); foreach (var _item in _DayPlanPpbom) { if (NeedQty == 0) - DATE = Convert.ToDateTime(_item.FHMASTERDATE); + DATE = Convert.ToDateTime(_item.FHMASTERDATE).AddDays(-FFIXLEADTIME); + + FEntryIdList.Add(_item.FENTRYID); NeedQty += _item.NeedQty; if (NeedQty >= FMINPOQTY) { List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item && x.FQTY > 0).ToList(); if (_PurchaseInventory.Count == 0) - continue; + { + NeedQty = 0; + break; + } foreach (var Purchase in _PurchaseInventory) { if (Purchase.FQTY >= NeedQty) { - PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + List<int> mmm = new List<int>(); + foreach (int id in FEntryIdList) { - FID = _item.FID, - FHMASTERDATE = DATE, - FQty = NeedQty, - FBILLNO = _item.FBILLNO, - FENTRYID = _item.FENTRYID, - FMATERIALID = _item.FMATERIALID, - FNumber = _item.FNumber, + mmm.Add(id); + var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + { + FID = DayPlanPpbomls.FID, + FHMASTERDATE = DATE, + FQty = DayPlanPpbomls.NeedQty, + FBILLNO = DayPlanPpbomls.FBILLNO, + FENTRYID = DayPlanPpbomls.FENTRYID, + FMATERIALID = DayPlanPpbomls.FMATERIALID, + FNumber = DayPlanPpbomls.FNumber, + OLDDATE = DayPlanPpbomls.FHMASTERDATE, + FFIXLEADTIME = FFIXLEADTIME, - PurchseFID = Purchase.FID, - PurchseFentryID = Purchase.FENTRYID, - FSUPPLIERID = Purchase.FSUPPLIERID, - PurchseFNUMBER = Purchase.FNUMBER, - PurchseFBillNo = Purchase.FBillNo + PurchseFID = Purchase.FID, + PurchseFentryID = Purchase.FENTRYID, + FSUPPLIERID = Purchase.FSUPPLIERID, + PurchseFNUMBER = Purchase.FNUMBER, + PurchseFBillNo = Purchase.FBillNo, + PurchseFqty = Purchase.FQTY - }); + }); + //鎵i櫎鏃ヨ鍒掓槑缁嗗凡琚垎閰嶇殑鏁伴噺 + var _ls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + _ls.NeedQty = 0; + } + FEntryIdList.Clear(); + //鏇存柊閲囪喘璁㈠崟 + sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount += '{NeedQty}' where FENTRYID = {Purchase.FENTRYID}"); //鎵i櫎褰撳墠琛屽搴旈噰璐鍗曟暟閲� var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault(); ls.FQTY -= NeedQty; @@ -903,60 +947,117 @@ } else { - PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + decimal _NeedQty = Purchase.FQTY; + List<int> mmm = new List<int>(); + foreach (int id in FEntryIdList) { - FID = _item.FID, - FHMASTERDATE = DATE, - FQty = Purchase.FQTY, - FBILLNO = _item.FBILLNO, - FENTRYID = _item.FENTRYID, - FMATERIALID = _item.FMATERIALID, - FNumber = _item.FNumber, - PurchseFID = Purchase.FID, - PurchseFentryID = Purchase.FENTRYID, - FSUPPLIERID = Purchase.FSUPPLIERID, - PurchseFNUMBER = Purchase.FNUMBER, - PurchseFBillNo = Purchase.FBillNo + var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + decimal Qty = DayPlanPpbomls.NeedQty; + if (Qty > _NeedQty) + Qty = _NeedQty; + _NeedQty = _NeedQty - DayPlanPpbomls.NeedQty; + PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + { + FID = DayPlanPpbomls.FID, + FHMASTERDATE = DATE, + FQty = Qty, + FBILLNO = DayPlanPpbomls.FBILLNO, + FENTRYID = DayPlanPpbomls.FENTRYID, + FMATERIALID = DayPlanPpbomls.FMATERIALID, + FNumber = DayPlanPpbomls.FNumber, + OLDDATE = DayPlanPpbomls.FHMASTERDATE, + FFIXLEADTIME = FFIXLEADTIME, - }); + + PurchseFID = Purchase.FID, + PurchseFentryID = Purchase.FENTRYID, + FSUPPLIERID = Purchase.FSUPPLIERID, + PurchseFNUMBER = Purchase.FNUMBER, + PurchseFBillNo = Purchase.FBillNo, + PurchseFqty = Purchase.FQTY + + + }); + + //鏇存柊閲囪喘璁㈠崟 + sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount += '{Purchase.FQTY}' where FENTRYID = {Purchase.FENTRYID}"); + //鏇存柊Model + var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID ).FirstOrDefault(); + ls.FQTY = 0; + + var _ls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + _ls.NeedQty -= Qty; + + if (_NeedQty < 0) + { + foreach (var mm in mmm) + { + FEntryIdList.Remove(mm); + } + + + break; + } + NeedQty = NeedQty - Qty; + mmm.Add(id); + } + foreach (var mm in mmm) + { + FEntryIdList.Remove(mm); + } NeedQty = NeedQty - Purchase.FQTY; - var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault(); - ls.FQTY = 0; } - } NeedQty = 0; } //鍓╀笅涓嶈冻鏃舵寜鏈�灏忛噰璐壒娆$敓鎴� - else if (i == _DayPlanPpbom.Count) + else if (i == _DayPlanPpbom.Count && NeedQty > 0) { NeedQty = FMINPOQTY; List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item && x.FQTY > 0).ToList(); if (_PurchaseInventory.Count == 0) - continue; + { + NeedQty = 0; + break; + } foreach (var Purchase in _PurchaseInventory) { if (Purchase.FQTY >= NeedQty) { - PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + List<int> mmm = new List<int>(); + foreach (int id in FEntryIdList) { - FID = _item.FID, - FHMASTERDATE = DATE, - FQty = NeedQty, - FBILLNO = _item.FBILLNO, - FENTRYID = _item.FENTRYID, - FMATERIALID = _item.FMATERIALID, - FNumber = _item.FNumber, + mmm.Add(id); + var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + { + FID = DayPlanPpbomls.FID, + FHMASTERDATE = DATE, + FQty = DayPlanPpbomls.NeedQty, + FBILLNO = DayPlanPpbomls.FBILLNO, + FENTRYID = DayPlanPpbomls.FENTRYID, + FMATERIALID = DayPlanPpbomls.FMATERIALID, + FNumber = DayPlanPpbomls.FNumber, + OLDDATE = DayPlanPpbomls.FHMASTERDATE, + FFIXLEADTIME = FFIXLEADTIME, - PurchseFID = Purchase.FID, - PurchseFentryID = Purchase.FENTRYID, - FSUPPLIERID = Purchase.FSUPPLIERID, - PurchseFNUMBER = Purchase.FNUMBER, - PurchseFBillNo = Purchase.FBillNo + PurchseFID = Purchase.FID, + PurchseFentryID = Purchase.FENTRYID, + FSUPPLIERID = Purchase.FSUPPLIERID, + PurchseFNUMBER = Purchase.FNUMBER, + PurchseFBillNo = Purchase.FBillNo, + PurchseFqty = Purchase.FQTY - }); + }); + //鎵i櫎鏃ヨ鍒掓槑缁嗗凡琚垎閰嶇殑鏁伴噺 + var _ls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + _ls.NeedQty = 0; + } + FEntryIdList.Clear(); + //鏇存柊閲囪喘璁㈠崟 + sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount += '{NeedQty}' where FENTRYID = {Purchase.FENTRYID}"); //鎵i櫎褰撳墠琛屽搴旈噰璐鍗曟暟閲� var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault(); ls.FQTY -= NeedQty; @@ -964,28 +1065,67 @@ } else { - PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + decimal _NeedQty = Purchase.FQTY; + List<int> mmm = new List<int>(); + foreach (int id in FEntryIdList) { - FID = _item.FID, - FHMASTERDATE = DATE, - FQty = Purchase.FQTY, - FBILLNO = _item.FBILLNO, - FENTRYID = _item.FENTRYID, - FMATERIALID = _item.FMATERIALID, - FNumber = _item.FNumber, - PurchseFID = Purchase.FID, - PurchseFentryID = Purchase.FENTRYID, - FSUPPLIERID = Purchase.FSUPPLIERID, - PurchseFNUMBER = Purchase.FNUMBER, - PurchseFBillNo = Purchase.FBillNo + var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + decimal Qty = DayPlanPpbomls.NeedQty; + if (Qty > _NeedQty) + Qty = _NeedQty; + _NeedQty = _NeedQty - DayPlanPpbomls.NeedQty; + PODemandPlanTemp.Add(new Demo.Model.Model.PODemandPlan.PODemandPlanTemp + { + FID = DayPlanPpbomls.FID, + FHMASTERDATE = DATE, + FQty = Qty, + FBILLNO = DayPlanPpbomls.FBILLNO, + FENTRYID = DayPlanPpbomls.FENTRYID, + FMATERIALID = DayPlanPpbomls.FMATERIALID, + FNumber = DayPlanPpbomls.FNumber, + OLDDATE = DayPlanPpbomls.FHMASTERDATE, + FFIXLEADTIME = FFIXLEADTIME, - }); + + PurchseFID = Purchase.FID, + PurchseFentryID = Purchase.FENTRYID, + FSUPPLIERID = Purchase.FSUPPLIERID, + PurchseFNUMBER = Purchase.FNUMBER, + PurchseFBillNo = Purchase.FBillNo, + PurchseFqty = Purchase.FQTY + + + }); + + //鏇存柊閲囪喘璁㈠崟 + sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount += '{Purchase.FQTY}' where FENTRYID = {Purchase.FENTRYID}"); + //鏇存柊Model + var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault(); + ls.FQTY = 0; + + var _ls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); + _ls.NeedQty -= Qty; + + if (_NeedQty < 0) + { + foreach (var mm in mmm) + { + FEntryIdList.Remove(mm); + } + + + break; + } + NeedQty = NeedQty - Qty; + mmm.Add(id); + } + foreach (var mm in mmm) + { + FEntryIdList.Remove(mm); + } NeedQty = NeedQty - Purchase.FQTY; - var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault(); - ls.FQTY = 0; } - } NeedQty = 0; } @@ -993,7 +1133,11 @@ } } - var PODemandPlanList = PODemandPlanTemp.GroupBy(p => new PODemandPlanTemp { PurchseFNUMBER = p.PurchseFNUMBER, FHMASTERDATE = p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList(); + var PODemandPlanList222 = PODemandPlanTemp.GroupBy(p => new PODemandPlanTemp { PurchseFNUMBER = p.PurchseFNUMBER, FHMASTERDATE = p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList(); + + var PODemandPlanList = PODemandPlanTemp.GroupBy(p => new { p.PurchseFNUMBER, p.FHMASTERDATE }).Select(x => new PODemandPlanTemp { PurchseFNUMBER = x.Key.PurchseFNUMBER, FHMASTERDATE = x.Key.FHMASTERDATE }).ToList(); + + foreach (var item in PODemandPlanList) { DateTime date = item.FHMASTERDATE; @@ -1015,6 +1159,9 @@ FentityModel.Add("FHSourceEntryID", _item.FENTRYID);//鏃ヨ鍒掑伐鍗旻ENTRYID FentityModel.Add("FHSourceBillNo", _item.FBILLNO);//鏃ヨ鍒掑伐鍗曞崟鍙� FentityModel.Add("FHSourceBillType", "");//鏃ヨ鍒掑伐鍗曠被鍨� + FentityModel.Add("FDayPlanDate", _item.OLDDATE);//鏃ヨ鍒掑伐鍗曠被鍨� + FentityModel.Add("FHRelationQty", _item.PurchseFqty);//鍏宠仈鏁伴噺 + FentityModel.Add("FFIXLEADTIME", _item.FFIXLEADTIME);//鎻愬墠鏈� FentityModel.Add("FHPOOrderInterID", _item.PurchseFID);// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID @@ -1048,6 +1195,7 @@ } } + DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.ShowMessage("鎿嶄綔鎴愬姛"); // var PODemandPlanList22 = PODemandPlanTemp.GroupBy(p => new {p.FSUPPLIERID, p.FHMASTERDATE }).ToList(); } -- Gitblit v1.9.1