From 7e73e5df14dce74742abf50383bb8ac37b38012e Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 21 四月 2025 12:04:12 +0800
Subject: [PATCH] 优化了一些已知问题

---
 Tiger.Business.MES/iERP/U9C_MES.cs                      |   15 +
 Tiger.Model.Net/Entitys/WMS/WMS_ITEM_POOL.cs            |  284 ++++++++++++++++++++++++++--------------
 Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs      |    2 
 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 +++-
 7 files changed, 256 insertions(+), 121 deletions(-)

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.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