From fd56fa51fe25f26ce5b518c6f3afb81fbc19553a Mon Sep 17 00:00:00 2001 From: zzr99 <1940172413@qq.com> Date: 星期一, 25 七月 2022 17:04:53 +0800 Subject: [PATCH] 盘点 --- WebAPI/Controllers/SCGL/日计划管理/JIT_DayPlanPlatFormBillController.cs | 854 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 850 insertions(+), 4 deletions(-) diff --git "a/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/JIT_DayPlanPlatFormBillController.cs" "b/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/JIT_DayPlanPlatFormBillController.cs" index 08618dc..b38c925 100644 --- "a/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/JIT_DayPlanPlatFormBillController.cs" +++ "b/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/JIT_DayPlanPlatFormBillController.cs" @@ -7,11 +7,13 @@ using WebAPI.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using System.Diagnostics; namespace WebAPI.Controllers.SCGL.鏃ヨ鍒掔鐞� { public class JIT_DayPlanPlatFormBillController : ApiController { + List<PRD_Inventory> ListInventory;//搴撳瓨鏄庣粏 private json objJsonResult = new json(); public DataSet ds = new DataSet(); public WebServer webserver = new WebServer(); @@ -22,7 +24,7 @@ #region 鐢熶骇鏃ヨ鍒掑钩鍙� 鏌ヨ [Route("JIT_DayPlanPlatFormBill/JIT_DayPlanPlatFormBillList")] [HttpGet] - public object JIT_DayPlanPlatFormBillList(string sWhere,string user) + public object JIT_DayPlanPlatFormBillList(string sWhere, string user) { try { @@ -38,8 +40,45 @@ omdelMian = JsonConvert.DeserializeObject<Sc_WorkBillSortBillMain>(sWhere); - ds = oCN.RunProcReturn($"exec h_p_JIT_Sc_WorkBillSortBill_Query '{omdelMian.HPlanBeginDate}',{(omdelMian.HProdORGID==null?0: omdelMian.HProdORGID)},'{omdelMian.HSeOrderBillNo}'" + + ds = oCN.RunProcReturn($"exec h_p_JIT_Sc_WorkBillSortBill_Query '{omdelMian.HPlanBeginDate}',{(omdelMian.HProdORGID == null ? 0 : omdelMian.HProdORGID)},'{omdelMian.HSeOrderBillNo}'" + $",'{omdelMian.HPlanEndDate.AddDays(1).AddSeconds(-1)}',{omdelMian.HMaterID},'{omdelMian.HICMOBillNo}',{omdelMian.HWorkShopID}", "h_p_JIT_Sc_WorkBillSortBill_Query"); + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "Sucess锛�"; + objJsonResult.data = ds.Tables[0]; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "Exception锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + + /// <summary> + /// 鏍规嵁ID鏌ヨ 榻愬鐘舵�� 鍜� 閿佸畾鐘舵�� + /// </summary> + /// <param name="sWhere"></param> + /// <param name="user"></param> + /// <returns></returns> + [Route("JIT_DayPlanPlatFormBill/JIT_DayPlanPlatFormBillHinterIDList")] + [HttpGet] + public object JIT_DayPlanPlatFormBillHinterIDList(string sWhere,int num) + { + try + { + if (num == 1) + { + ds = oCN.RunProcReturn($"select isnull(DATEDIFF(DAY,GETDATE(),CONVERT(varchar(10),max(HMasterDate),20)),0) DayNum from Sc_WorkBillSortBillSub where HInterID in ({sWhere}) and HMasterDate>=CONVERT(varchar(10),GETDATE(),20) and HLockedSub=1", "Sc_WorkBillSortBillSub"); + } + else if (num == 2) + { + ds = oCN.RunProcReturn($"select CONVERT(varchar(10),HMasterDate,20) HMasterDate,HComplete,HInterID from Sc_WorkBillSortBillSub where HInterID in ({sWhere}) and HMasterDate>=CONVERT(varchar(10),GETDATE(),20) and (HComplete='榻愬' or HComplete='鏈綈濂�') ", "Sc_WorkBillSortBillSub"); + } objJsonResult.code = "1"; objJsonResult.count = 1; @@ -149,11 +188,11 @@ var HMainSourceInterID = list[i]["婧愬崟涓诲唴鐮�"].ToString(); var HMainSourceEntryID = list[i]["婧愬崟瀛愬唴鐮�"].ToString(); - if (HSourceID=="") + if (HSourceID == "") { objJsonResult.code = "0"; objJsonResult.count = 0; - objJsonResult.Message = $"绗瑊i+1}琛岀敓浜ц祫婧愪笉鑳戒负绌�!"; + objJsonResult.Message = $"绗瑊i + 1}琛岀敓浜ц祫婧愪笉鑳戒负绌�!"; objJsonResult.data = null; return objJsonResult; } @@ -278,5 +317,812 @@ return objJsonResult; } #endregion + + #region 鐢熶骇鏃ヨ鍒掑钩鍙� 榻愬鍒嗘瀽 + + #region 娓呭崟閰嶆枡鏂瑰紡 + public class PRD_PPBOM + { + + /// <summary> + /// 鏃ヨ鍒掑伐鍗旻ID + /// </summary> + public long HInterID { get; set; } + /// <summary> + /// 鏃ヨ鍒掓槑缁咶EntryID + /// </summary> + public long HEntryID { get; set; } + /// <summary> + /// 鐢熶骇鐢ㄦ枡娓呭崟鍗曞彿 + /// </summary> + public string HBillNo { get; set; } + /// <summary> + /// 鐢熶骇璁㈠崟鍗曞彿 + /// </summary> + public string HICMOBillNo { get; set; } + /// <summary> + /// 鐢熶骇璁㈠崟鍐呯爜 + /// </summary> + public string HICMOInterID { get; set; } + /// <summary> + /// 鐖剁骇鐗╂枡ID + /// </summary> + public string FMaterialID { get; set; } + /// <summary> + /// 鐖剁骇鐗╂枡鏁伴噺 + /// </summary> + public decimal FQty { get; set; } + /// <summary> + /// 瀛愰」鐗╂枡ID + /// </summary> + public string FMATERIALID2 { get; set; } + /// <summary> + /// 瀛愰」鐗╂枡鍚嶇О + /// </summary> + public string FNumber { get; set; } + /// <summary> + /// 闇�姹傛暟閲� + /// </summary> + public decimal FNeedQty { get; set; } + /// <summary> + /// 鍗虫椂搴撳瓨 + /// </summary> + public decimal FBASEQTY { get; set; } + + /// <summary> + /// 鐢熶骇璁㈠崟涓荤爜 + /// </summary> + public string HICMOInterID_Sec { get; set; } + /// <summary> + /// 鐢熶骇璁㈠崟瀛愮爜 + /// </summary> + public string HICMOEntryID_Sec { get; set; } + + /// <summary> + /// 鏃ヨ鍒掓暟閲� + /// </summary> + public string HQty { get; set; } + + /// <summary> + /// 鏃ヨ鍒掓棩鏈� + /// </summary> + public DateTime HMasterDate { get; set; } + + /// <summary> + /// 璁㈠崟绛夌骇 + /// </summary> + public string HOrderLev { get; set; } + + /// <summary> + /// 搴撳瓨缁勭粐 + /// </summary> + public string FStockOrgId { get; set; } + /// <summary> + /// 缁勭粐鍚嶇О + /// </summary> + public string OrgFnumber { get; set; } + + /// <summary> + /// 鍗曚綅鐢ㄩ噺 + /// </summary> + public decimal dwyl { get; set; } + + /// <summary> + /// 棰勮娑堣�楃敤閲� + /// </summary> + public decimal PlanCount { get; set; } + /// <summary> + /// 鐗╂枡灞炴�� + /// </summary> + public int FErpClsID { get; set; } + + /// <summary> + /// 杞﹂棿 + /// </summary> + public string HWorkShopID { get; set; } + + /// <summary> + /// 杞﹂棿缂栫爜 + /// </summary> + public string FHWorkShopNumber { get; set; } + + + } + #endregion + + #region 鍗虫椂搴撳瓨 + public class PRD_Inventory + { + /// <summary> + /// 鐗╂枡ID + /// </summary> + public string FMATERIALID { get; set; } + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + public string FNumber { get; set; } + /// <summary> + /// 鍗虫椂搴撳瓨 + /// </summary> + public decimal FBASEQTY { get; set; } + + /// <summary> + /// 搴撳瓨缁勭粐 + /// </summary> + public string FStockOrgId { get; set; } + + /// <summary> + /// 搴撳瓨璐т富绫诲瀷 + /// </summary> + public string FOwnerTypeId { get; set; } + /// <summary> + /// 搴撳瓨璐т富 + /// </summary> + public string FOwnerId { get; set; } + + /// <summary> + /// 璐т富缂栫爜 + /// </summary> + public string FOwnerNumber { get; set; } + + /// <summary> + /// 浠撳簱 + /// </summary> + public string FSTOCKID { get; set; } + + /// <summary> + /// 浠撳簱缂栫爜 + /// </summary> + public string FStockNumber { get; set; } + } + #endregion + + #region 杞﹂棿浠撳簱瀵圭収鍒楄〃 + public class PRD_WorkHouseCompar + { + /// <summary> + /// 缁勭粐 + /// </summary> + public string FORGID { get; set; } + /// <summary> + /// 杞﹂棿 + /// </summary> + public string FWORKSHOPID { get; set; } + /// <summary> + /// 浠撳簱 + /// </summary> + public string FSTOCKID { get; set; } + } + #endregion + + #region 鏃ヨ鍒�+鐢熶骇璁㈠崟 + public class DayPlanPickedModel + { + /// <summary> + /// 璁㈠崟鍏ュ簱鏁伴噺 鎸夌収鐢熶骇璁㈠崟鏄庣粏琛� + /// </summary> + public decimal FCXStockInQty { get; set; } + /// <summary> + /// 涓荤敓浜ц鍗曞瓙鍐呯爜 + /// </summary> + public string FPRDMOENTYID { get; set; } + /// <summary> + /// 鐗╂枡鍗曚綅鐢ㄩ噺 + /// </summary> + public decimal dwyl { get; set; } + /// <summary> + /// 宸查鏁伴噺 + /// </summary> + public decimal FPickedQty { get; set; } + /// <summary> + /// 鍓╀綑鍙敤鏁伴噺 + /// </summary> + public decimal FRemainPickedQty { get; set; } + /// <summary> + /// 鐗╂枡 + /// </summary> + public string FMATERIALID { get; set; } + + } + #endregion + + #region 瀛樺偍涓存椂闇�瑕佹彃鍏ユ暟鎹� + public class CompleteAnalysisTempModel + { + /// <summary> + /// 涓荤敓浜ц鍗曚富鍐呯爜锛欶HMainICMOInterIDr + /// </summary> + public string FHMainICMOInterIDr { get; set; } + /// <summary> + /// 涓荤敓浜ц鍗曞瓙鍐呯爜锛欶HMainICMOEntryID + /// </summary> + public string FHMainICMOEntryID { get; set; } + /// <summary> + /// 鏃ヨ鍒掕鍗曚富鍐呯爜锛欶HICMOInterID + /// </summary> + public string FHICMOInterID { get; set; } + /// <summary> + /// 鏃ヨ鍒掕鍗曞瓙鍐呯爜锛欶HICMOEntryID + /// </summary> + public string FHICMOEntryID { get; set; } + /// <summary> + /// 瀛愪欢鐗╂枡锛欶HMaterID + /// </summary> + public string FHMaterID { get; set; } + + /// <summary> + /// 搴撳瓨缁勭粐锛欶HStockOrgID + /// </summary> + public string FHStockOrgID { get; set; } + + /// <summary> + ///鐢熶骇缁勭粐锛欶HPRDORGID + /// </summary> + public string FHPRDORGID { get; set; } + + /// <summary> + /// 鐢熶骇璁㈠崟鍙凤細FPRDBillNo + /// </summary> + public string FPRDBillNo { get; set; } + /// <summary> + /// 鏍囪瘑 + /// </summary> + public string FIdentificat { get; set; } + /// <summary> + /// 璐т富鍚嶇О锛欶OwnerName + /// </summary> + public string FOwnerName { get; set; } + /// <summary> + /// 璐т富缂栫爜锛欶OwnerId + /// </summary> + public string FOwnerId { get; set; } + /// <summary> + /// 璐т富绫诲瀷锛欶OwnerTypeId + /// </summary> + public string FOwnerTypeId { get; set; } + /// <summary> + /// 榻愬鐘舵�� + /// </summary> + public string FComPlete { get; set; } + /// <summary> + /// 鏁伴噺 + /// </summary> + public string FHUseQty { get; set; } + /// <summary> + /// 鍙婃椂搴撳瓨鏁伴噺锛欶HStockQty + /// </summary> + public decimal FHStockQty { get; set; } + /// <summary> + ///鍙敤鏁伴噺锛欶HLeftQty + /// </summary> + public decimal FHLeftQty { get; set; } + + /// <summary> + /// 缂烘枡鏁伴噺 + /// </summary> + public decimal FLackCount { get; set; } + /// <summary> + /// 鍗犵敤鏁伴噺 + /// </summary> + public decimal FOccupyCount { get; set; } + /// <summary> + /// 鍗犵敤棰嗘枡鏁伴噺 + /// </summary> + public decimal FOccupyPickedCount { get; set; } + + /// <summary> + /// 鍗曚綅鐢ㄩ噺锛欶UnitDosage + /// </summary> + public decimal FUnitDosage { get; set; } + /// <summary> + /// 璁″垝鎬绘暟閲忥細FSumPlanCount + /// </summary> + public decimal FSumPlanCount { get; set; } + /// <summary> + /// 榻愬鏁伴噺锛欶CompleteCount q + /// </summary> + public decimal FCompleteCount { get; set; } + public decimal FCompleteCount1 { get; set; } + /// <summary> + /// 鏃ヨ鍒掓棩鏈� + /// </summary> + public DateTime FPlanDate { get; set; } + //鐗╂枡绫诲瀷 + public int FErpClsID { get; set; } + //浠撳簱 + public string FStock { get; set; } + //杞﹂棿 + public string FWorkShop { get; set; } + + } + #endregion + + [Route("JIT_DayPlanPlatFormBill/JIT_CompleteSetAnalysis")] + [HttpGet] + public object JIT_CompleteSetAnalysis(string sWhere, string user) + { + try + { + oCN.BeginTran(); + Stopwatch sw = new Stopwatch(); + omdelMian = JsonConvert.DeserializeObject<Sc_WorkBillSortBillMain>(sWhere); + string sql = $"exec JIT_qtfx {omdelMian.HProdORGID},{omdelMian.HWorkShopID},'{user}' "; + ds = oCN.RunProcReturn(sql, "JIT_qtfx"); + LogService.Write("榻愬鍒嗘瀽sql:" + sql); + List<PRD_PPBOM> BomList = new List<PRD_PPBOM>(); + DataTable resulTable = ds.Tables[0]; + if (resulTable.Rows[0][0].ToString().Contains("澶辫触")) + { + return resulTable.Rows[0][0].ToString(); + } + else + { + BomList = ds.ToModelList<PRD_PPBOM>(); + } + + string fDayPlanFids = string.Empty; + string fDayPlanFEntryids = string.Empty; + if (BomList.Count == 0) + { + return "娌℃湁闇�瑕佽繘琛岄綈濂楀垎鏋愮殑鏁版嵁"; + } + else + { + List<string> fidList = BomList.Select(x => x.HInterID.ToString()).Distinct().ToList(); + List<string> fentryidList = BomList.Select(x => x.HEntryID.ToString()).Distinct().ToList(); + fDayPlanFids = string.Join(",", fidList); + fDayPlanFEntryids = string.Join(",", fentryidList); + } + LogService.Write("鏃ヨ鍒掑伐鍗昳ds" + fDayPlanFids); + + sw.Start();//寮�濮嬭鏃� + + //鑾峰彇褰撳墠鍗虫椂搴撳瓨 搴撳瓨鏁伴噺+搴撳瓨缁勭粐+鐗╂枡+璐т富+浠撳簱 + ds = oCN.RunProcReturn(@" +select distinct isnull(a.FBASEQTY,0) FBASEQTY,b.FNumber,a.FOwnerTypeId,a.FOwnerId,c.FNUMBER as FOwnerNumber,a.FSTOCKID,d.FNUMBER as FStockNumber from +( +select distinct a.HProdORGID FStockOrgId,T2.FMATERIALID,FNumber from SC_WORKBILLSORTBILLMAIN a +join SC_WORKBILLSORTBILLSub b on a.HInterID = b.HInterID +join AIS20210811135644..T_PRD_PPBOM T1 on a.HICMOInterID_Sec = t1.FMoId and a.HICMOEntryID_Sec = t1.FMOENTRYID +LEFT JOIN AIS20210811135644..T_PRD_PPBOMENTRY T2 on T1.FID = t2.FID +join AIS20210811135644..T_BD_MATERIAL T3 on T2.FMATERIALID = T3.FMATERIALID +) T1 +JOIN AIS20210811135644..T_BD_MATERIAL b on t1.FNUMBER = b.FNUMBER +LEFT JOIN AIS20210811135644..T_STK_Inventory a on b.FMATERIALID = a.FMATERIALID +LEFT join (select distinct fitemid,fformid,FNUMBER from AIS20210811135644..V_ITEMCLASS_OWNER) c on a.FOwnerTypeId = c.fformid and a.FOWNERID = c.fitemid +join AIS20210811135644..t_BD_Stock d on a.FSTOCKID =d.FSTOCKID +where a.FBASEQTY>0 +", "SC_WORKBILLSORTBILLMAIN"); + ListInventory = ds.ToModelList<PRD_Inventory>(); + //杞﹂棿 浠撳簱瀵圭収鍒楄〃 + ds = oCN.RunProcReturn(@" +SELECT DISTINCT T1.HOrgId FORGID,HWorkShopID FWORKSHOPID,HWHID FSTOCKID FROM Gy_WorkWarehouseBillMain T1 +JOIN Gy_WorkWarehouseBillMainSub T2 ON T1.HInterID=T2.HInterID +", "Gy_WorkWarehouseBillMain"); + List<PRD_WorkHouseCompar> pRD_WorkHouseCompar = ds.ToModelList<PRD_WorkHouseCompar>(); + int i = 1;//鐢ㄤ簬杩涘害鏉$殑鍔犺浇 + //鏃ヨ鍒�+鐢熶骇璁㈠崟瀛愯〃缂栫爜ID + var DatePlanList = BomList.GroupBy(p => new { p.HMasterDate, p.HICMOEntryID_Sec }).Select(x => new PRD_PPBOM { HMasterDate = x.Key.HMasterDate, HICMOEntryID_Sec = x.Key.HICMOEntryID_Sec }).ToList(); + //鍙栧簲鍙戞暟閲� FMustQty 涓嶈鍙栧�奸渶姹傛暟閲廎NeedQty 棰嗘枡鏁版嵁 + string LLsql = string.Format(@" +select max(t1.FCXStockInQty)FCXStockInQty,FPRDMOENTYID,max(dwyl)dwyl,sum(FPickedQty)FPickedQty,sum(FRemainPickedQty)FRemainPickedQty,FMATERIALID from +( +select a.FCXStockInQty, FPRDMOENTYID,convert( decimal(18,2),FMustQty/FQty ) as dwyl,FPickedQty,T2.FMATERIALID, +case when convert( decimal(18,2),(FPickedQty - a.FCXStockInQty * FMustQty/FQty))< 0 then 0 +else convert( decimal(18,2),(FPickedQty - a.FCXStockInQty * FMustQty/FQty)) end as FRemainPickedQty + from +( +select sum(HSourceStockInQty)FCXStockInQty,HICMOEntryID_Sec FPRDMOENTYID from SC_WORKBILLSORTBILLMAIN a +--where a.HInterID IN ({0}) +group by HICMOEntryID_Sec +) a +join AIS20210811135644..T_PRD_PPBOM T1 on a.FPRDMOENTYID = t1.FMOENTRYID +LEFT JOIN AIS20210811135644..T_PRD_PPBOMENTRY t2 on T1.FID = T2.FID +LEFT JOIN AIS20210811135644..T_PRD_PPBOMENTRY_Q t3 on t2.FENTRYID = T3.FENTRYID +LEFT JOIN AIS20210811135644..T_BD_MATERIAL T4 ON T2.FMATERIALID = T4.FMATERIALID +) t1 +group by FPRDMOENTYID,FMATERIALID +", fDayPlanFids); + List<DayPlanPickedModel> DayPlanPickedModel = new List<DayPlanPickedModel>(); + ds = oCN.RunProcReturn(LLsql, "SC_WORKBILLSORTBILLMAIN"); + DayPlanPickedModel = ds.ToModelList<DayPlanPickedModel>(); + //CompleteAnalysisTempModel 鐢ㄤ簬瀛樺偍涓存椂闇�瑕佹彃鍏ユ暟鎹� + List<CompleteAnalysisTempModel> completeAnalysisTempModel = new List<CompleteAnalysisTempModel>(); + //鍒涘缓瀛楀吀 鐢ㄤ簬鍌ㄥ瓨鐗╂枡 + 鍗犵敤鏁伴噺 + Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>(); + LogService.Write($"榻愬鍒嗘瀽锛屾暟鎹噯澶囬樁娈碉紝鐢ㄦ椂" + sw.Elapsed + "鎬昏鏁帮細" + BomList.Count); + LogService.Write($"榻愬鍒嗘瀽锛屾暟鎹噯澶囬樁娈碉紝鐢ㄦ椂" + sw.Elapsed + "鎬婚渶瑕佸惊鐜殑bom鏁伴噺锛�" + DatePlanList.Count); + + //绗竴涓惊鐜� 鏃ヨ鍒掑伐鍗曟槑缁� 涓�澶�+涓�涓伐鍗� 涓�涓惊鐜� + foreach (var item in DatePlanList) + { + //鏃ヨ鍒掔敤鏂欐竻鍗曟槑缁� 姣忎竴澶╃殑瀹為檯鐢ㄦ枡鎯呭喌 + var _BomList = BomList.Where(x => x.HMasterDate == item.HMasterDate && x.HICMOEntryID_Sec == item.HICMOEntryID_Sec).ToList(); + //姣忎竴涓墿鏂欒繘琛屽簱瀛樿绠� + foreach (var _item in _BomList) + { + //杞﹂棿浠撳簱 瀵圭収琛� 姣忎釜鏃ヨ鍒掑悓灞炰竴涓溅闂� A,B + var _pRD_WorkHouseCompar = pRD_WorkHouseCompar.Where(c => c.FWORKSHOPID == _item.HWorkShopID).ToList(); + decimal jskcQty = 0;//鐢ㄤ簬璁$畻 + decimal jskcQty2 = 0;//鐢ㄤ簬璁$畻褰撴椂閭d釜璁$畻鑺傜偣鐨勫嵆鏃跺簱瀛� + //璁$畻褰撳墠杩欏嚑涓粨搴撴�荤殑搴撳瓨閲� + if (_pRD_WorkHouseCompar.Count > 0) + { + foreach (var _WorkHouse in _pRD_WorkHouseCompar) + { + //搴撳瓨鏁版嵁鍖归厤 + List<PRD_Inventory> _ListInventory = ListInventory.Where(c => c.FNumber == _item.FNumber && c.FBASEQTY > 0 && c.FSTOCKID == _WorkHouse.FSTOCKID).ToList(); + if (_ListInventory.Count > 0) + { + foreach (var Inventory in _ListInventory) + { + jskcQty += Inventory.FBASEQTY; + } + } + } + } + //鎵惧嚭鐗╂枡琚叾瀹冭鍗曞崰鐢ㄦ暟閲� + decimal occupyMaterial = 0; + if (occupyDic.ContainsKey(_item.HWorkShopID + _item.FMATERIALID2)) + { + occupyMaterial = occupyDic[_item.HWorkShopID + _item.FMATERIALID2]; + } + //铏氭嫙鏃ヨ鍒掔敤鏂欐竻鍗� 闇�姹傛暟閲� + decimal planNeed = _item.PlanCount; //涓嶅弬涓庤绠� 鐢ㄤ簬璁板綍 + decimal need = _item.PlanCount;//鍙備笌璁$畻 + decimal FOccupyPickedCount = 0;//鍗犵敤棰嗘枡鍗曟暟閲� + //鎵惧埌棰嗙敤鏁伴噺 + var _DayPlanPickedModel = DayPlanPickedModel.Where(c => c.FPRDMOENTYID == _item.HICMOEntryID_Sec && c.FMATERIALID == _item.FMATERIALID2).FirstOrDefault(); + if (_DayPlanPickedModel.FRemainPickedQty >= need) + { + //棰嗘枡鏁伴噺婊¤冻浜嗗綋鍓嶈繖涓渶姹傞噺 鐩存帴榻愬 涓嶉渶瑕佸幓鍗犵敤浠撳簱 + completeAnalysisTempModel.Add(new CompleteAnalysisTempModel + { + FHMainICMOInterIDr = _item.HICMOInterID_Sec, + FHMainICMOEntryID = _item.HICMOEntryID_Sec, + FHICMOInterID = _item.HInterID.ToString(), + FHICMOEntryID = _item.HEntryID.ToString(), + FHMaterID = _item.FMATERIALID2, + FErpClsID = _item.FErpClsID, + FHStockOrgID = _item.FStockOrgId, + FHPRDORGID = _item.FStockOrgId, + FPRDBillNo = _item.HICMOBillNo, + FOwnerTypeId = "", + FUnitDosage = _item.dwyl,//鍗曚綅鐢ㄩ噺 + FSumPlanCount = planNeed,//璁″垝鎬绘暟閲� + FCompleteCount1 = planNeed, //榻愬鏁伴噺 + FLackCount = 0,//缂烘枡鏁伴噺 + FHStockQty = jskcQty2,//鍗虫椂搴撳瓨 + FHLeftQty = jskcQty,//鍙敤鏁伴噺 + FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 + FOccupyPickedCount = planNeed,//鍗犵敤棰嗘枡鏁伴噺 + FComPlete = "榻愬", + FPlanDate = item.HMasterDate, // 鏃ヨ鍒掓棩鏈� + FWorkShop = _item.HWorkShopID //杞﹂棿 + }); + //鎵i櫎鍓╀綑鍙敤棰嗘枡鏁伴噺 + _DayPlanPickedModel.FRemainPickedQty -= need; + //寰幆涓嬩竴涓墿鏂� + continue; + } + else + { + need -= _DayPlanPickedModel.FRemainPickedQty; //鍓╀綑闇�姹傛暟閲� + FOccupyPickedCount = _DayPlanPickedModel.FRemainPickedQty; + _DayPlanPickedModel.FRemainPickedQty = 0; + } + if (_pRD_WorkHouseCompar.Count > 0) + { + //缂烘枡鏁伴噺 闇�姹傛暟閲� - 瀹為檯搴撳瓨 >0 ? 涓�涓墿鏂欎笉绠″崰鐢ㄥ灏戞潯 搴撳瓨+璐т富 鏁版嵁 缂烘枡鏁伴噺鏄悓涓�涓暟閲� + decimal _fLackCount = need > jskcQty ? (need - jskcQty) : 0; + //LogHelper.Info("缁勭粐锛�" + _item.FStockOrgId + " ,鍙婃椂搴撳瓨" + jskcQty); + //鎬诲簱瀛樹负0浜� 鐩存帴缁欏嚭 缂烘枡鏁伴噺 + if (jskcQty == 0) + { + completeAnalysisTempModel.Add(new CompleteAnalysisTempModel + { + FHMainICMOInterIDr = _item.HICMOInterID_Sec, + FHMainICMOEntryID = _item.HICMOEntryID_Sec, + FHICMOInterID = _item.HInterID.ToString(), + FHICMOEntryID = _item.HEntryID.ToString(), + FHMaterID = _item.FMATERIALID2, + FErpClsID = _item.FErpClsID, + FHStockOrgID = _item.FStockOrgId, + FHPRDORGID = _item.FStockOrgId, + FPRDBillNo = _item.HICMOBillNo, + FOwnerTypeId = "", + FUnitDosage = _item.dwyl,//鍗曚綅鐢ㄩ噺 + FSumPlanCount = planNeed,//璁″垝鎬绘暟閲� + FCompleteCount1 = FOccupyPickedCount, //榻愬鏁伴噺 + FLackCount = need,//缂烘枡鏁伴噺 + FHStockQty = jskcQty2,//鍗虫椂搴撳瓨 + FHLeftQty = jskcQty,//鍙敤鏁伴噺 + FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 + FOccupyPickedCount = FOccupyPickedCount,//鍗犵敤棰嗘枡鏁伴噺 + FComPlete = "鏈綈濂�", + FPlanDate = item.HMasterDate, // 鏃ヨ鍒掓棩鏈� + FWorkShop = _item.HWorkShopID //杞﹂棿 + }); + //缁堟璇ョ墿鏂欒绠� 杩涘叆涓嬩竴涓� + continue; + } + foreach (var WorkHouse in _pRD_WorkHouseCompar) + { + //搴撳瓨鏁版嵁鍖归厤 + List<PRD_Inventory> _ListInventory = ListInventory.Where(c => c.FNumber == _item.FNumber && c.FBASEQTY > 0 && c.FSTOCKID == WorkHouse.FSTOCKID).ToList(); + //闇�姹傛暟閲� 鍗犵敤瀹屽悗鍙互璺冲嚭杞﹂棿浠撳簱寰幆 + if (need == 0) + break; + if (_ListInventory.Count > 0) + { + foreach (var Inventory in _ListInventory) + { + if (need == 0) + break; + //榻愬鏁伴噺 + decimal fCompleteCount = need >= Inventory.FBASEQTY ? Inventory.FBASEQTY : need; + if (!occupyDic.ContainsKey(_item.HWorkShopID + _item.FMATERIALID2)) + { + occupyDic.Add(_item.HWorkShopID + _item.FMATERIALID2, fCompleteCount); + } + else + { + occupyMaterial = occupyDic[_item.HWorkShopID + _item.FMATERIALID2]; + occupyDic[_item.HWorkShopID + _item.FMATERIALID2] = occupyMaterial + fCompleteCount; + } + completeAnalysisTempModel.Add(new CompleteAnalysisTempModel + { + FHMainICMOInterIDr = _item.HICMOInterID_Sec, + FHMainICMOEntryID = _item.HICMOEntryID_Sec, + FHICMOInterID = _item.HInterID.ToString(), + FHICMOEntryID = _item.HEntryID.ToString(), + FHMaterID = _item.FMATERIALID2, + FHStockOrgID = _item.FStockOrgId, + FHPRDORGID = _item.FStockOrgId, + FErpClsID = _item.FErpClsID, + FPRDBillNo = _item.HICMOBillNo, + FOwnerTypeId = Inventory.FOwnerTypeId, + FOwnerId = Inventory.FOwnerId, + FUnitDosage = _item.dwyl,//鍗曚綅鐢ㄩ噺 + FSumPlanCount = planNeed,//璁″垝鎬绘暟閲� + FCompleteCount1 = fCompleteCount + FOccupyPickedCount, //榻愬鏁伴噺 + FLackCount = _fLackCount,//缂烘枡鏁伴噺 + FHStockQty = jskcQty2,//鍗虫椂搴撳瓨 + FHLeftQty = jskcQty,//鍙敤鏁伴噺 + FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 + FOccupyPickedCount = FOccupyPickedCount,//棰嗘枡鍗犵敤鏁伴噺 + FComPlete = jskcQty >= need ? "榻愬" : "鏈綈濂�", + FPlanDate = item.HMasterDate, // 鏃ヨ鍒掓棩鏈� + FStock = Inventory.FSTOCKID,//浠撳簱 + FWorkShop = _item.HWorkShopID //杞﹂棿 + }); + //鎵e噺鎬诲簱瀛樻暟閲� + jskcQty = jskcQty >= fCompleteCount ? jskcQty - fCompleteCount : 0; + //鍓╀綑鏃ヨ鍒掗渶姹傛暟閲� + need = need >= Inventory.FBASEQTY ? need - Inventory.FBASEQTY : 0; + //鎵e噺娑堣�楀簱瀛� + Inventory.FBASEQTY = Inventory.FBASEQTY - fCompleteCount; + } + } + } + } + //娌℃湁杞﹂棿浠撳簱鏁版嵁 鏃㈡病鏈夊彲鐢ㄥ簱瀛� 涓烘湭榻愬 + else + { + if (occupyDic.ContainsKey(_item.HWorkShopID + _item.FMATERIALID2)) + { + occupyMaterial = occupyDic[_item.HWorkShopID + _item.FMATERIALID2]; + } + completeAnalysisTempModel.Add(new CompleteAnalysisTempModel + { + FHMainICMOInterIDr = _item.HICMOInterID_Sec, + FHMainICMOEntryID = _item.HICMOEntryID_Sec, + FHICMOInterID = _item.HInterID.ToString(), + FHICMOEntryID = _item.HEntryID.ToString(), + FHMaterID = _item.FMATERIALID2, + FErpClsID = _item.FErpClsID, + FHStockOrgID = _item.FStockOrgId, + FHPRDORGID = _item.FStockOrgId, + FPRDBillNo = _item.HICMOBillNo, + FOwnerTypeId = "", + FUnitDosage = _item.dwyl,//鍗曚綅鐢ㄩ噺 + FSumPlanCount = planNeed,//璁″垝鎬绘暟閲� + FCompleteCount1 = planNeed - need, //榻愬鏁伴噺 + FLackCount = need,//缂烘枡鏁伴噺 + FHStockQty = jskcQty2,//鍗虫椂搴撳瓨 + FHLeftQty = jskcQty,//鍙敤鏁伴噺 + FOccupyCount = occupyMaterial,//鍗犵敤鏁伴噺 + FOccupyPickedCount = FOccupyPickedCount,//鍗犵敤棰嗘枡鏁伴噺 + FComPlete = "鏈綈濂�", + FPlanDate = item.HMasterDate, // 鏃ヨ鍒掓棩鏈� + FWorkShop = _item.HWorkShopID //杞﹂棿 + }); + } + } + //Thread.Sleep(6000); + i++; + } + LogService.Write($"榻愬鍒嗘瀽锛屾暟鎹噯澶囧畬鎴愶紝淇濆瓨鍒癕odel瀹炰綋锛屾�昏鏁帮細{completeAnalysisTempModel.Count}锛岃�楁椂锛�" + sw.Elapsed); + List<string> sqlList = new List<string>(); + DataTable insertDT = new DataTable(); + insertDT.TableName = "JIT_MOMaterReadysBill"; + insertDT.Columns.Add("FID", typeof(long)); + insertDT.Columns.Add("FDOCUMENTSTATUS", typeof(string)); + insertDT.Columns.Add("FHMAINICMOINTERIDR", typeof(long)); + insertDT.Columns.Add("FHMAINICMOENTRYID", typeof(long)); + insertDT.Columns.Add("FHICMOINTERID", typeof(long)); + insertDT.Columns.Add("FHICMOENTRYID", typeof(long)); + insertDT.Columns.Add("FHMATERID", typeof(long)); + insertDT.Columns.Add("FHSTOCKORGID", typeof(long)); + insertDT.Columns.Add("FHSTOCKQTY", typeof(decimal)); + insertDT.Columns.Add("FHLEFTQTY", typeof(decimal)); + insertDT.Columns.Add("FHPRDORGID", typeof(long)); + insertDT.Columns.Add("FUNITDOSAGE", typeof(decimal)); + insertDT.Columns.Add("FSUMPLANCOUNT", typeof(decimal)); + insertDT.Columns.Add("FPRDBILLNO", typeof(string)); + insertDT.Columns.Add("FOWNERID", typeof(long)); + insertDT.Columns.Add("FOWNERTYPEID", typeof(string)); + insertDT.Columns.Add("FPLANDATE", typeof(DateTime)); + insertDT.Columns.Add("FCOMPLETE", typeof(string)); + insertDT.Columns.Add("FLACKCOUNT", typeof(decimal)); + insertDT.Columns.Add("FOCCUPYCOUNT", typeof(decimal)); + insertDT.Columns.Add("FCOMPLETECOUNT1", typeof(decimal)); + insertDT.Columns.Add("FERPCLSID", typeof(string)); + insertDT.Columns.Add("FWORKSHOPID", typeof(long)); + insertDT.Columns.Add("FSTOCKID", typeof(long)); + insertDT.Columns.Add("FOCCUPYPICKEDCOUNT", typeof(decimal)); + int jdtmmm = 1; + ds = oCN.RunProcReturn("select max(HInterID)FID FROM JIT_MOMaterReadysBill", "JIT_MOMaterReadysBill"); + int maxFid = int.Parse(ds.Tables[0].Rows[0][0].ToString() == "" ? "0" : ds.Tables[0].Rows[0][0].ToString()); + foreach (var item in completeAnalysisTempModel) + { + DataRow dr = insertDT.NewRow(); + dr["FID"] = maxFid + jdtmmm; + dr["FDOCUMENTSTATUS"] = "A"; + dr["FHMAINICMOINTERIDR"] = item.FHMainICMOInterIDr; + dr["FHMAINICMOENTRYID"] = item.FHMainICMOEntryID; + dr["FHICMOINTERID"] = item.FHICMOInterID; + dr["FHICMOENTRYID"] = item.FHICMOEntryID; + dr["FHMATERID"] = item.FHMaterID; + dr["FHSTOCKORGID"] = item.FHStockOrgID; + dr["FHSTOCKQTY"] = item.FHStockQty; + dr["FHLEFTQTY"] = item.FHLeftQty; + dr["FHPRDORGID"] = item.FHPRDORGID; + dr["FUNITDOSAGE"] = item.FUnitDosage; + dr["FSUMPLANCOUNT"] = item.FSumPlanCount; + dr["FPRDBILLNO"] = item.FPRDBillNo; + dr["FOWNERID"] = item.FOwnerId == null ? "0" : item.FOwnerId; + dr["FOWNERTYPEID"] = item.FOwnerTypeId; + dr["FPLANDATE"] = item.FPlanDate.ToString("yyyy-MM-dd"); + dr["FCOMPLETE"] = item.FComPlete; + dr["FLACKCOUNT"] = item.FLackCount; + dr["FOCCUPYCOUNT"] = item.FOccupyCount; + dr["FCOMPLETECOUNT1"] = item.FCompleteCount1; + dr["FERPCLSID"] = item.FErpClsID; + dr["FWORKSHOPID"] = item.FWorkShop == null ? "0" : item.FWorkShop; + dr["FSTOCKID"] = item.FStock == null ? "0" : item.FStock; + dr["FOCCUPYPICKEDCOUNT"] = item.FOccupyPickedCount; + insertDT.Rows.Add(dr); + jdtmmm++; + } + + insertDT.EndLoadData(); // 鐏屽叆鏁版嵁缁撴潫 + //鎻掑叆涔嬪墠鎵ц涓嬫竻绌鸿鍙�(娴嬭瘯鏄惁鑳藉闃叉閲嶅鐢熸垚) + string deletesql = $"delete from JIT_MOMaterReadysBill where HICMOInterID in ({fDayPlanFids}) "; + oCN.RunProc(deletesql); + // 鎵归噺鎻掑叆鍒版暟鎹簱 + foreach (DataRow item in insertDT.Rows) + { + oCN.RunProc("insert into JIT_MOMaterReadysBill(HInterID,HDocumentStatus,HMainICMOInterID,HMainICMOEntryID,HICMOInterID" + + ", HICMOEntryID, HMaterID, HStockORGID, HStockQty, HLeftQty" + + ", HProdORGID, HUnitDosage, HSumPlanQty, HICMOBillNo, HOwnerID" + + ", HOwnerTypeID, HPlanDate, HComplete, HLackQty, HOccupyQty" + + ", HCompleteQty1, HErpClsID, HWorkShopID, HWHID, HOccupyPickedQTY)values" + + $"({item["FID"].ToString()}, 1, {item["FHMAINICMOINTERIDR"].ToString()}, {item["FHMAINICMOENTRYID"].ToString()}, {item["FHICMOINTERID"].ToString()}" + + $", {item["FHICMOENTRYID"].ToString()}, {item["FHMATERID"].ToString()}, {item["FHSTOCKORGID"].ToString()}, {item["FHSTOCKQTY"].ToString()}, {item["FHLEFTQTY"].ToString()}" + + $" , {item["FHPRDORGID"].ToString()}, {item["FUNITDOSAGE"].ToString()}, {item["FSUMPLANCOUNT"].ToString()}, '{item["FPRDBILLNO"].ToString()}', {item["FOWNERID"].ToString()}" + + $", '{item["FOWNERTYPEID"].ToString()}', '{item["FPLANDATE"].ToString()}','{item["FCOMPLETE"].ToString()}', {item["FLACKCOUNT"].ToString()}, {item["FOCCUPYCOUNT"].ToString()}" + + $", {item["FCOMPLETECOUNT1"].ToString()}, {item["FERPCLSID"].ToString()}, {item["FWORKSHOPID"].ToString()}, {item["FSTOCKID"].ToString()}, {item["FOCCUPYPICKEDCOUNT"].ToString()})"); + } + LogService.Write("鎵归噺鎻掑叆鍒版暟鎹簱鐢ㄦ椂锛�" + sw.Elapsed); + //鎵ц瀹屾垚鍚� 鏇存柊鏃ヨ鍒掑伐鍗曠姸鎬� + string updatesql = string.Format(@" +update Sc_WorkBillSortBillSub set HComplete = '鏈綈濂�' where HEntryID IN +(select distinct HICMOEntryID from JIT_MOMaterReadysBill + where isnull(HComplete,'鏈綈濂�') ='鏈綈濂�' + and HICMOEntryID in ({0}) + )", fDayPlanFEntryids); + //LogService.Write(Context, updatesql); + oCN.RunProc(updatesql); + updatesql = string.Format(@" +update Sc_WorkBillSortBillSub set HComplete = '榻愬' +where HEntryID IN ({0}) and HComplete <>'鏈綈濂�' +", fDayPlanFEntryids); + //LogService.Write(updatesql); + oCN.RunProc(updatesql); + //閲婃斁榻愬鎿嶄綔 閬垮厤澶氫汉鍚屾椂杩涜榻愬鍒嗘瀽 + oCN.RunProc($"update T_PRD_QTFX set FSTATUS = 0 where FPRDORGID ={omdelMian.HProdORGID} and FSTATUS = 1 "); + sw.Stop();//缁撴潫璁℃椂 + LogService.Write("榻愬鍒嗘瀽杩愯鎬绘椂闀匡細" + sw.Elapsed); + + oCN.Commit(); + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "鎿嶄綔鎴愬姛"; + objJsonResult.data = null; + return objJsonResult; + } + catch (Exception e) + { + oCN.RollBack(); + LogService.Write("鎿嶄綔澶辫触锛�" + e.Message.ToString()); + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "Exception锛�" + e.Message.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + #endregion + + #region 鐢熶骇鏃ヨ鍒掑钩鍙� 閿佸畾 + [Route("JIT_DayPlanPlatFormBill/JIT_DayPlanPlatFormBillHLockedDay")] + [HttpGet] + public object JIT_DayPlanPlatFormBillHLockedDay(string sWhere, int HLockedDay) + { + try + { + if (sWhere != null && sWhere != "") + { + oCN.RunProc("update Sc_WorkBillSortBillSub set HLockedSub=1" + + $" where HInterID in ({sWhere}) and HMasterDate between DATEADD(day, -1, getdate()) and DATEADD(day,{(HLockedDay - 1)},getdate()) "); + } + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "Sucess锛�"; + objJsonResult.data = null; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "Exception锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + #endregion + + #region 鐢熶骇鏃ヨ鍒掑钩鍙� 瑙i攣 + [Route("JIT_DayPlanPlatFormBill/JIT_DayPlanPlatFormBillHUnlockDay")] + [HttpGet] + public object JIT_DayPlanPlatFormBillHUnlockDay(string sWhere, int HLockedDay) + { + try + { + if (sWhere != null && sWhere != "") + { + oCN.RunProc("update Sc_WorkBillSortBillSub set HLockedSub=0" + + $" where HInterID in ({sWhere}) and HMasterDate between DATEADD(day, -1, getdate()) and DATEADD(day,{(HLockedDay - 1)},getdate()) "); + } + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "Sucess锛�"; + objJsonResult.data = null; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "Exception锛�" + e.ToString(); + objJsonResult.data = null; + return objJsonResult; + } + } + #endregion + } } \ No newline at end of file -- Gitblit v1.9.1