From 6ed23c03a18bf631039bf750ee456a5e2a582bfd Mon Sep 17 00:00:00 2001 From: 王 垚 <1402714037@qq.com> Date: 星期二, 05 一月 2021 14:16:24 +0800 Subject: [PATCH] 代码上传 --- src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs | 215 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 196 insertions(+), 19 deletions(-) diff --git a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs index 35959ca..c0631ae 100644 --- a/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs +++ b/src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs @@ -17,6 +17,8 @@ using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.ServiceHelper.FileServer; using Kingdee.BOS.Util; +using Kingdee.K3.Core.SCM.STK; +using Kingdee.K3.SCM.ServiceHelper; using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; using NPOI.SS.Formula.Functions; @@ -57,29 +59,18 @@ if (e.BarItemKey.ToUpper() == "BTEXPORT") { ExportExcel(); - //this.View.ShowMessage("娴嬭瘯鍟�"); - - string path = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, PathName); - DynamicFormShowParameter dynamicForm = new DynamicFormShowParameter(); dynamicForm.FormId = "BOS_FileDownLoad"; dynamicForm.OpenStyle.ShowType = ShowType.Modal; dynamicForm.CustomParams.Add("IsExportData", "true"); dynamicForm.CustomParams.Add("url", path); - this.View.ShowForm(dynamicForm); - - - //ShowDownload(); - } - if (e.BarItemKey.ToUpper() == "TBSEARCH") { SearchList(); } - if (e.BarItemKey.ToUpper() == "TBLOCK") { Lock(); @@ -103,18 +94,32 @@ //鎻愭枡璁″垝 if (e.BarItemKey.ToUpper() == "TBEXTRACTION") { - Extraction(); + try + { + COMPLETE(); + DayPlanPPBomBill(); + Extraction(); + } + catch (Exception ex) + { + this.View.ShowErrMessage(ex.Message.ToString()); + } + finally { + this.View.ShowMessage("鎿嶄綔鎴愬姛锛�"); + + } + } //棰勭暀 if (e.BarItemKey.ToUpper() == "TBRESERVE") { - Extraction(); + Reserve(); } //閲婃斁 if (e.BarItemKey.ToUpper() == "TBRELEASE") { - Extraction(); + Release(); } } catch (Exception ex) @@ -2128,8 +2133,6 @@ FentityModel.Add("FDayPlanDate", _item.OLDDATE);//鏃ヨ鍒掑伐鍗曠被鍨� FentityModel.Add("FHRelationQty", _item.PurchseFqty);//鍏宠仈鏁伴噺 FentityModel.Add("FFIXLEADTIME", _item.FFIXLEADTIME);//鎻愬墠鏈� - - FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = _item.FORGNumber });//閲囪喘缁勭粐 FentityModel.Add("FHPOOrderInterID", _item.PurchseFID);// 閲囪喘璁㈠崟鍐呯爜锛欶HPOOrderInterID FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //閲囪喘璁㈠崟瀛愬唴鐮侊細FHPOOrderEntryID @@ -2147,7 +2150,6 @@ ["IsVerifyBaseDataField"] = "false", ["Model"] = model }; - CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); var result = cloudClient.Save("paez_PODemandPlan", jsonRoot.ToString()); JObject saveObj = JObject.Parse(result); @@ -2163,13 +2165,188 @@ LogHelper.Error(saveIsSuc); } - } DBServiceHelper.ExecuteBatch(Context, sqlList); - this.View.ShowMessage("鎿嶄綔鎴愬姛"); // var PODemandPlanList22 = PODemandPlanTemp.GroupBy(p => new {p.FSUPPLIERID, p.FHMASTERDATE }).ToList(); + } + /// <summary> + /// 1.閿佸簱锛屽叿浣撳瓧娈垫牴鎹笟鍔″崟鎹喅瀹氾紝鈥業nv鈥欒〃绀哄嵆鏃跺簱瀛橈紝鈥楩InvDetailID鈥欎负鍗虫椂搴撳瓨ID + /// </summary> + public void Reserve() + { + try + { + decimal ReserveCount = Convert.ToDecimal((this.Model.GetValue("FReservedCount"))); + if (ReserveCount == 0) + { + this.View.ShowMessage("璇疯緭鍏ラ鐣欐暟閲�"); + return; + } + //鑾峰彇鍗曟嵁浣撲俊鎭� + Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); + //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎 + DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); + EntryGrid grid = this.View.GetControl<EntryGrid>("FEntity"); + //鎬诲簱瀛� 鐗╂枡+搴撳瓨缁勭粐+搴撳瓨鏁伴噺 + DataSet 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 +--where T1.FMATERIALID in (105773) +group by T1.FStockOrgId,T1.FMATERIALID +"); + ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>(); + foreach (DynamicObject current in entityDataObjoct) + { + if (Convert.ToString(current["FFOCUS"]) == "False") + continue; + string sql = string.Format(@" +/*dialect*/ +--鐢熶骇鐢ㄦ枡娓呭崟鍒楄〃 +SELECT T1.FID,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty,FPRDORGID FStockOrgId, +T2.FMATERIALID FMATERIALID2,T4.FNumber,T2.FNeedQty,convert(decimal(18,2),FNeedQty/FQty ) as dwyl +--,isnull(t3.FBASEQTY,0)FBASEQTY + FROM T_PRD_PPBOM T1 +LEFT JOIN (select FID,MAX(FENTRYID)FENTRYID,SUM(FNeedQty)FNeedQty,FMATERIALID from T_PRD_PPBOMENTRY where FMoId='{0}' +group by FMATERIALID,FID ) T2 on T1.FID=t2.FID +--LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID +LEFT JOIN T_BD_MATERIAL T4 on T2.FMATERIALID=T4.FMATERIALID +where t1.FMoId='{0}' and T1.FMaterialID='{1}' +", current["FHMainSourceInterID"].ToString(), current["FMatrailId_Id"].ToString()); + ds = DBServiceHelper.ExecuteDataSet(Context, sql); + var PpbomList = ds.ToModelList<PRD_PPBOM>(); + //褰撳墠鏈�澶ч綈濂楁暟 涓嬪眰闇�姹傛暟閲�/鐖剁骇闇�姹傛暟閲�=鍗曚綅鐢ㄦ枡 + //var SumGetComplete = Math.Floor(PpbomList.Min(t => t.FBASEQTY / (t.FNeedQty / t.FQty))); + //鏈�澶ч綈濂楁暟 + var result = (from a in PpbomList + join b in ListInventoryByStockOrgId + on new { materialId = a.FMATERIALID2, stockOrgId = a.FStockOrgId } + equals new { materialId = b.FMATERIALID, stockOrgId = b.FStockOrgId } + into g + from b in g.DefaultIfEmpty() + select new + { + value = (b?.FBASEQTY / a.dwyl) ?? 0 + }).ToList().Min(x => x.value); + if (result < ReserveCount) + { + this.View.ShowErrMessage("褰撳墠搴撳瓨瓒呭嚭鍙鐣欐渶澶ф暟锛�" + result + ""); + return; + }; + //灏嗛鐣欐暟閲忓垎閰嶅埌鏃ヨ鍒掑伐鍗� + sql = string.Format(@"/*dialect*/select FEntryID,FHQTY from Sc_WorkBillSortBillSub +where FID='{0}' and isnull(FCOMPLETE,'鏈綈濂�')='鏈綈濂�'", current["FDayPlanWorkID"].ToString()); + DataTable dayPlanDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; + var count = ReserveCount; + List<string> sqlList = new List<string>(); + if (dayPlanDt.Rows.Count > 0) + { + foreach (DataRow dr in dayPlanDt.Rows) + { + if (count > 0) + { + sql = string.Format("/*dialect*/ update Sc_WorkBillSortBillSub set FReservedCount = {0} where FEntryID = {1}", count >= Convert.ToDecimal(dr["FHQTY"]) ? Convert.ToDecimal(dr["FHQTY"]) : count, dr["FEntryID"].ToString()); + sqlList.Add(sql); + count = count - Convert.ToDecimal(dr["FHQTY"]); + } + else + break; + } + DBServiceHelper.ExecuteBatch(Context, sqlList); + } + sql = string.Format(@"/*dialect*/ +--鐢熶骇鐢ㄦ枡娓呭崟鍒楄〃 +SELECT T1.FID,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty,FPRDORGID FStockOrgId, +T2.FMATERIALID FMATERIALID2,T4.FNumber,T2.FNeedQty,convert(decimal(18,2),FNeedQty/T1.FQty ) as dwyl, +t5.FBASEUNITID,t6.FSTOREUNITID,t7.FID FSTKID,t7.FOwnerID,t7.FOwnerTypeID,t7.FSTOCKID,t7.FBASEQTY +--,isnull(t3.FBASEQTY,0)FBASEQTY + FROM T_PRD_PPBOM T1 +LEFT JOIN (select FID,MAX(FENTRYID)FENTRYID,SUM(FNeedQty)FNeedQty,FMATERIALID from T_PRD_PPBOMENTRY where FMoId='{0}' +group by FMATERIALID,FID ) T2 on T1.FID=t2.FID +--LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID +LEFT JOIN T_BD_MATERIAL T4 on T2.FMATERIALID=T4.FMATERIALID +join t_BD_MaterialBase t5 on t4.FMATERIALID = t5.FMATERIALID +join t_BD_MaterialStock t6 on t4.FMATERIALID = t6.FMATERIALID +join T_STK_INVENTORY t7 on t4.FMATERIALID = t7.FMATERIALID and t1.FPRDORGID=t7.FSTOCKORGID +where t1.FMoId='{0}' and T1.FMaterialID='{1}' +", current["FHMainSourceInterID"].ToString(), current["FMatrailId_Id"].ToString()); + DataTable skDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; + //閿佸簱 + List<LockStockArgs> list = new List<LockStockArgs>(); + foreach (DataRow dr in skDt.Rows) + { + LockStockArgs lockStockArgs = new LockStockArgs(); + lockStockArgs.ObjectId = "SAL_SaleOrder"; + lockStockArgs.BillId = Convert.ToString(current["FHMainSourceInterID"]); //鐢熶骇璁㈠崟ID + lockStockArgs.BillNo = Convert.ToString(current["FSCOrderNo"]);//鐢熶骇璁㈠崟鍙� + lockStockArgs.FID = Convert.ToInt32(current["FHMainSourceInterID"]); //鐢熶骇璁㈠崟ID + lockStockArgs.BaseQty = decimal.Parse(dr["FBASEQTY"].ToString());//鍩烘湰鍗曚綅鏁伴噺 + lockStockArgs.BaseUnitID = int.Parse(dr["FBASEUNITID"].ToString());//鍩烘湰鍗曚綅 + lockStockArgs.BillDetailID = Convert.ToString(current["FHMainSourceEntryID"]); + lockStockArgs.FEntryID = Convert.ToInt32(current["FHMainSourceEntryID"]); ; + //lockStockArgs.Lot = Convert.ToString(current["FBatch"]); ;//鎵规 FBatch + lockStockArgs.MaterialID = long.Parse(dr["FMATERIALID2"].ToString()); + lockStockArgs.OwnerID = long.Parse(dr["FOwnerID"].ToString()); + lockStockArgs.OwnerTypeID = dr["FOwnerTypeID"].ToString(); + lockStockArgs.Qty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;//鏁伴噺 + lockStockArgs.STOCKID = long.Parse(dr["FSTOCKID"].ToString());//浠撳簱 + lockStockArgs.StockOrgID = long.Parse(dr["FStockOrgId"].ToString());//搴撳瓨缁勭粐 + lockStockArgs.UnitID = long.Parse(dr["FSTOREUNITID"].ToString());//鍗曚綅 + lockStockArgs.LockBaseQty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount; + lockStockArgs.LockQty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;//鍩烘湰鍗曚綅鏁伴噺 + lockStockArgs.FInvDetailID = Convert.ToString(dr["FSTKID"].ToString()); + list.Add(lockStockArgs); + } + var sa = StockServiceHelper.SaveLockInfo(Context, list, "Inv", false); + this.View.ShowMessage("鎿嶄綔鎴愬姛锛�"); + } + } + catch (Exception ex) + { + LogHelper.Error(ex.Message.ToString()); + this.View.ShowErrMessage(ex.Message.ToString()); + } + } + /// <summary> + /// 閲婃斁 + /// </summary> + public void Release() + { + try + { + //鑾峰彇鍗曟嵁浣撲俊鎭� + Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); + //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎 + DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); + DynamicObjectCollection filterResult = entityDataObjoct.Clone(); + filterResult.Clear(); + entityDataObjoct.Where(x => Convert.ToBoolean(x["FFOCUS"])).ToList().ForEach(x=> filterResult.Add(x)); + foreach (DynamicObject current in entityDataObjoct) + { + if (Convert.ToString(current["FFOCUS"]) == "False") + continue; + string sql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set FReservedCount = 0 where FID='{0}'", current["FDayPlanWorkID"].ToString()); + DBServiceHelper.Execute(Context, sql); + } + this.View.ShowMessage("鎿嶄綔鎴愬姛锛�"); + } + catch (Exception ex) + { + LogHelper.Error(ex.Message.ToString()); + this.View.ShowErrMessage(ex.Message.ToString()); + } } } } +//tbReleaseReserve \ No newline at end of file -- Gitblit v1.9.1