From 527469d17b75d42349bf17234ef3e34cc36e8920 Mon Sep 17 00:00:00 2001 From: 王 垚 <1402714037@qq.com> Date: 星期一, 13 九月 2021 17:30:55 +0800 Subject: [PATCH] nothing --- src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs | 701 ++++++++++++++-------------------------------------------- 1 files changed, 171 insertions(+), 530 deletions(-) diff --git a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs index 4e9af73..ddb2b1d 100644 --- a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs +++ b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs @@ -47,6 +47,22 @@ List<PRD_Inventory> ListInventoryByStockOrgId;//鐗╂枡鎬诲簱瀛� private bool isSearched = false; + /// <summary> + /// 椤甸潰鍒濆鍖� 娓叉煋鐣岄潰 灏員0-T60鏇存敼涓烘棩鏈熸樉绀� + /// </summary> + /// <param name="e"></param> + public override void OnInitialize(InitializeEventArgs e) + { + base.OnInitialize(e); + DateTime DateNow = DateTime.Now; + for (int m = 0; m <= 60; m++) + { + this.View.GetControl("FT" + "" + m + "").ControlAppearance.TextColor = "#FFFF00"; + this.View.GetControl("FT" + "" + m + "").Text = DateNow.AddDays(m).ToShortDateString(); + } + this.View.SendDynamicFormAction(View); + } + /// <su public override void DataChanged(DataChangedEventArgs e) { if (!isSearched) return; @@ -71,7 +87,7 @@ base.BarItemClick(e); try { - LogHelper.Info("鐢熶骇璁″垝骞冲彴鎸夐挳"); + LogHelper.Info("鐢熶骇璁″垝骞冲彴鎸夐挳:" + e.BarItemKey.ToUpper().ToString()); if (e.BarItemKey.ToUpper() == "BTEXPORT") { ExportExcel(); @@ -123,12 +139,12 @@ { XnqtLook(); } - //鎻愭枡璁″垝 + //鏁版嵁閲嶇畻 if (e.BarItemKey.ToUpper() == "TBEXTRACTION") { + return; try { - CompleteSetAnalysisBySQL(); DayPlanPPBomBillBatch(); Extraction(); } @@ -245,7 +261,7 @@ else { var type = this.View.Model.GetValue("FQTTYPE"); - if(type =="鏍囧噯Bom") + if (type == "鏍囧噯Bom") formPa.CustomParams.Add("tempName", "JIT_MOMaterReadysBomBill"); //榻愬鍒嗘瀽鏄庣粏鍒楄〃璺宠浆 formPa.FormId = "paez_CompleteAnalysisDetail"; @@ -452,6 +468,10 @@ jsonRoot.Add("IsVerifyBaseDataField", ""); JObject jsonModel = new JObject(); jsonModel.Add("FID", Convert.ToString(current["FDayPlanWorkID"])); + if (Convert.ToString(current["FResourcesId_Id"]) != "0") + { + jsonModel.Add("FHSourceID", new JObject() { ["Fnumber"] = (current["FResourcesId"] as DynamicObject)?["Number"].ToString() });//鐢熶骇璧勬簮 + } jsonModel.Add("FOrderQuantity", Convert.ToString(current["FOrderQuantity"])); jsonModel.Add("FDayPlanQuantity", Convert.ToDecimal(current["FDayPlanQuantity"]) + Convert.ToDecimal(current["FQTYLS"])); jsonModel.Add("FNoScheduled", Convert.ToString(current["FNoScheduled"])); @@ -482,11 +502,18 @@ if (saveIsSuc != "TRUE") { LogHelper.Error("鐢熶骇璁″垝骞冲彴淇濆瓨澶辫触:" + jsonRoot.ToString()); - this.View.ShowMessage("鏁版嵁鍌ㄥ瓨澶辫触锛佽鑱旂郴绠$悊鍛橈紒"); + this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); } } else { + //楠岃瘉鏃ヨ鍒掑伐鍗曟槸鍚﹀瓨鍦ㄦ暟鎹� 鐢熶骇璁㈠崟鍙峰姞鏄庣粏琛屽彿 宸茬敓鎴愯繃鏃ヨ鍒掔殑涓嶇敓鎴� (鍏抽棴鍚庣殑) + string moSql = string.Format(@"/*dialect*/ select FID from SC_WORKBILLSORTBILLMAIN + where FDOCUMENTSTATUS NOT IN ('E') AND FSCORDERNO ='{0}' and FSRCBILLENTRYSEQ = '{1}'", Convert.ToString(current["FSCOrderNo"]), Convert.ToString(current["FSRCBILLENTRYSEQ"])); + int fDayPlanFID = DBServiceHelper.ExecuteScalar<int>(Context, moSql, 0); + if (fDayPlanFID > 0) + continue; + //鏍规嵁鐢熶骇璁㈠崟鍙峰拰鐗╂枡鏌ヨ鏄惁瀛樺湪鏄庣粏 +鐢熶骇璁㈠崟鏄庣粏琛屽彿 sql = string.Format(@" /*dialect*/ @@ -535,7 +562,7 @@ jsonRoot.Add("SubSystemId", ""); jsonRoot.Add("IsVerifyBaseDataField", ""); JObject jsonModel = new JObject(); - jsonModel.Add("FPreparatDate", date.ToString());//缂栧埗鏃ユ湡 + jsonModel.Add("FPreparatDate", Convert.ToString(current["FBzDate"]));//缂栧埗鏃ユ湡锛堟敼涓洪璁″紑宸ユ棩鏈燂級 jsonModel.Add("FMoFBillType", FMoFBillType);// jsonModel.Add("FSRCBILLENTRYSEQ", Convert.ToString(current["FSRCBILLENTRYSEQ"]));//鐢熶骇璁㈠崟鏄庣粏琛屽彿 jsonModel.Add("FSCOrderNo", Convert.ToString(current["FSCOrderNo"])); //鐢熶骇璁㈠崟鍙稦SCOrderNo @@ -547,7 +574,7 @@ jsonModel.Add("FBOMID", new JObject() { ["Fnumber"] = FBomNumber });//BOM鐗堟湰 jsonModel.Add("FHPlanBeginDate", FPlanBeginDate);//璁″垝寮�濮嬫棩鏈� jsonModel.Add("FHPlanEndDate", FPlanEndDate);//璁″垝瀹屽伐鏃ユ湡 - //jsonModel.Add("FBatch", current["FBatch"].ToString());//鎵规 + //jsonModel.Add("FBatch", current["FBatch"].ToString());//鎵规 jsonModel.Add("FBatch", FLOT);//鎵规 jsonModel.Add("FHOrderNeedQty", FQTY);// 璁㈠崟闇�姹傛暟閲� jsonModel.Add("FPrdBillNo", FBILLNO); ;//婧愬崟缂栧彿 @@ -598,8 +625,8 @@ string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); if (saveIsSuc != "TRUE") { - LogHelper.Error("鐢熶骇璁″垝骞冲彴淇濆瓨澶辫触:" + jsonRoot.ToString()); - this.View.ShowMessage("鏁版嵁鍌ㄥ瓨澶辫触锛佽鑱旂郴绠$悊鍛橈紒"); + LogHelper.Error("鐢熶骇璁″垝骞冲彴鏂板淇濆瓨澶辫触:" + saveObj.ToString()); + this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); } if (saveIsSuc == "TRUE") { @@ -713,251 +740,7 @@ /// <summary> /// 榻愬鍒嗘瀽 /// </summary> - public void CompleteSetAnalysis() - { - try - { - Stopwatch sw = new Stopwatch(); - sw.Start();//寮�濮嬭鏃� - LogHelper.Info("榻愬鍒嗘瀽寮�濮嬪噯澶囨暟鎹細" + sw.Elapsed); - //娓呯┖榻愬涓存椂琛� - DBServiceHelper.Execute(Context, "/*dialect*/ delete JIT_MOMaterReadysBill "); - //鏇存柊鐘舵�� - DBServiceHelper.Execute(Context, "/*dialect*/ update Sc_WorkBillSortBillsub set FCOMPLETE='' "); - //鑾峰彇褰撳墠鍗虫椂搴撳瓨 鎸夌収鐗╂枡+搴撳瓨缁勭粐+璐т富+搴撳瓨鏁伴噺 - 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 -join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID -where d.FAvailableComplete<>0 ---where T1.FMATERIALID in (105773) -"); - 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 -join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID -where d.FAvailableComplete<>0 ---where T1.FMATERIALID in (105773) -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-ISNULL(FProductNum,0))*(FNeedQty/FQty) PlanCount,TBase.FErpClsID 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_BD_MaterialBase TBase on T2.FMATERIALID = TBase.FMATERIALID -JOIN T_ORG_Organizations t5 on a.FHPRDORGID = t5.FORGID ---鏉′欢涓轰粖澶╁線鍚庣殑鏃ヨ鍒� + 浠婂ぉ涔嬪墠鏈叧闂殑鏃ヨ鍒� -where (FHEntryCloseDate is null and DATEDIFF(D,GETDATE(),FHMASTERDATE)<0)or DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 -and b.FHQTY>0 -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>(); - int i = 1; - //鍒涘缓瀛楀吀 鐢ㄤ簬鍌ㄥ瓨鐗╂枡 + 鍗犵敤鏁伴噺 - Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>(); - foreach (var item in DatePlanList) - { - this.View.Session["ProcessRateValue"] = Convert.ToInt32(this.View.Session["ProcessRateValue"]) + Convert.ToInt32((decimal)(1.0 / DatePlanList.Count)); - //绛涢�夊嚭褰撴棩璁″垝鏁版嵁 - var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList(); - foreach (var _item in _BomList) - { - //璇ユ棩璁″垝鐗╂枡闇�瑕佹暟 - decimal need = _item.PlanCount; - var sjkcList = ListInventoryByStockOrgId.Where(x => x.FMATERIALID == _item.FMATERIALID2 && x.FStockOrgId == _item.FStockOrgId).FirstOrDefault(); - //鐪熸闇�瑕佸彇璁$畻鐨勬暟閲忥紙鎷嗗垎璐т富锛� - //璐т富鍖归厤 - List<PRD_Inventory> _ListInventory = ListInventory.Where(c => c.FMATERIALID == _item.FMATERIALID2 && c.FStockOrgId == _item.FStockOrgId && c.FBASEQTY > 0).ToList(); - if (_ListInventory.Count > 0) - { - 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;//榻愬鏁伴噺 - decimal occupyMaterial = 0; - if (!occupyDic.ContainsKey(_item.FMATERIALID2)) - { - occupyDic.Add(_item.FMATERIALID2, fCompleteCount); - } - else - { - occupyMaterial = occupyDic[_item.FMATERIALID2]; - occupyDic[_item.FMATERIALID2] = occupyMaterial + 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, //榻愬鏁伴噺 - FCompleteCount1 = fCompleteCount, //榻愬鏁伴噺 - FLackCount = _fLackCount,//缂烘枡鏁伴噺 - FHStockQty = sjkcList.FBASEQTY,//鍗虫椂搴撳瓨 - FHLeftQty = Inventory.FBASEQTY,//鍙敤鏁伴噺 - FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 - FErpClsID = _item.FErpClsID, - /* 2021 1.26 鏇存敼涓簄eed - FComPlete = sjkcList.FBASEQTY >= _item.PlanCount ? "榻愬" : "鏈綈濂�", - */ - FComPlete = sjkcList.FBASEQTY >= need ? "榻愬" : "鏈綈濂�", - FPlanDate = item.FHMASTERDATE // 鏃ヨ鍒掓棩鏈� - }); ; - //鎵e噺鎬诲簱瀛樻暟閲� - sjkcList.FBASEQTY = sjkcList.FBASEQTY >= fCompleteCount ? sjkcList.FBASEQTY - fCompleteCount : 0; - //鍓╀綑鏃ヨ鍒掗渶姹傛暟閲� - need = need >= Inventory.FBASEQTY ? need - Inventory.FBASEQTY : 0; - //鎵e噺娑堣�楀簱瀛� - Inventory.FBASEQTY = Inventory.FBASEQTY - fCompleteCount; - } - } - else - { - decimal occupyMaterial = 0; - if (occupyDic.ContainsKey(_item.FMATERIALID2)) - occupyMaterial = occupyDic[_item.FMATERIALID2]; - 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, //榻愬鏁伴噺 - FCompleteCount1 = 0, //榻愬鏁伴噺 - FLackCount = _item.PlanCount,//缂烘枡鏁伴噺 - FHStockQty = 0,//鍗虫椂搴撳瓨 - FHLeftQty = 0,//鍙敤鏁伴噺 - FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 - FComPlete = "鏈綈濂�", - FPlanDate = item.FHMASTERDATE, // 鏃ヨ鍒掓棩鏈� - FErpClsID = _item.FErpClsID - - }); - } - } - //Thread.Sleep(100); - // this.View.Session["ProcessRateValue"] = Convert.ToInt32((Convert.ToDecimal(40) / DatePlanList.Count) * i); - i++; - - } - LogHelper.Info($"榻愬鍒嗘瀽锛屾暟鎹噯澶囧畬鎴愶紝淇濆瓨鍒癕odel瀹炰綋锛屾�昏鏁帮細{completeAnalysisTempModel.Count}锛岃�楁椂锛�" + sw.Elapsed); - i = 1; - - foreach (var item in completeAnalysisTempModel) - { - // this.View.Session["ProcessRateValue"] = Convert.ToInt32(this.View.Session["ProcessRateValue"]) + Convert.ToInt32(1 / completeAnalysisTempModel.Count * 90); - 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("FCompleteCount1", item.FCompleteCount1); - jsonModel.Add("FPRDBillNo", item.FPRDBillNo); - jsonModel.Add("FOwnerTypeId", item.FOwnerTypeId); - jsonModel.Add("FComPlete", item.FComPlete); - jsonModel.Add("FLackCount", item.FLackCount); - jsonModel.Add("FOccupyCount", item.FOccupyCount); - jsonModel.Add("FPlanDate", item.FPlanDate); - jsonModel.Add("FErpClsID", item.FErpClsID); - 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()); - } - this.View.Session["ProcessRateValue"] = Convert.ToInt32((Convert.ToDecimal(100) / completeAnalysisTempModel.Count) * i); - i++; - } - //鎵ц瀹屾垚鍚� 鏇存柊鏃ヨ鍒掑伐鍗曠姸鎬� - DBServiceHelper.Execute(Context, @" -/*dialect*/update Sc_WorkBillSortBillSub set FComplete = '鏈綈濂�' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'鏈綈濂�') ='鏈綈濂�') -"); - DBServiceHelper.Execute(Context, @" -/*dialect*/update Sc_WorkBillSortBillSub set FComplete = '榻愬' where FEntryID NOT IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'鏈綈濂�') ='鏈綈濂�') -"); - sw.Stop();//缁撴潫璁℃椂 - LogHelper.Info("榻愬鍒嗘瀽杩愯鎬绘椂闀匡細" + sw.Elapsed); - } - catch (Exception ex) - { - LogHelper.Error("榻愬鍒嗘瀽璺冲嚭锛�" + ex.Message.ToString()); - } - } public void CompleteSetAnalysisBatch() { LogHelper.Info("榻愬鍒嗘瀽鎵归噺寮�濮嬪噯澶囨暟鎹細"); @@ -1212,222 +995,7 @@ LogHelper.Error("榻愬鍒嗘瀽璺冲嚭锛�" + ex.Message.ToString()); } } - public void CompleteSetAnalysisBySQL() - { - LogHelper.Info("榻愬鍒嗘瀽sql妯″紡寮�濮嬪噯澶囨暟鎹細"); - string sql = ""; - try - { - Stopwatch sw = new Stopwatch(); - sw.Start();//寮�濮嬭鏃� - //娓呯┖榻愬涓存椂琛� - DBServiceHelper.Execute(Context, "/*dialect*/ delete JIT_MOMaterReadysBill "); - //鏇存柊鐘舵�� - DBServiceHelper.Execute(Context, "/*dialect*/ update Sc_WorkBillSortBillsub set FCOMPLETE='' "); - //鑾峰彇褰撳墠鍗虫椂搴撳瓨 鎸夌収鐗╂枡+搴撳瓨缁勭粐+璐т富+搴撳瓨鏁伴噺 - 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 -join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID -where d.FAvailableComplete<>0 ---where T1.FMATERIALID in (105773) -"); - 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 -join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID -where d.FAvailableComplete<>0 ---where T1.FMATERIALID in (105773) -group by T1.FStockOrgId,T1.FMATERIALID -"); - ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>(); - //闇�瑕侀綈濂楀垎鏋愮殑鏁版嵁 - 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-ISNULL(FProductNum,0))*(FNeedQty/FQty) PlanCount,TBase.FErpClsID 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_BD_MaterialBase TBase on T2.FMATERIALID = TBase.FMATERIALID -JOIN T_ORG_Organizations t5 on a.FHPRDORGID = t5.FORGID ---鏉′欢涓轰粖澶╁線鍚庣殑鏃ヨ鍒� + 浠婂ぉ涔嬪墠鏈叧闂殑鏃ヨ鍒� -where (FHEntryCloseDate is null and DATEDIFF(D,GETDATE(),FHMASTERDATE)<0)or DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 -and b.FHQTY>0 -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>(); - 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) - { - //璇ユ棩璁″垝鐗╂枡闇�瑕佹暟 - decimal need = _item.PlanCount; - var sjkcList = ListInventoryByStockOrgId.Where(x => x.FMATERIALID == _item.FMATERIALID2 && x.FStockOrgId == _item.FStockOrgId).FirstOrDefault(); - //鐪熸闇�瑕佸彇璁$畻鐨勬暟閲忥紙鎷嗗垎璐т富锛� - //璐т富鍖归厤 - List<PRD_Inventory> _ListInventory = ListInventory.Where(c => c.FMATERIALID == _item.FMATERIALID2 && c.FStockOrgId == _item.FStockOrgId && c.FBASEQTY > 0).ToList(); - if (_ListInventory.Count > 0) - { - 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;//榻愬鏁伴噺 - decimal occupyMaterial = 0; - if (!occupyDic.ContainsKey(_item.FMATERIALID2)) - { - occupyDic.Add(_item.FMATERIALID2, fCompleteCount); - } - else - { - occupyMaterial = occupyDic[_item.FMATERIALID2]; - occupyDic[_item.FMATERIALID2] = occupyMaterial + fCompleteCount; - } - completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel - { - FHMainICMOInterIDr = _item.FPRDMOMAINID, - FHMainICMOEntryID = _item.FPRDMOENTYID, - FHICMOInterID = _item.FID.ToString(), - FHICMOEntryID = _item.FEntryID.ToString(), - FHMaterID = _item.FMATERIALID2, - FHStockOrgID = _item.FStockOrgId, - FHPRDORGID = _item.FStockOrgId, - FErpClsID = _item.FErpClsID, - FPRDBillNo = _item.FMOBillNO, - FOwnerTypeId = "BD_OwnerOrg", - FOwnerId = Inventory.FOwnerId, - FUnitDosage = _item.dwyl.ToString(),//鍗曚綅鐢ㄩ噺 - FSumPlanCount = _item.PlanCount.ToString(),//璁″垝鎬绘暟閲� - FCompleteCount1 = fCompleteCount, //榻愬鏁伴噺 - FLackCount = _fLackCount,//缂烘枡鏁伴噺 - FHStockQty = sjkcList.FBASEQTY,//鍗虫椂搴撳瓨 - FHLeftQty = Inventory.FBASEQTY,//鍙敤鏁伴噺 - FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 - /* 2021 1.26 鏇存敼涓簄eed - FComPlete = sjkcList.FBASEQTY >= _item.PlanCount ? "榻愬" : "鏈綈濂�", - */ - FComPlete = sjkcList.FBASEQTY >= need ? "榻愬" : "鏈綈濂�", - FPlanDate = item.FHMASTERDATE // 鏃ヨ鍒掓棩鏈� - }); - //鎵e噺鎬诲簱瀛樻暟閲� - sjkcList.FBASEQTY = sjkcList.FBASEQTY >= fCompleteCount ? sjkcList.FBASEQTY - fCompleteCount : 0; - //鍓╀綑鏃ヨ鍒掗渶姹傛暟閲� - need = need >= Inventory.FBASEQTY ? need - Inventory.FBASEQTY : 0; - //鎵e噺娑堣�楀簱瀛� - Inventory.FBASEQTY = Inventory.FBASEQTY - fCompleteCount; - } - } - else - { - decimal occupyMaterial = 0; - if (occupyDic.ContainsKey(_item.FMATERIALID2)) - { - occupyMaterial = occupyDic[_item.FMATERIALID2]; - } - completeAnalysisTempModel.Add(new Demo.Model.Model.CompleteAnalysisTempModel - { - FHMainICMOInterIDr = _item.FPRDMOMAINID, - FHMainICMOEntryID = _item.FPRDMOENTYID, - FHICMOInterID = _item.FID.ToString(), - FHICMOEntryID = _item.FEntryID.ToString(), - FHMaterID = _item.FMATERIALID2, - FErpClsID = _item.FErpClsID, - FHStockOrgID = _item.FStockOrgId, - FHPRDORGID = _item.FStockOrgId, - FPRDBillNo = _item.FMOBillNO, - FOwnerTypeId = "BD_OwnerOrg", - FUnitDosage = _item.dwyl.ToString(),//鍗曚綅鐢ㄩ噺 - FSumPlanCount = _item.PlanCount.ToString(),//璁″垝鎬绘暟閲� - FCompleteCount1 = 0, //榻愬鏁伴噺 - FLackCount = _item.PlanCount,//缂烘枡鏁伴噺 - FHStockQty = 0,//鍗虫椂搴撳瓨 - FHLeftQty = 0,//鍙敤鏁伴噺 - FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 - FComPlete = "鏈綈濂�", - FPlanDate = item.FHMASTERDATE // 鏃ヨ鍒掓棩鏈� - }); - } - } - //Thread.Sleep(100); - // this.View.Session["ProcessRateValue"] = Convert.ToInt32((Convert.ToDecimal(40) / DatePlanList.Count) * i); - i++; - } - LogHelper.Info($"榻愬鍒嗘瀽锛屾暟鎹噯澶囧畬鎴愶紝淇濆瓨鍒癕odel瀹炰綋锛屾�昏鏁帮細{completeAnalysisTempModel.Count}锛岃�楁椂锛�" + sw.Elapsed); - List<string> sqlList = new List<string>(); - int jdtmmm = 1; - foreach (var item in completeAnalysisTempModel) - { - sql = string.Format(@" -/*dialect*/ -delete z_JIT_MOMaterReadysBill -insert into z_JIT_MOMaterReadysBill (column1) -values('') -insert into JIT_MOMaterReadysBill -(FID, FBILLNO, FDOCUMENTSTATUS, FHMAINICMOINTERIDR, FHMAINICMOENTRYID, FHICMOINTERID, FHICMOENTRYID, FHMATERID, FHSTOCKORGID, FHSTOCKQTY, FHLEFTQTY, FHPRDORGID, FUNITDOSAGE, FSUMPLANCOUNT, FPRDBILLNO, FOWNERID, FOWNERTYPEID, FIDENTIFICAT, FPLANDATE, FCOMPLETE, FLACKCOUNT, FOCCUPYCOUNT, FCOMPLETECOUNT1,FErpClsID) -select id, '', 'A', '{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', '{12}', 'BD_OwnerOrg', '','{13}','{14}','{15}','{16}','{17}',{18} from z_JIT_MOMaterReadysBill -delete z_JIT_MOMaterReadysBill -", item.FHMainICMOInterIDr, item.FHMainICMOEntryID, item.FHICMOInterID, item.FHICMOEntryID, item.FHMaterID, item.FHStockOrgID, item.FHStockQty, item.FHLeftQty, item.FHPRDORGID, item.FUnitDosage, item.FSumPlanCount, item.FPRDBillNo, item.FOwnerId == null ? "0" : item.FOwnerId, item.FPlanDate.ToString("yyyy-MM-dd"), item.FComPlete, item.FLackCount, item.FOccupyCount, item.FCompleteCount1, item.FErpClsID); - sqlList.Add(sql); - this.View.Session["ProcessRateValue"] = Convert.ToInt32((Convert.ToDecimal(80) / completeAnalysisTempModel.Count) * jdtmmm); - jdtmmm++; - } - DBServiceHelper.ExecuteBatch(Context, sqlList); - //鎵ц瀹屾垚鍚� 鏇存柊鏃ヨ鍒掑伐鍗曠姸鎬� - DBServiceHelper.Execute(Context, @" -/*dialect*/update Sc_WorkBillSortBillSub set FComplete = '鏈綈濂�' where FEntryID IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'鏈綈濂�') ='鏈綈濂�') -"); - DBServiceHelper.Execute(Context, @" -/*dialect*/update Sc_WorkBillSortBillSub set FComplete = '榻愬' where FEntryID NOT IN (select distinct FHICMOEntryID from JIT_MOMaterReadysBill where isnull(FCOMPLETE,'鏈綈濂�') ='鏈綈濂�') -"); - sw.Stop();//缁撴潫璁℃椂 - LogHelper.Info("榻愬鍒嗘瀽杩愯鎬绘椂闀匡細" + sw.Elapsed); - } - catch (Exception ex) - { - LogHelper.Error("榻愬鍒嗘瀽璺冲嚭锛�" + ex.Message.ToString()); - - } - } //鐢熶骇鐢ㄦ枡娓呭崟 榻愬鍒嗘瀽 public string CompleteSetAnalysisByDataTable() { @@ -1438,14 +1006,22 @@ Stopwatch sw = new Stopwatch(); sw.Start();//寮�濮嬭鏃� int maxFid = DBServiceHelper.ExecuteScalar<int>(Context, "select max(FID)FID FROM JIT_MOMaterReadysBill", 0); - //娓呯┖榻愬涓存椂琛� - DBServiceHelper.Execute(Context, "/*dialect*/ delete JIT_MOMaterReadysBill "); + //娓呯┖榻愬涓存椂琛� (鍏抽棴鐨勮鍗� 浠婂ぉ涔嬪墠鐨勬暟鎹笉鍋氬垹闄�) + DBServiceHelper.Execute(Context, @"/*dialect*/ +delete from JIT_MOMaterReadysBill + where FHICMOINTERID not in + ( + select distinct a.FID from Sc_WorkBillSortBillMain a +join Sc_WorkBillSortBillSub b on a.FID = b.FID +where DATEDIFF(D, GETDATE(), FHMASTERDATE) < 0 +or a.FDOCUMENTSTATUS in ('E') + ) "); //鏇存柊鐘舵�� DBServiceHelper.Execute(Context, "/*dialect*/ update Sc_WorkBillSortBillsub set FCOMPLETE='' "); //鑾峰彇褰撳墠鍗虫椂搴撳瓨 鎸夌収鐗╂枡+搴撳瓨缁勭粐+璐т富+搴撳瓨鏁伴噺 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 isnull(a.FBASEQTY,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 @@ -1455,7 +1031,7 @@ 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 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 join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID where d.FAvailableComplete<>0 @@ -1465,7 +1041,7 @@ //鎬诲簱瀛� 鐗╂枡+搴撳瓨缁勭粐+搴撳瓨鏁伴噺 ds = DBServiceHelper.ExecuteDataSet(Context, @" /*dialect*/ - select sum(isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0))FBASEQTY,T1.FStockOrgId,T1.FMATERIALID from + select sum(isnull(a.FBASEQTY,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 @@ -1475,7 +1051,7 @@ 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 +--LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID where d.FAvailableComplete<>0 --where T1.FMATERIALID in (105773) @@ -1486,17 +1062,20 @@ 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-ISNULL(FProductNum,0))*(FNeedQty/FQty) PlanCount,TBase.FErpClsID from SC_WORKBILLSORTBILLMAIN a +T2.FMATERIALID FMATERIALID2, T4.FNumber,T2.FNeedQty,FNeedQty/FQty dwyl,CEILING((FHQTY-ISNULL(FProductNum,0))*(FNeedQty/FQty)) PlanCount,TBase.FErpClsID 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 +LEFT JOIN(select FID, MAX(FENTRYID) FENTRYID, SUM(FMUSTQTY) 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_BD_MaterialBase TBase on T2.FMATERIALID = TBase.FMATERIALID JOIN T_ORG_Organizations t5 on a.FHPRDORGID = t5.FORGID --鏉′欢涓轰粖澶╁線鍚庣殑鏃ヨ鍒� + 浠婂ぉ涔嬪墠鏈叧闂殑鏃ヨ鍒� -where (FHEntryCloseDate is null and DATEDIFF(D,GETDATE(),FHMASTERDATE)<0)or DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 +where +--(FHEntryCloseDate is null and DATEDIFF(D,GETDATE(),FHMASTERDATE)<0)or +DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 +and a.FDOCUMENTSTATUS not in ('E') and b.FHQTY>0 ORDER BY b.FHMASTERDATE,a.FHOrderLev "; @@ -1512,6 +1091,7 @@ LogHelper.Info("榻愬鍒嗘瀽鍑嗗鏁版嵁瀹屾垚锛�" + sw.Elapsed); foreach (var item in DatePlanList) { + //LogHelper.Info("榻愬鍒嗘瀽绗竴涓惊鐜� 锛� 宸ュ崟鍙� 锛�" + item.FPRDMOENTYID.ToString() + item.FHMASTERDATE.ToString("yyyy-MM-dd")); //绛涢�夊嚭褰撴棩璁″垝鏁版嵁 var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList(); foreach (var _item in _BomList) @@ -1763,11 +1343,12 @@ --鏉′欢涓轰粖澶╁線鍚庣殑鏃ヨ鍒� + 浠婂ぉ涔嬪墠鏈叧闂殑鏃ヨ鍒� where (FHEntryCloseDate is null and DATEDIFF(D,GETDATE(),FHMASTERDATE)<0)or DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and b.FHQTY>0 +and a.FDOCUMENTSTATUS not in ('E') ORDER BY b.FHMASTERDATE,a.FHOrderLev "; ds = DBServiceHelper.ExecuteDataSet(Context, sql); List<PRD_PPBOM> BomList = ds.ToModelList<PRD_PPBOM>(); - //鏃ヨ鍒�+鐢熶骇璁㈠崟瀛愯〃缂栫爜ID + //鏃ヨ鍒掓棩鏈�+鐢熶骇璁㈠崟瀛愯〃缂栫爜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>(); @@ -2191,7 +1772,7 @@ /// </summary> public void SearchList() { - string sqlwhere = " where 1=1"; + string sqlwhere = " and 1=1"; if ((this.Model.GetValue("FProWorkShopId") as DynamicObject) != null) { string FProWorkShopId = (this.Model.GetValue("FProWorkShopId") as DynamicObject)["Id"].ToString(); @@ -2214,14 +1795,20 @@ sqlwhere += $" and t3.FNumber='{FMatralId}'"; } //缂栧埗鏃ユ湡 - string FPreparatDate = Convert.ToString((this.Model.GetValue("FPreparatDate"))); - if (!string.IsNullOrEmpty(FPreparatDate)) - sqlwhere += $" and FPreparatDate='{FPreparatDate}'"; + string FBeginPreparatDate = Convert.ToString((this.Model.GetValue("FBrginPreparatDate"))); + if (!string.IsNullOrEmpty(FBeginPreparatDate)) + sqlwhere += $" and FPreparatDate>='{FBeginPreparatDate}'"; + + //缂栧埗鏃ユ湡 + string FEndPreparatDate = Convert.ToString((this.Model.GetValue("FEndPreparatDate"))); + if (!string.IsNullOrEmpty(FEndPreparatDate)) + sqlwhere += $" and FPreparatDate<='{FEndPreparatDate}'"; try { string sql = @"/*dialect*/ select t1.*,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum ,isnull((select SUM(isnull(FHQTY,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FQTYLS from Sc_WorkBillSortBillMain t1 left join T_BD_MATERIAL t3 on t1.FHMaterID=t3.FMATERIALID + where t1.FDOCUMENTSTATUS not in ('E') " + sqlwhere; DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; DateTime DateNow = DateTime.Now;//鑾峰彇褰撳墠鏃ユ湡 @@ -2244,7 +1831,7 @@ this.Model.SetValue("FOrderLevel", dt.Rows[i]["FHOrderLev"].ToString(), i);//璁㈠崟绛夌骇 this.Model.SetValue("FSCOrderNo", dt.Rows[i]["FSCOrderNo"].ToString(), i);//鐢熶骇璁㈠崟鍙� this.Model.SetValue("FSalOrderNo", dt.Rows[i]["FHSEORDERBILLNO"].ToString(), i);//閿�鍞鍗曞彿 - this.Model.SetValue("FBzDate", dt.Rows[i]["FPreparatDate"].ToString(), i);//缂栧埗鏃ユ湡 + this.Model.SetValue("FBzDate", dt.Rows[i]["FPreparatDate"].ToString(), i);//棰勮寮�宸ユ棩鏈� this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//鐢熶骇璁㈠崟鏁伴噺 this.Model.SetValue("FHMainSourceInterID", dt.Rows[i]["FPRDMOMAINID"].ToString(), i);//婧愬崟涓诲唴鐮丗HMainSourceInterID this.Model.SetValue("FHMainSourceEntryID", dt.Rows[i]["FPRDMOENTYID"].ToString(), i);//婧愬崟瀛愬唴鐮丗HMainSourceEntryID @@ -2314,7 +1901,7 @@ /// </summary> public void SearchListEdit() { - string sqlwhere = " where 1=1"; + string sqlwhere = " and 1=1"; if ((this.Model.GetValue("FProWorkShopId") as DynamicObject) != null) { @@ -2330,7 +1917,6 @@ string FScOrderMainNo = Convert.ToString((this.Model.GetValue("FScOrderMainNo"))); if (!string.IsNullOrEmpty(FScOrderMainNo)) sqlwhere += $" and FSCORDERNO like '%{FScOrderMainNo}%'"; - //鐗╂枡 if ((this.Model.GetValue("FMatralId") as DynamicObject) != null) { @@ -2338,15 +1924,20 @@ if (!string.IsNullOrEmpty(FMatralId)) sqlwhere += $" and t3.FNumber='{FMatralId}'"; } - //缂栧埗鏃ユ湡 - string FPreparatDate = Convert.ToString((this.Model.GetValue("FPreparatDate"))); - if (!string.IsNullOrEmpty(FPreparatDate)) - sqlwhere += $" and FPreparatDate='{FPreparatDate}'"; + //缂栧埗鏃ユ湡寮�濮� + string FBeginPreparatDate = Convert.ToString((this.Model.GetValue("FBrginPreparatDate"))); + if (!string.IsNullOrEmpty(FBeginPreparatDate)) + sqlwhere += $" and FPreparatDate>='{FBeginPreparatDate}'"; + //缂栧埗鏃ユ湡缁撴潫 + string FEndPreparatDate = Convert.ToString((this.Model.GetValue("FEndPreparatDate"))); + if (!string.IsNullOrEmpty(FEndPreparatDate)) + sqlwhere += $" and FPreparatDate<='{FEndPreparatDate}'"; try { string sql = @"/*dialect*/ select t1.*,isnull((select SUM(isnull(FNotProductNum,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FNotProductNum ,isnull((select SUM(isnull(FHQTY,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FQTYLS from Sc_WorkBillSortBillMain t1 left join T_BD_MATERIAL t3 on t1.FHMaterID=t3.FMATERIALID + where t1.FDOCUMENTSTATUS not in ('E') " + sqlwhere; DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; DateTime DateNow = DateTime.Now;//鑾峰彇褰撳墠鏃ユ湡 @@ -2369,7 +1960,7 @@ this.Model.SetValue("FOrderLevel", dt.Rows[i]["FHOrderLev"].ToString(), i);//璁㈠崟绛夌骇 this.Model.SetValue("FSCOrderNo", dt.Rows[i]["FSCOrderNo"].ToString(), i);//鐢熶骇璁㈠崟鍙� this.Model.SetValue("FSalOrderNo", dt.Rows[i]["FHSEORDERBILLNO"].ToString(), i);//閿�鍞鍗曞彿 - this.Model.SetValue("FBzDate", dt.Rows[i]["FPreparatDate"].ToString(), i);//缂栧埗鏃ユ湡 + this.Model.SetValue("FBzDate", dt.Rows[i]["FPreparatDate"].ToString(), i);//棰勮寮�宸ユ棩鏈� this.Model.SetValue("FProOrderCount", dt.Rows[i]["FHOrderNeedQty"].ToString(), i);//鐢熶骇璁㈠崟鏁伴噺 this.Model.SetValue("FHMainSourceInterID", dt.Rows[i]["FPRDMOMAINID"].ToString(), i);//婧愬崟涓诲唴鐮丗HMainSourceInterID this.Model.SetValue("FHMainSourceEntryID", dt.Rows[i]["FPRDMOENTYID"].ToString(), i);//婧愬崟瀛愬唴鐮丗HMainSourceEntryID @@ -2477,10 +2068,38 @@ //this.View.ShowMessage("鎿嶄綔鎴愬姛"); } + public string DayPlanPPBomBillBatch() + { + try + { + DataTable dt = DBServiceHelper.ExecuteDataSet(Context, $"select FID from Sc_DayPlanPPBomBillMain where FDOCUMENTSTATUS <>'E'").Tables[0]; + List<string> zxSqlList = new List<string>(); + if (dt.Rows.Count > 0) + { + foreach (DataRow dr in dt.Rows) + { + zxSqlList.Add(string.Format(@"/*dialect*/ + INSERT INTO Z_SC_TLPLANZXJH (COLUMN1) VALUES ('{0}') + SELECT * FROM Z_SC_TLPLANZXJH + INSERT INTO SC_TLPLANZXJH(FID, FDAYPLANID, FCREATEDATE) SELECT *, GETDATE() FROM Z_SC_TLPLANZXJH + DELETE FROM Z_SC_TLPLANZXJH + SELECT * FROM SC_TLPLANZXJH", dr["FID"])); + } + } + DBServiceHelper.ExecuteBatch(Context, zxSqlList); + return "鎿嶄綔鎴愬姛"; + } + catch (Exception ex) + { + LogHelper.Error(ex.Message); + return "鎿嶄綔澶辫触锛岃鑱旂郴绯荤粺绠$悊鍛�"; + } + + } /// <summary> /// 鏃ヨ鍒掔敤鏂欐竻鍗曠敓鎴� /// </summary> - public string DayPlanPPBomBillBatch() + public string DayPlanPPBomBillBatch1() { //LogService.WriteAsync(entrys); //鏌ユ壘鍒扮殑鍚屾壒椤规 @@ -2560,7 +2179,7 @@ -- select FDayPlanFID FROM Sc_DayPlanPPBomBillMain WHERE FID IN ( select distinct FID from Sc_DayPlanPPBomBillSub WHERE FTranslateQty >0 or FPickedQty >0) -- ) ", -sqlWhere, day); + sqlWhere, day); LogHelper.Info("鐢熸垚鏃ヨ鍒掔敤鏂欐竻鍗曞噯澶囨暟鎹畇ql:" + sql); DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); DataTable dt = ds.Tables[0]; @@ -3367,52 +2986,74 @@ } } + //鐢熶骇璁″垝骞冲彴閫夊崟 鐢熶骇璁㈠崟鏁版嵁 public void SelectMenu() { - //鑾峰彇鍗曟嵁浣撲俊鎭� - Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); - //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎 - DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); - int Fseq = entityDataObjoct.Count(); - - string pageId = Guid.NewGuid().ToString(); - ListShowParameter showParameter = new ListShowParameter(); - showParameter.FormId = "PRD_MO"; - showParameter.PageId = pageId; - showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID; - showParameter.IsLookUp = true; - this.View.ShowForm(showParameter); - - this.View.ShowForm(showParameter, delegate (FormResult result) + try { - object returnData = result.ReturnData; - if (returnData is ListSelectedRowCollection) + //鑾峰彇鍗曟嵁浣撲俊鎭� + Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); + //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎 + DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); + int Fseq = entityDataObjoct.Count(); + string pageId = Guid.NewGuid().ToString(); + ListShowParameter showParameter = new ListShowParameter(); + showParameter.FormId = "PRD_MO"; + showParameter.PageId = pageId; + showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID; + showParameter.IsLookUp = true; + this.View.ShowForm(showParameter, delegate (FormResult result) { - ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection; - if (listSelectedRowCollection != null) + object returnData = result.ReturnData; + if (returnData is ListSelectedRowCollection) { - foreach (var listSelectedRow in listSelectedRowCollection) + ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection; + LogHelper.Info("鐢熶骇璁″垝骞冲彴閫夊崟 琛屾暟" + listSelectedRowCollection.Count().ToString()); + if (listSelectedRowCollection != null) { - string sql = $"select DATEDIFF(d,FPlanStartDate,getdate())days from T_PRD_MOENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}"; - int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0); - this.Model.CreateNewEntryRow("FEntity"); - this.View.Model.SetItemValueByNumber("FORGID", "100", Fseq); - this.View.Model.SetValue("FSCOrderNo", listSelectedRow.DataRow["FBillNo"].ToString(), Fseq); - this.View.Model.SetValue("FSRCBILLENTRYSEQ", listSelectedRow.DataRow["t1_FSeq"].ToString(), Fseq); - this.View.Model.SetValue("FMatrailId", listSelectedRow.DataRow["FMaterialId_Id"].ToString(), Fseq);//2129900005 - this.View.Model.SetValue("FFUnit", listSelectedRow.DataRow["FUnitId_Id"].ToString(), Fseq); - this.View.Model.SetValue("FOrderQuantity", listSelectedRow.DataRow["FQty"].ToString(), Fseq); - this.View.Model.SetValue("FProductWorkShopId", listSelectedRow.DataRow["FWorkShopID_Id"].ToString(), Fseq); - this.View.Model.SetValue("FOrderLevel", "3", Fseq); - this.View.Model.SetValue("FT" + day.ToString(), listSelectedRow.DataRow["FQty"].ToString(), Fseq); - Fseq++; + var ret = ""; + foreach (var listSelectedRow in listSelectedRowCollection) + { + if (entityDataObjoct.Where(x => x["FSRCBILLENTRYSEQ"].ToString() == listSelectedRow.DataRow["t1_FSeq"].ToString() && x["FSCOrderNo"].ToString() == listSelectedRow.DataRow["FBillNo"].ToString()).Count() > 0) + { + LogHelper.Info("鐢熶骇璁″垝骞冲彴閫夊崟:" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 琛屽彿," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",宸查��"); + ret += "鐢熶骇璁㈠崟鍙凤細" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 琛屽彿," + listSelectedRow.DataRow["t1_FSeq"].ToString() + ",宸查��" + "\n"; + continue; + } + //浠婂ぉ浠ュ墠鐨勬暟鎹槸鏄剧ず涓嶅嚭鏉ョ殑 + string sql = $"select DATEDIFF(d,getdate(),FPlanStartDate)days from T_PRD_MOENTRY where FENTRYID = {listSelectedRow.DataRow["t1_FENTRYID"].ToString()}"; + int day = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0); + if (day < 0) + { + LogHelper.Info("鐢熶骇璁″垝骞冲彴閫夊崟:鏃ユ湡澶潬鍚庯紝" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 琛屽彿, " + listSelectedRow.DataRow["t1_FSeq"].ToString() + ", day= " + day.ToString()); + ret += "璁″垝寮�宸ユ棩鏈熷湪浠婂ぉ涔嬪墠,鐢熶骇璁㈠崟鍙凤細" + listSelectedRow.DataRow["FBillNo"].ToString() + ", 琛屽彿," + listSelectedRow.DataRow["t1_FSeq"].ToString() + "\n"; + continue; + } + this.Model.CreateNewEntryRow("FEntity"); + this.View.Model.SetItemValueByNumber("FORGID", "100", Fseq); + this.View.Model.SetValue("FSCOrderNo", listSelectedRow.DataRow["FBillNo"].ToString(), Fseq); + this.View.Model.SetValue("FSRCBILLENTRYSEQ", listSelectedRow.DataRow["t1_FSeq"].ToString(), Fseq); + this.View.Model.SetValue("FMatrailId", listSelectedRow.DataRow["FMaterialId_Id"].ToString(), Fseq);//2129900005 + this.View.Model.SetValue("FFUnit", listSelectedRow.DataRow["FUnitId_Id"].ToString(), Fseq); + this.View.Model.SetValue("FOrderQuantity", listSelectedRow.DataRow["FQty"].ToString(), Fseq); + this.View.Model.SetValue("FProductWorkShopId", listSelectedRow.DataRow["FWorkShopID_Id"].ToString(), Fseq); + this.View.Model.SetValue("FOrderLevel", "3", Fseq); + this.View.Model.SetValue("FBzDate", DateTime.Now.AddDays(day).ToShortDateString(), Fseq);//棰勮寮�宸ユ棩鏈� + this.View.Model.SetValue("FT" + day.ToString(), listSelectedRow.DataRow["FQty"].ToString(), Fseq); + Fseq++; + } + if (ret != "") + { + this.View.ShowMessage(ret); + } } } - } - }); + }); + } + catch (Exception ex) + { + LogHelper.Error("閫夊崟澶辫触锛�" + ex.Message); + } } } } - - -//tbReleaseReserve \ No newline at end of file -- Gitblit v1.9.1