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 | 164 +++++++++++++++++++++++++++++------------ models/Zone.cs | 12 +- core/WCSCore.cs | 10 + models/SapRoot.cs | 10 ++ core/WMSCore.cs | 4 5 files changed, 142 insertions(+), 58 deletions(-) diff --git a/api/WmsSpaHelper.cs b/api/WmsSpaHelper.cs index 4a2f148..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,21 +1897,31 @@ } else if (!string.IsNullOrEmpty(model.item_code)) { - 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(); + 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(); - - if (khsta != null) { LogHelper.Info($"starts{khsta}"); - var starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == khsta.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}"); + 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 + { - model.cntr_code = starts12?.S_CNTR_CODE; + 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 { @@ -1928,10 +1940,14 @@ 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 starts12 = db.Queryable<LocCntrRel>().Where(lcr => lcr.S_CNTR_CODE == start.S_CODE).ToList().FirstOrDefault(); + if (start!=null) + { + 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; + } + } } @@ -1945,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; } @@ -2053,6 +2069,7 @@ catch (Exception e) { result.resultMsg = e.Message; + result.resultCode = 1; db.RollbackTran(); return result; throw; @@ -3159,7 +3176,7 @@ 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 && a.N_BS_ROW_NO == item.N_ROW_NO ).First(); + 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) { @@ -3744,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) { @@ -3755,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 { @@ -3795,7 +3864,6 @@ } } - db.Updateable(tN_Ll_Details).UpdateColumns(it => new { it.F_ACC_D_QTY }).ExecuteCommand(); if (po1.Details.Count() > 0) diff --git a/core/WCSCore.cs b/core/WCSCore.cs index a2519c7..8c32584 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -68,9 +68,13 @@ } break; case 7: - TaskProcess.OperateStatus(TN_Task, 7); - WCSHelper.Fail(TN_Task); - WMSHelper.Fail(TN_Task); + if (TN_Task.N_B_STATE!=3) + { + TaskProcess.OperateStatus(TN_Task, 7); + WCSHelper.Fail(TN_Task); + WMSHelper.Fail(TN_Task); + } + //sendsencondtask(TN_Task); //WMSHelper.End(TN_Task); break; diff --git a/core/WMSCore.cs b/core/WMSCore.cs index 0b855db..ac7c71e 100644 --- a/core/WMSCore.cs +++ b/core/WMSCore.cs @@ -89,13 +89,13 @@ } else { - LogHelper.Info($"{item.S_BS_NO}閰嶇洏 搴撳尯{item.S_AREA_CODE}璐т綅鎵句笉鍒�); + LogHelper.Info($"{item.S_BS_NO}閰嶇洏 搴撳尯AGVXHQ鏃犵┖璐т綅"); } } else { - LogHelper.Info($"{item.S_BS_NO}閰嶇洏 搴撳尯{item.S_AREA_CODE}璐т綅鎵句笉鍒�); + LogHelper.Info($"{item.S_BS_NO}閰嶇洏 搴撳尯{item.S_AREA_CODE}鏃犺揣浣�); } diff --git a/models/SapRoot.cs b/models/SapRoot.cs index d0b26f1..e0a06a9 100644 --- a/models/SapRoot.cs +++ b/models/SapRoot.cs @@ -1146,4 +1146,14 @@ } #endregion + + + + + public class CustomItem + { + public string SITEMCODE { get; set; } + public float FQTY { get; set; } + public float FALLOCQTY { get; set; } + } } diff --git a/models/Zone.cs b/models/Zone.cs index a6727a2..6fb6a0d 100644 --- a/models/Zone.cs +++ b/models/Zone.cs @@ -3,16 +3,17 @@ using System; using System.Collections.Generic; -namespace HH.WCS.Mobox3.pinggao { +namespace HH.WCS.Mobox3.pinggao +{ [SugarTable("TN_Zone")] public class Zone : BaseModel { - - + + public string S_NAME { get; set; } public string S_NOTE { get; set; } - public string S_WH_CODE { get; set; }=util.Settings.WHCode; + public string S_WH_CODE { get; set; } = util.Settings.WHCode; public int N_EMPTY_MIN { get; set; } public int N_EMPTY_MAX { get; set; } [SugarColumn(IsPrimaryKey = true)] @@ -37,7 +38,7 @@ public string S_SUPPLIER_NAME { get; set; } public int N_STORE_MAX { get; set; } public string S_STATE_PRE { get; set; } - + public string C_IS_AREA { get; set; } public string S_GROUP { get; set; } @@ -45,4 +46,5 @@ [Navigate(NavigateType.OneToMany, nameof(S_CODE), nameof(ZoneLoc.S_LOC_CODE))] public List<ZoneLoc> ZoneLocs { get; set; } } + } -- Gitblit v1.9.1