From b079910e5de15863c26e479ffab15cc45d706f1a Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期一, 19 五月 2025 16:25:22 +0800
Subject: [PATCH] 测试修复轮询出库、抽检流程的问题

---
 Models/TN_Outbound_Order.cs    |    2 
 Program.cs                     |   15 -
 Services/WmsService.cs         |    2 
 /dev/null                      |    0 
 Models/TN_Outbound_Detail.cs   |    2 
 Models/TN_Task.cs              |    8 
 Controllers/DebugController.cs |    2 
 Helpers/AgvHelper.cs           |    2 
 ServiceCore/OutboundCore.cs    |   56 +++++---
 HH.WCS.Mobox3.DSZSH.csproj     |    2 
 Services/DebugService.cs       |   38 ++--
 Helpers/DbHelper.cs            |    3 
 Dtos/Request/DebugRequest.cs   |    2 
 ServiceCore/CheckCore.cs       |   43 +++--
 Models/TN_Container_Item.cs    |    4 
 Models/TN_Check_Detail.cs      |    7 
 Services/MoboxService.cs       |  133 +++++++++++++++----
 Models/TN_CG_Detail.cs         |   19 +-
 ServiceCore/ShiftCore.cs       |   40 +++--
 19 files changed, 244 insertions(+), 136 deletions(-)

diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/5c57b4d0-dbd7-49e3-9f10-3d5a4d6dc3f3.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/5c57b4d0-dbd7-49e3-9f10-3d5a4d6dc3f3.vsidx
deleted file mode 100644
index e5b9ec0..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/5c57b4d0-dbd7-49e3-9f10-3d5a4d6dc3f3.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/7b1f7e4e-45eb-4263-a455-827cb67bccfe.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/7b1f7e4e-45eb-4263-a455-827cb67bccfe.vsidx
deleted file mode 100644
index 771f809..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/7b1f7e4e-45eb-4263-a455-827cb67bccfe.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/ab784fdf-fa93-4eaa-9449-8122428bc0ae.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/ab784fdf-fa93-4eaa-9449-8122428bc0ae.vsidx
deleted file mode 100644
index 99f862c..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/ab784fdf-fa93-4eaa-9449-8122428bc0ae.vsidx
+++ /dev/null
Binary files differ
diff --git a/Controllers/DebugController.cs b/Controllers/DebugController.cs
index edb5232..a4b1496 100644
--- a/Controllers/DebugController.cs
+++ b/Controllers/DebugController.cs
@@ -29,7 +29,7 @@
         {
             return DebugService.AgvSeriesReports(model);
         }
-        
+
         /// <summary>
         /// 鍒濆鍖栨暟鎹簱
         /// </summary>
diff --git a/Dtos/Request/DebugRequest.cs b/Dtos/Request/DebugRequest.cs
index a111853..b752402 100644
--- a/Dtos/Request/DebugRequest.cs
+++ b/Dtos/Request/DebugRequest.cs
@@ -27,7 +27,7 @@
         }
 
         public class CoverInfo {
-            public bool IsCover { set; get; } = true;
+            public bool IsCover { set; get; } = false;
         }
     }
 }
diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj
index 35d7c1e..d552ec5 100644
--- a/HH.WCS.Mobox3.DSZSH.csproj
+++ b/HH.WCS.Mobox3.DSZSH.csproj
@@ -248,7 +248,7 @@
     <Compile Include="Helpers\ExprHelper.cs" />
     <Compile Include="Helpers\PathHelper.cs" />
     <Compile Include="Helpers\DbHelper.cs" />
-    <Compile Include="Models\TN_CNTR_ITEM.cs" />
+    <Compile Include="Models\TN_Container_Item.cs" />
     <Compile Include="Models\TN_Check_Detail.cs" />
     <Compile Include="Models\TN_Check_Order.cs" />
     <Compile Include="Models\TN_Inbound_Order.cs" />
diff --git a/Helpers/AgvHelper.cs b/Helpers/AgvHelper.cs
index dda731c..28b1eab 100644
--- a/Helpers/AgvHelper.cs
+++ b/Helpers/AgvHelper.cs
@@ -29,7 +29,7 @@
         public static bool IsNextStateOk(int lastState, int nextState) {
             var lastPri = GetPri(lastState);
             var nextPri = GetPri(nextState);
-            return lastPri != 0 && nextPri != 0 && lastPri <= nextState;
+            return lastPri != 0 && nextPri != 0 && lastPri <= nextPri;
         }
 
         /// <summary>
diff --git a/Helpers/DbHelper.cs b/Helpers/DbHelper.cs
index ebe4313..da9acf3 100644
--- a/Helpers/DbHelper.cs
+++ b/Helpers/DbHelper.cs
@@ -52,8 +52,7 @@
                 };
 
                 // 閰嶇疆AOP鏃ュ織
-                //db.Aop.OnLogExecuting = (sql, pars) =>
-                //{
+                //db.Aop.OnLogExecuting = (sql, pars) => {
                 //    Console.WriteLine(sql); // 杈撳嚭绾疭QL璇彞
                 //};
 
diff --git a/Models/TN_CG_Detail.cs b/Models/TN_CG_Detail.cs
index 11893d2..0868e82 100644
--- a/Models/TN_CG_Detail.cs
+++ b/Models/TN_CG_Detail.cs
@@ -6,6 +6,7 @@
     /// </summary>
     [SugarTable("TN_CG_Detail")]
     public class TN_CG_Detail : BaseModel {
+        #region 鍩烘湰灞炴�
         /// <summary>
         /// 鏂欑鍟嗗搧鏍囪瘑
         /// </summary>
@@ -19,7 +20,7 @@
         /// <summary>
         /// 鐗╂枡鍚嶇О
         /// </summary>
-        public string S_ITEM_NAME { get; set; } = string.Empty; 
+        public string S_ITEM_NAME { get; set; } = string.Empty;
 
         /// <summary>
         /// 瀹瑰櫒缂栫爜
@@ -44,13 +45,16 @@
         /// <summary>
         /// 璐у搧鏁伴噺
         /// </summary>
-        public int N_QTY { get; set; } = 0;
+        public int N_ITEM_NUM { get; set; } = 0;
 
         /// <summary>
         /// 鐗╂枡瑙勬牸
         /// </summary>
-        public string S_SPE { get; set; } = string.Empty;
+        public string S_ITEM_SPEC { get; set; } = string.Empty;
+        #endregion
 
+
+        #region 鎷撳睍
         /// <summary>
         /// 鎵ц鏍囧噯
         /// </summary>
@@ -66,9 +70,10 @@
         /// </summary>
         public string S_QUALITY_GRADE { get; set; } = string.Empty;
 
-        /// <summary>
-        /// 浜х嚎鍙�-        /// </summary>
-        public int N_PRODUCT_LINE { get; set; } = 0; // NOTE 鍚庣画MES鍙兘浼氭彁渚涳紝鍏堝垱寤�+        ///// <summary>
+        ///// 浜х嚎鍙�+        ///// </summary>
+        //public int N_PRODUCT_LINE { get; set; } = 0; // NOTE 鍚庣画MES鍙兘浼氭彁渚涳紝鍏堝垱寤�
+        #endregion
     }
 }
diff --git a/Models/TN_Check_Detail.cs b/Models/TN_Check_Detail.cs
index 0d14c5f..8347a17 100644
--- a/Models/TN_Check_Detail.cs
+++ b/Models/TN_Check_Detail.cs
@@ -13,9 +13,12 @@
     [SugarTable("TN_Check_Detail")]
     public class TN_Check_Detail : BaseModel {
         public string S_NO { get; set; }
-
         public string S_ITEM_CODE { get; set; }
-        //public string S_ITEM_NAME { get; set; }
+        public string S_ITEM_NAME { get; set; }
+
+        public string S_LOC_CODE { get; set; }
+
+        public string S_CNTR_CODE { get; set; }
 
         public string S_BATCH_NO { get; set; }
         public string S_END_AREA { get; set; }
diff --git a/Models/TN_CNTR_ITEM.cs b/Models/TN_Container_Item.cs
similarity index 80%
rename from Models/TN_CNTR_ITEM.cs
rename to Models/TN_Container_Item.cs
index f1f2c66..def46ad 100644
--- a/Models/TN_CNTR_ITEM.cs
+++ b/Models/TN_Container_Item.cs
@@ -10,8 +10,8 @@
     /// <summary>
     /// 瀹瑰櫒-鐗╂枡绫诲瀷 鍏崇郴琛�     /// </summary>
-    [SugarTable("TN_CNTR_ITEM")]
-    public class TN_CNTR_ITEM : BaseModel {
+    [SugarTable("TN_Container_Item")]
+    public class TN_Container_Item : BaseModel {
         public string S_CNTR_CODE { get; set; }
         public string S_ITEM_CODE { get; set; }
     }
diff --git a/Models/TN_Outbound_Detail.cs b/Models/TN_Outbound_Detail.cs
index 94ee21a..c678465 100644
--- a/Models/TN_Outbound_Detail.cs
+++ b/Models/TN_Outbound_Detail.cs
@@ -9,7 +9,7 @@
         /// <summary>
         /// 鍑哄簱鍗曞彿
         /// </summary>
-        public string S_NO { get; set; }
+        public string S_OO_NO { get; set; }
 
         /// <summary>
         /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚
diff --git a/Models/TN_Outbound_Order.cs b/Models/TN_Outbound_Order.cs
index c3493cf..00d394d 100644
--- a/Models/TN_Outbound_Order.cs
+++ b/Models/TN_Outbound_Order.cs
@@ -45,7 +45,7 @@
         public bool B_FORCE_OUT { get; set; }
 
 
-        [Navigate(NavigateType.OneToMany, nameof(TN_Outbound_Detail.S_NO))]
+        [Navigate(NavigateType.OneToMany, nameof(TN_Outbound_Detail.S_OO_NO))]
         public List<TN_Outbound_Detail> Details { get; set; }
     }
 }
diff --git a/Models/TN_Task.cs b/Models/TN_Task.cs
index c94cb52..25d04b1 100644
--- a/Models/TN_Task.cs
+++ b/Models/TN_Task.cs
@@ -84,10 +84,10 @@
         public int N_END_LAYER { get; internal set; }
         public int N_CNTR_COUNT { get; internal set; }
 
-        /// <summary>
-        /// 鏄惁寮哄埗鍑哄簱锛�涓嶅己鍒�1寮哄埗
-        /// </summary>
-        public int N_FORCE { get; set; } = 0;
+        ///// <summary>
+        ///// 鏄惁寮哄埗鍑哄簱锛�涓嶅己鍒�1寮哄埗
+        ///// </summary>
+        //public int N_FORCE { get; set; } = 0;
 
         internal static string GetStateStr(int state) {
             // 0绛夊緟 1宸叉帹閫�2鎵ц 3瀹屾垚 4閿欒
diff --git a/Program.cs b/Program.cs
index e77e060..d201d83 100644
--- a/Program.cs
+++ b/Program.cs
@@ -127,19 +127,14 @@
             {
                 List<Task> tasks = new List<Task>();
 
-                //tasks.Add(GetTask(CheckCore.CheckOrderState));
-
+                // 杞锛氬嚭搴撳崟鐘舵�
                 tasks.Add(GetTask(OutboundCore.CheckOrderState));
 
+                // 杞锛氭娊妫�崟鐘舵�
+                tasks.Add(GetTask(CheckCore.CheckOrderState));
 
-                // 娣诲姞浠诲姟鎺ㄩ�绾跨▼
-                //tasks.Add(GetTask(WCSCore.Dispatch));
-
-                // 娣诲姞鑷畾涔夌嚎绋�-                //tasks.Add(GetTask(Monitor.CheckEmptyCnt));//妫�祴绌烘墭鐩�-
-                // 鏍规嵁S7/Modbus鍗忚鍒ゆ柇杈撻�绾跨殑淇″彿  鍘熸潗鏂欎骇绾垮簱鍖�>婊℃墭缂撳瓨搴撳尯锛岀┖鎵樼紦瀛樺簱鍖�>鍘熸潗鏂欎骇绾垮簱鍖�-                //tasks.Add(GetTask(Monitor.CheckS7Devices));
+                // 杞锛氱Щ搴撳崟鐘舵�
+                tasks.Add(GetTask(ShiftCore.CheckOrderState));
 
                 Task.WaitAll(tasks.ToArray());
             }
diff --git a/ServiceCore/CheckCore.cs b/ServiceCore/CheckCore.cs
index d0a4747..eae3ca4 100644
--- a/ServiceCore/CheckCore.cs
+++ b/ServiceCore/CheckCore.cs
@@ -7,14 +7,15 @@
 namespace HH.WCS.Mobox3.DSZSH.ServiceCore {
     public class CheckCore {
         public static void CheckOrderState() {
+
             var db = DbHelper.GetDbClient();
             try {
-                var order = db.Queryable<TN_Check_Order>()
+                var order = db.Queryable<TN_Check_Detail>()
                     .Where(c => c.N_B_STATE == SpotStateCode.宸叉墽琛屽緟鐢熸垚浠诲姟)
                     .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc).First();
 
                 if (order == null) {
-                    LogHelper.Info("鏆傛棤寰呮墽琛岀殑鎶芥鍗�);
+                    LogHelper.Info("杞--鎶芥--鏆傛棤寰呮墽琛岀殑Order");
                     return;
                 }
 
@@ -28,16 +29,6 @@
                 }
 
                 foreach (var detail in detailList) {
-                    var startLocCntrRel = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail>
-                        ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE)
-                        .Where((l, c, d) => d.S_ITEM_CODE == detail.S_ITEM_CODE && d.S_BATCH_NO == detail.S_BATCH_NO)
-                        .Select((l, c) => c) // 閫夋嫨 LocCntrRel
-                        .First(); // 闅忔満鎶芥锛屼笉鎺掑簭
-
-                    if (startLocCntrRel == null) {
-                        LogHelper.Info("娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�);
-                        continue;
-                    }
 
                     var endLoc = db.Queryable<TN_Location>()
                         .Where(l => l.S_AREA_CODE == detail.S_END_AREA)
@@ -45,7 +36,7 @@
                         .Where(ExprHelper.LocIsEmpty).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info("鏌ヨ锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅");
+                        LogHelper.Info("杞--鎶芥锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
                         continue;
                     }
 
@@ -53,10 +44,10 @@
                         detail.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓�
                         if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            LogHelper.Info($"鏇存柊澶辫触锛氫慨鏀规娊妫�崟鏄庣粏琛ㄧ姸鎬佷负瀹屾垚");
+                            LogHelper.Info($"杞--鎶芥锛氫慨鏀规娊妫�崟鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触锛�);
                         }
 
-                        if (TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE,
+                        if (TaskHelper.LogCreateTask(detail.S_LOC_CODE, detail.S_CNTR_CODE,
                             endLoc.S_CODE, TaskName.鎶芥_鍑哄簱)) {
                             tran.CommitTran();
                         }
@@ -72,33 +63,45 @@
         }
 
         public static void UpdateTaskState(int spotStateCode) {
+
             var db = DbHelper.GetDbClient();
 
             var detail = db.Queryable<TN_Check_Detail>()
                 .First(d => d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�;
 
             if (detail == null) {
-                LogHelper.Info("褰撳墠娌℃湁鎵ц涓殑鎶芥鍗曟槑缁嗛」鐩�);
+                LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
                 return;
             }
 
             using (var tran = db.Ado.UseTran()) {
                 detail.N_B_STATE = spotStateCode;
-                db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand();
+                if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
+                    tran.RollbackTran();
+                    LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                    return;
+                }
 
-                if (db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 2) ==
-                    db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO)) {
+                var finishedCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3);
+                var allCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO);
+
+                LogHelper.Info($"鎶芥--AGV浠诲姟瀹屾垚锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount} / {allCount}");
+
+                if (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚
 
                     if (db.Updateable<TN_Check_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.浠诲姟鎵ц瀹屾垚)
                         .Where(it => it.S_NO == detail.S_NO)
                         .ExecuteCommand() <= 0) {
+
                         tran.RollbackTran();
-                        LogHelper.Info("淇敼Order鐘舵�閿欒");
+                        LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                        return;
                     }
                 }
 
                 tran.CommitTran();
             }
         }
+
     }
 }
diff --git a/ServiceCore/OutboundCore.cs b/ServiceCore/OutboundCore.cs
index 5f684c3..488821a 100644
--- a/ServiceCore/OutboundCore.cs
+++ b/ServiceCore/OutboundCore.cs
@@ -4,6 +4,8 @@
 using HH.WCS.Mobox3.DSZSH.Helpers;
 using HH.WCS.Mobox3.DSZSH.Models;
 
+using Newtonsoft.Json;
+
 namespace HH.WCS.Mobox3.DSZSH.ServiceCore {
     public class OutboundCore {
         public static void CheckOrderState() {
@@ -14,24 +16,26 @@
                     .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc).First();
 
                 if (order == null) {
-                    LogHelper.Info("杞锛氭殏鏃犲緟鎵ц鐨勫嚭搴撳崟");
+                    LogHelper.Info("杞--鍑哄簱--鏆傛棤寰呮墽琛岀殑Order");
                     return;
                 }
 
-                if (db.Queryable<TN_Outbound_Detail>()
-                    .First(d => d.S_NO == order.S_NO && d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓� != null) {
-                    LogHelper.Debug("杞锛氫笂涓�釜鍑哄簱浠诲姟浠嶅湪杩涜涓�);
+                var lastDetail = db.Queryable<TN_Outbound_Detail>()
+                    .First(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�;
+
+                if (lastDetail != null) {
+                    LogHelper.Info($"杞--鍑哄簱--涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail));
                     return;
                 }
 
                 var detail = db.Queryable<TN_Outbound_Detail>()
-                    .Where(d => d.S_NO == order.S_NO && d.N_B_STATE == SpotStateCode.宸叉墽琛屽緟鐢熸垚浠诲姟)
+                    .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == SpotStateCode.宸叉墽琛屽緟鐢熸垚浠诲姟)
                     .OrderBy(d => d.T_CREATE, SqlSugar.OrderByType.Asc).First();
 
                 if (detail == null) {
                     //order.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓�
 
-                    LogHelper.Info("杞鍑哄簱锛氭殏鏃犲緟鎵ц鐨勪换鍔�);
+                    LogHelper.Info($"杞--鍑哄簱--褰撳墠Order '{order.S_NO}' 鏆傛棤寰呮墽琛岀殑浠诲姟");
                     return;
                 }
 
@@ -40,7 +44,7 @@
                     .First();
 
                 if (startLocCntrRel == null) {
-                    LogHelper.Info("杞锛氬嚭搴擄細娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�);
+                    LogHelper.Info($"杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
                     return;
                 }
 
@@ -50,7 +54,7 @@
                     .Where(ExprHelper.LocIsEmpty).First();
 
                 if (endLoc == null) {
-                    LogHelper.Info("杞锛氬嚭搴擄細娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�);
+                    LogHelper.Info($"杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛丼_NO涓�'{detail.S_OO_NO}'锛岃姹侫rea涓�'{detail.S_END_AREA}'");
                     return;
                 }
 
@@ -58,16 +62,15 @@
                     detail.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓�
                     if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        LogHelper.Info($"杞锛氬嚭搴擄細鏇存柊澶辫触锛氫慨鏀规槑缁嗚〃鐘舵�涓哄畬鎴�);
+                        LogHelper.Info($"杞--鍑哄簱--淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚澶辫触锛�);
                     }
 
-                    if (TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE,
+                    if (!TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE,
                         endLoc.S_CODE, TaskName.鎴愬搧鑳跺嚭搴�) {
-                        tran.CommitTran();
-                    }
-                    else {
                         tran.RollbackTran();
                     }
+
+                    tran.CommitTran();
                 }
             }
             catch (Exception ex) {
@@ -76,28 +79,39 @@
         }
 
         public static void UpdateTaskState(int spotStateCode) {
+            
             var db = DbHelper.GetDbClient();
 
             var detail = db.Queryable<TN_Outbound_Detail>()
-                    .First(d => d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�;
+                .First(d => d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�;
 
             if (detail == null) {
-                LogHelper.Info("褰撳墠娌℃湁鎵ц涓殑鍑哄簱鍗曟槑缁嗛」鐩�);
+                LogHelper.Info("鍑哄簱--AGV鍙栬揣--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
                 return;
             }
 
             using (var tran = db.Ado.UseTran()) {
                 detail.N_B_STATE = spotStateCode;
-                db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand();
+                if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
+                    tran.RollbackTran();
+                    LogHelper.Info("鍑哄簱--AGV鍙栬揣锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                    return;
+                }
 
-                if (db.Queryable<TN_Outbound_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 2) ==
-                    db.Queryable<TN_Outbound_Detail>().Count(d => d.S_NO == detail.S_NO)) {
+                var finishedCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO && d.N_B_STATE == 3);
+                var allCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO);
 
-                    if (db.Updateable<TN_Check_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.浠诲姟鎵ц瀹屾垚)
-                        .Where(it => it.S_NO == detail.S_NO)
+                LogHelper.Info($"鍑哄簱--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount} / {allCount}");
+
+                if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚
+
+                    if (db.Updateable<TN_Outbound_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.浠诲姟鎵ц瀹屾垚)
+                        .Where(it => it.S_NO == detail.S_OO_NO)
                         .ExecuteCommand() <= 0) {
+
                         tran.RollbackTran();
-                        LogHelper.Info("淇敼Order鐘舵�閿欒");
+                        LogHelper.Info("鍑哄簱--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                        return;
                     }
                 }
 
diff --git a/ServiceCore/ShiftCore.cs b/ServiceCore/ShiftCore.cs
index d74141e..c8d47ec 100644
--- a/ServiceCore/ShiftCore.cs
+++ b/ServiceCore/ShiftCore.cs
@@ -23,13 +23,13 @@
                     .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc).First();
 
                 if (order == null) {
-                    LogHelper.Info("杞锛氭殏鏃犲緟鎵ц鐨勭Щ搴撳崟");
+                    LogHelper.Info("杞--绉诲簱--鏆傛棤寰呮墽琛岀殑Order");
                     return;
                 }
 
                 if (db.Queryable<TN_Shift_Detail>()
                     .First(d => d.S_NO == order.S_NO && d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓� != null) {
-                    LogHelper.Debug("杞锛氫笂涓�釜绉诲簱浠诲姟浠嶅湪杩涜涓�);
+                    LogHelper.Debug("杞--绉诲簱--涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑");
                     return;
                 }
 
@@ -40,7 +40,7 @@
                 if (detail == null) {
                     //order.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓�
 
-                    LogHelper.Info("杞绉诲簱锛氭殏鏃犲緟鎵ц鐨勪换鍔�);
+                    LogHelper.Info("杞--绉诲簱--鏆傛棤寰呮墽琛岀殑浠诲姟");
                     return;
                 }
 
@@ -49,7 +49,7 @@
                     .First();
 
                 if (startLocCntrRel == null) {
-                    LogHelper.Info("杞锛氱Щ搴擄細娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�);
+                    LogHelper.Info("杞--绉诲簱锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
                     return;
                 }
 
@@ -59,7 +59,7 @@
                     .Where(ExprHelper.LocIsEmpty).First();
 
                 if (endLoc == null) {
-                    LogHelper.Info("杞锛氬嚭搴擄細娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�);
+                    LogHelper.Info("杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
                     return;
                 }
 
@@ -67,16 +67,15 @@
                     detail.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓�
                     if (db.Updateable<TN_Shift_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        LogHelper.Info($"杞锛氬嚭搴擄細鏇存柊澶辫触锛氫慨鏀规槑缁嗚〃鐘舵�涓哄畬鎴�);
+                        LogHelper.Info($"杞--鍑哄簱锛氫慨鏀规槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
                     }
 
-                    if (TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE,
+                    if (!TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE,
                         endLoc.S_CODE, TaskName.鎴愬搧鑳跺嚭搴�) {
-                        tran.CommitTran();
-                    }
-                    else {
                         tran.RollbackTran();
                     }
+
+                    tran.CommitTran();
                 }
             }
             catch (Exception ex) {
@@ -85,28 +84,39 @@
         }
 
         public static void UpdateTaskState(int spotStateCode) {
+
             var db = DbHelper.GetDbClient();
 
             var detail = db.Queryable<TN_Shift_Detail>()
                 .First(d => d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�;
 
             if (detail == null) {
-                LogHelper.Info("褰撳墠娌℃湁鎵ц涓殑绉诲簱鍗曟槑缁嗛」鐩�);
+                LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
                 return;
             }
 
             using (var tran = db.Ado.UseTran()) {
                 detail.N_B_STATE = spotStateCode;
-                db.Updateable<TN_Shift_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand();
+                if (db.Updateable<TN_Shift_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
+                    tran.RollbackTran();
+                    LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                    return;
+                }
 
-                if (db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 2) ==
-                    db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO)) {
+                var finishedCount = db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3);
+                var allCount = db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO);
+
+                LogHelper.Info($"绉诲簱--AGV浠诲姟瀹屾垚锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount} / {allCount}");
+
+                if (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚
 
                     if (db.Updateable<TN_Shift_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.浠诲姟鎵ц瀹屾垚)
                         .Where(it => it.S_NO == detail.S_NO)
                         .ExecuteCommand() <= 0) {
+
                         tran.RollbackTran();
-                        LogHelper.Info("淇敼Order鐘舵�閿欒");
+                        LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                        return;
                     }
                 }
 
diff --git a/Services/DebugService.cs b/Services/DebugService.cs
index cbc8c2a..8537315 100644
--- a/Services/DebugService.cs
+++ b/Services/DebugService.cs
@@ -80,35 +80,37 @@
         /// 鍒濆鏁版嵁搴撳缓绔�         /// </summary>
         /// <returns></returns>
-        public static string CreateDatabase(bool cover = true) {
+        public static string CreateDatabase(bool cover = false) {
             try {
                 var db = DbHelper.GetDbClient();
 
                 var entityTypes = new Type[] { 
-                    typeof(TN_CAR_IN),
-                    typeof(TN_CG_Detail),
-                    typeof(TN_Container),
-                    typeof(TN_Loc_Container),
-                    typeof(TN_Location),
-                    typeof(TN_Task),
-                    typeof(TN_Task_Action),
-                    typeof(SysHelper.OI_SYS_MAXID),
+                    //typeof(TN_CAR_IN),
+                    //typeof(TN_CG_Detail),
+                    //typeof(TN_Container),
+                    //typeof(TN_Loc_Container),
+                    //typeof(TN_Location),
+                    //typeof(TN_Task),
+                    //typeof(TN_Task_Action),
+                    //typeof(SysHelper.OI_SYS_MAXID),
 
-                    typeof(TN_Inbound_Order),
+                    //typeof(TN_Inbound_Order),
                     typeof(TN_Check_Detail),
-                    typeof(TN_Check_Order),
-                    typeof(TN_CNTR_ITEM),
-                    typeof(TN_Outbound_Detail),
-                    typeof(TN_Outbound_Order),
+                    //typeof(TN_Check_Order),
+                    //typeof(TN_CNTR_ITEM),
+                    //typeof(TN_Outbound_Detail),
+                    //typeof(TN_Outbound_Order),
+                    //typeof(TN_Shift_Order),
+                    //typeof(TN_Shift_Detail)
                 };
 
                 using (var tran = db.Ado.UseTran()) {
                     if (cover) {
                         // 鍒犻櫎鎵�湁琛紙鎸変緷璧栧叧绯诲�搴忥級
-                        var tables = db.DbMaintenance.GetTableInfoList();
-                        foreach (var table in tables.OrderByDescending(t => t.Name)) {
-                            db.DbMaintenance.DropTable(table.Name);
-                        }
+                        //var tables = db.DbMaintenance.GetTableInfoList();
+                        //foreach (var table in tables.OrderByDescending(t => t.Name)) {
+                        //    db.DbMaintenance.DropTable(table.Name);
+                        //}
 
                         // 鍒涘缓鏂拌〃
                         db.CodeFirst.InitTables(entityTypes);
diff --git a/Services/MoboxService.cs b/Services/MoboxService.cs
index 680d804..1e82ed8 100644
--- a/Services/MoboxService.cs
+++ b/Services/MoboxService.cs
@@ -3,6 +3,7 @@
 using System.Linq;
 
 using HH.WCS.Mobox3.DSZSH.Consts;
+using HH.WCS.Mobox3.DSZSH.Dispatch;
 using HH.WCS.Mobox3.DSZSH.Helper;
 using HH.WCS.Mobox3.DSZSH.Helpers;
 using HH.WCS.Mobox3.DSZSH.Models;
@@ -371,11 +372,13 @@
         public static SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) {
             var db = DbHelper.GetDbClient();
             try {
+                var orderNo = GenerateOrderNo("鎶芥鍗曞彿", "CN");
+
                 // 缁戝畾鎿嶄綔锛氭彃鍏ュ嚭搴撳崟銆佹墍鏈夌殑鍑哄簱鍗曟槑缁�                 using (var tran = db.Ado.UseTran()) {
 
                     var order = new TN_Check_Order {
-                        S_NO = GenerateOrderNo("鎶芥鍗曞彿", "CN"),
+                        S_NO = orderNo,
                         S_ITEM_CODE = model.ItemCode,
                         //S_ITEM_NAME = model.ItemName,
                         S_BATCH_NO = model.BatchNo,
@@ -388,20 +391,33 @@
                         return BuildSimpleResult(2, "鐢熸垚 鎶芥鍗�澶辫触锛� + JsonConvert.SerializeObject(order));
                     }
 
-                    for (int i = 0; i < model.Qty; i++) {
-                        var detail = new TN_Check_Detail {
-                            S_NO = order.S_NO,
-                            S_ITEM_CODE = model.ItemCode,
-                            S_BATCH_NO = model.BatchNo,
-                            S_END_AREA = model.EndArea
-                        };
+                    var cgDetailList = SelectCgByTotalQty(model);
 
-                        if (db.Insertable<TN_Check_Detail>(detail).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            return BuildSimpleResult(3, "鐢熸垚 鎶芥鍗曟槑缁�澶辫触锛� + JsonConvert.SerializeObject(detail));
-                        }
+                    if (cgDetailList.Count == 0) {
+                        return BuildSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ユ娊妫�);
                     }
 
+                    foreach (var cgDetail in cgDetailList) {
+                        var detail = new TN_Outbound_Detail {
+                            S_OO_NO = orderNo,
+                            S_ITEM_CODE = cgDetail.S_ITEM_CODE,
+                            S_BATCH_NO = cgDetail.S_BATCH_NO,
+                            S_CNTR_CODE = cgDetail.S_CNTR_CODE,
+                            S_END_AREA = model.EndArea,
+                        };
+
+                        cgDetail.N_ITEM_STATE = 3;
+                        cgDetail.S_ITEM_STATE = "姝e湪妫�獙";
+
+                        if (db.Insertable<TN_Outbound_Detail>(detail).ExecuteCommand() <= 0
+                            && db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) {
+                            tran.RollbackTran();
+                            return BuildSimpleResult(4, "鐢熸垚鍑哄簱鍗曟槑缁嗗け璐ワ細" + JsonConvert.SerializeObject(detail));
+                        }
+                        
+                        LogHelper.Debug("鍒涘缓鍑哄簱鍗曟槑缁嗘垚鍔燂細" + JsonConvert.SerializeObject(detail));
+                    }
+                    
                     tran.CommitTran();
                 }
                 return BuildSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛");
@@ -556,6 +572,56 @@
             }
         }
 
+        public static List<TN_CG_Detail> SelectCgByTotalQty(CreateCheckOrderInfo model) {
+            var db = DbHelper.GetDbClient();
+            var result = new List<TN_CG_Detail>();
+            var targetNum = model.Qty;
+
+            try {
+                var targetCg = db.Queryable<TN_CG_Detail>().Where(a => a.S_ITEM_CODE == model.ItemCode
+                && a.N_ITEM_NUM > targetNum).
+                OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc).First();
+                if (targetCg != null) //鍒氬ソ鏈変竴琛屾弧瓒虫潯浠�+                {
+                    result.Add(targetCg);
+                    return result;
+                }
+
+                var sortedMaterials = new List<TN_CG_Detail>();
+
+                sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE)
+                    .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0)
+                    .Where((d, c) => c.S_CNTR_TYPE == model.CntrType)
+                    .Where(d => d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮")
+                    .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc)
+                    .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList();
+
+                if (sortedMaterials.Count == 0) //娌℃湁婊¤冻鏉′欢鐨�+                {
+                    return result;
+                }
+
+                int countNum = 0;
+                foreach (var mat in sortedMaterials) {
+                    countNum += mat.N_ITEM_NUM;
+                    result.Add(mat);
+                    if (countNum >= targetNum) {
+                        break;
+                    }
+                }
+                if (result.Sum(a => a.N_ITEM_NUM) >= targetNum) {
+                    return result;
+                }
+                else {
+                    result.Clear();
+                    return result;
+                }
+            }
+            catch (Exception ex) {
+                throw ex;
+            }
+        }
+
         #endregion
 
         #region Mobox 鍔熻兘
@@ -584,14 +650,13 @@
                         return BuildSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�);
                     }
 
-                    // NOTE 濡傛灉鍒涘缓order鐨勬椂鍊欏氨鎸囧畾鍏蜂綋鍑哄簱鐗╂枡鐨刢ntr锛岄偅涔堝鏋滃湪鍒涘缓浠诲姟鍓嶏紝杩欎釜鐗╂枡琚敊璇娊妫�簡鎬庝箞鍔�                     foreach (var cgDetail in cgDetailList) {
                         var detail = new TN_Outbound_Detail {
-                            S_NO = orderNo,
+                            S_OO_NO = orderNo,
                             S_ITEM_CODE = cgDetail.S_ITEM_CODE,
                             S_BATCH_NO = cgDetail.S_BATCH_NO,
                             S_CNTR_CODE = cgDetail.S_CNTR_CODE,
-                            N_COUNT = cgDetail.N_QTY,
+                            N_COUNT = cgDetail.N_ITEM_NUM,
                             S_END_AREA = model.EndArea
                         };
 
@@ -646,10 +711,9 @@
                         return BuildSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ュ嚭搴�);
                     }
 
-                    // NOTE 濡傛灉鍒涘缓order鐨勬椂鍊欏氨鎸囧畾鍏蜂綋鍑哄簱鐗╂枡鐨刢ntr锛岄偅涔堝鏋滃湪鍒涘缓浠诲姟鍓嶏紝杩欎釜鐗╂枡琚敊璇娊妫�簡鎬庝箞鍔�                     foreach (var cgDetail in cgDetailList) {
                         var detail = new TN_Outbound_Detail {
-                            S_NO = orderNo,
+                            S_OO_NO = orderNo,
                             S_ITEM_CODE = cgDetail.S_ITEM_CODE,
                             S_BATCH_NO = cgDetail.S_BATCH_NO,
                             S_CNTR_CODE = cgDetail.S_CNTR_CODE,
@@ -693,8 +757,8 @@
 
             try {
                 var targetCg = db.Queryable<TN_CG_Detail>().Where(a => a.S_ITEM_CODE == model.ItemCode
-                && a.N_QTY > targetNum).
-                OrderBy(a => a.N_QTY, OrderByType.Asc).First();
+                && a.N_ITEM_NUM > targetNum).
+                OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc).First();
                 if (targetCg != null) //鍒氬ソ鏈変竴琛屾弧瓒虫潯浠�                 {
                     result.Add(targetCg);
@@ -702,29 +766,42 @@
                 }
 
                 // NOTE 鏍规嵁鎬婚噺閫塪etail鏃讹紝鏄惁闇�鑰冭檻璐т綅鐨勯珮浣庯紵
-                var sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE)
-                    .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_QTY > 0)
+
+                var sortedMaterials = new List<TN_CG_Detail>();
+
+                if (model.ForcedOut) {
+                    sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE)
+                    .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0)
                     .Where((d, c) => c.S_CNTR_TYPE == model.CntrType)
-                    .Where(d => (model.ForcedOut && d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸")
-                        || (!model.ForcedOut && (d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸"
-                        || d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮")))
-                    .OrderBy(d => d.N_QTY, OrderByType.Desc)
+                    .Where(d => d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸"
+                             || d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮")
+                    .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc)
                     .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList();
+                }
+                else {
+                    sortedMaterials = db.Queryable<TN_CG_Detail, TN_Loc_Container>((d, c) => d.S_CNTR_CODE == c.S_CNTR_CODE)
+                    .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_NUM > 0)
+                    .Where((d, c) => c.S_CNTR_TYPE == model.CntrType)
+                    .Where(d => d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸")
+                    .OrderBy(d => d.N_ITEM_NUM, OrderByType.Desc)
+                    .OrderBy(d => d.N_ITEM_STATE, OrderByType.Asc).ToList();
+                }
+                
 
                 if (sortedMaterials.Count == 0) //娌℃湁婊¤冻鏉′欢鐨�                 {
                     return result;
                 }
 
-                float countNum = 0;
+                int countNum = 0;
                 foreach (var mat in sortedMaterials) {
-                    countNum += mat.N_QTY;
+                    countNum += mat.N_ITEM_NUM;
                     result.Add(mat);
                     if (countNum >= targetNum) {
                         break;
                     }
                 }
-                if (result.Sum(a => a.N_QTY) >= targetNum) {
+                if (result.Sum(a => a.N_ITEM_NUM) >= targetNum) {
                     return result;
                 }
                 else {
diff --git a/Services/WmsService.cs b/Services/WmsService.cs
index 2d58939..6118018 100644
--- a/Services/WmsService.cs
+++ b/Services/WmsService.cs
@@ -33,7 +33,7 @@
                     S_STANDARD = model.Standard,
                     S_NET_WEIGHT = model.NetWeight,
                     S_QUALITY_GRADE = model.QualityGrade,
-                    N_PRODUCT_LINE = random.Next(0, 3), // NOTE 浜х嚎鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛�+                    //N_PRODUCT_LINE = random.Next(0, 3), // NOTE 浜х嚎鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛�                 };
 
                 // 璐т綅瀹瑰櫒缁戝畾鐨勯�杈戯紝鍦ㄥソ杩愮涓嬬嚎PDA鐨勬祦绋嬩腑鎿嶄綔

--
Gitblit v1.9.1