From 806b3cb3448ad15a5d563937fdac2ffae37342a7 Mon Sep 17 00:00:00 2001 From: YangYuGang <1378265336@qq.com> Date: 星期三, 23 四月 2025 22:11:25 +0800 Subject: [PATCH] Merge branch 'master' of http://47.115.28.255:8110/r/TigerClouds-Tech/Server/TigerApi6_2024 --- Tiger.Business.MES/iERP/U9C_MES.cs | 15 + Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs | 57 +++++-- Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs | 284 +++++++++++++++++++++++------------ Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs | 2 Tiger.Api/Language.db | 0 Tiger.Business.WMS/Extensions/Yada/OutExtension.cs | 12 + Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs | 23 ++ Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs | 8 Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs | 33 +++- 9 files changed, 296 insertions(+), 138 deletions(-) diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db index d73a9a9..7b31385 100644 --- a/Tiger.Api/Language.db +++ b/Tiger.Api/Language.db Binary files differ diff --git a/Tiger.Business.MES/iERP/U9C_MES.cs b/Tiger.Business.MES/iERP/U9C_MES.cs index 5f517ad..c10ace7 100644 --- a/Tiger.Business.MES/iERP/U9C_MES.cs +++ b/Tiger.Business.MES/iERP/U9C_MES.cs @@ -31,11 +31,11 @@ public ApiAction GetBasItem(U9C_Base_Input input) { var action = new ApiAction(); + var db = Biz.Db; Logger.Scheduler.Info($"鐗╂枡淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"); Logger.Scheduler.Info($"{input.triggerDetail}"); - DbClient db = Biz.DataSource["YadaU9C"].Client; - var list = db.Queryable<dynamic>().AS("mes_ItemMaster").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList(); - var orgs = Biz.Db.Queryable<SYS_ORGANIZATION>().ToList(); + var list = Biz.DataSource["YadaU9C"].Client.Queryable<dynamic>().AS("mes_ItemMaster").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList(); + var orgs = db.Queryable<SYS_ORGANIZATION>().ToList(); List<BAS_ITEM> items = new(); var itemExts = new List<BAS_ITEM_EXT>(); if (list != null && list.Count > 0) @@ -67,6 +67,13 @@ RULE_CODE = di["BarRule"] == null ? "" : di["BarRule"].ToString(), DEFAULT_LOCATION = di["BinCode"] == null ? "" : di["BinCode"].ToString(), }; + var whUnit = db.Queryable<V_WH_UNIT>().Where(t => t.LOCATION_CODE == basItem.DEFAULT_LOCATION && t.AUTH_ORG == basItem.AUTH_ORG).First(); + if (!whUnit.IsNullOrEmpty()) + { + basItem.DEFAULT_WH = whUnit.WH_CODE; + basItem.DEFAULT_REGION = whUnit.REGION_CODE; + basItem.DEFAULT_SHELF = whUnit.SHELF_CODE; + } items.Add(basItem); var extInfo = new BAS_ITEM_EXT() { @@ -88,7 +95,7 @@ } } Logger.Scheduler.Info($"鐗╂枡淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]"); - db = Biz.Db; + //var dbTran = db.UseTran(() => //{ if (items.Any()) diff --git a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs index c66af5a..425f56c 100644 --- a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs +++ b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs @@ -12,8 +12,6 @@ using Tiger.Model.Base; using Tiger.Model.Entitys.MES.U9C; using Tiger.Model.MES.Yada; -using static IronPython.SQLite.PythonSQLite; -using static Microsoft.Scripting.Hosting.Shell.ConsoleHostOptions; namespace Tiger.Business.WMS.Extensions { @@ -37,6 +35,8 @@ return nameof(BIZ_MES_WO); case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: return nameof(BIZ_U9_SCM_OUT); + case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: + return nameof(BIZ_WMS_TRANSFER); case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: return ""; @@ -73,6 +73,12 @@ pickList = dtls.Select(q => q.GetPickItem()).ToList(); } break; + case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: + { + var dtls = Biz.Db.Queryable<BIZ_WMS_TRANSFER_DTL>().Where(q => q.ORDER_NO == orderNo).ToList(); + pickList = dtls.Select(q => q.GetPickItem()).ToList(); + } + break; case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: break; @@ -93,6 +99,7 @@ case BIZ_WMS_PREP.BIZ_TYPEs.Others: case BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder: case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: + case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: return dtl.QTY_REQ; @@ -116,6 +123,7 @@ return await CreateIssueDoc(trans, input); case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing: return await CreatePMIssueDoc(trans, input); + case BIZ_WMS_PREP.BIZ_TYPEs.Transfer: case BIZ_WMS_PREP.BIZ_TYPEs.Requisition: default: throw new NotImplementedException($"鍙戞枡鍗曟嵁绫诲瀷[{type.GetDesc()}]鏈疄鐜癊RP鎺ュ彛璋冪敤"); 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 ab6b7ef..243c7dc 100644 --- a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs +++ b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs @@ -415,6 +415,14 @@ action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemIsLock", inv.CurPkg.SN); return SetOutPutMqttMsg(action, input.Locale); } + //楠岃瘉鏉$爜鏄惁琚叾浠栫敤鎴峰拰鍗曟嵁閿佸畾 + if (inv.Items.Any(q => q.IS_LOCKED == "Y")) + { + action.IsSuccessed = false; + //action.LocaleMsg = Biz.L("鏉$爜[{0}]宸茶閿佸畾锛岃閲嶆柊鎵弿"); + action.LocaleMsg = Biz.L("WMS.Default.ScanItem.ItemIsLock", inv.CurPkg.SN); + return SetOutPutMqttMsg(action, input.Locale); + } //鍌ㄤ綅楠岃瘉 if (inv.Location.IsNullOrEmpty()) { @@ -432,13 +440,22 @@ return SetOutPutMqttMsg(action, input.Locale); } //鍒ゆ柇鏄惁鍦ㄥ鏂欎腑鐨勭墿鏂� - if (!CurPREP.Order.Details.Any(q => q.ITEM_CODE == inv.ItemInfo.ITEM_CODE)) + if (inv.ItemInfo.ITEM_CODE != CurPrepDtl.ITEM_CODE) { action.IsSuccessed = false; - //action.LocaleMsg = Biz.L($"褰撳墠澶囨枡浠诲姟[{0}]涓嶅寘鍚潯鐮乕{1}]鐨勭墿鏂欑紪鐮乕{2}]锛岃鏀惧洖鍘熷偍浣�"); - action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode)); + //action.LocaleMsg = Biz.L($"鏉$爜[{0}]涓嶆槸褰撳墠閫変腑鐨勭墿鏂欒[{1}]锛岃鏀惧洖鍘熷偍浣嶆垨鑰呴噸鏂伴�夋嫨涓嬫灦鐗╂枡琛�"); + action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.CurPkg.SN, CurPrepDtl.ITEM_CODE); return action; } + //鍒ゆ柇鏄惁鍦ㄥ鏂欎腑鐨勭墿鏂� + //if (!CurPREP.Order.Details.Any(q => q.ITEM_CODE == inv.ItemInfo.ITEM_CODE)) + //{ + // action.IsSuccessed = false; + // //action.LocaleMsg = Biz.L($"褰撳墠澶囨枡浠诲姟[{0}]涓嶅寘鍚潯鐮乕{1}]鐨勭墿鏂欑紪鐮乕{2}]锛岃鏀惧洖鍘熷偍浣�"); + // action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode)); + // return action; + //} + //ProcessingOrderDetail = input.SN; //if (WMSContext.TransactionDic.Where(q => !string.IsNullOrWhiteSpace(q.Value.ProcessingSn)).Any(q => q.Value.ProcessingSn == ProcessingSn && q.Value.TransID != this.TransID)) //{ diff --git a/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs b/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs index aad7928..4e2370d 100644 --- a/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs +++ b/Tiger.Business.WMS/Transaction/Yada/Print_BIZ_U9_ASN.cs @@ -44,6 +44,7 @@ private List<BIZ_U9_ASN_SN> CurSn = new(); List<string> SnList = new(); private string rcvDocType = "RCV03"; //榛樿鏃犲崟 + private string CurReqType = "0"; #endregion #region Functions @@ -140,9 +141,9 @@ var action = new ApiAction<ScanOutput>(new ScanOutput()); try { - var reqType = input.Options["reqType"].ToString(); + CurReqType = input.Options["reqType"].ToString(); rcvDocType = "RCV01"; - if (reqType != "1") + if (CurReqType != "1") { action.IsSuccessed = false; action.LocaleMsg = Biz.L($"涓嶆槸闅忓崟璧犲搧锛屼笉鐢ㄦ壂鎻忔潯鐮�"); @@ -166,17 +167,17 @@ if (CurSn.Count > 0 && _sns.Any()) { action.LocaleMsg = Biz.L($"鎵规[{AsnSn.LOTNO}]宸茬粡鎻愪氦锛岃缁х画涓嬩竴姝ユ搷浣�"); - var _Order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == _sns[0].ORDER_NO).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); - if (_Order == null) + CurOrder = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == _sns[0].ORDER_NO).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync(); + if (CurOrder == null) { action.IsSuccessed = false; - action.LocaleMsg = Biz.L($"鏌ヤ笉鍒癆SN鍗昜{_Order.ORDER_NO}]鐨勬暟鎹�"); + action.LocaleMsg = Biz.L($"鏌ヤ笉鍒癆SN鍗昜{CurOrder.ORDER_NO}]鐨勬暟鎹�"); return action; } - _Order.Details = _Order.Details.Where(q => _sns[0].LINE_NO == q.LINE_NO).ToList(); + CurOrder.Details = CurOrder.Details.Where(q => _sns[0].LINE_NO == q.LINE_NO).ToList(); SnList.AddRange(_sns.Select(q => q.SN).ToList()); - _Order.BarcodeList = SnList; - action.Data.Data = _Order; + CurOrder.BarcodeList = SnList; + action.Data.Data = CurOrder; return action; } if (CurSn.Any(q=> q.ORDER_NO == AsnSn.ORDER_NO && q.LINE_NO == AsnSn.LINE_NO)) @@ -186,11 +187,14 @@ return action; } CurSn.Add(AsnSn); - var _order = CurOrder.Clone(); - CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; - _order.Details = _order.Details.Where(q => CurSn.Any(s => s.LINE_NO == q.LINE_NO)).ToList(); + if (!CurOrder.ORDER_NO.StartsWith("WASN")) + { + CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; + CurOrder.STATUS = BIZ_U9_ASN.STATUSs.Arrived.GetValue(); + } + CurOrder.Details = CurOrder.Details.Where(q => CurSn.Any(s => s.LINE_NO == q.LINE_NO)).ToList(); action.LocaleMsg = Biz.L($"鎴愬姛鑾峰彇ASN鍗昜{AsnSn.ORDER_NO}]鐨勪俊鎭�"); - action.Data.Data = _order; + action.Data.Data = CurOrder; } catch (Exception ex) { @@ -212,14 +216,26 @@ try { var reqType = input.Options["reqType"].ToString(); + //濡傛灉绫诲瀷涓嶄竴鏍凤紝鍒欐竻闄urOrder + if (CurReqType != reqType) { + CurOrder = null; + CurReqType = reqType; + } var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); CurOrder = CurOrder??new() { + ORDER_NO= $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}", SUPP_CODE = dtl.SUPP_CODE, DELIVERY_DATE = DateTime.Now, PLANARRIVED_DATE = DateTime.Now, AUTH_ORG = OrgCode, }; - CurOrder.ORDER_NO = $"WASN{DateTime.Now.ToString("yyyyMMddHHmmss")}"; + if (!CurOrder.ORDER_NO.IsNullOrEmpty() && CurOrder.ORDER_NO.StartsWith("WASN") && CurOrder.STATUS == BIZ_U9_ASN.STATUSs.Counting.GetValue()) + { + action.IsSuccessed = false; + action.LocaleMsg = Biz.L($"宸茬粡鐢熸垚ASN鍗昜{CurOrder.ORDER_NO}]锛岃缁х画涓嬩竴姝ユ搷浣�"); + return action; + } + dtl.UPDATE_USER = $"GenerateASN_{UserCode}"; dtl.REMARK = CurSn.Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO).FirstOrDefault()?.SN; dtl.ORDER_NO = CurOrder.ORDER_NO; @@ -244,6 +260,7 @@ _dtl.ID = Guid.NewGuid().ToString("N"); _dtl.IS_GIFT = reqType == "1" ? "Y" : "N"; _dtl.AUTH_ORG = CurOrder.AUTH_ORG; + _dtl.LINE_NO = _dtl.LINE_NO ?? "10"; input.Options["record"] = _dtl.ToJson(); var _Asn = Asn.Clone(); AddCommitAction("GenerateASN", () => @@ -282,10 +299,12 @@ var dtl = input.Options["record"].ToString().JsonToObject<BIZ_U9_ASN_DTL>(); action.LocaleMsg = Biz.L($"鎴愬姛鎻愪氦ASN鍗昜{dtl.ORDER_NO}]琛屾暟鎹紝璇风偣鍑绘墦鍗版寜閽墦鍗版爣绛�"); - if (MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO && (q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(q => q.QTY) == dtl.QTY) + var asnSn = MainDB.Queryable<BIZ_U9_ASN_SN>().Where(q => q.ORDER_NO == dtl.ORDER_NO && q.LINE_NO == dtl.LINE_NO && (q.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).ToList(); + if (asnSn.Count>0 && asnSn.Sum(q => q.QTY) == dtl.QTY) { action.IsSuccessed = false; action.LocaleMsg = dtl.ORDER_NO.IsNullOrEmpty() ? Biz.L($"鏁版嵁涓嶅瓨鍦紒") : Biz.L($"ASN鍗昜{dtl.ORDER_NO}]琛孾{dtl.LINE_NO}]鏁版嵁宸插叏閮ㄦ彁浜ゅ畬鎴愶紝濡傛灉鏈墦鍗版爣绛捐鐐瑰嚮鎵撳嵃鎸夐挳鎵撳嵃鏍囩"); + SnList.AddRange(asnSn.Select(q=>q.SN)); return action; } List<BIZ_U9_ASN_SN> sns = new(); @@ -296,7 +315,8 @@ SnList.Clear(); foreach (var sn in snlist) { - var metaSn = DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; + var strs = sn.SN.Split('/'); + var metaSn = reqType == "2" ? $"{DI.Resolve<ICodeRuleCache>()["SampleBarcode"]?.Generate(strs[0],"/", strs[1], "/").Data.ToString() ?? ""}" : DI.Resolve<ICodeRuleCache>()["NoSourceBarcode"]?.Generate($"{sn.SN}").Data.ToString() ?? ""; SnList.Add(metaSn); var barcode = new Barcode(metaSn); BIZ_U9_ASN_SN info = new() @@ -364,6 +384,7 @@ { sn.STATUS = WMS_ITEM.STATUSs.Counted.GetValue(); } + CurOrder.STATUS = BIZ_U9_ASN.STATUSs.Counting.GetValue(); AddCommitAction("CountedAndPrint", () => { @@ -404,7 +425,7 @@ public async Task<ApiAction> GenerateReceipt(BaseInput input) { var action = new ApiAction(); - var orderNo = input.Data; + var orderNo = CurOrder.ORDER_NO; try { var reqType = input.Options["reqType"].ToString(); @@ -614,6 +635,8 @@ order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue(); order.RECEIVER = UserCode; order.RECEIVE_DATE = DateTime.Now; + order.UPDATE_USER = UserCode; + order.REMARK = ""; } //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄 @@ -665,7 +688,7 @@ doAfterSave?.Invoke(); // 杩斿洖鏁版嵁 - action.Data.Data = SnList; + action.Data.Data = new { OrderNo = CurOrder.ORDER_NO, Sns = SnList }; //action.LocaleMsg = Biz.L($"鏉$爜[{0}]娓呯偣鎴愬姛锛�"); //action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.CountSuccess", string.Join(",", SnList)); diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs index f4d1014..cfbd226 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs @@ -155,7 +155,7 @@ AUTH_ORG = AUTH_ORG, ITEM_CODE = ITEM_CODE, UNIT = UNIT, - SOURCE_CODE = nameof(BIZ_U9_SCM_OUT), + SOURCE_CODE = nameof(BIZ_U9_MISC_OUT), SOURCE_ORDER = ORDER_NO, SOURCE_LINE = LINE_NO, QTY_REQ = QTY, diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs index d7dbb93..43389ff 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs @@ -141,9 +141,11 @@ Requisition = 1, [Description("宸ュ崟澶囨枡")] WorkOrder = 2, - [Description("濮斿澶囨枡")] - Outsourcing = 3, - } + [Description("濮斿澶囨枡")] + Outsourcing = 3, + [Description("璋冩嫧澶囨枡")] + Transfer = 4, + } /// <summary> /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1Called宸插彨鏂檤2WaitPick寰呮崱鏂檤3Picking鎹℃枡涓瓅4Picked宸叉崱瀹寍5Sended宸插彂鏂檤6Close宸插叧闂瓅7Cancel浣滃簾) diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs index 058d424..c6fbd36 100644 --- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs +++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_TRANSFER_DTL.cs @@ -3,6 +3,7 @@ using System.Linq; using System.ComponentModel; using System.Collections.Generic; +using Tiger.Model.Base; namespace Tiger.Model { @@ -13,8 +14,8 @@ [DisplayName("璋冩嫧鍗�(WMS)鏄庣粏")] [Serializable] [SugarTable("BIZ_WMS_TRANSFER_DTL")] - public class BIZ_WMS_TRANSFER_DTL : DbEntityWithAuth - { + public class BIZ_WMS_TRANSFER_DTL : DbEntityWithAuth, iPrepPickItem + { #region 鏋勯�犲嚱鏁� /// <summary> /// 瀹炰綋锛氳皟鎷ㄥ崟(WMS)鏄庣粏 @@ -145,8 +146,8 @@ public BAS_ITEM ItemInfo => _ItemInfos?.FirstOrDefault(q => q.AUTH_ORG == AUTH_ORG); #endregion - #region 鏋氫妇鍙橀噺 - /*渚嬪瓙 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { [Description("鏋氫妇鎻忚堪0")] @@ -155,11 +156,25 @@ Enum1, } */ - #endregion + #endregion - #region 鍏叡鏂规硶 + #region 鍏叡鏂规硶 + public BIZ_WMS_PREP_SRC_DTL GetPickItem() + { + return new BIZ_WMS_PREP_SRC_DTL() + { + Source = this, + AUTH_ORG = AUTH_ORG, + ITEM_CODE = ITEM_CODE, + UNIT = UNIT, + SOURCE_CODE = nameof(BIZ_WMS_TRANSFER), + SOURCE_ORDER = ORDER_NO, + SOURCE_LINE = ORDER_LINE, + QTY_REQ = QTY_REQ, + QTY_ACT_REQ = QTY_REQ - QTY_OUT, + }; + } + #endregion - #endregion - - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs b/Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs index f4a0660..57d9b87 100644 --- a/Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs +++ b/Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs @@ -7,151 +7,237 @@ namespace Tiger.Model { /// <summary> - /// 瀹炰綋锛氬鏂欏簱瀛樻睜 + /// 实体:备料库存池 /// </summary> [Description("Primary:ID")] + [DisplayName("备料库存池")] [Serializable] [SugarTable("WMS_ITEM_POOL")] public class WMS_ITEM_POOL : DbEntityNoGhostWithAuth - { - #region 鏋勯�犲嚱鏁� + { + #region 构造函数 /// <summary> - /// 瀹炰綋锛氬鏂欏簱瀛樻睜 + /// 实体:备料库存池 /// </summary> public WMS_ITEM_POOL() {} - #endregion + #endregion - #region 鍏叡灞炴�� - /// <summary> - /// 涓氬姟鍗曟嵁缂栫爜 - /// </summary> - public string TRANS_CODE { get; set; } - /// <summary> - /// 涓氬姟鍗曟嵁鍙风爜 - /// </summary> - public string TRANS_NO { get; set; } - /// <summary> - /// 涓氬姟鍗曟嵁琛屽彿 - /// </summary> - public string TRANS_LINE { get; set; } - /// <summary> - /// 鏉ユ簮鍗曟嵁缂栫爜 - /// </summary> - public string SOURCE_CODE { get; set; } - /// <summary> - /// 鏉ユ簮鍗曟嵁鍙风爜 - /// </summary> - public string SOURCE_ORDER { get; set; } - /// <summary> - /// 鏉ユ簮鍗曟嵁琛屽彿 - /// </summary> - public string SOURCE_LINE { get; set; } + #region 公共属性 /// <summary> - /// 鐗╂枡缂栫爜 + /// 事务ID /// </summary> + [DisplayName("事务ID")] + public string TRANS_ID { get; set; } + /// <summary> + /// 业务单据编码 + /// </summary> + [DisplayName("业务单据编码")] + public string TRANS_CODE { get; set; } + /// <summary> + /// 业务单据号码 + /// </summary> + [DisplayName("业务单据号码")] + public string TRANS_NO { get; set; } + /// <summary> + /// 业务单据行号 + /// </summary> + [DisplayName("业务单据行号")] + public string TRANS_LINE { get; set; } + /// <summary> + /// 来源单据编码 + /// </summary> + [DisplayName("来源单据编码")] + public string SOURCE_CODE { get; set; } + /// <summary> + /// 来源单据号码 + /// </summary> + [DisplayName("来源单据号码")] + public string SOURCE_ORDER { get; set; } + /// <summary> + /// 来源单据行号 + /// </summary> + [DisplayName("来源单据行号")] + public string SOURCE_LINE { get; set; } + /// <summary> + /// 备料策略(位标志枚举)(1FIFO先进先出|2FSFO/尾数优先) + /// </summary> + [DisplayName("备料策略(位标志枚举)(1FIFO先进先出|2FSFO/尾数优先)")] + public int STRATEGY { get; set; } + /// <summary> + /// 发料方式(0Supply正常发料|1First首套发料) + /// </summary> + [DisplayName("发料方式(0Supply正常发料|1First首套发料)")] + public int DLVY_MODE { get; set; } + /// <summary> + /// 是否被锁定(Y/N),锁定则不允许其他事务分配当前物料 + /// </summary> + [DisplayName("是否被锁定(Y/N),锁定则不允许其他事务分配当前物料")] + public string IS_LOCKED { get; set; } + /// <summary> + /// 物料编码 + /// </summary> + [DisplayName("物料编码")] public string ITEM_CODE { get; set; } /// <summary> - /// 鐗╂枡鏉$爜 + /// 物料条码 /// </summary> + [DisplayName("物料条码")] public string SN { get; set; } /// <summary> - /// 鐗╂枡鏁伴噺 + /// 物料数量 /// </summary> + [DisplayName("物料数量")] public double QTY { get; set; } /// <summary> - /// 宸插垎閰嶆暟閲� + /// 已分配数量 /// </summary> + [DisplayName("已分配数量")] public double ALLOC_QTY { get; set; } - /// <summary> - /// 鐢熶骇鏃ユ湡 - /// </summary> - public DateTime PROD_DATE { get; set; } = DateTime.MinValue; - /// <summary> - /// 鍌ㄤ綅ID - /// </summary> - public string LOCATION_ID { get; set; } - /// <summary> - /// 鏄惁棣栧鏂�(Y/N) - /// </summary> - public string IS_FIRST { get; set; } /// <summary> - /// 鍒嗛厤鐘舵��(0AllAllocated鍏ㄩ儴鍒嗛厤|1PartialAllocate閮ㄥ垎鍒嗛厤) + /// 生产日期 /// </summary> + [DisplayName("生产日期")] + public DateTime PROD_DATE { get; set; } = DateTime.MinValue; + /// <summary> + /// 仓库ID + /// </summary> + [DisplayName("仓库ID")] + public string WH_ID { get; set; } + /// <summary> + /// 储区ID + /// </summary> + [DisplayName("储区ID")] + public string REGION_ID { get; set; } + /// <summary> + /// 货架/料车ID + /// </summary> + [DisplayName("货架/料车ID")] + public string SHELF_ID { get; set; } + /// <summary> + /// 储位ID + /// </summary> + [DisplayName("储位ID")] + public string LOCATION_ID { get; set; } + /// <summary> + /// 是否首套料(Y/N) + /// </summary> + [DisplayName("是否首套料(Y/N)")] + public string IS_FIRST { get; set; } + /// <summary> + /// 分配状态(0AllAllocated全部分配|1PartialAllocate部分分配) + /// </summary> + [DisplayName("分配状态(0AllAllocated全部分配|1PartialAllocate部分分配)")] public int ALLOC_MODE { get; set; } /// <summary> - /// 鐘舵��(0WaitPick寰呮崱鏂檤1Picking鎹℃枡涓瓅2WaitSend寰呭彂鏂檤3Sended宸插彂鏂檤4Close宸插叧闂瓅5Cancel浣滃簾) + /// 状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废) /// </summary> + [DisplayName("状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废)")] public int STATUS { get; set; } /// <summary> - /// 鍔犲伐娈� + /// 加工段 /// </summary> + [DisplayName("加工段")] public string SEGMENT { get; set; } /// <summary> - /// 鐩爣浜х嚎浠g爜 + /// 目标产线编码 /// </summary> + [DisplayName("目标产线编码")] public string LINE_CODE { get; set; } /// <summary> - /// 澶囨敞 + /// 备注 /// </summary> + [DisplayName("备注")] public string REMARK { get; set; } - #endregion + #endregion - #region 铏氭嫙灞炴�� - /*渚嬪瓙 + #region 虚拟属性 + /*例子 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 澶栭敭灞炴�� - /*渚嬪瓙 - //涓�瀵逛竴澶栭敭瀵艰埅 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疻MS_ITEM_POOL绫婚噷闈㈢殑澶栭敭ID瀛楁 - public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - //涓�瀵瑰澶栭敭瀵艰埅 - [Navigate(NavigateType.OneToMany, nameof(ClassA.WMS_ITEM_POOLId))]//ClassA琛ㄤ腑鐨刉MS_ITEM_POOLId - public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull - //澶氬澶氬閿鑸� - [Navigate(typeof(MappingClass), nameof(MappingClass.WMS_ITEM_POOLId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 - public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #region 外键属性 + /*例子 + //一对一外键导航 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是WMS_ITEM_POOL类里面的外键ID字段 + public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null + //一对多外键导航 + [Navigate(NavigateType.OneToMany, nameof(ClassA.WMS_ITEM_POOLId))]//ClassA表中的WMS_ITEM_POOLId + public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null + //多对多外键导航 + [Navigate(typeof(MappingClass), nameof(MappingClass.WMS_ITEM_POOLId), nameof(MappingClass.ClassAId))]//注意顺序 + public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null */ - #endregion + #endregion - #region 鏋氫妇鍙橀噺 - /// <summary> - /// 鍒嗛厤鐘舵��(0AllAllocated鍏ㄩ儴鍒嗛厤|1PartialAllocate閮ㄥ垎鍒嗛厤) + #region 枚举变量 + /*例子 + public enum FieldNames + { + [Description("枚举描述0")] + Enum0, + [Description("枚举描述1")] + Enum1, + } + */ + + /// <summary> + /// 枚举:备料策略(位标志枚举)(1FIFO先进先出|2FSFO/尾数优先) /// </summary> - public enum ALLOC_MODEs - { - [Description("鍏ㄩ儴鍒嗛厤")] - AllAllocated, - [Description("閮ㄥ垎鍒嗛厤")] - PartialAllocate, - } + public enum STRATEGYs + { + [Description("先进先出")] + FIFO = 1, + [Description("尾数优先")] + FSFO = 2, + } - /// <summary> - /// 鐘舵��(0WaitPick寰呮崱鏂檤1Picking鎹℃枡涓瓅2WaitSend寰呭彂鏂檤3Sended宸插彂鏂檤4Close宸插叧闂瓅5Cancel浣滃簾) - /// </summary> - public enum STATUSs - { - [Description("寰呮崱鏂�")] - WaitPick, - [Description("鎹℃枡涓�")] - Picking, - [Description("寰呭彂鏂�")] - WaitSend, - [Description("宸插彂鏂�")] - Sended, - [Description("宸插叧闂�")] - Close, - [Description("浣滃簾")] - Cancel, - } - #endregion + /// <summary> + /// 枚举:发料方式(0Supply正常发料|1First首套发料) + /// </summary> + public enum DLVY_MODEs + { + [Description("正常发料")] + Supply = 0, + [Description("首套发料")] + First = 1, + } - #region 鍏叡鏂规硶 + /// <summary> + /// 枚举:分配状态(0AllAllocated全部分配|1PartialAllocate部分分配) + /// </summary> + public enum ALLOC_MODEs + { + [Description("全部分配")] + AllAllocated = 0, + [Description("部分分配")] + PartialAllocate = 1, + } - #endregion + /// <summary> + /// 枚举:状态(0WaitPick待捡料|1Picking捡料中|2WaitSend待发料|3Sended已发料|4Close已关闭|5Cancel作废) + /// </summary> + public enum STATUSs + { + [Description("待捡料")] + WaitPick = 0, + [Description("捡料中")] + Picking = 1, + [Description("待发料")] + WaitSend = 2, + [Description("已发料")] + Sended = 3, + [Description("已关闭")] + Close = 4, + [Description("作废")] + Cancel = 5, + } + #endregion - }//endClass + #region 公共方法 + + #endregion + + }//endClass } \ No newline at end of file -- Gitblit v1.9.3