From c049523656adcbab2d16df48faa94c672063c0dc Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期日, 30 三月 2025 18:44:59 +0800
Subject: [PATCH] 备料任务初版

---
 Tiger.Api/Language.db                                    |    0 
 Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SRC_DTL.cs      |  204 ++++++++
 Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs |    2 
 Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_DTL.cs          |    2 
 Tiger.Model.Net/Tiger.Model.Net.csproj                   |    1 
 Tiger.Business.WMS/Extensions/Yada/OutExtension.cs       |   76 +++
 Tiger.Model.Net/Entitys/WMS/WMS_JOB_POOL.cs              |    2 
 Tiger.Model.Net/Entitys/MES/YadaU9/mes_SCMPickList.cs    |   95 ++-
 Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs  |   87 ++
 Tiger.Model.Net/Entitys/WMS/BIZ_U9_SCM_OUT_DTL.cs        |  122 ++--
 Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs         |    9 
 Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs           |    2 
 Tiger.Model.Net/Entitys/WMS/BIZ_U9_MISC_OUT_DTL.cs       |  149 +++--
 Tiger.Model.Net/Base/iBizOrder.cs                        |   11 
 Tiger.Business.WMS/Common/Preparation.cs                 |  390 +++++----------
 Tiger.IBusiness.WMS/Transaction/IPreparation.cs          |   38 -
 Tiger.Model.Net/Entitys/MES/YadaU9/mes_MOPickList.cs     |  116 ++--
 Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs              |  120 ++--
 18 files changed, 842 insertions(+), 584 deletions(-)

diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db
index 0531dba..fc37d91 100644
--- a/Tiger.Api/Language.db
+++ b/Tiger.Api/Language.db
Binary files differ
diff --git a/Tiger.Business.WMS/Common/Preparation.cs b/Tiger.Business.WMS/Common/Preparation.cs
index 9d18f2a..139088e 100644
--- a/Tiger.Business.WMS/Common/Preparation.cs
+++ b/Tiger.Business.WMS/Common/Preparation.cs
@@ -1,304 +1,180 @@
 锘縰sing Rhea.Common;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
+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>
-    public class Preparation : WMSTransactionBase, IPreparation
+    public class Preparation : IPreparation
     {
+        public Preparation(DbClient mainDB, string userCode, string orgCode)
+        {
+            MainDB = mainDB;
+            UserCode = userCode;
+            OrgCode = orgCode;
+        }
+
         #region Propertys & Variables
+        private static object AddOrderLock { get; } = new object();
+        public DbClient MainDB { get; set; }
         public string UserCode { get; set; }
-        public long UserId { get; set; }
         public string OrgCode { get; set; }
-        private DbClient _MainDB;
-        public DbClient MainDB => _MainDB;
-        private DbClient CommitDB;
-        public Inventory CurInvItem { get; set; }
-        public ScanShelfInfo CurScanShelf { get; set; }
-        /// <summary>
-        /// 璺熷鎴风閫氳鏃剁殑鎸囦护锛屾湁鍏蜂綋鍔熻兘瀹氫箟锛岄粯璁や负Normal
-        /// </summary>
-        public string Command { get; set; } = "Normal";
-        /// <summary>
-        /// 鏄惁闇�瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽緟闇�瑕佺殑鏃跺�欏啀鎻愪氦
-        /// </summary>
-        public bool NeedTemporaryStoreDBCommitAction { get; set; } = false;
-        protected Dictionary<string, List<Action>> DBCommitList { get; set; } = new();
+        public BIZ_WMS_PREP PrepOrder { get; set; }
         #endregion Propertys & Variables
 
         #region Functions
-        public IPreparation Init(string id, string userCode, string apiHost, string orgCode)
-        {
-            TransID = id;
-            UserCode = userCode;
-            ApiHost = apiHost;
-            OrgCode = orgCode;
-            _MainDB = Biz.Db;
-
-            return this;
-        }
-
         /// <summary>
-        /// 鑾峰彇鎻愪氦鏁版嵁鐨凞bClient瀵硅薄
+        /// 澶囨枡浠诲姟娣诲姞鍗曟嵁
         /// </summary>
+        /// <param name="bizType"></param>
+        /// <param name="orderNo"></param>
         /// <returns></returns>
-        public DbClient GetCommitDB()
+        public ApiAction<ScanOutput> AddOrder(BIZ_WMS_PREP.BIZ_TYPEs bizType, string orderNo)
         {
-            return CommitDB ??= Biz.Db;
-        }
-
-        /// <summary>
-        /// 澧炲姞鏆傚瓨鐨勬暟鎹簱鎿嶄綔
-        /// </summary>
-        /// <param name="groupName">鏆傚瓨鐨勫垎缁�</param>
-        /// <param name="action">鏆傚瓨鐨勬暟鎹簱鎿嶄綔</param>
-        public void AddCommitAction(string group, Action action)
-        {
-            //澧炲姞闄勫姞鐨勪繚瀛樺唴瀹�
-            if (!action.IsNullOrEmpty())
+            lock(AddOrderLock)
             {
-                if (!DBCommitList.ContainsKey(group))
-                {
-                    DBCommitList.Add(group, new List<Action>());
-                }
-                var commitList = DBCommitList[group];
-                commitList.Add(action);
-            }
-        }
+	            var action = new ApiAction<ScanOutput>(new ScanOutput());
+	
+	            // 鏌ヨ鏄惁宸插瓨鍦ㄥ鏂欎换鍔�
+	            var src = MainDB.Queryable<BIZ_WMS_PREP_SRC>().Where(q => q.SOURCE_ORDER == orderNo && 
+	                                    SqlFunc.Subqueryable<BIZ_WMS_PREP>().Where(p => p.STATUS < BIZ_WMS_PREP.STATUSs.Sended.GetValue()).Any()).First();
+	            if (PrepOrder.IsNullOrEmpty())
+	            {
+	                if (!src.IsNullOrEmpty())
+	                {
+	                    PrepOrder = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ORDER_NO == src.ORDER_NO).IncludesAllFirstLayer().First();
+	                    //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]鐨勫鏂欎换鍔{1}]鍔犺浇鎴愬姛锛屽彲浠ュ紑濮嬪鏂欎笅鏋�");
+	                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", orderNo, PrepOrder.ORDER_NO);
+	                    return action;
+	                }
+	                else
+	                {
+	                    PrepOrder = new BIZ_WMS_PREP()
+	                    {
+                            AUTH_ORG = OrgCode,
+                            ORDER_NO = $"MP{DateTime.Now:yyMMdd}{(DateTime.Now - DateTime.Today).TotalSeconds:00000}",
+	                        BIZ_TYPE = bizType.GetValue(),
+	                        STATUS = BIZ_WMS_PREP.STATUSs.Init.GetValue(),
+	                    };
+	                }
+	            }
+	            if (!src.IsNullOrEmpty() && src.ORDER_NO != PrepOrder.ORDER_NO)
+	            {
+	                action.IsSuccessed = false;
+	                //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]宸插睘浜庡鏂欎换鍔{1}]锛屾棤娉曟坊鍔犲埌褰撳墠澶囨枡浠诲姟[{2}]涓紝濡傞渶鍒囨崲澶囨枡涓氬姟锛岃閫�鍑哄悗閲嶆柊閫夋嫨");
+	                action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoFound", orderNo, src.ORDER_NO, PrepOrder.ORDER_NO);
+	                return action;
+	            }
+	
+	            // 鏌ヨ鍗曟嵁鏄庣粏锛屽苟鍚堝苟鍒板鏂欏崟鐨勫鏂欐槑缁嗕腑
+	            var dtls = bizType.GetPickList(orderNo);
+	            if (dtls.Sum(q => q.QTY_ACT_REQ) <= 0)
+	            {
+	                action.IsSuccessed = false;
+	                //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]鏈壘鍒伴渶瑕佸鏂欑殑琛屾槑缁嗭紝璇锋壂鎻忔纭殑鍗曟嵁");
+	                action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoNeedPrep", orderNo);
+	                return action;
+	            }
 
-        /// <summary>
-        /// 鏆傚瓨鐨勬暟鎹簱鎿嶄綔鎻愪氦鍒版暟鎹簱
-        /// </summary>
-        /// <param name="appendToSave">闄勫姞鐨勪繚瀛樺唴瀹�</param>
-        public void SaveCommitListToDB(Action appendToSave = null)
-        {
-            //澧炲姞闄勫姞鐨勪繚瀛樺唴瀹�
-            if (!appendToSave.IsNullOrEmpty())
-            {
-                if (!DBCommitList.ContainsKey("AppendSaveAction"))
+                PrepOrder.SourceOrders = PrepOrder.SourceOrders ?? new();
+                PrepOrder.SourceDetails = PrepOrder.SourceDetails ?? new();
+                PrepOrder.Details = PrepOrder.Details ?? new();
+                PrepOrder.Batchs = PrepOrder.Batchs ?? new();
+                PrepOrder.SnList = PrepOrder.SnList ?? new();
+                var srcOrder = new BIZ_WMS_PREP_SRC()
                 {
-                    DBCommitList.Add("AppendSaveAction", new List<Action>());
-                }
-                var appendList = DBCommitList["AppendSaveAction"];
-                appendList.Add(appendToSave);
-            }
-
-            //濡傛灉涓嶉渶瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽垯鎶婃彁浜ゆ搷浣滃垪琛ㄦ彁浜ゅ埌鏁版嵁搴�
-            if (!NeedTemporaryStoreDBCommitAction)
-            {
-                //鎭㈠涓存椂瀛樺偍鏍囪涓篺alse
-                NeedTemporaryStoreDBCommitAction = false;
-
-                var dbTran = GetCommitDB().UseTran(() =>
+                    AUTH_ORG = OrgCode,
+                    ORDER_NO = PrepOrder.ORDER_NO,
+                    SOURCE_CODE = bizType.GetSourceCode(),
+                    SOURCE_ORDER = orderNo,
+                    ADD_TIME = DateTime.Now,
+                };
+                PrepOrder.SourceOrders.Add(srcOrder);
+                foreach (var dtl in dtls)
                 {
-                    //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁
-                    foreach (var wipSn in DBCommitList.Keys.Where(q => q != "AppendSaveAction"))
+                    dtl.AUTH_ORG = OrgCode;
+                    var pdtl = PrepOrder.Details.Where(q => q.ITEM_CODE == dtl.ITEM_CODE).FirstOrDefault();
+                    if (pdtl.IsNullOrEmpty())
                     {
-                        foreach (var action in DBCommitList[wipSn])
+                        pdtl = new ()
                         {
-                            action.Invoke();
-                        }
+                            AUTH_ORG = OrgCode,
+                            ORDER_NO = PrepOrder.ORDER_NO,
+                            ORDER_LINE = (PrepOrder.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,
+                            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,
+                        };
+                        PrepOrder.Details.Add(pdtl);
                     }
-                    //闄勫姞鐨勪繚瀛樺唴瀹�
-                    if (DBCommitList.ContainsKey("AppendSaveAction"))
-                    {
-                        foreach (var action in DBCommitList["AppendSaveAction"])
-                        {
-                            action.Invoke();
-                        }
-                    }
+                    pdtl.QTY_REQ += dtl.QTY_ACT_REQ;
+                    PrepOrder.SourceDetails.Add(dtl);
+                }
+                var srcInfo = PrepOrder.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER);
+                PrepOrder.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE));
+                PrepOrder.SOURCE_ORDER = string.Join(",", srcInfo.Select(q => q.SOURCE_ORDER));
+
+                //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
+                var db = Biz.Db;
+                var dbTran = db.UseTran(() =>
+                {
+                    var o = db.Storageable(PrepOrder, 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();
+                    var so = db.Storageable(PrepOrder.SourceOrders, UserCode).WhereColumns(t => new { t.ORDER_NO, t.SOURCE_ORDER, t.GHOST_ROW }).ToStorage();
+                    so.AsInsertable.ExecuteCommand();
+                    var sd = db.Storageable(PrepOrder.SourceDetails, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage();
+                    sd.AsInsertable.ExecuteCommand();
+                    var d = db.Storageable(PrepOrder.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();
                 });
                 if (dbTran.IsSuccess)
                 {
-                    //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛�
-                    DBCommitList.Clear();
+                    //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛屽彲浠ュ紑濮嬪鏂欎笅鏋�");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", PrepOrder?.ORDER_NO, orderNo);
                 }
                 else
                 {
+                    Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
                     //鎶涘嚭寮傚父
                     throw dbTran.ErrorException;
                 }
+                return action;
             }
-        }
-
-        /// <summary>
-        /// 涓婃灦
-        /// </summary>
-        /// <param name="inventory">瑕佷笂鏋剁殑搴撳瓨瀵硅薄</param>
-        /// <param name="option">鎺堟潈鏌ヨ閫夐」</param>
-        /// <param name="targetLocation">瑕佷笂鏋剁殑鍌ㄤ綅浠g爜</param>
-        /// <param name="isTransfer">鏄惁绉诲簱鎿嶄綔</param>
-        /// <returns></returns>
-        public Result PutOn(AuthOption option, string targetLocation)
-        {
-            var result = new Result(Result.Flags.Success);
-            try
-            {
-                var location = Biz.Db.Queryable<V_WH_UNIT>().Where(q => q.LOCATION_CODE == targetLocation && q.AUTH_ORG == option.CurOrg).IncludesAllFirstLayer().First();
-                if (!location.IsNullOrEmpty())
-                {
-                    var isTransfer = CurInvItem.Location.LOCATION_CODE != location.LOCATION_CODE;
-                    foreach (var item in CurInvItem.Items)
-                    {
-                        item.STATUS = WMS_ITEM.STATUSs.InStore.GetValue();
-                        item.SUPP_LOTNO = CurInvItem.Barcode.LotNo;
-                        item.FIRST_IN_DATE = item.FIRST_IN_DATE <= DateTime.MinValue ? DateTime.Now : item.FIRST_IN_DATE;
-                        item.PROD_DATE = item.PROD_DATE <= DateTime.MinValue ? item.FIRST_IN_DATE : item.PROD_DATE;
-                        item.WH_ID = location.WH_ID;
-                        item.REGION_ID = location.REGION_ID;
-                        item.SHELF_ID = location.SHELF_ID;
-                        item.LOCATION_ID = location.LOCATION_ID;
-                        CurInvItem.History.Add(new WMS_ITEM_HIS(item, $"鏉$爜[{CurInvItem.SN}]{(isTransfer ? $"浠庡偍浣峓{CurInvItem?.Location?.LOCATION_CODE}]绉诲簱" : "涓婃灦")}鍒板偍浣峓{location.LOCATION_CODE}]鎴愬姛{(isTransfer ? "" : $"锛屾搷浣滃崟鎹甗{item.TRANS_NO}]")}"));
-                    }
-                    foreach (var item in CurInvItem.Packages)
-                    {
-                        item.WH_ID = location.WH_ID;
-                        item.REGION_ID = location.REGION_ID;
-                        item.SHELF_ID = location.SHELF_ID;
-                        item.LOCATION_ID = location.LOCATION_ID;
-                    }
-                    foreach (var item in CurInvItem.ItemsExt)
-                    {
-                        item.AUTH_ORG = option.OrgCode;
-                        item.SN = CurInvItem.Barcode.SN;
-                    }
-                    //鏇存柊鍌ㄥ瓨淇℃伅
-                    CurInvItem.Warehouse = location.Warehouse;
-                    CurInvItem.Region = location.Region;
-                    CurInvItem.Shelf = location.Shelf;
-                    CurInvItem.Location = location.Location;
-
-                    //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
-                    var _Items = CurInvItem.Items.Clone();
-                    var _Packages = CurInvItem.Packages.Clone();
-                    var _History = CurInvItem.History.Clone();
-                    var _ItemsExt = CurInvItem.ItemsExt.Clone();
-                    AddCommitAction("PutOn", () =>
-                    {
-                        //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
-                        var db = GetCommitDB();
-                        //鏁版嵁淇濆瓨閫昏緫
-                        db.Storageable(_Items, UserCode).ExecuteCommand();
-                        db.Storageable(_Packages, UserCode).ExecuteCommand();
-                        db.Insertable(_History, UserCode).ExecuteCommand();
-                        var x = db.Storageable(_ItemsExt, UserCode).ToStorage();
-                        x.AsInsertable.ExecuteCommand();//涓嶅瓨鍦ㄦ彃鍏�
-                        x.AsUpdateable.ExecuteCommand();//瀛樺湪鏇存柊
-                    });
-                }
-                else
-                {
-                    result.Flag = Result.Flags.Failed;
-                    result.LocaleMsg = new("WMS.WmsItem.PutOn.LocationNotExists", targetLocation);
-                }
-            }
-            catch (Exception ex)
-            {
-                result.CatchExceptionWithLog(ex, Biz.L("WMS.WmsItem.PutOn.Exception", CurInvItem.SN, targetLocation));
-            }
-            return result;
-        }
-
-        /// <summary>
-        /// 涓嬫灦
-        /// </summary>
-        /// <param name="option">鎺堟潈鏌ヨ閫夐」</param>
-        /// <param name="status">涓嬫灦鍚庣姸鎬�</param>
-        /// <param name="clearLocation">鏄惁娓呯悊鍌ㄥ尯璐ф灦鍌ㄤ綅淇℃伅</param>
-        /// <returns></returns>
-        public Result TakeDown(AuthOption option, WMS_ITEM.STATUSs status)
-        {
-            return TakeDown(CurInvItem.Items.ToDictionary(k => k.SN, v => v.QTY), option, status);
-        }
-
-        /// <summary>
-        /// 涓嬫灦
-        /// </summary>
-        /// <param name="inventory">瑕佷笅鏋剁殑搴撳瓨瀵硅薄</param>
-        /// <param name="qtyList">瑕佷笅鏋剁殑鏈�灏忓寘瑁呮暟閲忓瓧鍏革紝key锛歴n锛寁alue锛歲ty</param>
-        /// <param name="option">鎺堟潈鏌ヨ閫夐」</param>
-        /// <param name="status">涓嬫灦鍚庣姸鎬�</param>
-        /// <param name="clearLocation">鏄惁娓呯悊鍌ㄥ尯璐ф灦鍌ㄤ綅淇℃伅</param>
-        /// <returns></returns>
-        public Result TakeDown(Dictionary<string, double> qtyList, AuthOption option, WMS_ITEM.STATUSs status)
-        {
-            var result = new Result(Result.Flags.Success);
-            try
-            {
-                //濡傛灉瑕佷笅鏋剁殑鏁伴噺瀛楀吀涓虹┖鍒欒涓烘槸鍏ㄩ儴涓嬫灦
-                qtyList = qtyList.IsNullOrEmpty(CurInvItem.Items.ToDictionary(k => k.SN, v => v.QTY));
-
-                foreach (var item in CurInvItem.Items)
-                {
-                    if (qtyList.ContainsKey(item.SN) && qtyList[item.SN] > 0)
-                    {
-                        var downQty = qtyList[item.SN];
-                        if (item.QTY > downQty)
-                        {
-                            item.QTY -= downQty;
-                            var pkg = CurInvItem.Packages.First(q => q.SN == item.SN);
-                            pkg.QTY = item.QTY;
-                        }
-                        else
-                        {
-                            item.STATUS = status.GetValue();
-                            var pkg = CurInvItem.Packages.First(q => q.SN == item.SN);
-                            pkg.PARENT_SN = null;
-                            pkg.Parent = null;
-                            //濡傛灉涓嬫灦鏁伴噺绛変簬搴撳瓨鏁伴噺鍒欐竻鐞嗗偍鍖鸿揣鏋跺偍浣嶄俊鎭紝鍚﹀垯淇濈暀浠撳簱淇℃伅
-                            //item.WH_ID = null;
-                            item.REGION_ID = null;
-                            item.SHELF_ID = null;
-                            item.LOCATION_ID = null;
-                            //pkg.WH_ID = null;
-                            pkg.REGION_ID = null;
-                            pkg.SHELF_ID = null;
-                            pkg.LOCATION_ID = null;
-                        }
-                        CurInvItem.History.Add(new WMS_ITEM_HIS(item, $"鏉$爜[{CurInvItem.SN}]浠庡偍浣峓{CurInvItem?.Location?.LOCATION_CODE}]涓嬫灦鏁伴噺[{downQty}]鎴愬姛锛岀姸鎬乕{item.STATUS.GetEnumDesc<WMS_ITEM.STATUSs>()}]锛屾搷浣滃崟鎹甗{item.TRANS_NO}]"));
-                    }
-                }
-                CurInvItem.Packages = WMS_ITEM_PKG.UpdateQty(CurInvItem.Packages);
-
-                //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
-                var _Items = CurInvItem.Items.Clone();
-                var _Packages = CurInvItem.Packages.Clone();
-                var _History = CurInvItem.History.Clone();
-                AddCommitAction("TakeDown", () =>
-                {
-                    //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
-                    var db = GetCommitDB();
-                    //鏁版嵁淇濆瓨閫昏緫
-                    db.Updateable(_Items, UserCode).ExecuteCommand();
-                    db.Insertable(_History, UserCode).ExecuteCommand();
-                    db.Updateable(_Packages, UserCode).ExecuteCommand();
-                });
-            }
-            catch (Exception ex)
-            {
-                result.CatchExceptionWithLog(ex, Biz.L("WMS.WmsItem.TakeDown.Exception", CurInvItem.SN, CurInvItem?.Location?.LOCATION_CODE));
-            }
-            return result;
         }
 
         #endregion Functions
-
-        public override bool Close(bool needSaveHistoryLog = false)
-        {
-            //needSaveHistoryLog = true;
-            //淇濆瓨鎿嶄綔鏃ュ織
-
-            this.IsFinished = true;
-            return IsFinished ? base.Close(needSaveHistoryLog) : IsFinished;
-        }
     }
 }
diff --git a/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
new file mode 100644
index 0000000..3967d44
--- /dev/null
+++ b/Tiger.Business.WMS/Extensions/Yada/OutExtension.cs
@@ -0,0 +1,76 @@
+锘縰sing MailKit.Search;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using Rhea.Common;
+using System;
+using System.IO;
+using Tiger.Model;
+using Tiger.Model.Base;
+using Tiger.Model.MES.Yada;
+
+namespace Tiger.Business.WMS.Extensions
+{
+    /// <summary>
+    /// 宸ュ崟鍙戞枡鎵╁睍鏂规硶
+    /// </summary>
+    public static class OutExtension
+    {
+        /// <summary>
+        /// 鏍规嵁鍙戞枡绫诲瀷锛岃幏鍙栨潵婧愬崟鎹紪鐮�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public static string GetSourceCode(this BIZ_WMS_PREP.BIZ_TYPEs type)
+        {
+            switch (type)
+            {
+                case BIZ_WMS_PREP.BIZ_TYPEs.Others:
+                    return nameof(BIZ_U9_MISC_OUT);
+                case BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder:
+                    return nameof(BIZ_MES_WO);
+                case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing:
+                    return nameof(BIZ_U9_SCM_OUT);
+                case BIZ_WMS_PREP.BIZ_TYPEs.Requisition:
+                default:
+                    return "";
+            }
+        }
+
+        /// <summary>
+        /// 鏍规嵁鍙戞枡绫诲瀷锛岃幏鍙栧彂鏂欏崟鎹潵婧愭槑缁�
+        /// </summary>
+        /// <param name="type"></param>
+        /// <param name="orderNo"></param>
+        /// <returns></returns>
+        public static List<BIZ_WMS_PREP_SRC_DTL> GetPickList(this BIZ_WMS_PREP.BIZ_TYPEs type, string orderNo)
+        {
+            // 鏌ヨ鍗曟嵁鏄庣粏
+            var pickList = new List<BIZ_WMS_PREP_SRC_DTL>();
+            switch (type)
+            {
+                case BIZ_WMS_PREP.BIZ_TYPEs.Others:
+                    {
+                        var dtls = Biz.Db.Queryable<BIZ_U9_MISC_OUT_DTL>().Where(q => q.ORDER_NO == orderNo).ToList();
+                        pickList = dtls.Select(q => q.GetPickItem()).ToList();
+                    }
+                    break;
+                case BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder:
+                    {
+                        var dtls = Biz.DataSource["YadaU9C"].Client.Queryable<mes_MOPickList>().Where(q => q.MoDocNo == orderNo).ToList();
+                        pickList = dtls.Select(q => q.GetPickItem()).ToList();
+                    }
+                    break;
+                case BIZ_WMS_PREP.BIZ_TYPEs.Outsourcing:
+                    {
+                        var dtls = Biz.DataSource["YadaU9C"].Client.Queryable<mes_SCMPickList>().Where(q => q.PoDocNo == orderNo).ToList();
+                        pickList = dtls.Select(q => q.GetPickItem()).ToList();
+                    }
+                    break;
+                case BIZ_WMS_PREP.BIZ_TYPEs.Requisition:
+                default:
+                    break;
+            }
+            return pickList;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
index 05a5f3e..e27b735 100644
--- a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs
@@ -109,7 +109,7 @@
                     CurInvItem = inv;
                 }
 
-                var receipt = await Biz.Db.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == CurInvItem.Items.First().TRANS_NO).IncludesAllFirstLayer().FirstAsync();
+                var receipt = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == CurInvItem.Items.First().TRANS_NO).IncludesAllFirstLayer().FirstAsync();
                 if (receipt.IsNullOrEmpty())
                 {
                     action.IsSuccessed = false;
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 652119f..75a0eb3 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -12,7 +12,8 @@
 using Tiger.Model.Sharetronic.Shelf;
 using Tiger.Business.WMS.Sharetronic.Shelf;
 using Tiger.Model.Entitys.MES.U9C;
-using Tiger.Model.Entitys.MES.Position;
+using Tiger.Business.WMS.Common;
+using Tiger.Model.Base;
 
 namespace Tiger.Business.WMS.Transaction
 {
@@ -24,12 +25,13 @@
         public IOut_BIZ_WMS_PREP Init(string id, string userCode, string apiHost, string orgCode)
         {
             base.Init(id, userCode, apiHost, orgCode);
+            CurPREP = new(MainDB, userCode, orgCode);
             Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
             return this;
         }
 
         #region Propertys & Variables
-        
+        private Preparation CurPREP;
         #endregion
 
         #region Functions
@@ -41,23 +43,31 @@
             var action = new ApiAction<ScanOutput>(new ScanOutput());
             try
             {
-                if (input.SN.IsNullOrEmpty())
+
+                if (input.Command == "ScanOrder")
                 {
-                    action.IsSuccessed = false;
-                    //action.LocaleMsg = Biz.L("鏉$爜涓嶈兘涓虹┖");
-                    action.LocaleMsg = Biz.L("WMS.Default.ScanItem.SnEmptyFailure");
-                    return SetOutPutMqttMsg(action, input.Locale);
+                    action = await ScanOrder(input);
                 }
-                //鍒ゆ柇鎵弿鐨勬槸鍚﹁揣鏋�
-                var whUnit = await MainDB.Queryable<V_WH_UNIT>().Where(t => (t.SHELF_CODE.ToUpper() == input.SN || t.LOCATION_CODE.ToUpper() == input.SN) && t.AUTH_ORG == OrgCode).IncludesAllFirstLayer().FirstAsync();
-                //if (string.IsNullOrEmpty(CurScanShelf?.ShelfCode))
-                if (!whUnit.IsNullOrEmpty() || string.IsNullOrEmpty(CurScanShelf?.ShelfCode))
+                else
                 {
-                    action = await ScanShelf(input.SN, whUnit);
-                }
-                else//鎵弿鐗╂枡骞跺鏍�
-                {
-                    action = await ScanItem(input);
+                    if (input.SN.IsNullOrEmpty())
+                    {
+                        action.IsSuccessed = false;
+                        //action.LocaleMsg = Biz.L("鏉$爜涓嶈兘涓虹┖");
+                        action.LocaleMsg = Biz.L("WMS.Default.ScanItem.SnEmptyFailure");
+                        return SetOutPutMqttMsg(action, input.Locale);
+                    }
+                    //鍒ゆ柇鎵弿鐨勬槸鍚﹁揣鏋�
+                    var whUnit = await MainDB.Queryable<V_WH_UNIT>().Where(t => (t.SHELF_CODE.ToUpper() == input.SN || t.LOCATION_CODE.ToUpper() == input.SN) && t.AUTH_ORG == OrgCode).IncludesAllFirstLayer().FirstAsync();
+                    //if (string.IsNullOrEmpty(CurScanShelf?.ShelfCode))
+                    if (!whUnit.IsNullOrEmpty() || string.IsNullOrEmpty(CurScanShelf?.ShelfCode))
+                    {
+                        action = await ScanShelf(input.SN, whUnit);
+                    }
+                    else//鎵弿鐗╂枡骞跺鏍�
+                    {
+                        action = await ScanItem(input);
+                    }
                 }
             }
             catch (Exception ex)
@@ -68,6 +78,50 @@
                 action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.Scan.ScanException", input.SN));
             }
             return SetOutPutMqttMsg(action, input.Locale);
+        }
+
+        /// <summary>
+        /// 鎵弿涓嬫灦鍗曟嵁鍙风爜
+        /// </summary>
+        public async Task<ApiAction<ScanOutput>> ScanOrder(BaseInput input)
+        {
+            var action = new ApiAction<ScanOutput>(new ScanOutput());
+            try
+            {
+                var inputOrder = input?.Data?.JsonToObject<BIZ_WMS_PREP>();
+                if ((inputOrder?.BIZ_TYPE).IsNullOrEmpty() || (inputOrder?.SOURCE_ORDER ?? "").IsNullOrEmpty())
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L($"璇烽�夋嫨姝g‘鐨勫鏂欎换鍔$被鍨嬪拰鍗曞彿");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanOrder.InputOrderIsNull");
+                    return action;
+                }
+                if (!CurPREP.PrepOrder.IsNullOrEmpty() && inputOrder.BIZ_TYPE != CurPREP.PrepOrder.BIZ_TYPE)
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L($"褰撳墠澶囨枡浠诲姟[{0}]鐨勪笟鍔$被鍨嬩负{1}锛屽闇�鍒囨崲澶囨枡涓氬姟锛岃閫�鍑哄悗閲嶆柊閫夋嫨");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanOrder.BizTypeError", CurPREP.PrepOrder.ORDER_NO, CurPREP.PrepOrder.BIZ_TYPE.GetEnumDesc<BIZ_WMS_PREP.BIZ_TYPEs>());
+                    return action;
+                }
+
+                if (CurPREP.PrepOrder.IsNullOrEmpty() || !CurPREP.PrepOrder.SourceOrders.Any(q => q.SOURCE_ORDER == inputOrder.SOURCE_ORDER))
+                {
+                    action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_CODE);
+                }
+                else
+                {
+                    //action.LocaleMsg = Biz.L($"褰撳墠澶囨枡浠诲姟[{0}]宸插寘鍚崟鎹甗{1}]锛屾棤闇�閲嶅鎿嶄綔");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanOrder.Repeat", CurPREP.PrepOrder.ORDER_NO, inputOrder.SOURCE_ORDER);
+                }
+            }
+            catch (Exception ex)
+            {
+                //鍙栨秷褰撳墠鎿嶄綔
+                ResetScan();
+                //action.CatchExceptionWithLog(ex, $"澶囨枡浠诲姟鎵弿鍗曟嵁寮傚父(Data: {0})");
+                action.CatchExceptionWithLog(ex, Biz.L("WMS.Out_BIZ_WMS_PREP.ScanOrderException", input?.Data));
+            }
+            return action;
         }
 
         /// <summary>
@@ -419,6 +473,7 @@
         {
             base.ResetScan();
             ResetScanInfo();
+            CurPREP = new(MainDB, UserCode, OrgCode);
             CurScanShelf = null;
         }
 
diff --git a/Tiger.IBusiness.WMS/Transaction/IPreparation.cs b/Tiger.IBusiness.WMS/Transaction/IPreparation.cs
index 6d97ba7..1cb6299 100644
--- a/Tiger.IBusiness.WMS/Transaction/IPreparation.cs
+++ b/Tiger.IBusiness.WMS/Transaction/IPreparation.cs
@@ -5,49 +5,27 @@
 using System.Text;
 using System.Threading.Tasks;
 using Tiger.Model;
+using Tiger.Model.Base;
 
 namespace Tiger.IBusiness
 {
     /// <summary>
-    /// 澶囨枡鍗曞彂鏂欎簨鍔�
+    /// 澶囨枡浠诲姟鍗曟嵁
     /// </summary>
-    public interface IPreparation : IWMSTransaction
+    public interface IPreparation
     {
         #region Propertys & Variables
-        public string UserCode { get; set; }
-        public long UserId { get; set; }
-        public string OrgCode { get; set; }
+        public BIZ_WMS_PREP PrepOrder { get; set; }
         #endregion Propertys & Variables
 
         #region Functions
         /// <summary>
-        /// 鍒濆鍖�
+        /// 澶囨枡浠诲姟娣诲姞鍗曟嵁
         /// </summary>
-        /// <param name="id"></param>
-        /// <param name="apiHost"></param>
-        /// <param name="userCode"></param>
-        /// <param name="orgCode"></param>
+        /// <param name="bizType"></param>
+        /// <param name="orderNo"></param>
         /// <returns></returns>
-        public IPreparation Init(string id, string userCode, string apiHost, string orgCode);
-        /// <summary>
-        /// 鎵弿鍏ュ彛
-        /// </summary>
-        //public Task<ApiAction<ScanOutput>> Scan(BaseInput input);
-        /// <summary>
-        /// 閲嶇疆鎿嶄綔
-        /// </summary>
-        /// <returns></returns>
-        public ApiAction Reset();
-        /// <summary>
-        /// 鑾峰彇鎻愪氦鏁版嵁鐨凞bClient瀵硅薄
-        /// </summary>
-        /// <returns></returns>
-        public DbClient GetCommitDB();
-        /// <summary>
-        /// 鏆傚瓨鐨勬暟鎹簱鎿嶄綔鎻愪氦鍒版暟鎹簱
-        /// </summary>
-        /// <param name="appendAction">闄勫姞鐨勪繚瀛樺唴瀹�</param>
-        public void SaveCommitListToDB(Action appendToSave = null);
+        public ApiAction<ScanOutput> AddOrder(BIZ_WMS_PREP.BIZ_TYPEs bizType, string orderNo);
         #endregion Functions
     }
 }
diff --git a/Tiger.Model.Net/Base/iBizOrder.cs b/Tiger.Model.Net/Base/iBizOrder.cs
index b4a276f..d4758e6 100644
--- a/Tiger.Model.Net/Base/iBizOrder.cs
+++ b/Tiger.Model.Net/Base/iBizOrder.cs
@@ -13,4 +13,15 @@
     {
         string ORDER_NO { get; set; }
     }
+
+    /// <summary>
+    /// 澶囨枡涓氬姟鎹℃枡鏄庣粏鍩虹被鎺ュ彛
+    /// </summary>
+    public interface iPrepPickItem
+    {
+        /// <summary>
+        /// 鑾峰彇澶囨枡鎹℃枡鏄庣粏
+        /// </summary>
+        BIZ_WMS_PREP_SRC_DTL GetPickItem();
+    }
 }
diff --git a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_MOPickList.cs b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_MOPickList.cs
index 8df71ba..b7e84a5 100644
--- a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_MOPickList.cs
+++ b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_MOPickList.cs
@@ -4,172 +4,188 @@
 using System.ComponentModel;
 using System.Collections.Generic;
 using Tiger.Model;
+using Tiger.Model.Base;
 
 namespace Tiger.Model.MES.Yada
 {
 	/// <summary>
-	/// 实体:mes_MOPickList
+	/// 瀹炰綋锛歮es_MOPickList
 	/// </summary>
 	[Serializable]
 	[SugarTable("mes_MOPickList")]
-	public class mes_MOPickList : iViewEntity
-	{
-		#region 构造函数
+	public class mes_MOPickList : iViewEntity, iPrepPickItem
+    {
+		#region 鏋勯�犲嚱鏁�
 		/// <summary>
-		/// 实体:mes_MOPickList
+		/// 瀹炰綋锛歮es_MOPickList
 		/// </summary>
 		public mes_MOPickList() {}
 		#endregion
 
-		#region 公共属性
+		#region 鍏叡灞炴��
 		/// <summary>
-		/// 工单备料表ID
+		/// 宸ュ崟澶囨枡琛↖D
 		/// </summary>
 		public long PickListId { get; set; }
 		/// <summary>
-		/// 供应商组织
+		/// 渚涘簲鍟嗙粍缁�
 		/// </summary>
 		public long SupplyOrg { get; set; }
 		/// <summary>
-		/// 行号
+		/// 琛屽彿
 		/// </summary>
 		public int DocLineNO { get; set; }
 		/// <summary>
-		/// 工单ID
+		/// 宸ュ崟ID
 		/// </summary>
 		public long MoId { get; set; }
 		/// <summary>
-		/// 工单号
+		/// 宸ュ崟鍙�
 		/// </summary>
 		public string MoDocNo { get; set; }
 		/// <summary>
-		/// 物料编码ID
+		/// 鐗╂枡缂栫爜ID
 		/// </summary>
 		public long ItemMaster { get; set; }
 		/// <summary>
-		/// 物料编码
+		/// 鐗╂枡缂栫爜
 		/// </summary>
 		public string Code { get; set; }
 		/// <summary>
-		/// 实际需求数量
+		/// 瀹為檯闇�姹傛暟閲�
 		/// </summary>
 		public double ActualReqQty { get; set; }
 		/// <summary>
-		/// 实发数量
+		/// 瀹炲彂鏁伴噺
 		/// </summary>
 		public double IssuedQty { get; set; }
 		/// <summary>
-		/// 未发数量
+		/// 鏈彂鏁伴噺
 		/// </summary>
 		public double IssueNotDeliverQty { get; set; }
 		/// <summary>
-		/// 发料方式
+		/// 鍙戞枡鏂瑰紡
 		/// </summary>
 		public int IssueStyle { get; set; }
 		/// <summary>
-		/// 发料方式名称
+		/// 鍙戞枡鏂瑰紡鍚嶇О
 		/// </summary>
 		public string IssueStyleName { get; set; }
 		/// <summary>
-		/// 单位
+		/// 鍗曚綅
 		/// </summary>
 		public string IssueUOM { get; set; }
 		/// <summary>
-		/// 仓库ID
+		/// 浠撳簱ID
 		/// </summary>
 		public long WhId { get; set; }
 		/// <summary>
-		/// 仓库代码
+		/// 浠撳簱浠g爜
 		/// </summary>
 		public string WhCode { get; set; }
 		/// <summary>
-		/// 仓库名称
+		/// 浠撳簱鍚嶇О
 		/// </summary>
 		public string WhName { get; set; }
 		/// <summary>
-		/// 储位ID
+		/// 鍌ㄤ綅ID
 		/// </summary>
 		public long BinId { get; set; }
 		/// <summary>
-		/// 储位代码
+		/// 鍌ㄤ綅浠g爜
 		/// </summary>
 		public string BinCode { get; set; }
 		/// <summary>
-		/// 储位名称
+		/// 鍌ㄤ綅鍚嶇О
 		/// </summary>
 		public string BinName { get; set; }
 		/// <summary>
-		/// 建议批次
+		/// 寤鸿鎵规
 		/// </summary>
 		public string SuggestedBatch { get; set; }
 		/// <summary>
-		/// 创建时间
+		/// 鍒涘缓鏃堕棿
 		/// </summary>
 		public DateTime CreatedOn { get; set; } = DateTime.MinValue;
 		/// <summary>
-		/// 更新时间
+		/// 鏇存柊鏃堕棿
 		/// </summary>
 		public DateTime ModifiedOn { get; set; } = DateTime.MinValue;
 		/// <summary>
-		/// 库存储位
+		/// 搴撳瓨鍌ㄤ綅
 		/// </summary>
 		public string InventoryInfoCode { get; set; }
 		/// <summary>
-		/// 图码
+		/// 鍥剧爜
 		/// </summary>
 		public string PictureCode { get; set; }
 		/// <summary>
-		/// 备注
+		/// 澶囨敞
 		/// </summary>
 		public string Remark { get; set; }
 		/// <summary>
-		/// 销售订单备注
+		/// 閿�鍞鍗曞娉�
 		/// </summary>
 		public string SoRemark { get; set; }
 		/// <summary>
-		/// 工单备注
+		/// 宸ュ崟澶囨敞
 		/// </summary>
 		public string MoRemark { get; set; }
 		/// <summary>
-		/// 产品型号
+		/// 浜у搧鍨嬪彿
 		/// </summary>
 		public string ItemModel { get; set; }
 		/// <summary>
-		/// SAP料号
+		/// SAP鏂欏彿
 		/// </summary>
 		public string SapCode { get; set; }
 		/// <summary>
-		/// 客户名称
+		/// 瀹㈡埛鍚嶇О
 		/// </summary>
 		public string Customer { get; set; }
 		/// <summary>
-		/// 需求分类
+		/// 闇�姹傚垎绫�
 		/// </summary>
 		public string DemandCode { get; set; }
-		#endregion
 
-		#region 虚拟属性
-		/*例子
+        #endregion
+
+        #region 铏氭嫙灞炴��
+        /*渚嬪瓙
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
-		#endregion
+        #endregion
 
-		#region 枚举变量
-		/*例子
+        #region 鏋氫妇鍙橀噺
+        /*渚嬪瓙
 		public enum FieldNames
 		{
-			[Description("枚举描述0")]
+			[Description("鏋氫妇鎻忚堪0")]
 			Enum0,
-			[Description("枚举描述1")]
+			[Description("鏋氫妇鎻忚堪1")]
 			Enum1,
 		}
 		*/
-		#endregion
+        #endregion
 
-		#region 公共方法
+        #region 鍏叡鏂规硶
+        public BIZ_WMS_PREP_SRC_DTL GetPickItem()
+        {
+            return new BIZ_WMS_PREP_SRC_DTL()
+            {
+                Source = this,
+                ITEM_CODE = Code,
+                UNIT = IssueUOM,
+                SOURCE_CODE = nameof(BIZ_MES_WO),
+                SOURCE_ORDER = MoDocNo,
+                SOURCE_LINE = DocLineNO.ToString(),
+                QTY_REQ = ActualReqQty,
+                QTY_DLVY = IssuedQty,
+                QTY_ACT_REQ = ActualReqQty - IssuedQty,
+            };
+        }
+        #endregion
 
-		#endregion
-
-	}//endClass
+    }//endClass
 }
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_SCMPickList.cs b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_SCMPickList.cs
index 25a1dae..f83004e 100644
--- a/Tiger.Model.Net/Entitys/MES/YadaU9/mes_SCMPickList.cs
+++ b/Tiger.Model.Net/Entitys/MES/YadaU9/mes_SCMPickList.cs
@@ -4,132 +4,147 @@
 using System.ComponentModel;
 using System.Collections.Generic;
 using Tiger.Model;
+using Tiger.Model.Base;
 
 namespace Tiger.Model.MES.Yada
 {
 	/// <summary>
-	/// 实体:mes_SCMPickList
+	/// 瀹炰綋锛歮es_SCMPickList
 	/// </summary>
 	[Serializable]
 	[SugarTable("mes_SCMPickList")]
-	public class mes_SCMPickList : iViewEntity
-	{
-		#region 构造函数
+	public class mes_SCMPickList : iViewEntity, iPrepPickItem
+    {
+		#region 鏋勯�犲嚱鏁�
 		/// <summary>
-		/// 实体:mes_SCMPickList
+		/// 瀹炰綋锛歮es_SCMPickList
 		/// </summary>
 		public mes_SCMPickList() {}
 		#endregion
 
-		#region 公共属性
+		#region 鍏叡灞炴��
 		/// <summary>
-		/// 委外备料表ID
+		/// 濮斿澶囨枡琛↖D
 		/// </summary>
 		public long SCMPickListID { get; set; }
 		/// <summary>
-		/// 供应商组织
+		/// 渚涘簲鍟嗙粍缁�
 		/// </summary>
 		public long SupplyOrg { get; set; }
 		/// <summary>
-		/// 备料表行号
+		/// 澶囨枡琛ㄨ鍙�
 		/// </summary>
 		public int PickLineNo { get; set; }
 		/// <summary>
-		/// 采购订单
+		/// 閲囪喘璁㈠崟
 		/// </summary>
 		public long PoId { get; set; }
 		/// <summary>
-		/// 采购订单号
+		/// 閲囪喘璁㈠崟鍙�
 		/// </summary>
 		public string PoDocNo { get; set; }
 		/// <summary>
-		/// 料号ID
+		/// 鏂欏彿ID
 		/// </summary>
 		public long ItemMaster { get; set; }
 		/// <summary>
-		/// 料号
+		/// 鏂欏彿
 		/// </summary>
 		public string ItemCode { get; set; }
 		/// <summary>
-		/// 实际需求数量
+		/// 瀹為檯闇�姹傛暟閲�
 		/// </summary>
 		public double ActualReqQty { get; set; }
 		/// <summary>
-		/// 已发数量
+		/// 宸插彂鏁伴噺
 		/// </summary>
 		public double IssuedQty { get; set; }
 		/// <summary>
-		/// 领料未发数量
+		/// 棰嗘枡鏈彂鏁伴噺
 		/// </summary>
 		public double IssueNotDeliverQty { get; set; }
 		/// <summary>
-		/// 发料方式
+		/// 鍙戞枡鏂瑰紡
 		/// </summary>
 		public int IssueStyle { get; set; }
 		/// <summary>
-		/// 发料方式名称
+		/// 鍙戞枡鏂瑰紡鍚嶇О
 		/// </summary>
 		public string IssueStyleName { get; set; }
 		/// <summary>
-		/// 发料单位
+		/// 鍙戞枡鍗曚綅
 		/// </summary>
 		public string IssueUOM { get; set; }
 		/// <summary>
-		/// 供应商地点ID
+		/// 渚涘簲鍟嗗湴鐐笽D
 		/// </summary>
 		public long WhId { get; set; }
 		/// <summary>
-		/// 供应商地点编码
+		/// 渚涘簲鍟嗗湴鐐圭紪鐮�
 		/// </summary>
 		public string WhCode { get; set; }
 		/// <summary>
-		/// 供应地点
+		/// 渚涘簲鍦扮偣
 		/// </summary>
 		public string WhName { get; set; }
 		/// <summary>
-		/// 供应库位ID
+		/// 渚涘簲搴撲綅ID
 		/// </summary>
 		public long BinId { get; set; }
 		/// <summary>
-		/// 供应库位编码
+		/// 渚涘簲搴撲綅缂栫爜
 		/// </summary>
 		public string BinCode { get; set; }
 		/// <summary>
-		/// 供应库名称
+		/// 渚涘簲搴撳悕绉�
 		/// </summary>
 		public string BinName { get; set; }
 		/// <summary>
-		/// 创建时间
+		/// 鍒涘缓鏃堕棿
 		/// </summary>
 		public DateTime CreatedOn { get; set; } = DateTime.MinValue;
 		/// <summary>
-		/// 更新时间
+		/// 鏇存柊鏃堕棿
 		/// </summary>
 		public DateTime ModifiedOn { get; set; } = DateTime.MinValue;
-		#endregion
+        #endregion
 
-		#region 虚拟属性
-		/*例子
+        #region 铏氭嫙灞炴��
+        /*渚嬪瓙
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
-		#endregion
+        #endregion
 
-		#region 枚举变量
-		/*例子
+        #region 鏋氫妇鍙橀噺
+        /*渚嬪瓙
 		public enum FieldNames
 		{
-			[Description("枚举描述0")]
+			[Description("鏋氫妇鎻忚堪0")]
 			Enum0,
-			[Description("枚举描述1")]
+			[Description("鏋氫妇鎻忚堪1")]
 			Enum1,
 		}
 		*/
-		#endregion
+        #endregion
 
-		#region 公共方法
+        #region 鍏叡鏂规硶
+        public BIZ_WMS_PREP_SRC_DTL GetPickItem()
+        {
+            return new BIZ_WMS_PREP_SRC_DTL()
+            {
+                Source = this,
+                ITEM_CODE = ItemCode,
+                UNIT = IssueUOM,
+                SOURCE_CODE = nameof(BIZ_U9_SCM_OUT),
+                SOURCE_ORDER = PoDocNo,
+                SOURCE_LINE =PickLineNo.ToString(),
+                QTY_REQ = ActualReqQty,
+                QTY_DLVY = IssuedQty,
+                QTY_ACT_REQ = ActualReqQty - IssuedQty,
+            };
+        }
+        #endregion
 
-		#endregion
-
-	}//endClass
+    }//endClass
 }
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs b/Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs
index a21465b..5119042 100644
--- a/Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs
+++ b/Tiger.Model.Net/Entitys/WMS/Api/Input_Entitys.cs
@@ -31,6 +31,10 @@
         /// </summary>
         public string ItemCode { get; set; }
         /// <summary>
+        /// 鍗曟嵁鍙�
+        /// </summary>
+        public string OrderNo { get; set; }
+        /// <summary>
         /// 褰撳墠鎿嶄綔闇�瑕佹彁浜ょ殑閫夐」
         /// </summary>
         public Dictionary<string, string> Options { get; set; } = new Dictionary<string, string>();
@@ -82,11 +86,6 @@
         public string BatchNo { get; set; }
         public double BatchQty { get; set; }
         public List<RePrintLabelEntity> SnList { get; set; }=new List<RePrintLabelEntity>();
-    }
-
-    public class PrintSemiProdLabelEntity: RePrintLabelBase
-    {
-        
     }
 
     public class RePrintLabelEntity
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 875e7b9..8fdb156 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
@@ -3,149 +3,166 @@
 using System.Linq;
 using System.ComponentModel;
 using System.Collections.Generic;
+using Tiger.Model.Base;
+using Tiger.Model.Entitys.MES.U9C;
+using Tiger.Model.MES.Yada;
 
 namespace Tiger.Model
 {
 	/// <summary>
-	/// 实体:杂发单(U9)明细
+	/// 瀹炰綋锛氭潅鍙戝崟(U9)鏄庣粏
 	/// </summary>
 	[Description("Primary:ID")]
-	[DisplayName("杂发单(U9)明细")]
+	[DisplayName("鏉傚彂鍗�(U9)鏄庣粏")]
 	[Serializable]
 	[SugarTable("BIZ_U9_MISC_OUT_DTL")]
-	public class BIZ_U9_MISC_OUT_DTL : DbEntityWithAuth
-	{
-		#region 构造函数
+	public class BIZ_U9_MISC_OUT_DTL : DbEntityWithAuth, iPrepPickItem
+    {
+		#region 鏋勯�犲嚱鏁�
 		/// <summary>
-		/// 实体:杂发单(U9)明细
+		/// 瀹炰綋锛氭潅鍙戝崟(U9)鏄庣粏
 		/// </summary>
 		public BIZ_U9_MISC_OUT_DTL() {}
 		#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 int STATUS { get; set; }
 		/// <summary>
-		/// 物料编码
+		/// 鐗╂枡缂栫爜
 		/// </summary>
-		[DisplayName("物料编码")]
+		[DisplayName("鐗╂枡缂栫爜")]
 		public string ITEM_CODE { get; set; }
 		/// <summary>
-		/// 单位
+		/// 鍗曚綅
 		/// </summary>
-		[DisplayName("单位")]
+		[DisplayName("鍗曚綅")]
 		public string UNIT { get; set; }
 		/// <summary>
-		/// 单据数量
+		/// 鍗曟嵁鏁伴噺
 		/// </summary>
-		[DisplayName("单据数量")]
+		[DisplayName("鍗曟嵁鏁伴噺")]
 		public double QTY { get; set; }
 		/// <summary>
-		/// 成本单位
+		/// 鎴愭湰鍗曚綅
 		/// </summary>
-		[DisplayName("成本单位")]
+		[DisplayName("鎴愭湰鍗曚綅")]
 		public string UNIT_COST { get; set; }
 		/// <summary>
-		/// 成本数量
+		/// 鎴愭湰鏁伴噺
 		/// </summary>
-		[DisplayName("成本数量")]
+		[DisplayName("鎴愭湰鏁伴噺")]
 		public double QTY_GIFT { get; set; }
 		/// <summary>
-		/// 单价
+		/// 鍗曚环
 		/// </summary>
-		[DisplayName("单价")]
+		[DisplayName("鍗曚环")]
 		public double COST_PRICE { get; set; }
 		/// <summary>
-		/// 成本
+		/// 鎴愭湰
 		/// </summary>
-		[DisplayName("成本")]
+		[DisplayName("鎴愭湰")]
 		public double COST_MNY { get; set; }
 		/// <summary>
-		/// 存储地点
+		/// 瀛樺偍鍦扮偣
 		/// </summary>
-		[DisplayName("存储地点")]
+		[DisplayName("瀛樺偍鍦扮偣")]
 		public string WH_CODE { get; set; }
 		/// <summary>
-		/// 存储地点名称
+		/// 瀛樺偍鍦扮偣鍚嶇О
 		/// </summary>
-		[DisplayName("存储地点名称")]
+		[DisplayName("瀛樺偍鍦扮偣鍚嶇О")]
 		public string WH_NAME { get; set; }
 		/// <summary>
-		/// 受益部门编码
+		/// 鍙楃泭閮ㄩ棬缂栫爜
 		/// </summary>
-		[DisplayName("受益部门编码")]
+		[DisplayName("鍙楃泭閮ㄩ棬缂栫爜")]
 		public string BNF_DEPT_CODE { get; set; }
 		/// <summary>
-		/// 收益部门名称
+		/// 鏀剁泭閮ㄩ棬鍚嶇О
 		/// </summary>
-		[DisplayName("收益部门名称")]
+		[DisplayName("鏀剁泭閮ㄩ棬鍚嶇О")]
 		public string BNF_DEPT_NAME { get; set; }
 		/// <summary>
-		/// ERP编码
+		/// ERP缂栫爜
 		/// </summary>
-		[DisplayName("ERP编码")]
+		[DisplayName("ERP缂栫爜")]
 		public string ERP_CODE { get; set; }
 		/// <summary>
-		/// 出库原因
+		/// 鍑哄簱鍘熷洜
 		/// </summary>
-		[DisplayName("出库原因")]
+		[DisplayName("鍑哄簱鍘熷洜")]
 		public string OUTSTORE_REASON { get; set; }
 		/// <summary>
-		/// 备注
+		/// 澶囨敞
 		/// </summary>
-		[DisplayName("备注")]
+		[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是BIZ_U9_MISC_OUT_DTL类里面的外键ID字段
-		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
-		//一对多外键导航
-		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUT_DTLId))]//ClassA表中的BIZ_U9_MISC_OUT_DTLId
-		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
-		//多对多外键导航
-		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUT_DTLId), nameof(MappingClass.ClassAId))]//注意顺序
-		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+        #region 澶栭敭灞炴��
+        /*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_U9_MISC_OUT_DTL绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_MISC_OUT_DTLId))]//ClassA琛ㄤ腑鐨凚IZ_U9_MISC_OUT_DTLId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_MISC_OUT_DTLId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
 		*/
-		#endregion
+        #endregion
 
-		#region 枚举变量
-		/*例子
+        #region 鏋氫妇鍙橀噺
+        /*渚嬪瓙
 		public enum FieldNames
 		{
-			[Description("枚举描述0")]
+			[Description("鏋氫妇鎻忚堪0")]
 			Enum0,
-			[Description("枚举描述1")]
+			[Description("鏋氫妇鎻忚堪1")]
 			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_U9_SCM_OUT),
+                SOURCE_ORDER = ORDER_NO,
+                SOURCE_LINE = LINE_NO,
+                QTY_REQ = QTY,
+                QTY_ACT_REQ = QTY,
+            };
+        }
+        #endregion
 
-		#endregion
-
-	}//endClass
+    }//endClass
 }
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_SCM_OUT_DTL.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_SCM_OUT_DTL.cs
index fe61432..29aa914 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_U9_SCM_OUT_DTL.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_U9_SCM_OUT_DTL.cs
@@ -7,153 +7,153 @@
 namespace Tiger.Model
 {
 	/// <summary>
-	/// 实体:委外发料单(U9)明细
+	/// 瀹炰綋锛氬澶栧彂鏂欏崟(U9)鏄庣粏
 	/// </summary>
 	[Description("Primary:ID")]
-	[DisplayName("委外发料单(U9)明细")]
+	[DisplayName("濮斿鍙戞枡鍗�(U9)鏄庣粏")]
 	[Serializable]
 	[SugarTable("BIZ_U9_SCM_OUT_DTL")]
 	public class BIZ_U9_SCM_OUT_DTL : DbEntityWithAuth
 	{
-		#region 构造函数
+		#region 鏋勯�犲嚱鏁�
 		/// <summary>
-		/// 实体:委外发料单(U9)明细
+		/// 瀹炰綋锛氬澶栧彂鏂欏崟(U9)鏄庣粏
 		/// </summary>
 		public BIZ_U9_SCM_OUT_DTL() {}
 		#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 int STATUS { get; set; }
 		/// <summary>
-		/// 物料ID
+		/// 鐗╂枡ID
 		/// </summary>
-		[DisplayName("物料ID")]
+		[DisplayName("鐗╂枡ID")]
 		public string ITEM_ID { get; set; }
 		/// <summary>
-		/// 物料编码
+		/// 鐗╂枡缂栫爜
 		/// </summary>
-		[DisplayName("物料编码")]
+		[DisplayName("鐗╂枡缂栫爜")]
 		public string ITEM_CODE { get; set; }
 		/// <summary>
-		/// 单位
+		/// 鍗曚綅
 		/// </summary>
-		[DisplayName("单位")]
+		[DisplayName("鍗曚綅")]
 		public string UNIT { get; set; }
 		/// <summary>
-		/// 单据数量
+		/// 鍗曟嵁鏁伴噺
 		/// </summary>
-		[DisplayName("单据数量")]
+		[DisplayName("鍗曟嵁鏁伴噺")]
 		public double QTY { get; set; }
 		/// <summary>
-		/// 已备料数量
+		/// 宸插鏂欐暟閲�
 		/// </summary>
-		[DisplayName("已备料数量")]
+		[DisplayName("宸插鏂欐暟閲�")]
 		public double QTY_PREP { get; set; }
 		/// <summary>
-		/// 已发料数量
+		/// 宸插彂鏂欐暟閲�
 		/// </summary>
-		[DisplayName("已发料数量")]
+		[DisplayName("宸插彂鏂欐暟閲�")]
 		public double QTY_DLVY { get; set; }
 		/// <summary>
-		/// 领料未发数量
+		/// 棰嗘枡鏈彂鏁伴噺
 		/// </summary>
-		[DisplayName("领料未发数量")]
+		[DisplayName("棰嗘枡鏈彂鏁伴噺")]
 		public double QTY_NOTDLVY { get; set; }
 		/// <summary>
-		/// 发料方式(ERP)
+		/// 鍙戞枡鏂瑰紡(ERP)
 		/// </summary>
-		[DisplayName("发料方式(ERP)")]
+		[DisplayName("鍙戞枡鏂瑰紡(ERP)")]
 		public string DLVY_TYPE { get; set; }
 		/// <summary>
-		/// 发料方式名称(ERP)
+		/// 鍙戞枡鏂瑰紡鍚嶇О(ERP)
 		/// </summary>
-		[DisplayName("发料方式名称(ERP)")]
+		[DisplayName("鍙戞枡鏂瑰紡鍚嶇О(ERP)")]
 		public string DLVY_NAME { get; set; }
 		/// <summary>
-		/// 仓库编码(ERP)
+		/// 浠撳簱缂栫爜(ERP)
 		/// </summary>
-		[DisplayName("仓库编码(ERP)")]
+		[DisplayName("浠撳簱缂栫爜(ERP)")]
 		public string WH_ID { get; set; }
 		/// <summary>
-		/// 仓库编码(ERP)
+		/// 浠撳簱缂栫爜(ERP)
 		/// </summary>
-		[DisplayName("仓库编码(ERP)")]
+		[DisplayName("浠撳簱缂栫爜(ERP)")]
 		public string WH_CODE { get; set; }
 		/// <summary>
-		/// 仓库名称(ERP)
+		/// 浠撳簱鍚嶇О(ERP)
 		/// </summary>
-		[DisplayName("仓库名称(ERP)")]
+		[DisplayName("浠撳簱鍚嶇О(ERP)")]
 		public string WH_NAME { get; set; }
 		/// <summary>
-		/// 储位编码(ERP)
+		/// 鍌ㄤ綅缂栫爜(ERP)
 		/// </summary>
-		[DisplayName("储位编码(ERP)")]
+		[DisplayName("鍌ㄤ綅缂栫爜(ERP)")]
 		public string LOCATION_ID { get; set; }
 		/// <summary>
-		/// 储位编码(ERP)
+		/// 鍌ㄤ綅缂栫爜(ERP)
 		/// </summary>
-		[DisplayName("储位编码(ERP)")]
+		[DisplayName("鍌ㄤ綅缂栫爜(ERP)")]
 		public string LOCATION_CODE { get; set; }
 		/// <summary>
-		/// 储位名称(ERP)
+		/// 鍌ㄤ綅鍚嶇О(ERP)
 		/// </summary>
-		[DisplayName("储位名称(ERP)")]
+		[DisplayName("鍌ㄤ綅鍚嶇О(ERP)")]
 		public string LOCATION_NAME { 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_SCM_OUT_DTL类里面的外键ID字段
-		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
-		//一对多外键导航
-		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_SCM_OUT_DTLId))]//ClassA表中的BIZ_U9_SCM_OUT_DTLId
-		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
-		//多对多外键导航
-		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_SCM_OUT_DTLId), nameof(MappingClass.ClassAId))]//注意顺序
-		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		#region 澶栭敭灞炴��
+		/*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_U9_SCM_OUT_DTL绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_U9_SCM_OUT_DTLId))]//ClassA琛ㄤ腑鐨凚IZ_U9_SCM_OUT_DTLId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_U9_SCM_OUT_DTLId), 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.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs
index 57dca25..dfe1964 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP.cs
@@ -7,126 +7,136 @@
 namespace Tiger.Model
 {
 	/// <summary>
-	/// 实体:备料任务(WMS)
+	/// 瀹炰綋锛氬鏂欎换鍔�(WMS)
 	/// </summary>
 	[Description("Primary:ID")]
-	[DisplayName("备料任务(WMS)")]
+	[DisplayName("澶囨枡浠诲姟(WMS)")]
 	[Serializable]
 	[SugarTable("BIZ_WMS_PREP")]
 	public class BIZ_WMS_PREP : DbEntityWithAuth
 	{
-		#region 构造函数
+		#region 鏋勯�犲嚱鏁�
 		/// <summary>
-		/// 实体:备料任务(WMS)
+		/// 瀹炰綋锛氬鏂欎换鍔�(WMS)
 		/// </summary>
 		public BIZ_WMS_PREP() {}
 		#endregion
 
-		#region 公共属性
+		#region 鍏叡灞炴��
 		/// <summary>
-		/// 备料任务号
+		/// 澶囨枡浠诲姟鍙�
 		/// </summary>
-		[DisplayName("备料任务号")]
+		[DisplayName("澶囨枡浠诲姟鍙�")]
 		public string ORDER_NO { get; set; }
 		/// <summary>
-		/// 业务类型(0Others其他备料|1Requisition领料单备料|2WorkOrder工单备料|3Outsourcing委外备料)
+		/// 涓氬姟绫诲瀷(0Others鍏朵粬澶囨枡|1Requisition棰嗘枡鍗曞鏂檤2WorkOrder宸ュ崟澶囨枡|3Outsourcing濮斿澶囨枡)
 		/// </summary>
-		[DisplayName("业务类型(0Others其他备料|1Requisition领料单备料|2WorkOrder工单备料|3Outsourcing委外备料)")]
+		[DisplayName("涓氬姟绫诲瀷(0Others鍏朵粬澶囨枡|1Requisition棰嗘枡鍗曞鏂檤2WorkOrder宸ュ崟澶囨枡|3Outsourcing濮斿澶囨枡)")]
 		public int BIZ_TYPE { get; set; }
 		/// <summary>
-		/// 状态(0Init初始化|1Called已叫料|2WaitPick待捡料|3Picking捡料中|4Picked已捡完|5Sended已发料|6Close已关闭|7Cancel作废)
+		/// 鐘舵��(0Init鍒濆鍖東1Called宸插彨鏂檤2WaitPick寰呮崱鏂檤3Picking鎹℃枡涓瓅4Picked宸叉崱瀹寍5Sended宸插彂鏂檤6Close宸插叧闂瓅7Cancel浣滃簾)
 		/// </summary>
-		[DisplayName("状态(0Init初始化|1Called已叫料|2WaitPick待捡料|3Picking捡料中|4Picked已捡完|5Sended已发料|6Close已关闭|7Cancel作废)")]
+		[DisplayName("鐘舵��(0Init鍒濆鍖東1Called宸插彨鏂檤2WaitPick寰呮崱鏂檤3Picking鎹℃枡涓瓅4Picked宸叉崱瀹寍5Sended宸插彂鏂檤6Close宸插叧闂瓅7Cancel浣滃簾)")]
 		public int STATUS { get; set; }
 		/// <summary>
-		/// 来源单据编码,多个用“,”分隔
+		/// 鏉ユ簮鍗曟嵁缂栫爜锛屽涓敤鈥�,鈥濆垎闅�
 		/// </summary>
-		[DisplayName("来源单据编码,多个用“,”分隔")]
+		[DisplayName("鏉ユ簮鍗曟嵁缂栫爜锛屽涓敤鈥�,鈥濆垎闅�")]
 		public string SOURCE_CODE { get; set; }
 		/// <summary>
-		/// 来源单号,多个用“,”分隔,跟编码一一对应
+		/// 鏉ユ簮鍗曞彿锛屽涓敤鈥�,鈥濆垎闅旓紝璺熺紪鐮佷竴涓�瀵瑰簲
 		/// </summary>
-		[DisplayName("来源单号,多个用“,”分隔,跟编码一一对应")]
+		[DisplayName("鏉ユ簮鍗曞彿锛屽涓敤鈥�,鈥濆垎闅旓紝璺熺紪鐮佷竴涓�瀵瑰簲")]
 		public string SOURCE_ORDER { get; set; }
 		/// <summary>
-		/// 备注
+		/// 澶囨敞
 		/// </summary>
-		[DisplayName("备注")]
+		[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是BIZ_WMS_PREP类里面的外键ID字段
-		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
-		//一对多外键导航
-		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_PREPId))]//ClassA表中的BIZ_WMS_PREPId
-		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
-		//多对多外键导航
-		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_PREPId), nameof(MappingClass.ClassAId))]//注意顺序
-		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+        #region 澶栭敭灞炴��
+        /*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_PREPId))]//ClassA琛ㄤ腑鐨凚IZ_WMS_PREPId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_PREPId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
 		*/
-		#endregion
+        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_PREP_SRC.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP绫婚噷闈㈢殑澶栭敭ID瀛楁
+        public List<BIZ_WMS_PREP_SRC> SourceOrders { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_PREP_SRC_DTL.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP绫婚噷闈㈢殑澶栭敭ID瀛楁
+        public List<BIZ_WMS_PREP_SRC_DTL> SourceDetails { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_PREP_DTL.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP绫婚噷闈㈢殑澶栭敭ID瀛楁
+        public List<BIZ_WMS_PREP_DTL> Details { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_PREP_BTH.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP绫婚噷闈㈢殑澶栭敭ID瀛楁
+        public List<BIZ_WMS_PREP_BTH> Batchs { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+        [Navigate(NavigateType.OneToMany, nameof(BIZ_WMS_PREP_SN.ORDER_NO), nameof(ORDER_NO), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP绫婚噷闈㈢殑澶栭敭ID瀛楁
+        public List<BIZ_WMS_PREP_SN> SnList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+        #endregion
 
-		#region 枚举变量
-		/*例子
+        #region 鏋氫妇鍙橀噺
+        /*渚嬪瓙
 		public enum FieldNames
 		{
-			[Description("枚举描述0")]
+			[Description("鏋氫妇鎻忚堪0")]
 			Enum0,
-			[Description("枚举描述1")]
+			[Description("鏋氫妇鎻忚堪1")]
 			Enum1,
 		}
 		*/
 
-		/// <summary>
-		/// 枚举:业务类型(0Others其他备料|1Requisition领料单备料|2WorkOrder工单备料|3Outsourcing委外备料)
-		/// </summary>
-		public enum BIZ_TYPEs
+        /// <summary>
+        /// 鏋氫妇锛氫笟鍔$被鍨�(0Others鍏朵粬澶囨枡|1Requisition棰嗘枡鍗曞鏂檤2WorkOrder宸ュ崟澶囨枡|3Outsourcing濮斿澶囨枡)
+        /// </summary>
+        public enum BIZ_TYPEs
 		{
-			[Description("其他备料")]
+			[Description("鍏朵粬澶囨枡")]
 			Others = 0,
-			[Description("领料单备料")]
+			[Description("棰嗘枡鍗曞鏂�")]
 			Requisition = 1,
-			[Description("工单备料")]
+			[Description("宸ュ崟澶囨枡")]
 			WorkOrder = 2,
-			[Description("委外备料")]
+			[Description("濮斿澶囨枡")]
 			Outsourcing = 3,
 		}
 
 		/// <summary>
-		/// 枚举:状态(0Init初始化|1Called已叫料|2WaitPick待捡料|3Picking捡料中|4Picked已捡完|5Sended已发料|6Close已关闭|7Cancel作废)
+		/// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1Called宸插彨鏂檤2WaitPick寰呮崱鏂檤3Picking鎹℃枡涓瓅4Picked宸叉崱瀹寍5Sended宸插彂鏂檤6Close宸插叧闂瓅7Cancel浣滃簾)
 		/// </summary>
 		public enum STATUSs
 		{
-			[Description("初始化")]
+			[Description("鍒濆鍖�")]
 			Init = 0,
-			[Description("已叫料")]
+			[Description("宸插彨鏂�")]
 			Called = 1,
-			[Description("待捡料")]
+			[Description("寰呮崱鏂�")]
 			WaitPick = 2,
-			[Description("捡料中")]
+			[Description("鎹℃枡涓�")]
 			Picking = 3,
-			[Description("已捡完")]
+			[Description("宸叉崱瀹�")]
 			Picked = 4,
-			[Description("已发料")]
+			[Description("宸插彂鏂�")]
 			Sended = 5,
-			[Description("已关闭")]
+			[Description("宸插叧闂�")]
 			Close = 6,
-			[Description("作废")]
+			[Description("浣滃簾")]
 			Cancel = 7,
 		}
 		#endregion
 
-		#region 公共方法
+		#region 鍏叡鏂规硶
 
 		#endregion
 
diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_DTL.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_DTL.cs
index 3225279..beace7a 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_DTL.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_DTL.cs
@@ -47,7 +47,7 @@
 		/// 单位
 		/// </summary>
 		[DisplayName("单位")]
-		public double UNIT { get; set; }
+		public string UNIT { get; set; }
 		/// <summary>
 		/// 生产计划损耗比例(%)
 		/// </summary>
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 88a5fe1..51efbd9 100644
--- a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SN.cs
@@ -52,7 +52,7 @@
 		/// 单位
 		/// </summary>
 		[DisplayName("单位")]
-		public double UNIT { get; set; }
+		public string UNIT { get; set; }
 		/// <summary>
 		/// 物品数量
 		/// </summary>
diff --git a/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SRC_DTL.cs b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SRC_DTL.cs
new file mode 100644
index 0000000..6306266
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/WMS/BIZ_WMS_PREP_SRC_DTL.cs
@@ -0,0 +1,204 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+using Tiger.Model.Base;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 瀹炰綋锛氬鏂欎换鍔�(WMS)鏉ユ簮鏄庣粏
+	/// </summary>
+	[Description("Primary:ID")]
+	[DisplayName("澶囨枡浠诲姟(WMS)鏉ユ簮鏄庣粏")]
+	[Serializable]
+	[SugarTable("BIZ_WMS_PREP_SRC_DTL")]
+	public class BIZ_WMS_PREP_SRC_DTL : DbEntityWithAuth
+	{
+		#region 鏋勯�犲嚱鏁�
+		/// <summary>
+		/// 瀹炰綋锛氬鏂欎换鍔�(WMS)鏉ユ簮鏄庣粏
+		/// </summary>
+		public BIZ_WMS_PREP_SRC_DTL() {}
+		#endregion
+
+		#region 鍏叡灞炴��
+		/// <summary>
+		/// 澶囨枡浠诲姟鍙�
+		/// </summary>
+		[DisplayName("澶囨枡浠诲姟鍙�")]
+		public string ORDER_NO { get; set; }
+		/// <summary>
+		/// 澶囨枡浠诲姟琛屽彿
+		/// </summary>
+		[DisplayName("澶囨枡浠诲姟琛屽彿")]
+		public string ORDER_LINE { get; set; }
+		/// <summary>
+		/// 鐗╂枡缂栫爜
+		/// </summary>
+		[DisplayName("鐗╂枡缂栫爜")]
+		public string ITEM_CODE { get; set; }
+		/// <summary>
+		/// 鏇夸唬鏂欙紝澶氫釜鐢ㄢ��,鈥濆垎闅�
+		/// </summary>
+		[DisplayName("鏇夸唬鏂欙紝澶氫釜鐢ㄢ��,鈥濆垎闅�")]
+		public string SUBITEM_CODE { get; set; }
+		/// <summary>
+		/// 鍗曚綅
+		/// </summary>
+		[DisplayName("鍗曚綅")]
+		public string UNIT { get; set; }
+		/// <summary>
+		/// 鐢熶骇璁″垝鎹熻�楁瘮渚�(%)
+		/// </summary>
+		[DisplayName("鐢熶骇璁″垝鎹熻�楁瘮渚�(%)")]
+		public double PLAN_LOSS_RATE { get; set; }
+		/// <summary>
+		/// 鐢熶骇璁″垝鎹熻�楁暟閲�
+		/// </summary>
+		[DisplayName("鐢熶骇璁″垝鎹熻�楁暟閲�")]
+		public double PLAN_LOSS_QTY { get; set; }
+		/// <summary>
+		/// 鏄惁璁$畻鎹熻��(Y/N)
+		/// </summary>
+		[DisplayName("鏄惁璁$畻鎹熻��(Y/N)")]
+		public string IS_CALC_LOSS { get; set; }
+		/// <summary>
+		/// 鏄惁鏈�灏忓寘瑁呭彂鏂�(Y/N)
+		/// </summary>
+		[DisplayName("鏄惁鏈�灏忓寘瑁呭彂鏂�(Y/N)")]
+		public string IS_WHOLE { 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>
+		/// 鍗曚綅鐢ㄩ噺
+		/// </summary>
+		[DisplayName("鍗曚綅鐢ㄩ噺")]
+		public double QTY_UNIT { get; set; }
+		/// <summary>
+		/// 鎬婚渶姹傛暟閲�
+		/// </summary>
+		[DisplayName("鎬婚渶姹傛暟閲�")]
+		public double QTY_REQ { get; set; }
+		/// <summary>
+		/// 宸插彂鏂欐暟閲�
+		/// </summary>
+		[DisplayName("宸插彂鏂欐暟閲�")]
+		public double QTY_DLVY { get; set; }
+		/// <summary>
+		/// 瀹為檯闇�姹傛暟閲�
+		/// </summary>
+		[DisplayName("瀹為檯闇�姹傛暟閲�")]
+		public double QTY_ACT_REQ { get; set; }
+		/// <summary>
+		/// 宸ュ巶缂栫爜
+		/// </summary>
+		[DisplayName("宸ュ巶缂栫爜")]
+		public string FTY_CODE { get; set; }
+		/// <summary>
+		/// 杞﹂棿缂栫爜
+		/// </summary>
+		[DisplayName("杞﹂棿缂栫爜")]
+		public string WS_CODE { get; set; }
+		/// <summary>
+		/// 浜х嚎缂栫爜
+		/// </summary>
+		[DisplayName("浜х嚎缂栫爜")]
+		public string LINE_CODE { get; set; }
+		/// <summary>
+		/// 宀椾綅缂栫爜
+		/// </summary>
+		[DisplayName("宀椾綅缂栫爜")]
+		public string POST_CODE { get; set; }
+		/// <summary>
+		/// 宸ュ簭缂栫爜
+		/// </summary>
+		[DisplayName("宸ュ簭缂栫爜")]
+		public string OPER_CODE { get; set; }
+		/// <summary>
+		/// 鍔犲伐娈�
+		/// </summary>
+		[DisplayName("鍔犲伐娈�")]
+		public string SEGMENT { get; set; }
+		/// <summary>
+		/// 璐寸墖鏈哄簭鍙�
+		/// </summary>
+		[DisplayName("璐寸墖鏈哄簭鍙�")]
+		public string SMT_NO { get; set; }
+		/// <summary>
+		/// 绔欎綅鍙�
+		/// </summary>
+		[DisplayName("绔欎綅鍙�")]
+		public string STATION_NO { get; set; }
+		/// <summary>
+		/// 椋炶揪鍙�
+		/// </summary>
+		[DisplayName("椋炶揪鍙�")]
+		public string FEEDER_NO { get; set; }
+		/// <summary>
+		/// 鏂欐灙绫诲瀷
+		/// </summary>
+		[DisplayName("鏂欐灙绫诲瀷")]
+		public string FEEDER_TYPE { get; set; }
+		/// <summary>
+		/// 澶囨敞
+		/// </summary>
+		[DisplayName("澶囨敞")]
+		public string REMARK { get; set; }
+        #endregion
+
+        #region 铏氭嫙灞炴��
+        /*渚嬪瓙
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+        [SugarColumn(IsIgnore = true)]
+        public iPrepPickItem Source { get; set; }
+        #endregion
+
+        #region 澶栭敭灞炴��
+        /*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊IZ_WMS_PREP_SRC_DTL绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BIZ_WMS_PREP_SRC_DTLId))]//ClassA琛ㄤ腑鐨凚IZ_WMS_PREP_SRC_DTLId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BIZ_WMS_PREP_SRC_DTLId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		*/
+        #endregion
+
+        #region 鏋氫妇鍙橀噺
+        /*渚嬪瓙
+		public enum FieldNames
+		{
+			[Description("鏋氫妇鎻忚堪0")]
+			Enum0,
+			[Description("鏋氫妇鎻忚堪1")]
+			Enum1,
+		}
+		*/
+        #endregion
+
+        #region 鍏叡鏂规硶
+
+        #endregion
+
+    }//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/WMS/WMS_JOB_POOL.cs b/Tiger.Model.Net/Entitys/WMS/WMS_JOB_POOL.cs
index 3308652..8ce730f 100644
--- a/Tiger.Model.Net/Entitys/WMS/WMS_JOB_POOL.cs
+++ b/Tiger.Model.Net/Entitys/WMS/WMS_JOB_POOL.cs
@@ -41,7 +41,7 @@
 		/// <summary>
 		/// 鏉ユ簮鍗曟嵁鍙风爜
 		/// </summary>
-		public string SOURCE_NO { get; set; }
+		public string SOURCE_ORDER { get; set; }
 		/// <summary>
 		/// 鐘舵��(0Init鍒濆鍖東1Waiting寰呮墽琛寍2Delay宸插欢鏈焲3Working浣滀笟涓瓅4Pending宸叉殏鍋渱5Close宸插叧闂瓅6Cancel宸蹭綔搴�)
 		/// </summary>
diff --git a/Tiger.Model.Net/Tiger.Model.Net.csproj b/Tiger.Model.Net/Tiger.Model.Net.csproj
index ac85e97..9aad9ee 100644
--- a/Tiger.Model.Net/Tiger.Model.Net.csproj
+++ b/Tiger.Model.Net/Tiger.Model.Net.csproj
@@ -306,6 +306,7 @@
     <Compile Include="Entitys\WMS\BIZ_WMS_PREP_DTL.cs" />
     <Compile Include="Entitys\WMS\BIZ_WMS_PREP_SN.cs" />
     <Compile Include="Entitys\WMS\BIZ_WMS_PREP_SRC.cs" />
+    <Compile Include="Entitys\WMS\BIZ_WMS_PREP_SRC_DTL.cs" />
     <Compile Include="Entitys\WMS\V_MONTH_IN_SUM.cs" />
     <Compile Include="Entitys\WMS\V_WH_ITEM_SUM.cs" />
     <Compile Include="Entitys\WMS\V_WMS_ITEM_Y.cs" />

--
Gitblit v1.9.3