From beca28ecb3a730ffb33c21e0c55c729774725faf Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期五, 25 四月 2025 16:51:28 +0800 Subject: [PATCH] 优化备料单发料逻辑 --- Tiger.Business.WMS/Common/Preparation.cs | 60 ++++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 34 insertions(+), 26 deletions(-) diff --git a/Tiger.Business.WMS/Common/Preparation.cs b/Tiger.Business.WMS/Common/Preparation.cs index cb21723..f942fbc 100644 --- a/Tiger.Business.WMS/Common/Preparation.cs +++ b/Tiger.Business.WMS/Common/Preparation.cs @@ -5,16 +5,14 @@ using System.Diagnostics; using System.Linq; using System.Text; -using System.Threading.Tasks; using Tiger.Business.WMS.Extensions; -using Tiger.Business.WMS.Transaction; using Tiger.IBusiness; using Tiger.Model; -using Tiger.Model.Entitys.MES.Position; using Tiger.Model.Extensions; namespace Tiger.Business.WMS.Common { + /// <summary> /// 澶囨枡浠诲姟鍗曟嵁 /// </summary> @@ -29,11 +27,13 @@ #region Propertys & Variables private static object AddOrderLock { get; } = new object(); + private static object AddBatchLock { get; } = new object(); public DbClient MainDB { get; set; } public string UserCode { get; set; } public string OrgCode { get; set; } public BIZ_WMS_PREP Order { get; set; } public BIZ_WMS_PREP.BIZ_TYPEs BizType => Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(); + public SuggestOption Option { get; set; } #endregion Propertys & Variables #region Functions @@ -72,6 +72,15 @@ }; } } + //鍚堝苟鍙戞枡鍙�傜敤浜庡寘瑁呰溅闂村伐鍗曞彂鏂欙紝闆呰揪鍖呰杞﹂棿缂栫爜锛�1002310010030758 + else if (Order.WS_CODE != "1002310010030758") + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}]涓嶆槸鍖呰杞﹂棿宸ュ崟鍙戞枡锛屾棤娉曞悎骞跺崟鎹彂鏂�"); + action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.PrepNot1002310010030758", Order.ORDER_NO); + return action; + } + if (!src.IsNullOrEmpty() && src.ORDER_NO != Order.ORDER_NO) { action.IsSuccessed = false; @@ -79,9 +88,9 @@ action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoFound", orderNo, src.ORDER_NO, Order.ORDER_NO); return action; } - - // 鏌ヨ鍗曟嵁鏄庣粏锛屽苟鍚堝苟鍒板鏂欏崟鐨勫鏂欐槑缁嗕腑 - var dtls = bizType.GetPickList(orderNo); + + // 鏌ヨ鍗曟嵁鏄庣粏锛屽苟鍚堝苟鍒板鏂欏崟鐨勫鏂欐槑缁嗕腑 + var dtls = bizType.GetPickList(orderNo); if (dtls.Sum(q => q.QTY_ACT_REQ) <= 0) { action.IsSuccessed = false; @@ -89,11 +98,27 @@ action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoNeedPrep", orderNo); return action; } + //鍚堝苟鍙戞枡鍙�傜敤浜庡寘瑁呰溅闂村伐鍗曞彂鏂� + if (src.IsNullOrEmpty() && Order.BIZ_TYPE == BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder.GetValue()) + { + var wo = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == orderNo).First(); + //闆呰揪鍖呰杞﹂棿缂栫爜锛�1002310010030758 + if (wo?.WS_CODE == "1002310010030758") + { + Order.WS_CODE = wo.WS_CODE; + } + else + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]涓嶆槸鍖呰杞﹂棿宸ュ崟锛屾棤娉曞悎骞跺崟鎹彂鏂�"); + action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.WoNot1002310010030758", orderNo); + return action; + } + } Order.SourceOrders = Order.SourceOrders ?? new(); Order.SourceDetails = Order.SourceDetails ?? new(); Order.Details = Order.Details ?? new(); - Order.Batchs = Order.Batchs ?? new(); Order.SnList = Order.SnList ?? new(); var srcOrder = new BIZ_WMS_PREP_SRC() { @@ -145,36 +170,19 @@ var srcInfo = Order.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER); Order.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE)); Order.SOURCE_ORDER = string.Join(",", srcInfo.Select(q => q.SOURCE_ORDER)); - if (Order.CurBatch.IsNullOrEmpty()) - { - var bacth = new BIZ_WMS_PREP_BTH() - { - AUTH_ORG = OrgCode, - ORDER_NO = Order.ORDER_NO, - BATCH = Order.Batchs.Max(q => q.BATCH) + 1, - PREP_MODE = BIZ_WMS_PREP_BTH.PREP_MODEs.Whole.GetValue(), - DLVY_MODE = BIZ_WMS_PREP_BTH.DLVY_MODEs.Supply.GetValue(), - STATUS = BIZ_WMS_PREP_BTH.STATUSs.WaitPick.GetValue(), - CALL_TIME = DateTime.Now, - PRIORITY = 4, - }; - bacth.PLAN_TIME = bacth.CALL_TIME.AddHours(1); - Order.Batchs.Add(bacth); - } - + //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 var db = Biz.Db; var dbTran = db.UseTran(() => { var o = db.Storageable(Order, UserCode).WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }).ToStorage(); o.AsInsertable.ExecuteCommand(); - o.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.SOURCE_CODE, q.SOURCE_ORDER, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); + o.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.WS_CODE, q.SOURCE_CODE, q.SOURCE_ORDER, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); db.Storageable(Order.SourceOrders, UserCode).WhereColumns(t => new { t.ORDER_NO, t.SOURCE_ORDER, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand(); db.Storageable(Order.SourceDetails, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand(); var d = db.Storageable(Order.Details, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage(); d.AsInsertable.ExecuteCommand(); d.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.QTY_REQ, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); - db.Storageable(Order.Batchs, UserCode).WhereColumns(t => new { t.ORDER_NO, t.BATCH, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand(); }); if (dbTran.IsSuccess) { -- Gitblit v1.9.3