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.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs | 123 ++++++----- Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs | 146 +++++++------- Tiger.Business.WMS/Extensions/Yada/OutExtension.cs | 100 ++++++++- Tiger.Business.WMS/Common/Preparation.cs | 56 ++-- Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs | 2 Tiger.Business.WMS/Transaction/Old/OutTransfer.cs | 20 +- Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs | 123 +++++------ Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs | 16 - Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs | 5 9 files changed, 329 insertions(+), 262 deletions(-) diff --git a/Tiger.Business.WMS/Common/Preparation.cs b/Tiger.Business.WMS/Common/Preparation.cs index f942fbc..6579a32 100644 --- a/Tiger.Business.WMS/Common/Preparation.cs +++ b/Tiger.Business.WMS/Common/Preparation.cs @@ -90,8 +90,8 @@ } // 鏌ヨ鍗曟嵁鏄庣粏锛屽苟鍚堝苟鍒板鏂欏崟鐨勫鏂欐槑缁嗕腑 - var dtls = bizType.GetPickList(orderNo); - if (dtls.Sum(q => q.QTY_ACT_REQ) <= 0) + var srcDtls = bizType.GetPickList(orderNo); + if (srcDtls.Sum(q => q.QTY_ACT_REQ) <= 0) { action.IsSuccessed = false; //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]鏈壘鍒伴渶瑕佸鏂欑殑琛屾槑缁嗭紝璇锋壂鎻忔纭殑鍗曟嵁"); @@ -129,10 +129,10 @@ ADD_TIME = DateTime.Now, }; Order.SourceOrders.Add(srcOrder); - foreach (var dtl in dtls) + foreach (var sdtl in srcDtls) { - dtl.AUTH_ORG = OrgCode; - var pdtl = Order.Details.Where(q => q.ITEM_CODE == dtl.ITEM_CODE).FirstOrDefault(); + sdtl.AUTH_ORG = OrgCode; + var pdtl = Order.Details.Where(q => q.ITEM_CODE == sdtl.ITEM_CODE).FirstOrDefault(); if (pdtl.IsNullOrEmpty()) { pdtl = new () @@ -140,32 +140,34 @@ AUTH_ORG = OrgCode, ORDER_NO = Order.ORDER_NO, ORDER_LINE = (Order.Details.Max(q => q.LINE_CODE.ToInt32()) + 1).ToString(), - ITEM_CODE = dtl.ITEM_CODE, - SUBITEM_CODE = dtl.SUBITEM_CODE, - UNIT = dtl.UNIT, - PLAN_LOSS_QTY = dtl.PLAN_LOSS_QTY, - PLAN_LOSS_RATE = dtl.PLAN_LOSS_RATE, - IS_CALC_LOSS = dtl.IS_CALC_LOSS, - IS_WHOLE = dtl.IS_WHOLE, - SOURCE_CODE = dtl.SOURCE_CODE, - SOURCE_ORDER = dtl.SOURCE_ORDER, - SOURCE_LINE = dtl.SOURCE_LINE, + ITEM_CODE = sdtl.ITEM_CODE, + SUBITEM_CODE = sdtl.SUBITEM_CODE, + UNIT = sdtl.UNIT, + PLAN_LOSS_QTY = sdtl.PLAN_LOSS_QTY, + PLAN_LOSS_RATE = sdtl.PLAN_LOSS_RATE, + IS_CALC_LOSS = sdtl.IS_CALC_LOSS, + IS_WHOLE = sdtl.IS_WHOLE, + SOURCE_CODE = sdtl.SOURCE_CODE, + SOURCE_ORDER = sdtl.SOURCE_ORDER, + SOURCE_LINE = sdtl.SOURCE_LINE, STATUS = BIZ_WMS_PREP_DTL.STATUSs.UnCalc.GetValue(), - FTY_CODE = dtl.FTY_CODE, - WS_CODE = dtl.WS_CODE, - LINE_CODE = dtl.LINE_CODE, - POST_CODE = dtl.POST_CODE, - OPER_CODE = dtl.OPER_CODE, - SEGMENT = dtl.SEGMENT, - SMT_NO = dtl.SMT_NO, - STATION_NO = dtl.STATION_NO, - FEEDER_NO = dtl.FEEDER_NO, - FEEDER_TYPE = dtl.FEEDER_TYPE, + FTY_CODE = sdtl.FTY_CODE, + WS_CODE = sdtl.WS_CODE, + LINE_CODE = sdtl.LINE_CODE, + POST_CODE = sdtl.POST_CODE, + OPER_CODE = sdtl.OPER_CODE, + SEGMENT = sdtl.SEGMENT, + SMT_NO = sdtl.SMT_NO, + STATION_NO = sdtl.STATION_NO, + FEEDER_NO = sdtl.FEEDER_NO, + FEEDER_TYPE = sdtl.FEEDER_TYPE, }; Order.Details.Add(pdtl); } - pdtl.QTY_REQ += dtl.QTY_ACT_REQ; - Order.SourceDetails.Add(dtl); + pdtl.QTY_REQ += sdtl.QTY_ACT_REQ; + sdtl.ORDER_NO = pdtl.ORDER_NO; + sdtl.ORDER_LINE = pdtl.ORDER_LINE; + Order.SourceDetails.Add(sdtl); } 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)); 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) { diff --git a/Tiger.Business.WMS/Transaction/Old/OutTransfer.cs b/Tiger.Business.WMS/Transaction/Old/OutTransfer.cs index 9500a4b..e7dd561 100644 --- a/Tiger.Business.WMS/Transaction/Old/OutTransfer.cs +++ b/Tiger.Business.WMS/Transaction/Old/OutTransfer.cs @@ -61,9 +61,9 @@ var action = new ApiAction<ProdReqOutput>(); try { - req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == input.ReqNo).Includes(q => q.DtlsWithGhost, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync(); + req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == input.ReqNo).Includes(q => q.Details, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync(); //楠岃瘉鏄庣粏鏄惁姝g‘ - if (!req.Dtls.Any()) + if (!req.Details.Any()) { action.IsSuccessed = false; action.LocaleMsg = new("WMS.ProdMReq.SelectOrder.DtlsException", input.ReqNo); @@ -82,7 +82,7 @@ var begin = DateTime.Now; var ElapsedTime = 0.0; - var sumDtls = req.Dtls.Where(q => q.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue()) + var sumDtls = req.Details.Where(q => q.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue()) .GroupBy(x => new { x.ITEM_CODE }).Select(x => new { ItemCode = x.Key.ITEM_CODE.ToString(), WarehouseCode = x.Max(t => t.OUT_WH_CODE), actQty = x.Sum(t => t.QTY_REQ - t.QTY_OUT), lockObj = new object() }); var dic = sumDtls.ToDictionary(k => k, v => new Result<List<SuggestItem>>()); foreach (var item in dic) @@ -206,11 +206,11 @@ var action = new ApiAction(); try { - var dtls = req.Dtls.GroupBy(x => new { x.ORDER_LINE, x.ITEM_CODE, x.ItemInfo.ITEM_NAME }).Select(x => new ProdReqDtl() { BillLine = x.Key.ORDER_LINE.ToInt32(), ItemCode = x.Key.ITEM_CODE, ItemName = x.Key.ITEM_NAME, Status = "", Items = new List<ProdReqDtlItems>() }).ToList(); + var dtls = req.Details.GroupBy(x => new { x.ORDER_LINE, x.ITEM_CODE, x.ItemInfo.ITEM_NAME }).Select(x => new ProdReqDtl() { BillLine = x.Key.ORDER_LINE.ToInt32(), ItemCode = x.Key.ITEM_CODE, ItemName = x.Key.ITEM_NAME, Status = "", Items = new List<ProdReqDtlItems>() }).ToList(); foreach (var d in dtls) { d.Items = Suggests.Where(x => x.Item.ITEM_CODE == d.ItemCode).Select(x => new ProdReqDtlItems { WHCode = x.Warehouse.WH_CODE, LocationCode = x.Location.LOCATION_CODE, SN = x.Item.SN, QTY = x.Item.QTY }).ToList(); - d.Status = $"{(double)req.Dtls.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_OUT)} / {(double)req.Dtls.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT} (杩橀渶{d.Items.Count}涓�)"; + d.Status = $"{(double)req.Details.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_OUT)} / {(double)req.Details.Where(x => x.ITEM_CODE == d.ItemCode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT} (杩橀渶{d.Items.Count}涓�)"; } action.Data = itemcode.IsNullOrEmpty() ? dtls.OrderBy(q => q.BillLine) : dtls.Where(x => x.ItemCode == itemcode).FirstOrDefault()?.Items.OrderBy(q => q.SN); } @@ -230,7 +230,7 @@ var action = new ApiAction(); try { - action.Data = $"鐗╂枡{itemcode}锛氬凡涓嬫灦[{(double)req.Dtls.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_OUT)}]锛屽叡{(double)req.Dtls.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT}"; + action.Data = $"鐗╂枡{itemcode}锛氬凡涓嬫灦[{(double)req.Details.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_OUT)}]锛屽叡{(double)req.Details.Where(x => x.ITEM_CODE == itemcode).Sum(x => x.QTY_REQ)} {Suggests.FirstOrDefault()?.Item?.UNIT}"; } catch (Exception ex) { @@ -318,7 +318,7 @@ } //浠撳簱鍗℃帶 - if (!req.Dtls.Any(q => q.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE && q.OUT_WH_CODE == CurInv.Warehouse.WH_CODE)) + if (!req.Details.Any(q => q.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE && q.OUT_WH_CODE == CurInv.Warehouse.WH_CODE)) { action.IsSuccessed = false; action.LocaleMsg = Biz.L($"鏉$爜[{CurInv.Barcode.SN}]鐨勬枡鍙锋垨鑰呬粨搴撹窡鍗曟嵁[{req.ORDER_NO}]涓婄殑涓嶄竴鑷�"); @@ -382,8 +382,8 @@ //2.鏄惁瓒呭彂 isExceed = false; - req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == req.ORDER_NO).Includes(q => q.DtlsWithGhost, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync(); - dtls = req.Dtls.Where(x => x.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE).ToList(); + req = await Biz.Db.Queryable<BIZ_WMS_TRANSFER>().Where(x => x.ORDER_NO == req.ORDER_NO).Includes(q => q.Details, d => d.ItemInfo).IncludesAllFirstLayer().FirstAsync(); + dtls = req.Details.Where(x => x.ITEM_CODE == CurInv.ItemInfo.ITEM_CODE).ToList(); if (dtls.IsNullOrEmpty()) { action.IsSuccessed = false; @@ -583,7 +583,7 @@ }; //4.鏇存柊涓氬姟鍗曟嵁锛孊IZ_WMS_TRANSFER銆丅IZ_WMS_TRANSFER_DTL銆丅IZ_WMS_TRANSFER_SN 鍒ゆ柇鏄庣粏琛岀姸鎬佹槸鍚﹀畬鎴� - var isComplete = !req.Dtls.Any(x => x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue() && x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Picked.GetValue() && x.QTY_REQ > 0); + var isComplete = !req.Details.Any(x => x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Finished.GetValue() && x.STATUS != BIZ_WMS_TRANSFER.STATUSs.Picked.GetValue() && x.QTY_REQ > 0); his_isComplete = isComplete; if (isComplete) { diff --git a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs index 9abb932..a78a02a 100644 --- a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs +++ b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs @@ -479,6 +479,8 @@ SHELF_CODE = CurInvItem.Shelf.SHELF_CODE, LOCATION_ID = CurInvItem.Location.ID, LOCATION_CODE = CurInvItem.Location.LOCATION_CODE, + PREP_USER = UserCode, + DOWN_TIME = DateTime.Now, SMT_NO = CurPrepDtl.SMT_NO, STATION_NO = CurPrepDtl.STATION_NO, FEEDER_NO = CurPrepDtl.FEEDER_NO, diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs index a030a1b..3dda0d4 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT.cs @@ -7,164 +7,168 @@ namespace Tiger.Model { /// <summary> - /// 实体:杂发单(U9) + /// 瀹炰綋锛氭潅鍙戝崟(U9) /// </summary> [Description("Primary:ID")] - [DisplayName("杂发单(U9)")] + [DisplayName("鏉傚彂鍗�(U9)")] [Serializable] [SugarTable("BIZ_U9_MISC_OUT")] public class BIZ_U9_MISC_OUT : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:杂发单(U9) + /// 瀹炰綋锛氭潅鍙戝崟(U9) /// </summary> public BIZ_U9_MISC_OUT() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 单据号 + /// 鍗曟嵁鍙� /// </summary> - [DisplayName("单据号")] + [DisplayName("鍗曟嵁鍙�")] public string ORDER_NO { get; set; } /// <summary> - /// 状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废) + /// 鐘舵��(0Init鍒濆鍖東1WaitPick寰呮崱鏂檤2Picking鎹℃枡涓瓅3Picked宸叉崱瀹寍4Sended宸插彂鏂檤5Close宸插叧闂瓅6Cancel浣滃簾) /// </summary> - [DisplayName("状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废)")] + [DisplayName("鐘舵��(0Init鍒濆鍖東1WaitPick寰呮崱鏂檤2Picking鎹℃枡涓瓅3Picked宸叉崱瀹寍4Sended宸插彂鏂檤5Close宸插叧闂瓅6Cancel浣滃簾)")] public int STATUS { get; set; } /// <summary> - /// 单据类型编码 + /// 鍗曟嵁绫诲瀷缂栫爜 /// </summary> - [DisplayName("单据类型编码")] + [DisplayName("鍗曟嵁绫诲瀷缂栫爜")] public string TYPE_CODE { get; set; } /// <summary> - /// 单据类型名称 + /// 鍗曟嵁绫诲瀷鍚嶇О /// </summary> - [DisplayName("单据类型名称")] + [DisplayName("鍗曟嵁绫诲瀷鍚嶇О")] public string TYPE_NAME { get; set; } /// <summary> - /// ERP单据状态 + /// ERP鍗曟嵁鐘舵�� /// </summary> - [DisplayName("ERP单据状态")] + [DisplayName("ERP鍗曟嵁鐘舵��")] public string ERP_STATUS_CODE { get; set; } /// <summary> - /// ERP单据状态名称 + /// ERP鍗曟嵁鐘舵�佸悕绉� /// </summary> - [DisplayName("ERP单据状态名称")] + [DisplayName("ERP鍗曟嵁鐘舵�佸悕绉�")] public string ERP_STATUS_NAME { get; set; } /// <summary> - /// 单据日期 + /// 鍗曟嵁鏃ユ湡 /// </summary> - [DisplayName("单据日期")] + [DisplayName("鍗曟嵁鏃ユ湡")] public DateTime ORDER_DATE { get; set; } = DateTime.MinValue; /// <summary> - /// 备料人 + /// 澶囨枡浜� /// </summary> - [DisplayName("备料人")] + [DisplayName("澶囨枡浜�")] public string PREP_PERSON { get; set; } /// <summary> - /// 备料完成时间 + /// 澶囨枡瀹屾垚鏃堕棿 /// </summary> - [DisplayName("备料完成时间")] + [DisplayName("澶囨枡瀹屾垚鏃堕棿")] public DateTime FINISH_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 领料人 + /// 棰嗘枡浜� /// </summary> - [DisplayName("领料人")] + [DisplayName("棰嗘枡浜�")] public string REQ_PERSON { get; set; } /// <summary> - /// 领料部门 + /// 棰嗘枡閮ㄩ棬 /// </summary> - [DisplayName("领料部门")] + [DisplayName("棰嗘枡閮ㄩ棬")] public string REQ_DEPT { get; set; } /// <summary> - /// 出库时间 + /// 鍑哄簱鏃堕棿 /// </summary> - [DisplayName("出库时间")] + [DisplayName("鍑哄簱鏃堕棿")] public DateTime DLVY_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } /// <summary> - /// -1:未处理,0:同步处理完,>0:同步处理失败次数 + /// -1:鏈鐞嗭紝0:鍚屾澶勭悊瀹岋紝>0:鍚屾澶勭悊澶辫触娆℃暟 /// </summary> - [DisplayName("-1:未处理,0:同步处理完,>0:同步处理失败次数")] + [DisplayName("-1:鏈鐞嗭紝0:鍚屾澶勭悊瀹岋紝>0:鍚屾澶勭悊澶辫触娆℃暟")] public int HANDLED { get; set; } /// <summary> - /// 最后一次同步处理日期 + /// 鏈�鍚庝竴娆″悓姝ュ鐞嗘棩鏈� /// </summary> - [DisplayName("最后一次同步处理日期")] + [DisplayName("鏈�鍚庝竴娆″悓姝ュ鐞嗘棩鏈�")] public DateTime HANDLED_DATE { get; set; } = DateTime.MinValue; /// <summary> - /// 过账提交的JSON + /// 杩囪处鎻愪氦鐨凧SON /// </summary> - [DisplayName("过账提交的JSON")] + [DisplayName("杩囪处鎻愪氦鐨凧SON")] public string COMMIT_JSON { get; set; } /// <summary> - /// 过账提交的返回信息 + /// 杩囪处鎻愪氦鐨勮繑鍥炰俊鎭� /// </summary> - [DisplayName("过账提交的返回信息")] + [DisplayName("杩囪处鎻愪氦鐨勮繑鍥炰俊鎭�")] public string COMMIT_MSG { get; set; } - #endregion + #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_U9_MISC_OUT类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUTId))]//ClassA表中的BIZ_U9_MISC_OUTId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUTId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_U9_MISC_OUT绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUTId))]//ClassA琛ㄤ腑鐨凚IZ_U9_MISC_OUTId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUTId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - #endregion + [Navigate(NavigateType.OneToMany, nameof(BIZ_U9_MISC_OUT_DTL.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_U9_MISC_OUT绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BIZ_U9_MISC_OUT_DTL> Details { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + [Navigate(NavigateType.OneToMany, nameof(BIZ_U9_MISC_OUT_SN.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_U9_MISC_OUT绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BIZ_U9_MISC_OUT_SN> SnList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ - /// <summary> - /// 枚举:状态(0Init初始化|1WaitPick待捡料|2Picking捡料中|3Picked已捡完|4Sended已发料|5Close已关闭|6Cancel作废) - /// </summary> - public enum STATUSs + /// <summary> + /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1WaitPick寰呮崱鏂檤2Picking鎹℃枡涓瓅3Picked宸叉崱瀹寍4Sended宸插彂鏂檤5Close宸插叧闂瓅6Cancel浣滃簾) + /// </summary> + public enum STATUSs { - [Description("初始化")] + [Description("鍒濆鍖�")] Init = 0, - [Description("待捡料")] + [Description("寰呮崱鏂�")] WaitPick = 1, - [Description("捡料中")] + [Description("鎹℃枡涓�")] Picking = 2, - [Description("已捡完")] + [Description("宸叉崱瀹�")] Picked = 3, - [Description("已发料")] + [Description("宸插彂鏂�")] Sended = 4, - [Description("已关闭")] + [Description("宸插叧闂�")] Close = 5, - [Description("作废")] + [Description("浣滃簾")] Cancel = 6, } #endregion - #region 公共方法 + #region 鍏叡鏂规硶 #endregion diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs index 38bd6be..6514ce9 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_SN.cs @@ -7,153 +7,148 @@ namespace Tiger.Model { /// <summary> - /// 实体:杂发单(U9)条码明细 + /// 瀹炰綋锛氭潅鍙戝崟(U9)鏉$爜鏄庣粏 /// </summary> [Description("Primary:ID")] - [DisplayName("杂发单(U9)条码明细")] + [DisplayName("鏉傚彂鍗�(U9)鏉$爜鏄庣粏")] [Serializable] [SugarTable("BIZ_U9_MISC_OUT_SN")] public class BIZ_U9_MISC_OUT_SN : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:杂发单(U9)条码明细 + /// 瀹炰綋锛氭潅鍙戝崟(U9)鏉$爜鏄庣粏 /// </summary> public BIZ_U9_MISC_OUT_SN() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 单据号 + /// 鍗曟嵁鍙� /// </summary> - [DisplayName("单据号")] + [DisplayName("鍗曟嵁鍙�")] public string ORDER_NO { get; set; } /// <summary> - /// 单据行号 + /// 鍗曟嵁琛屽彿 /// </summary> - [DisplayName("单据行号")] + [DisplayName("鍗曟嵁琛屽彿")] public string LINE_NO { get; set; } /// <summary> - /// 条码 + /// 鏉$爜 /// </summary> - [DisplayName("条码")] + [DisplayName("鏉$爜")] public string SN { get; set; } /// <summary> - /// 元条码 + /// 鐗╂枡缂栫爜 /// </summary> - [DisplayName("元条码")] - public string META_SN { get; set; } - /// <summary> - /// 物料编码 - /// </summary> - [DisplayName("物料编码")] + [DisplayName("鐗╂枡缂栫爜")] public string ITEM_CODE { get; set; } /// <summary> - /// 状态(同WMS_ITEM状态) + /// 鐘舵��(鍚學MS_ITEM鐘舵��) /// </summary> - [DisplayName("状态(同WMS_ITEM状态)")] + [DisplayName("鐘舵��(鍚學MS_ITEM鐘舵��)")] public int STATUS { get; set; } /// <summary> - /// 数量 + /// 鏁伴噺 /// </summary> - [DisplayName("数量")] + [DisplayName("鏁伴噺")] public double QTY { get; set; } /// <summary> - /// 单位 + /// 鍗曚綅 /// </summary> - [DisplayName("单位")] + [DisplayName("鍗曚綅")] public string UNIT { get; set; } /// <summary> - /// 发料仓库 + /// 鍙戞枡浠撳簱 /// </summary> - [DisplayName("发料仓库")] + [DisplayName("鍙戞枡浠撳簱")] public string WH_CODE { get; set; } /// <summary> - /// 发料储区 + /// 鍙戞枡鍌ㄥ尯 /// </summary> - [DisplayName("发料储区")] + [DisplayName("鍙戞枡鍌ㄥ尯")] public string REGION_CODE { get; set; } /// <summary> - /// 发料货架/料车 + /// 鍙戞枡璐ф灦/鏂欒溅 /// </summary> - [DisplayName("发料货架/料车")] + [DisplayName("鍙戞枡璐ф灦/鏂欒溅")] public string SHELF_CODE { get; set; } /// <summary> - /// 发料储位 + /// 鍙戞枡鍌ㄤ綅 /// </summary> - [DisplayName("发料储位")] + [DisplayName("鍙戞枡鍌ㄤ綅")] public string LOCATION_CODE { get; set; } /// <summary> - /// 下架时间 + /// 涓嬫灦鏃堕棿 /// </summary> - [DisplayName("下架时间")] + [DisplayName("涓嬫灦鏃堕棿")] public DateTime DOWN_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 出库时间 + /// 鍑哄簱鏃堕棿 /// </summary> - [DisplayName("出库时间")] + [DisplayName("鍑哄簱鏃堕棿")] public DateTime DLVY_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 是否出库(Y/N) + /// 鏄惁鍑哄簱(Y/N) /// </summary> - [DisplayName("是否出库(Y/N)")] + [DisplayName("鏄惁鍑哄簱(Y/N)")] public string IS_OUT { get; set; } /// <summary> - /// 批次号 + /// 鎵规鍙� /// </summary> - [DisplayName("批次号")] + [DisplayName("鎵规鍙�")] public string LOTNO { get; set; } /// <summary> - /// 箱号 + /// 绠卞彿 /// </summary> - [DisplayName("箱号")] + [DisplayName("绠卞彿")] public string CARTON_NO { get; set; } /// <summary> - /// 栈板号 + /// 鏍堟澘鍙� /// </summary> - [DisplayName("栈板号")] + [DisplayName("鏍堟澘鍙�")] public string PALLET_NO { get; set; } /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_U9_MISC_OUT_SN类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUT_SNId))]//ClassA表中的BIZ_U9_MISC_OUT_SNId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUT_SNId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_U9_MISC_OUT_SN绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUT_SNId))]//ClassA琛ㄤ腑鐨凚IZ_U9_MISC_OUT_SNId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUT_SNId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ #endregion - #region 公共方法 + #region 鍏叡鏂规硶 #endregion diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs index cdb32ab..919a6d9 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs @@ -119,6 +119,11 @@ [DisplayName("鍙戞枡鍌ㄤ綅")] public string LOCATION_CODE { get; set; } /// <summary> + /// 澶囨枡浜� + /// </summary> + [DisplayName("澶囨枡浜�")] + public string PREP_USER { get; set; } + /// <summary> /// 涓嬫灦鏃堕棿 /// </summary> [DisplayName("涓嬫灦鏃堕棿")] diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs index 44ab5c3..1325cde 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER.cs @@ -129,18 +129,10 @@ [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_TRANSFERId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - - [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_DTL.ORDER_NO), nameof(ORDER_NO))] - public List<BIZ_WMS_TRANSFER_DTL> DtlsWithGhost { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - - [SugarColumn(IsIgnore = true)] - public List<BIZ_WMS_TRANSFER_DTL> Dtls => DtlsWithGhost?.Where(q => !q.GHOST_ROW).ToList(); - - [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_SN.ORDER_NO), nameof(ORDER_NO))] - public List<BIZ_WMS_TRANSFER_SN> SnListWithGhost { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - - [SugarColumn(IsIgnore = true)] - public List<BIZ_WMS_TRANSFER_SN> SnList => SnListWithGhost?.Where(q => !q.GHOST_ROW).ToList(); + [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_DTL.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_TRANSFER绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BIZ_WMS_TRANSFER_DTL> Details { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_TRANSFER_SN.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_TRANSFER绫婚噷闈㈢殑澶栭敭ID瀛楁 + public List<BIZ_WMS_TRANSFER_SN> SnList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull #endregion 澶栭敭灞炴�� diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs index c0d386d..91554b2 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_SN.cs @@ -7,143 +7,148 @@ namespace Tiger.Model { /// <summary> - /// 实体:调拨单(WMS)条码明细 + /// 瀹炰綋锛氳皟鎷ㄥ崟(WMS)鏉$爜鏄庣粏 /// </summary> [Description("Primary:ID")] - [DisplayName("调拨单(WMS)条码明细")] + [DisplayName("璋冩嫧鍗�(WMS)鏉$爜鏄庣粏")] [Serializable] [SugarTable("BIZ_WMS_TRANSFER_SN")] public class BIZ_WMS_TRANSFER_SN : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:调拨单(WMS)条码明细 + /// 瀹炰綋锛氳皟鎷ㄥ崟(WMS)鏉$爜鏄庣粏 /// </summary> public BIZ_WMS_TRANSFER_SN() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 调拨单号 + /// 璋冩嫧鍗曞彿 /// </summary> - [DisplayName("调拨单号")] + [DisplayName("璋冩嫧鍗曞彿")] public string ORDER_NO { get; set; } /// <summary> - /// 调拨单行号 + /// 璋冩嫧鍗曡鍙� /// </summary> - [DisplayName("调拨单行号")] + [DisplayName("璋冩嫧鍗曡鍙�")] public string ORDER_LINE { get; set; } /// <summary> - /// 条码 + /// 鏉$爜 /// </summary> - [DisplayName("条码")] + [DisplayName("鏉$爜")] public string SN { get; set; } /// <summary> - /// 状态(同WMS_ITEM状态) + /// 鐘舵��(鍚學MS_ITEM鐘舵��) /// </summary> - [DisplayName("状态(同WMS_ITEM状态)")] + [DisplayName("鐘舵��(鍚學MS_ITEM鐘舵��)")] public int STATUS { get; set; } /// <summary> - /// 物料编码 + /// 鐗╂枡缂栫爜 /// </summary> - [DisplayName("物料编码")] + [DisplayName("鐗╂枡缂栫爜")] public string ITEM_CODE { get; set; } /// <summary> - /// 数量 + /// 鏁伴噺 /// </summary> - [DisplayName("数量")] + [DisplayName("鏁伴噺")] public double QTY { get; set; } - /// <summary> - /// 调出仓库 - /// </summary> - [DisplayName("调出仓库")] + /// <summary> + /// 鎵瑰彿 + /// </summary> + [DisplayName("鎵瑰彿")] + public string LOTNO { get; set; } + /// <summary> + /// 璋冨嚭浠撳簱 + /// </summary> + [DisplayName("璋冨嚭浠撳簱")] public string OUT_WH_CODE { get; set; } /// <summary> - /// 调出储区 + /// 璋冨嚭鍌ㄥ尯 /// </summary> - [DisplayName("调出储区")] + [DisplayName("璋冨嚭鍌ㄥ尯")] public string OUT_REGION_CODE { get; set; } /// <summary> - /// 调出货架 + /// 璋冨嚭璐ф灦 /// </summary> - [DisplayName("调出货架")] + [DisplayName("璋冨嚭璐ф灦")] public string OUT_SHELF_CODE { get; set; } /// <summary> - /// 调出储位 + /// 璋冨嚭鍌ㄤ綅 /// </summary> - [DisplayName("调出储位")] + [DisplayName("璋冨嚭鍌ㄤ綅")] public string OUT_LOCATION_CODE { get; set; } /// <summary> - /// 调出时间 + /// 璋冨嚭鏃堕棿 /// </summary> - [DisplayName("调出时间")] + [DisplayName("璋冨嚭鏃堕棿")] public DateTime OUT_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 拨入仓库 + /// 鎷ㄥ叆浠撳簱 /// </summary> - [DisplayName("拨入仓库")] + [DisplayName("鎷ㄥ叆浠撳簱")] public string IN_WH_CODE { get; set; } /// <summary> - /// 拨入储区 + /// 鎷ㄥ叆鍌ㄥ尯 /// </summary> - [DisplayName("拨入储区")] + [DisplayName("鎷ㄥ叆鍌ㄥ尯")] public string IN_REGION_CODE { get; set; } /// <summary> - /// 拨入货架 + /// 鎷ㄥ叆璐ф灦 /// </summary> - [DisplayName("拨入货架")] + [DisplayName("鎷ㄥ叆璐ф灦")] public string IN_SHELF_CODE { get; set; } /// <summary> - /// 拨入储位 + /// 鎷ㄥ叆鍌ㄤ綅 /// </summary> - [DisplayName("拨入储位")] + [DisplayName("鎷ㄥ叆鍌ㄤ綅")] public string IN_LOCATION_CODE { get; set; } /// <summary> - /// 拨入时间 + /// 鎷ㄥ叆鏃堕棿 /// </summary> - [DisplayName("拨入时间")] + [DisplayName("鎷ㄥ叆鏃堕棿")] public DateTime IN_TIME { get; set; } = DateTime.MinValue; /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BIZ_WMS_TRANSFER_SN类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_TRANSFER_SNId))]//ClassA表中的BIZ_WMS_TRANSFER_SNId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_TRANSFER_SNId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_TRANSFER_SN绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_TRANSFER_SNId))]//ClassA琛ㄤ腑鐨凚IZ_WMS_TRANSFER_SNId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_TRANSFER_SNId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ #endregion - #region 公共方法 + #region 鍏叡鏂规硶 #endregion -- Gitblit v1.9.3