From 511d159574c3de94d8d3e43da9f5485f764fa7c8 Mon Sep 17 00:00:00 2001 From: hudong <Administrator@PC-20250329JZUF> Date: 星期四, 19 六月 2025 17:22:35 +0800 Subject: [PATCH] 平高项目 生成出库单逻辑修改 --- api/WmsSpaHelper.cs | 254 +++++++++++++++++++++++++++++++++++--------------- 1 files changed, 177 insertions(+), 77 deletions(-) diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs index cf42f12..8f0708a 100644 --- a/api/WmsSpaHelper.cs +++ b/api/WmsSpaHelper.cs @@ -41,6 +41,8 @@ using System.Data; using System.Runtime.ConstrainedExecution; using HH.WCS.Mobox3.pinggao.core; +using static HH.WCS.Mobox3.pinggao.api.OtherModel.Putaway_Order_In; +using System.Web.Http.Results; namespace HH.WCS.Mobox3.pinggao.api { @@ -1895,30 +1897,59 @@ } else if (!string.IsNullOrEmpty(model.item_code)) { - var starts = db.Queryable<CntrItemRel>().Where(cir => cir.S_CNTR_TYPE == "鍗婃墭" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault(); - if (starts!=null) - { - LogHelper.Info($"starts{starts}"); - var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == starts.S_CNTR_CODE).ToList().FirstOrDefault(); - LogHelper.Info($"starts1{starts12}"); - start = db.Queryable<Location>().Where(loc => loc.S_AREA_CODE == "HJQ" && loc.S_CODE == starts12.S_LOC_CODE).ToList().FirstOrDefault(); - LogHelper.Info($"starts2{start}"); + LogHelper.Info($"杩涙潵浜�); + var khsta= db.Queryable<CGRels>().Where(cir => cir.S_CNTR_TYPE == "鍗婃墭" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault(); - model.cntr_code = starts12?.S_CNTR_CODE; + + + if (khsta != null) + { + LogHelper.Info($"starts{khsta}"); + var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == khsta.S_CNTR_CODE).First(); + if (starts12==null) + { + LogHelper.Info($"{khsta.S_CNTR_CODE}瀹瑰櫒璐т綅涓嶅瓨鍦�); + result.resultMsg = $"{khsta.S_CNTR_CODE}瀹瑰櫒璐т綅涓嶅瓨鍦�; + result.resultCode = 1; + return result; + } + else + { + + LogHelper.Info($"starts1{starts12}"); + start = db.Queryable<Location>().Where(loc => loc.S_AREA_CODE == "HJQ" && loc.S_CODE == starts12.S_LOC_CODE).ToList().FirstOrDefault(); + LogHelper.Info($"starts2{start}"); + + model.cntr_code = starts12?.S_CNTR_CODE; + } } else { - var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray(); - var S_LOC_CODElist = db.Queryable<LocCntrRel>().Where(s => !list.Contains(s.S_CNTR_CODE)).Select(s => s.S_LOC_CODE).ToArray(); - start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).ToList().FirstOrDefault(); + var starts = db.Queryable<CntrItemRel>().Where(cir => cir.S_CNTR_TYPE == "鍗婃墭" && cir.S_ITEM_CODE == model.item_code).OrderBy(cir => cir.T_CREATE).ToList().FirstOrDefault(); + + if (starts!=null) + { + LogHelper.Info($"{model.cntr_code}瀹瑰櫒璐у搧瀛樺湪璇ョ墿鏂欙紝璇烽厤缃墿鏂欏鍣�); + result.resultMsg = $"瀹瑰櫒璐у搧瀛樺湪璇ョ墿鏂欙紝璇烽厤缃墿鏂欏鍣�; + result.resultCode = 1; + return result; + + } + else + { + var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray(); + var S_LOC_CODElist = db.Queryable<LocCntrRel>().Where(s => !list.Contains(s.S_CNTR_CODE)).Select(s => s.S_LOC_CODE).ToArray(); + start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).ToList().FirstOrDefault(); + if (start!=null) + { + var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == start.S_CODE).ToList().FirstOrDefault(); - - - var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == start.S_CODE).ToList().FirstOrDefault(); - - - model.cntr_code = starts12?.S_CNTR_CODE; + model.cntr_code = starts12?.S_CNTR_CODE; + } + + } + } } @@ -1930,8 +1961,8 @@ } if (start == null) { - LogHelper.Info($"{model.cntr_code}鏈壘鍒板彲鐢ㄨ揣浣�); - result.resultMsg = $"{model.cntr_code}鏈壘鍒板彲鐢ㄨ揣浣�; + LogHelper.Info($"{model.item_code}鏈壘鍒板彲鐢ㄨ揣浣�); + result.resultMsg = $"{model.item_code}鏈壘鍒板彲鐢ㄨ揣浣�; result.resultCode = 1; return result; } @@ -2038,6 +2069,7 @@ catch (Exception e) { result.resultMsg = e.Message; + result.resultCode = 1; db.RollbackTran(); return result; throw; @@ -3143,6 +3175,23 @@ #endregion if (cntr != null) { + #region 瀹㈡埛鎸囧畾瀹瑰櫒琛�+ var cir2 = db.Queryable<CGRels>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code ).First(); + + if (cir2 != null) + { + cir2.S_CNTR_TYPE = S_CNTR_TYPE; + db.Updateable(cir2).UpdateColumns(it => new { it.S_CNTR_TYPE }).ExecuteCommand(); + } + else + { + //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉S_SERIAL_NO = item.S_SERIAL_NO,锛�+ cir2 = new CGRels { S_CNTR_TYPE = S_CNTR_TYPE, S_CNTR_CODE = cntr.S_CODE.Trim(), N_BS_ROW_NO = item.N_ROW_NO, S_ITEM_CODE = item.item_code }; + db.Insertable<CGRels>(cir2).ExecuteCommand(); + } + #endregion + + #region 1.鏌ョ湅鏄惁鏈夌浉鍚岀墿鏂欐壒娆$殑淇℃伅锛屽鏋滄湁瑕佺疮鍔狅紝涓嶅悓鎵规鐨勫彲浠ュ垎寮� var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr.S_CODE && a.S_ITEM_CODE == item.item_code && a.S_BATCH_NO == item.S_BATCH_NO && a.N_BS_ROW_NO == item.N_ROW_NO && a.S_BS_NO == item.arrival_no).First(); if (cir != null) @@ -3252,7 +3301,7 @@ S_DO_NO = itemscddll.LLDH, S_AREA_CODE = "HJQ", N_ROW_NO = "", - S_ITEM_CODE = a.WLBM, + S_ITEM_CODE = a.ZJBM, S_ITEM_NAME = "", F_QTY = a.XQSL, S_ZJBM = a.ZJBM, @@ -3354,7 +3403,7 @@ db.BeginTran(); foreach (var itemscddll in model.ROOT.SCDDLL) { - var wlbmList = itemscddll.ITEM.Select(x => x.WLBM).Distinct().ToList(); + var wlbmList = itemscddll.ITEM.Select(x => x.ZJBM).Distinct().ToList(); var itemlist = db.Queryable<TN_Material>() .Where(it => wlbmList.Contains(it.S_ITEM_CODE)) // 浣跨敤 IN 鏌ヨ .ToList(); @@ -3377,13 +3426,13 @@ { foreach (var a in itemscddll.ITEM) { - var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.ZJBM).FirstOrDefault(); if (item == null) { lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; + lLDReturnRoots.MSGDESP = $"鐗╂枡{a.ZJBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; iTEMs.Add(lLDReturnRoots); continue; @@ -3393,7 +3442,7 @@ S_DO_NO = itemscddll.LLDH, S_AREA_CODE = "HJQ", N_ROW_NO = "", - S_ITEM_CODE = a.WLBM, + S_ITEM_CODE = a.ZJBM, S_ITEM_NAME = item?.S_ITEM_NAME, F_QTY = a.XQSL, S_ZJBM = a.ZJBM, @@ -3468,21 +3517,21 @@ lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鎵ц涓鏂欏崟锛岀墿鏂檣a.WLBM}鐗╂枡涓嶅厑璁稿垹闄�; + lLDReturnRoots.MSGDESP = $"鎵ц涓鏂欏崟锛岀墿鏂檣a.ZJBM}鐗╂枡涓嶅厑璁稿垹闄�; iTEMs.Add(lLDReturnRoots); continue; } - var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); + var po1 = po.Details.Where(s => a.ZJBM == s.S_ITEM_CODE).ToList(); if (po1.Count() == 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.ZJBM).FirstOrDefault(); if (item == null) { ; lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; + lLDReturnRoots.MSGDESP = $"鐗╂枡{a.ZJBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; iTEMs.Add(lLDReturnRoots); continue; } @@ -3491,7 +3540,7 @@ S_DO_NO = itemscddll.LLDH, S_AREA_CODE = "HJQ", N_ROW_NO = "", - S_ITEM_CODE = a.WLBM, + S_ITEM_CODE = a.ZJBM, S_ITEM_NAME = item.S_ITEM_NAME, F_QTY = a.XQSL, S_ZJBM = a.ZJBM, @@ -3524,7 +3573,7 @@ lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鏇存柊澶辫触锛屾洿鏂版暟閲忓繀椤诲ぇ浜庡綋鍓嶇墿鏂欐暟閲弡a.WLBM}"; + lLDReturnRoots.MSGDESP = $"鏇存柊澶辫触锛屾洿鏂版暟閲忓繀椤诲ぇ浜庡綋鍓嶇墿鏂欐暟閲弡a.ZJBM}"; iTEMs.Add(lLDReturnRoots); continue; } @@ -3538,40 +3587,40 @@ { if (a.LLDSCBS == "Y")//濡傛灉鏄垹闄ゆ爣璇嗗垯鍒犻櫎褰撳墠鎵�睘鍑哄簱鍗曟槑缁�涓嶆槸鍒犻櫎鏍囪 鍒欒繘琛屽鏀瑰垽鏂� { - var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).FirstOrDefault(); + var po1 = po.Details.Where(s => a.ZJBM == s.S_ITEM_CODE).FirstOrDefault(); if (po1 != null) //鏃犲垯鏂板鐗╂枡鏄庣粏 { tN_Ll_Details.Add(po1); - // db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.WLBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand(); + // db.Deleteable<TN_Ll_detail>().Where(it => it.S_ITEM_CODE == a.ZJBM && it.S_DO_NO == po1.First().S_DO_NO).ExecuteCommand(); } else { //result.code = 1; - //result.msg = $"鐗╂枡{a.WLBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"; - //throw new Exception($"鐗╂枡{a.WLBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"); + //result.msg = $"鐗╂枡{a.ZJBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"; + //throw new Exception($"鐗╂枡{a.ZJBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"); lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鍒犻櫎鐨勭墿鏂檣a.WLBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"; + lLDReturnRoots.MSGDESP = $"鍒犻櫎鐨勭墿鏂檣a.ZJBM}鐗╂枡鏁版嵁涓嶅瓨鍦�鏃犳硶鍒犻櫎"; iTEMs.Add(lLDReturnRoots); continue; } } else { - var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList(); + var po1 = po.Details.Where(s => a.ZJBM == s.S_ITEM_CODE).ToList(); if (po1.Count() == 0) //鏃犲垯鏂板鐗╂枡鏄庣粏 { - var item = itemlist.Where(it => it.S_ITEM_CODE == a.WLBM).FirstOrDefault(); + var item = itemlist.Where(it => it.S_ITEM_CODE == a.ZJBM).FirstOrDefault(); if (item == null) { //result.code = 1; - //result.msg = $"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; - //throw new Exception($"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�); + //result.msg = $"鐗╂枡{a.ZJBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; + //throw new Exception($"鐗╂枡{a.ZJBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�); lLDReturnRoots.GC = itemscddll.GC; lLDReturnRoots.LLDH = itemscddll.LLDH; lLDReturnRoots.MSGCODE = 1; - lLDReturnRoots.MSGDESP = $"鐗╂枡{a.WLBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; + lLDReturnRoots.MSGDESP = $"鐗╂枡{a.ZJBM}鐗╂枡涓绘暟鎹笉瀛樺湪璇ョ墿鏂�; iTEMs.Add(lLDReturnRoots); continue; } @@ -3580,7 +3629,7 @@ S_DO_NO = itemscddll.LLDH, S_AREA_CODE = "HJQ", N_ROW_NO = "", - S_ITEM_CODE = a.WLBM, + S_ITEM_CODE = a.ZJBM, S_ITEM_NAME = item.S_ITEM_NAME, F_QTY = a.XQSL, S_ZJBM = a.ZJBM, @@ -3712,9 +3761,44 @@ List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); po1.Details = new List<TN_Outbound_Detail>(); var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY&&s.S_ERP_WH_CODE=="4004").Select(s => s.S_ITEM_CODE).Distinct().ToArray(); - - var Sitemlist = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).Select(s => s.S_ITEM_CODE).ToArray().Select(x => x.Trim()).ToArray(); ; - + var itemfirs = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).ToList() ; + var Sitemlist = itemfirs.Select(s => s.S_ITEM_CODE).ToArray().Select(x => x.Trim()).ToArray(); + + + + #region list闆嗗悎鏁伴噺 + var extractedArrays = itemfirs.Select(s => new CustomItem + { + SITEMCODE = s.S_ITEM_CODE?.Trim() ?? string.Empty, + FQTY = s.F_QTY, + FALLOCQTY = s.F_ALLOC_QTY + }).ToList(); + + var extractedArray = extractedArrays + .GroupBy(x => x.SITEMCODE) + .Select(g => new CustomItem + { + SITEMCODE = g.Key, + FQTY = g.Sum(x => x.FQTY), + FALLOCQTY = g.Sum(x => x.FALLOCQTY) + }) + .ToList(); + + var cklist= db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.N_B_STATE==0).ToList(); + foreach (var ckdetail in cklist) + { + foreach (var item in itemfirs) + { + var itemfi = ckdetail.Details.Where(s => s.S_ITEM_CODE == item.S_ITEM_CODE).FirstOrDefault(); + if (itemfi!=null) + { + var extractedArrayone = extractedArray.Where(s => s.SITEMCODE == item.S_ITEM_CODE).FirstOrDefault(); + extractedArrayone.FQTY = (float)(extractedArrayone.FQTY - itemfi.F_QTY); + } + } + } + #endregion + po.Details = po.Details.Where(s => Sitemlist.Contains(s.S_ITEM_CODE)).ToList(); if (po.Details.Count() > 0) { @@ -3723,37 +3807,54 @@ { if (a.F_QTY > a.F_ACC_D_QTY) { - po1.Details.Add(new TN_Outbound_Detail - { - S_DO_NO = po1.S_NO, - S_AREA_CODE = "HJQ", - N_ROW_NO = a.N_ROW_NO, - S_KCDD = a.S_KCDD, - S_ITEM_CODE = a.S_ITEM_CODE, - S_ITEM_NAME = a.S_ITEM_NAME, - S_UOM = a.S_UOM, - F_QTY = a.F_QTY - a.F_ACC_D_QTY, - S_BATCH_NO = a.S_BATCH_NO, - S_SERIAL_NO = a.S_SERIAL_NO, - S_CGPZH = a.S_CGPZH, - S_ZJBM = a.S_ZJBM, - S_YLBH = a.S_YLBH, - S_ZJWLTH = a.S_ZJWLTH, - S_ZJWLMS = a.S_ZJWLMS, - S_ZHFHBS = a.S_ZHFHBS, - S_CJRQ = a.S_CJRQ, - S_LLDSCBS = a.S_LLDSCBS, - S_SCGLY = a.S_SCGLY, - S_GXH = a.S_GXH, - S_XQRQ = a.S_XQRQ, - S_YLXMH = a.S_YLXMH, - S_CGPZXMBH = a.S_CGPZXMBH, - S_ERP_WH_CODE = a.S_ERP_WH_CODE, - N_ITEM_STATE = a.N_ITEM_STATE - }); - double difference = a.F_QTY - a.F_ACC_D_QTY; - a.F_ACC_D_QTY += difference; - tN_Ll_Details.Add(a); + var ones = extractedArray.Where(s => s.SITEMCODE == a.S_ITEM_CODE).FirstOrDefault(); + ///搴撳瓨鏁伴噺 + ones.FQTY = ones.FQTY - ones.FALLOCQTY; + ///鍑哄簱鏁伴噺 + double shul = a.F_QTY - a.F_ACC_D_QTY; + if (ones.FQTY !=0) { + if (ones.FQTY - shul>=0) + { + ones.FQTY = (float)(ones.FQTY - shul); + } + else + { + shul = ones.FQTY; + ones.FQTY = 0; + } + po1.Details.Add(new TN_Outbound_Detail + { + S_DO_NO = po1.S_NO, + S_AREA_CODE = "HJQ", + N_ROW_NO = a.N_ROW_NO, + S_KCDD = a.S_KCDD, + S_ITEM_CODE = a.S_ITEM_CODE, + S_ITEM_NAME = a.S_ITEM_NAME, + S_UOM = a.S_UOM, + F_QTY = shul, + S_BATCH_NO = a.S_BATCH_NO, + S_SERIAL_NO = a.S_SERIAL_NO, + S_CGPZH = a.S_CGPZH, + S_ZJBM = a.S_ZJBM, + S_YLBH = a.S_YLBH, + S_ZJWLTH = a.S_ZJWLTH, + S_ZJWLMS = a.S_ZJWLMS, + S_ZHFHBS = a.S_ZHFHBS, + S_CJRQ = a.S_CJRQ, + S_LLDSCBS = a.S_LLDSCBS, + S_SCGLY = a.S_SCGLY, + S_GXH = a.S_GXH, + S_XQRQ = a.S_XQRQ, + S_YLXMH = a.S_YLXMH, + S_CGPZXMBH = a.S_CGPZXMBH, + S_ERP_WH_CODE = a.S_ERP_WH_CODE, + N_ITEM_STATE = a.N_ITEM_STATE + }); + double difference = shul; + a.F_ACC_D_QTY += difference; + tN_Ll_Details.Add(a); + + } } else { @@ -3763,7 +3864,6 @@ } } - db.Updateable(tN_Ll_Details).UpdateColumns(it => new { it.F_ACC_D_QTY }).ExecuteCommand(); if (po1.Details.Count() > 0) -- Gitblit v1.9.1