From 36746596927952a6b860129a62eec9059bf083a7 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期六, 26 四月 2025 18:06:27 +0800 Subject: [PATCH] 优化了备料逻辑 --- Tiger.Business.WMS/Extensions/Yada/OutExtension.cs | 100 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 81 insertions(+), 19 deletions(-) diff --git a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs index 4b64fe3..5b505b3 100644 --- a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs +++ b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs @@ -3,6 +3,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Org.BouncyCastle.Asn1.X509; +using Org.BouncyCastle.Ocsp; using Rhea.Common; using SqlSugar; using System; @@ -221,14 +222,42 @@ item.QTY_ACT_DLVY = item.QTY_ACT_REQ; } trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue(); - var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList(); - foreach (var item in orders) + var orders = trans.MainDB.Queryable<BIZ_U9_MISC_OUT>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToList(); + foreach (var order in orders) { - item.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue(); - item.PREP_PERSON = trans.UserCode; - item.FINISH_TIME = DateTime.Now; - item.REQ_PERSON = trans.UserCode; - item.DLVY_TIME = DateTime.Now; + order.STATUS = BIZ_U9_MISC_OUT.STATUSs.Sended.GetValue(); + order.PREP_PERSON = trans.UserCode; + order.FINISH_TIME = DateTime.Now; + order.REQ_PERSON = trans.UserCode; + order.DLVY_TIME = DateTime.Now; + foreach (var dtl in order.Details) + { + dtl.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue(); + } + order.SnList ??= new(); + foreach (var sn in trans.CurPREP.Order.SnList) + { + var dtl = order.Details.Where(q => q.ITEM_CODE == sn.ITEM_CODE).First(); + order.SnList.Add(new() + { + AUTH_ORG = dtl.AUTH_ORG, + ORDER_NO = dtl.ORDER_NO, + LINE_NO = dtl.LINE_NO, + SN = sn.SN, + STATUS = sn.STATUS, + ITEM_CODE = sn.ITEM_CODE, + QTY = sn.QTY, + UNIT = sn.UNIT, + WH_CODE = sn.WH_CODE, + REGION_CODE = sn.REGION_CODE, + SHELF_CODE = sn.SHELF_CODE, + LOCATION_CODE = sn.LOCATION_CODE, + DOWN_TIME = sn.DOWN_TIME, + DLVY_TIME = DateTime.Now, + IS_OUT = "Y", + LOTNO = sn.LOTNO, + }); + } } var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => q.TRANS_NO == trans.CurPREP.Order.ORDER_NO).ToList(); var history = new List<WMS_ITEM_HIS>(); @@ -250,6 +279,8 @@ db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Insertable(history, trans.UserCode).ExecuteCommand(); db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); + db.Updateable(orders.SelectMany(q => q.Details).ToList(), trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); + db.Storageable(orders.SelectMany(q => q.SnList).ToList(), trans.UserCode).ToStorage().AsInsertable.ExecuteCommand(); }); if (dbTran.IsSuccess) { @@ -364,6 +395,8 @@ { sn.DLVY_BATCH = batch.DLVY_BATCH; sn.STATUS = WMS_ITEM.STATUSs.Sended.GetValue(); + sn.REQ_ID = batch.REQ_ID; + sn.REQ_ORDER = batch.REQ_ORDER; } var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => sns.Select(s => s.SN).Contains(q.SN)).ToList(); @@ -388,7 +421,7 @@ db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Updateable(prepSrcList, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.QTY_ACT_DLVY }).ExecuteCommand(); db.Insertable(batch, trans.UserCode).ExecuteCommand(); - db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH }).ExecuteCommand(); + db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH, q.REQ_ID, q.REQ_ORDER }).ExecuteCommand(); db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Insertable(history, trans.UserCode).ExecuteCommand(); }); @@ -504,6 +537,8 @@ { sn.DLVY_BATCH = batch.DLVY_BATCH; sn.STATUS = WMS_ITEM.STATUSs.Sended.GetValue(); + sn.REQ_ID = batch.REQ_ID; + sn.REQ_ORDER = batch.REQ_ORDER; } var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => sns.Select(s => s.SN).Contains(q.SN)).ToList(); @@ -538,7 +573,7 @@ db.Updateable(trans.CurPREP.Order, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Updateable(prepSrcList, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.QTY_ACT_DLVY }).ExecuteCommand(); db.Insertable(batch, trans.UserCode).ExecuteCommand(); - db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH }).ExecuteCommand(); + db.Updateable(sns, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.DLVY_BATCH, q.REQ_ID, q.REQ_ORDER }).ExecuteCommand(); db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Insertable(history, trans.UserCode).ExecuteCommand(); if (orders.Any()) @@ -598,15 +633,40 @@ item.QTY_ACT_DLVY = item.QTY_ACT_REQ; } trans.CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Sended.GetValue(); - //var orders = trans.MainDB.Queryable<BIZ_WMS_TRANSFER>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).ToList(); - //foreach (var item in orders) - //{ - // item.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue(); - // item.PREP_PERSON = trans.UserCode; - // item.FINISH_TIME = DateTime.Now; - // item.REQ_PERSON = trans.UserCode; - // item.DLVY_TIME = DateTime.Now; - //} + var orders = trans.MainDB.Queryable<BIZ_WMS_TRANSFER>().Where(q => trans.CurPREP.Order.SourceOrders.Select(s => s.SOURCE_ORDER).Contains(q.ORDER_NO)).IncludesAllFirstLayer().ToList(); + foreach (var order in orders) + { + order.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue(); + order.OUT_WH_CODE = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.WH_CODE).Distinct()); + foreach (var dtl in order.Details) + { + dtl.STATUS = BIZ_WMS_TRANSFER.STATUSs.Sended.GetValue(); + dtl.OUT_WH_CODE = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.WH_CODE).Distinct()); + dtl.QTY_OUT = dtl.QTY_REQ; + dtl.OUT_LOTNO = string.Join(",", trans.CurPREP.Order.SnList.Select(q => q.LOTNO).Distinct()); + } + order.SnList ??= new(); + foreach (var sn in trans.CurPREP.Order.SnList) + { + var dtl = order.Details.Where(q => q.ITEM_CODE == sn.ITEM_CODE).First(); + order.SnList.Add(new() + { + AUTH_ORG = dtl.AUTH_ORG, + ORDER_NO = dtl.ORDER_NO, + ORDER_LINE = dtl.ORDER_LINE, + SN = sn.SN, + STATUS = sn.STATUS, + ITEM_CODE = sn.ITEM_CODE, + QTY = sn.QTY, + LOTNO = sn.LOTNO, + OUT_WH_CODE = sn.WH_CODE, + OUT_REGION_CODE = sn.REGION_CODE, + OUT_SHELF_CODE = sn.SHELF_CODE, + OUT_LOCATION_CODE = sn.LOCATION_CODE, + OUT_TIME = DateTime.Now, + }); + } + } var items = trans.MainDB.Queryable<WMS_ITEM>().Where(q => q.TRANS_NO == trans.CurPREP.Order.ORDER_NO).ToList(); var history = new List<WMS_ITEM_HIS>(); foreach(var item in items) @@ -626,7 +686,9 @@ .SetColumns(q => q.DLVY_BATCH == batch.DLVY_BATCH).SetColumns(q => q.STATUS == WMS_ITEM.STATUSs.Sended.GetValue()).ExecuteCommand(); db.Updateable(items, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); db.Insertable(history, trans.UserCode).ExecuteCommand(); - //db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.PREP_PERSON, q.FINISH_TIME, q.REQ_PERSON, q.DLVY_TIME }).ExecuteCommand(); + db.Updateable(orders, trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.OUT_WH_CODE }).ExecuteCommand(); + db.Updateable(orders.SelectMany(q => q.Details).ToList(), trans.UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.OUT_WH_CODE, q.QTY_OUT, q.OUT_LOTNO }).ExecuteCommand(); + db.Storageable(orders.SelectMany(q => q.SnList).ToList(), trans.UserCode).ToStorage().AsInsertable.ExecuteCommand(); }); if (dbTran.IsSuccess) { -- Gitblit v1.9.3