From de8cd5585ba690902333cf4ce9aa5dbc7eb9acf6 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期三, 28 五月 2025 17:29:33 +0800
Subject: [PATCH] 根据业务重构库区,增加记录表,开始ERP下发反馈逻辑开发

---
 wms/SYSHelper.cs                                                                    |   62 ++
 Models/TN_Loc_Container.cs                                                          |    5 
 models/TN_RelocationList_Detail.cs                                                  |    6 
 Program.cs                                                                          |    2 
 core/Monitor.cs                                                                     |   50 ++
 api/ErpController.cs                                                                |   12 
 /dev/null                                                                           |   17 
 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx |    0 
 config/config.json                                                                  |   85 +---
 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx |    0 
 models/TN_Shipping_Order.cs                                                         |   11 
 api/ApiModel.cs                                                                     |   32 +
 core/WCSCore.cs                                                                     |  104 +----
 HH.WCS.Mobox3.DSZSH.csproj                                                          |    8 
 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx |    0 
 api/DebugController.cs                                                              |   97 +++-
 models/TN_Relocation_List.cs                                                        |    6 
 util/Settings.cs                                                                    |   87 ++--
 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx |    0 
 models/TN_Record_Table.cs                                                           |  105 +++++
 Models/TN_Location.cs                                                               |   23 +
 api/ApiHelper.cs                                                                    |  318 +++-------------
 api/WMSController.cs                                                                |    4 
 api/MoboxController.cs                                                              |   92 ----
 24 files changed, 506 insertions(+), 620 deletions(-)

diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6450fb4e-6068-4bff-9055-f0bd1f177c4d.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6450fb4e-6068-4bff-9055-f0bd1f177c4d.vsidx
deleted file mode 100644
index 2fa8974..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/6450fb4e-6068-4bff-9055-f0bd1f177c4d.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx
new file mode 100644
index 0000000..f836484
--- /dev/null
+++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/71a55ff9-7db4-4aa9-9789-25ab0233a3db.vsidx
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/798bf6bf-6818-456f-ab4b-aad13079f168.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/798bf6bf-6818-456f-ab4b-aad13079f168.vsidx
deleted file mode 100644
index 60539af..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/798bf6bf-6818-456f-ab4b-aad13079f168.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/870c2cc4-322b-42e1-a32f-bc410b5f82a5.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/870c2cc4-322b-42e1-a32f-bc410b5f82a5.vsidx
deleted file mode 100644
index 949bf0b..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/870c2cc4-322b-42e1-a32f-bc410b5f82a5.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx
new file mode 100644
index 0000000..829ce45
--- /dev/null
+++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/b024e27a-9190-40bd-b5fa-a582e167513a.vsidx
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c9195d04-088d-47d3-be93-4565501364ba.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c9195d04-088d-47d3-be93-4565501364ba.vsidx
deleted file mode 100644
index 2429cb4..0000000
--- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c9195d04-088d-47d3-be93-4565501364ba.vsidx
+++ /dev/null
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx
new file mode 100644
index 0000000..cbfe6c5
--- /dev/null
+++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cb0eed0a-5128-4296-811d-7549d46790a5.vsidx
Binary files differ
diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx
new file mode 100644
index 0000000..ee879dc
--- /dev/null
+++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/f744ef35-4f64-4a61-abee-af81aa222790.vsidx
Binary files differ
diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj
index 6d9ef00..93a7892 100644
--- a/HH.WCS.Mobox3.DSZSH.csproj
+++ b/HH.WCS.Mobox3.DSZSH.csproj
@@ -236,20 +236,17 @@
     <Compile Include="core\WCSCore.cs" />
     <Compile Include="core\WMSCore.cs" />
     <Compile Include="device\TcpClientHelper.cs" />
+    <Compile Include="models\TN_Record_Table.cs" />
     <Compile Include="models\TN_RelocationList_Detail.cs" />
     <Compile Include="models\TN_Relocation_List.cs" />
+    <Compile Include="models\TN_Shipping_Order.cs" />
     <Compile Include="models\TN_SpotCheck_Detail.cs" />
     <Compile Include="models\TN_Spot_Check.cs" />
     <Compile Include="process\TaskProcess.cs" />
     <Compile Include="util\SqlHelper.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" />
     <Compile Include="models\TN_Outbound_Order.cs" />
     <Compile Include="models\TN_Outbound_Detail.cs" />
-    <Compile Include="models\TN_Shift_Detail.cs" />
-    <Compile Include="models\TN_Shift_Order.cs" />
     <Compile Include="device\ProductionLineDevice.cs" />
     <Compile Include="device\ModbusHelper.cs" />
     <Compile Include="device\OpcUaHelper.cs" />
@@ -267,7 +264,6 @@
     <Compile Include="models\TN_Container.cs" />
     <Compile Include="models\TN_Location.cs" />
     <Compile Include="models\TN_Loc_Container.cs" />
-    <Compile Include="models\TN_WorkOrder.cs" />
     <Compile Include="models\TN_Task.cs" />
     <Compile Include="models\TN_Task_Action.cs" />
     <Compile Include="process\DeviceProcess.cs" />
diff --git a/Models/TN_Check_Detail.cs b/Models/TN_Check_Detail.cs
deleted file mode 100644
index 5ebb61f..0000000
--- a/Models/TN_Check_Detail.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-using SqlSugar;
-
-namespace HH.WCS.Mobox3.DSZSH.models {
-    /// <summary>
-    /// 鎶芥鍗曟槑缁�-    /// </summary>
-    [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_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; }
-        /// <summary>
-        /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚
-        /// </summary>
-        public int N_B_STATE { get; set; } = 1; // 鍒涘缓鍗虫墽琛�-    }
-}
diff --git a/Models/TN_Check_Order.cs b/Models/TN_Check_Order.cs
deleted file mode 100644
index ff0936b..0000000
--- a/Models/TN_Check_Order.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-using SqlSugar;
-
-namespace HH.WCS.Mobox3.DSZSH.models {
-    /// <summary>
-    /// 鎶芥鍗�-    /// </summary>
-    [SugarTable("TN_Check_Order")]
-    public class TN_Check_Order : BaseModel {
-        public string S_NO { get; set; }
-        public string S_ITEM_CODE { get; set; }
-        public string S_ITEM_NAME { get; set; }
-        public string S_BATCH_NO { get; set; }
-        public int N_COUNT { get; set; }
-        public string S_END_AREA { get; set; }
-        /// <summary>
-        /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚
-        /// </summary>
-        public int N_B_STATE { get; set; } = 0; // 鍒涘缓鍚庨渶瑕佺‘璁ゆ墽琛�-    }
-}
diff --git a/Models/TN_Inbound_Order.cs b/Models/TN_Inbound_Order.cs
deleted file mode 100644
index a5dadaf..0000000
--- a/Models/TN_Inbound_Order.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HH.WCS.Mobox3.DSZSH.models {
-    /// <summary>
-    /// 鍑哄簱鍗�-    /// </summary>
-    public class TN_Inbound_Order {
-
-        /// <summary>
-        /// 鐗╂枡鍙�-        /// </summary>
-        public string S_CG_CODE { get; set; }
-
-        /// <summary>
-        /// 瀹瑰櫒缂栫爜
-        /// </summary>
-        public string S_CNTR_CODE { get; set; }
-
-        /// <summary>
-        /// 鍏ュ簱鍗曠姸鎬侊細0鏈笅绾�1绛夊緟鎵ц 2瀹屾垚
-        /// </summary>
-        public string S_B_STATE { get; set; }
-    }
-}
diff --git a/Models/TN_Loc_Container.cs b/Models/TN_Loc_Container.cs
index 1ab382f..74ec013 100644
--- a/Models/TN_Loc_Container.cs
+++ b/Models/TN_Loc_Container.cs
@@ -8,8 +8,6 @@
     /// </summary>
     [SugarTable("TN_Loc_Container")]
     public class TN_Loc_Container : BaseModel {
-
-        #region 鍩烘湰灞炴�鍏崇郴
         /// <summary>
         /// 璐т綅鍙�         /// </summary>
@@ -19,9 +17,6 @@
         /// 瀹瑰櫒鍙�         /// </summary>
         public string S_CNTR_CODE { get; set; } 
-
-
-        #endregion
 
         /// <summary>
         /// 瀹瑰櫒绫诲瀷
diff --git a/Models/TN_Location.cs b/Models/TN_Location.cs
index 8c42873..5db9cbf 100644
--- a/Models/TN_Location.cs
+++ b/Models/TN_Location.cs
@@ -9,8 +9,6 @@
 
     [SugarTable("TN_Location")]
     public class TN_Location : BaseModel {
-
-        #region 鍩虹灞炴�鍏崇郴
         /// <summary>
         /// 璐т綅 ID
         /// </summary>
@@ -42,9 +40,29 @@
         public int N_CURRENT_NUM { get; set; } = 0;
 
         /// <summary>
+        /// 琛屽彿
+        /// </summary>
+        public int N_ROW { get; set; } = 0;
+
+        /// <summary>
+        /// 鍒楀彿
+        /// </summary>
+        public int N_COL { get; set; } = 0;
+
+        /// <summary>
         /// 璐т綅鐨勫眰鏁�         /// </summary>
         public int N_LAYER { get; set; } = 1;
+
+        // BEG 鍒濆鍖栬〃鏍间娇鐢�+        public int N_ROW_GROUP { get; set; } = 0;
+        public int N_POS { get; set; } = 1;
+        public int N_DEEP { get; set; } = 1;
+        public int N_ROADWAY { get; set; } = 1;
+        public string S_PURPOSE { get; set; } = "瀛樺偍";
+        public string S_TYPE { get; set; } = "甯歌";
+        public string S_WH_CODE { get; set; } = "鐙北瀛愮煶鍖�;
+        // END
 
         /// <summary>
         /// 涓婇攣鐘舵�鍙凤細0鏃�1鍏ュ簱閿�2鍑哄簱閿�3鍏跺畠閿�@@ -65,7 +83,6 @@
         /// 璐т綅鏄惁鍚敤锛歒鍚敤
         /// </summary>
         public string C_ENABLE { get; set; } = "Y";
-        #endregion
 
         /// <summary>
         /// 璐т綅-瀹瑰櫒 鍏崇郴鏄犲皠
diff --git a/Models/TN_Shift_Detail.cs b/Models/TN_Shift_Detail.cs
deleted file mode 100644
index 66c6ee2..0000000
--- a/Models/TN_Shift_Detail.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-锘�-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HH.WCS.Mobox3.DSZSH.models {
-    /// <summary>
-    /// 绉诲簱鍗曟槑缁�-    /// </summary>
-    internal class TN_Shift_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_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; }
-        /// <summary>
-        /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚
-        /// </summary>
-        public int N_B_STATE { get; set; } = 1; // 鍒涘缓鍗虫墽琛�-    }
-}
diff --git a/Models/TN_Shift_Order.cs b/Models/TN_Shift_Order.cs
deleted file mode 100644
index 2a80962..0000000
--- a/Models/TN_Shift_Order.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HH.WCS.Mobox3.DSZSH.models {
-    /// <summary>
-    /// 绉诲簱鍗�-    /// </summary>
-    public class TN_Shift_Order : BaseModel {
-        public string S_NO { get; set; }
-        public string S_ITEM_CODE { get; set; }
-        public string S_ITEM_NAME { get; set; }
-        public string S_BATCH_NO { get; set; }
-        public int N_COUNT { get; set; }
-        public string S_END_AREA { get; set; }
-        /// <summary>
-        /// 涓氬姟鐘舵�锛�绛夊緟鎵ц 1宸叉墽琛屽緟鐢熸垚浠诲姟 2浠诲姟鎵ц涓�3浠诲姟瀹屾垚
-        /// </summary>
-        public int N_B_STATE { get; set; } = 0; // 鍒涘缓鍚庨渶瑕佺‘璁ゆ墽琛�-    }
-}
diff --git a/Models/TN_WorkOrder.cs b/Models/TN_WorkOrder.cs
deleted file mode 100644
index 735abd8..0000000
--- a/Models/TN_WorkOrder.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using SqlSugar;
-
-namespace HH.WCS.Mobox3.DSZSH.models {
-    /// <summary>
-    /// 鐢熶骇宸ュ崟
-    /// </summary>
-    [SugarTable("TN_WorkOrder")]
-    public class TN_WorkOrder : BaseModel
-    {
-        public string S_WORK_NO { get; set; }//宸ュ崟鍙凤紝涓婚敭
-        public string S_B_STATE { get; set; }//宸ュ崟鐘舵�锛屾柊寤�寮�惎-鏆傚仠-瀹屾垚
-        public string S_ITEM_CODE { get; set; }//鐗╂枡缂栫爜
-        public string S_BATCH_CODE { get; set; }//鎵规鍙�-        public string S_ITEM_SPEC { get; set; }//瑙勬牸
-        public string S_LINE_NO { get; set; }//浜х嚎锛屼笉鑳戒负null
-    }
-}
diff --git a/Program.cs b/Program.cs
index d8c574e..0601b18 100644
--- a/Program.cs
+++ b/Program.cs
@@ -121,7 +121,7 @@
                 tasks.Add(GetTask(WCSCore.Dispatch));
 
                 // 娴嬭瘯锛氭墭鐩樹笅绾�-                tasks.Add(GetTask(Monitor.CheckInbound));
+                //tasks.Add(GetTask(Monitor.CheckInbound));
 
                 // 杞锛氬嚭搴撳崟鐘舵�
                 tasks.Add(GetTask(Monitor.CheckOutboundOrder));
diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index f844780..beda0c6 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -9,6 +9,8 @@
 using HH.WCS.Mobox3.DSZSH.wms;
 
 using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Tsp;
+
 using SqlSugar;
 
 using Swashbuckle.Swagger;
@@ -26,7 +28,7 @@
         /// <param name="model"></param>
         /// <returns></returns>
         public static SimpleResult GoodpackOffline(GoodpackOfflineInfo model) {
-            var taskName = TaskName.濂借繍绠盻婊$涓嬬嚎鍏ュ簱; // 鐢ㄤ簬鐢熸垚浠诲姟绫诲瀷銆佹墦鍗版棩蹇椾俊鎭�+            var taskName = TaskName.H濂借繍绠盻婊$涓嬬嚎鍏ュ簱; // 鐢ㄤ簬鐢熸垚浠诲姟绫诲瀷銆佹墦鍗版棩蹇椾俊鎭�             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
@@ -48,10 +50,11 @@
                     .Where(l => l.S_CODE == model.StartLoc) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣�+                    .Where(l => Settings.AreaMap[AreaName.M婊$鎿嶄綔鍖篯.Contains(l.S_AREA_CODE))
                     .First();
 
                 if (startLoc == null) {
-                    info = $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�;
+                    info = $"鍦�{AreaName.M婊$鎿嶄綔鍖簘'涓病鏈夋壘鍒拌捣鐐硅揣浣�{model.StartLoc}'锛屾垨涓嶅叿澶囧彇璐ц姹傦細鏈笂閿併�缁戝畾鍓嶆棤璐х墿";
                     LogHelper.Info(info);
                     return NewSimpleResult(3, info);
                 }
@@ -65,7 +68,7 @@
 
                 // TODO 婊$鍏ュ簱绠楁硶寰呬紭鍖�                 var endLoc = db.Queryable<TN_Location>()
-                    .Where(l => Settings.AreaMap[AreaName.婊℃墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                    .Where(l => Settings.AreaMap[AreaName.M婊$璐ф灦鍖篯.Contains(l.S_AREA_CODE)) // 缁堢偣璐у尯绗﹀悎浠诲姟瑕佹眰
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
                     .OrderBy(l => l.N_LAYER)
@@ -82,6 +85,21 @@
 
                 LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�                 LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+
+                // TODO
+                var record = new TN_Record_Table {
+                    S_ITEM_CODE = cgDetail.S_ITEM_CODE,
+                    S_BATCH_NO= cgDetail.S_BATCH_NO,
+                    S_ITEM_NAME= cgDetail.S_ITEM_NAME,
+                    S_START_LOC = startLoc.S_CODE,
+                    S_END_LOC = endLoc.S_CODE,
+                    S_CNTR_CODE = cntId,
+                    S_ITEM_SPEC = cgDetail.S_ITEM_SPEC,
+                    S_NET_WEIGHT= cgDetail.S_NET_WEIGHT,
+                    S_QUALITY_GRADE= cgDetail.S_QUALITY_GRADE,
+                    S_STANDARD = cgDetail.S_STANDARD,
+                    S_TASK_NO = task.S_CODE,
+                };
 
                 using (var tran = db.Ado.UseTran()) {
                     if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
@@ -241,7 +259,7 @@
         /// <param name="model"></param>
         /// <returns></returns>
         public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) {
-            var taskName = TaskName.鎵樼洏_绌烘墭鍏ュ簱;
+            var taskName = TaskName.T鎵樼洏_绌烘墭鍏ュ簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
@@ -250,6 +268,7 @@
                     .Where(l => l.S_CODE == model.StartLoc) // 鎸囧畾锛氳捣鐐硅揣浣�                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓嶈揣浣嶄负绌�+                    .Where(l => Settings.AreaMap[AreaName.K绌烘墭鍏ュ簱鎺ラ┏鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰
                     .First();
 
                 if (startLoc == null) {
@@ -278,7 +297,7 @@
 
                 // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼
                 var endLoc = db.Queryable<TN_Location>()
-                    .Where(l => Settings.AreaMap[AreaName.绌烘墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                    .Where(l => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) // 缁堢偣璐у尯绗﹀悎浠诲姟瑕佹眰
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 0)
                     .OrderBy(l => new { l.N_LAYER, row=SqlFunc.Desc(l.S_AREA_CODE) })
@@ -353,7 +372,7 @@
         /// </summary>
         /// <returns></returns>
         public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) {
-            var taskName = TaskName.濂借繍绠盻绌虹鍏ュ簱;
+            var taskName = TaskName.H濂借繍绠盻绌虹鍏ュ簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
@@ -361,6 +380,7 @@
                     .Where(l => l.S_CODE == model.StartLoc)
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
                     .Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓嶈揣浣嶄负绌�+                    .Where(l => Settings.AreaMap[AreaName.K绌虹鍏ュ簱鎺ラ┏鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰
                     .First();
 
                 if (startLoc == null) {
@@ -389,7 +409,7 @@
 
                 // TODO 鏆傚畾閫夋嫨鏈�綆灞傞『搴忓叆搴擄紝鍚庨潰寰呬慨鏀�                 var endLoc = db.Queryable<TN_Location>()
-                    .Where(l => Settings.AreaMap[AreaName.绌虹瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                    .Where(l => Settings.AreaMap[AreaName.K绌虹璐ф灦鍖篯.Contains(l.S_AREA_CODE))
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
                     .Where(l => l.N_CURRENT_NUM == 0)
                     .OrderBy(l => new { l.N_LAYER })
@@ -463,9 +483,8 @@
         /// <param name="model"></param>
         /// <returns></returns>
         public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) {
-            var taskName = TaskName.鎵樼洏_绌烘墭涓婄嚎;
+            var taskName = TaskName.T鎵樼洏_绌烘墭涓婄嚎;
             var db = new SqlHelper<object>().GetInstance();
-            var taskInfo = Settings.TaskMap[taskName];
             var info = "";
             try {
                 // 鎵剧鍚堢墿鏂欎俊鎭殑璐т綅
@@ -505,7 +524,7 @@
 
                 var startLoc = db.Queryable<TN_Location>()
                     .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) // 鑱旇〃锛氳揣浣嶅鍣ㄥ叧绯昏〃
-                    .Where(l => taskInfo.StartAreas.Contains(l.S_AREA_CODE)) // 闄愬畾鍦ㄧ┖鎵樺瓨鏀惧尯涓壘瀹瑰櫒璐т綅
+                    .Where(l => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE)) // 闄愬畾鍦ㄧ┖鎵樺瓨鏀惧尯涓壘瀹瑰櫒璐т綅
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭病鏈夐攣鐘舵�
                     .Where(l => l.N_CURRENT_NUM == 1) // 绛涢�锛氭湁璐ц揣浣�                     .Where((l, c) => c.S_CNTR_CODE == model.CntId) // 鎵炬寚瀹氬鍣ㄥ彿
@@ -518,8 +537,7 @@
                 }
 
                 var endLoc = db.Queryable<TN_Location>()
-                    .Where(l => Settings.AreaMap[AreaName.鍖呰鍖篯.Contains(l.S_AREA_CODE))
-                    .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE))
+                    //.Where(l => Settings.AreaMap[AreaName.B鍖呰鍖篯.Contains(l.S_AREA_CODE))
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
                     .First();
@@ -587,14 +605,13 @@
         /// <param name="model"></param>
         /// <returns></returns>
         public static SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) {
-            var taskName = TaskName.濂借繍绠盻绌虹涓婄嚎;
+            var taskName = TaskName.H濂借繍绠盻绌虹涓婄嚎;
             var db = new SqlHelper<object>().GetInstance();
-            var taskInfo = Settings.TaskMap[taskName];
             var info = "";
             try {
                 var startLoc = db.Queryable<TN_Location>()
                     .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
-                    .Where(l => taskInfo.StartAreas.Contains(l.S_AREA_CODE))
+                    .Where(l => Settings.AreaMap[AreaName.K绌虹璐ф灦鍖篯.Contains(l.S_AREA_CODE))
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
                     .Where(l => l.N_CURRENT_NUM == 1)
                     .Where((l, c) => c.S_CNTR_CODE == model.CntId)
@@ -615,8 +632,7 @@
                 //}
 
                 var endLoc = db.Queryable<TN_Location>()
-                    .Where(l => Settings.AreaMap[AreaName.鍖呰鍖篯.Contains(l.S_AREA_CODE))
-                    .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE))
+                    .Where(l => Settings.AreaMap[AreaName.B鍖呰鍖篯.Contains(l.S_AREA_CODE))
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 0)
                     .First();
@@ -676,87 +692,14 @@
             }
         }
 
-        /// <summary>
-        /// 鍒涘缓鎶芥鍗�-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public static SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) {
-            var billName = "鎶芥鍗�;
-            var db = new SqlHelper<object>().GetInstance();
-            var info = "";
-            try {
-                var orderNo = GenerateOrderNo("鎶芥鍗曞彿", "CN");
-
-                var order = new TN_Check_Order {
-                    S_NO = orderNo,
-                    S_ITEM_CODE = model.ItemCode,
-                    //S_ITEM_NAME = model.ItemName,
-                    S_BATCH_NO = model.BatchNo,
-                    N_COUNT = model.Qty,
-                    S_END_AREA = model.EndArea,
-                };
-
-                var cgDetailList = SelectCgByTotalQty(model);
-                if (cgDetailList.Count == 0) {
-                    return NewSimpleResult(3, "娌℃湁鍚堥�鐨勭墿鏂欏彲浠ユ娊妫�);
-                }
-
-                var detailList = new List<TN_Check_Detail>();
-                foreach (var cgDetail in cgDetailList) {
-                    var detail = new TN_Check_Detail {
-                        S_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,
-                    };
-
-                    detailList.Add(detail);
-
-                    cgDetail.N_ITEM_STATE = 3;
-                    cgDetail.S_ITEM_STATE = "鎶介獙涓�;
-                }
-
-                using (var tran = db.Ado.UseTran()) {
-                    if (db.Insertable<TN_Check_Order>(order).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        info = $"鐢熸垚{billName}澶辫触锛� + JsonConvert.SerializeObject(order);
-                        LogHelper.Info(info);
-                        return NewSimpleResult(2, info);
-                    }
-
-                    if (db.Insertable<TN_Outbound_Detail>(detailList).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        info = $"鐢熸垚{billName}鏄庣粏澶辫触";
-                        LogHelper.Info(info);
-                        return NewSimpleResult(4, info);
-                    }
-
-                    if (db.Updateable<TN_CG_Detail>(cgDetailList).UpdateColumns(it => new { 
-                        it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        info = $"鏇存柊鐗╂枡鐘舵�澶辫触";
-
-                    }
-
-                    tran.CommitTran();
-                }
-                return NewSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛");
-            }
-            catch (Exception ex) {
-                info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
-                LogHelper.InfoEx(ex);
-                return NewSimpleResult(1, info);
-            }
-        }
+        
         /// <summary>
         /// 鎶芥-鍚堟牸鍥炲簱(PDA)
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
         public static SimpleResult QualifiedBack(QualifiedBackInfo model) {
-            var taskName = TaskName.鎶芥_鍚堟牸鍥炲簱;
+            var taskName = TaskName.C鎶芥_鍚堟牸鍥炲簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
@@ -782,6 +725,7 @@
                     .Where(l => l.S_CODE == locCntrRel.S_LOC_CODE)
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 1)
+                    .Where(l => Settings.AreaMap[AreaName.C鎶芥鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰
                     .First();
 
                 if (startLoc == null) {
@@ -793,14 +737,14 @@
                 var endLoc = new TN_Location();
                 if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") {
                     endLoc = db.Queryable<TN_Location>()
-                        .Where(l => Settings.AreaMap[AreaName.婊℃墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                        .Where(l => Settings.AreaMap[AreaName.M婊℃墭璐ф灦鍖篯.Contains(l.S_AREA_CODE))
                         .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(l => l.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
                         .First();
                 }
                 else if (locCntrRel.S_CNTR_TYPE == "濂借繍绠�) {
                     endLoc = db.Queryable<TN_Location>()
-                        .Where(l => Settings.AreaMap[AreaName.婊$瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                        .Where(l => Settings.AreaMap[AreaName.M婊$璐ф灦鍖篯.Contains(l.S_AREA_CODE))
                         .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(l => l.N_CURRENT_NUM == 0)
                         .First();
@@ -876,16 +820,23 @@
             }
         }
         public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) {
-            var taskName = TaskName.鎶芥_涓嶅悎鏍肩Щ搴�
+            var taskName = TaskName.C鎶芥_涓嶅悎鏍肩Щ搴�
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
+
+                if (!Settings.AreaMap[AreaName.C鎶芥寮傚父鍖篯.Contains(model.EndArea)) {
+                    info = $"缁堢偣搴撳尯{model.EndArea}涓嶅睘浜巤AreaName.C鎶芥寮傚父鍖簘";
+                    LogHelper.Info(info);
+                    return NewSimpleResult(1, info);
+                }
 
                 var cgDetail = db.Queryable<TN_CG_Detail>()
                     .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_CNTR_CODE == model.CntrCode)
                     .First();
 
                 if (cgDetail == null) {
+
                     return NewSimpleResult(2, "娌℃湁鎵惧埌寰呭洖搴撶殑鎶芥鐗╂枡");
                 }
 
@@ -903,6 +854,7 @@
                     .Where(l => l.S_CODE == locCntrRel.S_LOC_CODE)
                     .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(l => l.N_CURRENT_NUM == 1)
+                    .Where(l => Settings.AreaMap[AreaName.C鎶芥鍖篯.Contains(l.S_AREA_CODE)) // 璧风偣璐у尯绗﹀悎浠诲姟瑕佹眰
                     .First();
 
                 if (startLoc == null) {
@@ -984,7 +936,7 @@
         }
 
         public static SimpleResult RestBack(RestBackInfo model) {
-            var taskName = TaskName.灏剧鍥炲簱;
+            var taskName = TaskName.W灏剧鍥炲簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
@@ -1005,14 +957,14 @@
                 var endLoc = new TN_Location();
                 if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") {
                     endLoc = db.Queryable<TN_Location>()
-                        .Where(l => Settings.AreaMap[AreaName.婊℃墭瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                        .Where(l => Settings.AreaMap[AreaName.M婊℃墭璐ф灦鍖篯.Contains(l.S_AREA_CODE))
                         .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣�                         .First();
                 }
                 else if (locCntrRel.S_CNTR_TYPE =="濂借繍绠�){
                     endLoc = db.Queryable<TN_Location>()
-                        .Where(l => Settings.AreaMap[AreaName.婊$瀛樻斁鍖篯.Contains(l.S_AREA_CODE))
+                        .Where(l => Settings.AreaMap[AreaName.M婊$璐ф灦鍖篯.Contains(l.S_AREA_CODE))
                         .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(l => l.N_CURRENT_NUM == 0) // 璧风偣缁戝畾鍓嶆病鏈夊鍣�                         .First();
@@ -1079,56 +1031,6 @@
                 info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
                 LogHelper.InfoEx(ex);
                 return NewSimpleResult(1, info);
-            }
-        }
-
-        public static List<TN_CG_Detail> SelectCgByTotalQty(CreateCheckOrderInfo model) {
-            var db = new SqlHelper<object>().GetInstance();
-            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;
             }
         }
 
@@ -1336,106 +1238,10 @@
             }
         }
 
-        /// <summary>
-        /// 绉诲簱-鍒涘缓绉诲簱浠诲姟(WMS)
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public static SimpleResult CreateShiftOrder(CreateShiftOrderInfo model) {
-            var billName = "鎶芥鍗�;
-            var db = new SqlHelper<object>().GetInstance();
-            var info = "";
-            try {
-                var orderNo = GenerateOrderNo("鎶芥鍗曞彿", "CN");
-
-                var order = new TN_Check_Order {
-                    S_NO = orderNo,
-                    S_ITEM_CODE = model.ItemCode,
-                    //S_ITEM_NAME = model.ItemName,
-                    S_BATCH_NO = model.BatchNo,
-                    //N_COUNT = model.Qty,
-                    S_END_AREA = model.EndArea,
-                };
-
-                var cgDetailList = SelectShiftItem(model);
-                if (cgDetailList.Count == 0) {
-                    return NewSimpleResult(3, "娌℃湁绗﹀悎瑕佹眰鐨勭墿鏂欓渶瑕佺Щ搴�);
-                }
-
-                var detailList = new List<TN_Check_Detail>();
-                foreach (var cgDetail in cgDetailList) {
-                    var detail = new TN_Check_Detail {
-                        S_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,
-                    };
-
-                    detailList.Add(detail);
-
-                    cgDetail.N_ITEM_STATE = 3;
-                    cgDetail.S_ITEM_STATE = "鎶介獙涓�;
-                }
-
-                using (var tran = db.Ado.UseTran()) {
-                    if (db.Insertable<TN_Check_Order>(order).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        info = $"鐢熸垚{billName}澶辫触锛� + JsonConvert.SerializeObject(order);
-                        LogHelper.Info(info);
-                        return NewSimpleResult(2, info);
-                    }
-
-                    if (db.Insertable<TN_Outbound_Detail>(detailList).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        info = $"鐢熸垚{billName}鏄庣粏澶辫触";
-                        LogHelper.Info(info);
-                        return NewSimpleResult(4, info);
-                    }
-
-                    if (db.Updateable<TN_CG_Detail>(cgDetailList).UpdateColumns(it => new { 
-                        it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        info = $"鏇存柊鐗╂枡鐘舵�澶辫触";
-
-                    }
-
-                    tran.CommitTran();
-                }
-                return NewSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛");
-            }
-            catch (Exception ex) {
-                info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
-                LogHelper.InfoEx(ex);
-                return NewSimpleResult(1, info);
-            }
-        }
-
-        public static List<TN_CG_Detail> SelectShiftItem(CreateShiftOrderInfo model) {
-            var db = new SqlHelper<object>().GetInstance();
-            var result = new List<TN_CG_Detail>();
-            var info = "";
-            try {
-                var targetItemList = db.Queryable<TN_CG_Detail>()
-                    .Where(a => a.S_ITEM_CODE == model.ItemCode)
-                    .Where(a => a.S_BATCH_NO == model.BatchNo)
-                    .Where(a => a.N_ITEM_STATE != 3 && a.S_ITEM_CODE != "鎶芥涓�)
-                    .OrderBy(a => a.N_ITEM_NUM, OrderByType.Asc)
-                    .ToList();
-
-                return targetItemList;
-            }
-            catch (Exception ex) {
-                info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
-                LogHelper.InfoEx(ex);
-                return result;
-            }
-        }
-
         private static string GenerateOrderNo(string snType, string prefix) {
             var id = SYSHelper.GetSerialNumber(snType, prefix);
             var date = DateTime.Now.ToString("yyMMdd");
-            return $"ON{date}{id.ToString().PadLeft(4, '0')}";
+            return $"{prefix}{date}{id.ToString().PadLeft(4, '0')}";
         }
 
         /// <summary>
@@ -1443,7 +1249,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public static WmsResult CgInfoSync(CgInfoSyncInfo model) {
+        public static MesResult CgInfoSync(CgInfoSyncInfo model) {
             var db = new SqlHelper<object>().GetInstance();
             var random = new Random();
             var info = "";
@@ -1470,7 +1276,7 @@
                     if (db.Insertable<TN_CG_Detail>(detail).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
                         info = "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail);
-                        return NewWmsResult(2, info);
+                        return NewMesResult(2, info);
                     }
 
                     //if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
@@ -1483,12 +1289,26 @@
                 }
 
                 info = "鎻掑叆鐗╂枡淇℃伅鎴愬姛";
-                return NewWmsResult(0, info);
+                return NewMesResult(0, info);
             }
             catch (Exception ex) {
                 info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
                 LogHelper.InfoEx(ex);
-                return NewWmsResult(1, info);
+                return NewMesResult(1, info);
+            }
+        }
+
+        public static ErpResult ErpSendOutboundOrder(ErpSendOutboundOrderInfo model) {
+            var db = new SqlHelper<object>().GetInstance();
+            var info = "";
+            try {
+                // TODO
+                return NewErpResult(0, info);
+            }
+            catch (Exception ex) {
+                info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
+                LogHelper.InfoEx(ex);
+                return NewErpResult(1, info);
             }
         }
     }
diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index 5a5ac90..14b9366 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -530,7 +530,7 @@
         /// <summary>
         /// MES API 鍝嶅簲缁撴灉绫�         /// </summary>
-        public class WmsResult {
+        public class MesResult {
             /// <summary>
             /// 鎺ュ彛璋冪敤缁撴灉  1-鎴愬姛  0-澶辫触
             /// </summary>
@@ -550,12 +550,38 @@
             public string Data { get; set; }
         }
 
-        public static WmsResult NewWmsResult(int code, string message = "", bool printLog = true) {
-            return new WmsResult {
+        public static MesResult NewMesResult(int code, string message = "", bool printLog = true) {
+            return new MesResult {
                 Result = code,
                 Success = code == 0, // 浠呭綋code=0鏃讹紝success=true
                 Data = message,
             };
         }
+
+        /// <summary>
+        /// 鍙嶉 ERP 鐨勬暟鎹被鍨�+        /// </summary>
+        public class ErpResult {
+            [JsonProperty("code")]
+            public int Code { get; set; }
+            [JsonProperty("message")]
+            public string Message { get; set; }
+        }
+
+        public static ErpResult NewErpResult(int code, string message) {
+            return new ErpResult { Code = code, Message = message };
+        }
+
+        /// <summary>
+        /// ERP 涓嬪彂鍑哄簱浠诲姟鐨勬暟鎹被鍨�+        /// </summary>
+        public class ErpSendOutboundOrderInfo {
+            public string ErpNo { get; set; } // ERP 鍗曞彿
+            
+        }
+
+        public class PickUpReturnErpInfo {
+            public string LocCode { get; set; }
+        }
     }
 }
diff --git a/api/DebugController.cs b/api/DebugController.cs
index 425fc6e..0a242b0 100644
--- a/api/DebugController.cs
+++ b/api/DebugController.cs
@@ -66,9 +66,11 @@
         /// <returns></returns>
         [HttpPost]
         [Route("CreateDatabase")]
-        public string CreateDatabase(CoverInfo model) {
-            var cover = model.IsCover;
+        public string CreateDatabase(FalseOk model) {
             try {
+                if (model.JumpOut) {
+                    return "璺冲嚭";
+                }
                 var db = new SqlHelper<object>().GetInstance();
 
                 var entityTypes = new Type[] { 
@@ -90,35 +92,84 @@
                     //typeof(TN_Shift_Order),
                     //typeof(TN_Shift_Detail)
 
-                    typeof(TN_Container_Item),
+                    //typeof(TN_Container_Item),
                 };
 
-                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 areaNameList = new List<string>();
+                //foreach (var area in Settings.Areas) {
+                //    areaNameList.AddRange(area.Codes);
+                //}
 
-                        // 鍒涘缓鏂拌〃
-                        db.CodeFirst.InitTables(entityTypes);
+                //var locationList = new List<TN_Location>();
+                //foreach (var area in areaNameList) {
+                //    int i = 0;
+                //    int j = 0;
+                //    int k = 0;
 
-                        //db.CodeFirst.BackupTable().InitTables(entityTypes);
-                    }
-                    else {
-                        db.CodeFirst.InitTables(entityTypes);
-                    }
+                //    if (area == "KXHJQ" || area == "MTHJQ" || area == "MXHJQ") {
+                //        for (i = 1; i <= 4; i++) {
+                //            for (j = 1; j <= 5; j++) {
+                //                for (k = 1; k <= 3; k++) {
+                //                    locationList.Add(new TN_Location() {
+                //                        N_ROW = i,
+                //                        N_COL = j,
+                //                        N_LAYER = k,
+                //                        S_AREA_CODE = area,
+                //                        S_CODE = $"{area}-{i.ToString().PadLeft(2, '0')}-{j.ToString().PadLeft(2, '0')}" +
+                //                        $"-{k.ToString().PadLeft(2, '0')}"
+                //                    });
+                //                }
+                //            }
+                //        }
+                //        continue;
+                //    }
 
-                    tran.CommitTran();
-                }
+                //    if (area == "BZQ") {
+                //        for (i = 1; i <= 2; i++) {
+                //            for (j = 1; j <= 2; j++) {
+                //                locationList.Add(new TN_Location() {
+                //                    N_ROW = i,
+                //                    N_COL = j,
+                //                    S_AREA_CODE = area,
+                //                    S_CODE = $"{area}-{i.ToString().PadLeft(2, '0')}-{j.ToString().PadLeft(2, '0')}"
+                //                });
+                //            }
+                //        }
+                //        continue;
+                //    }
+
+                //    i = 1;
+                //    for (j = 1; j <= 5; j++) {
+                //        locationList.Add(new TN_Location() {
+                //            N_ROW = i,
+                //            N_COL = j,
+                //            S_AREA_CODE = area,
+                //            S_CODE = $"{area}-{i.ToString().PadLeft(2, '0')}-{j.ToString().PadLeft(2, '0')}"
+                //        });
+                //    }
+
+                    
+                //}
+
+
+
+                //using (var tran = db.Ado.UseTran()) {
+                //    //db.CodeFirst.InitTables(entityTypes);
+                //    if (db.Insertable<TN_Location>(locationList).ExecuteCommand() <= 0) {
+                //        tran.RollbackTran();
+                //        return "澶辫触";
+                //    }
+
+                //    tran.CommitTran();
+
+                    
+                //}
 
             }
             catch (Exception ex) {
                 LogHelper.Info($"鍙戠敓浜嗗紓甯�);
                 return "鍒濆鍖栨暟鎹簱閿欒" + ex.Message;
             }
-
             return "鎴愬姛";
         }
 
@@ -212,7 +263,7 @@
         /// <returns></returns>
         [HttpPost]
         [Route("InsertContainerItemByCgDetail")]
-        public string InsertContainerItemByCgDetail(CoverInfo _) {
+        public string InsertContainerItemByCgDetail(FalseOk _) {
             var db = new SqlHelper<object>().GetInstance();
             try {
                 var cgDetailList = db.Queryable<TN_CG_Detail>().ToList();
@@ -287,8 +338,8 @@
         public int NextState { set; get; }
     }
 
-    public class CoverInfo {
-        public bool IsCover { set; get; } = false;
+    public class FalseOk {
+        public bool JumpOut { set; get; } = true;
     }
 
     public class InsertCntrItemInfo {
diff --git a/api/ErpController.cs b/api/ErpController.cs
index 1e46eb3..48260b4 100644
--- a/api/ErpController.cs
+++ b/api/ErpController.cs
@@ -2,7 +2,7 @@
 using Newtonsoft.Json;
 using System.Collections.Generic;
 using System.Web.Http;
-
+using static HH.WCS.Mobox3.DSZSH.api.OtherModel;
 
 namespace HH.WCS.Mobox3.DSZSH.api {
     /// <summary>
@@ -11,7 +11,17 @@
     [RoutePrefix("api")]
     public class ErpController : ApiController {
 
+        /// <summary>
+        /// ERP涓嬪彂鍑哄簱浠诲姟
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public ErpResult ErpSendOutboundOrder(ErpSendOutboundOrderInfo model) {
+            var apiName = "ERP涓嬪彂鍑哄簱浠诲姟";
+            LogHelper.InfoApi(apiName, model);
 
+            return ApiHelper.ErpSendOutboundOrder(model);
+        }
 
     }
 }
\ No newline at end of file
diff --git a/api/MoboxController.cs b/api/MoboxController.cs
index ac5f2e8..9a097a3 100644
--- a/api/MoboxController.cs
+++ b/api/MoboxController.cs
@@ -27,27 +27,6 @@
             return ApiHelper.GoodpackOffline(model);
         }
 
-        ///// <summary>
-        ///// 绌烘墭/绌虹鍏ュ簱缁戝畾(PDA)
-        ///// </summary>
-        ///// <param name="model"></param>
-        ///// <returns></returns>
-        //public SimpleResult EmptyBind(EmptyBindInfo model) {
-        //    LogHelper.InfoApi("绌烘墭/绌虹缁戝畾", model);
-
-        //    if (model.CntrType == "鎵樼洏") {
-        //        //LogHelper.Info($"瑙﹀彂API锛氱┖鎵樼粦瀹�" + JsonConvert.SerializeObject(model), "API");
-        //        return ApiHelper.EmptyBindPallet(model);
-        //    }
-        //    else if (model.CntrType == "濂借繍绠�) {
-        //        //LogHelper.Info($"瑙﹀彂API锛氱┖绠辩粦瀹�" + JsonConvert.SerializeObject(model), "API");
-        //        return ApiHelper.EmptyBindGoodpack(model);
-        //    }
-        //    else {
-        //        return BuildSimpleResult(-1, $"涓嶅悎娉曠殑瀹瑰櫒绫诲瀷锛�{model.CntrType}'");
-        //    }
-        //}
-
         /// <summary>
         /// 绌烘墭/绌虹鍏ュ簱(PDA)
         /// </summary>
@@ -69,38 +48,6 @@
                 return NewSimpleResult(-1, $"瀹瑰櫒绫诲瀷 '{model.CntrType}' 涓嶅悎娉曪細搴斾负 '绌烘墭鐩� 鎴�'绌哄ソ杩愮'");
             }
         }
-
-        ///// <summary>
-        ///// 绌烘墭/绌虹涓婄嚎(PDA)
-        ///// </summary>
-        ///// <returns>
-        ///// 浜哄伐浣跨敤PDA鎵爜锛屾牴鎹墿鏂欑被鍨嬪垽鏂笂绾跨┖鎵�绌虹
-        ///// </returns>
-        //public SimpleResult EmptyOnline(EmptyOnlineInfo model) {
-        //    var db = DbHelper.GetDbClient();
-        //    var locCntrRel = db.Queryable<TN_Loc_Container>()
-        //        .LeftJoin<TN_CG_Detail>((lc, cd) => lc.S_CNTR_CODE == cd.S_CNTR_CODE)
-        //        .Where((lc, cd) => cd.S_ITEM_CODE == model.ItemCode)
-        //        .First();
-
-        //    if (locCntrRel.S_CNTR_TYPE == "鎵樼洏") {
-
-        //        return ApiHelper.EmptyOnlinePallet(new EmptyOnlinePalletInfo {
-        //            CntId = locCntrRel.S_CNTR_CODE,
-        //            EndLoc = model.EndLoc
-        //        });
-        //    }
-        //    else if (locCntrRel.S_CNTR_TYPE == "濂借繍绠�) {
-
-        //        return ApiHelper.EmptyOnlineGoodpack(new EmptyOnlineGoodpackInfo {
-        //            CntId = locCntrRel.S_CNTR_CODE,
-        //            EndLoc = model.EndLoc
-        //        });
-        //    }
-        //    else {
-        //        return BuildSimpleResult(-1, $"涓嶅悎娉曠殑瀹瑰櫒绫诲瀷锛�{locCntrRel.S_CNTR_CODE}'");
-        //    }
-        //}
 
         /// <summary>
         /// 鎵樼洏-绌烘墭涓婄嚎(PDA)
@@ -127,24 +74,6 @@
             LogHelper.InfoApi(apiName, model);
             return ApiHelper.EmptyOnlineGoodpack(model);
         }
-
-        ///// <summary>
-        ///// 鍚堟牸鍥炲簱/涓嶅悎鏍肩Щ搴�-        ///// </summary>
-        ///// <param name="model"></param>
-        ///// <returns></returns>
-        //[HttpPost]
-        //[Route("CheckShift")]
-        //public SimpleResult CheckShift(CheckShiftInfo model) {
-        //    LogHelper.InfoApi("鍚堟牸鍥炲簱/涓嶅悎鏍肩Щ搴�, model);
-
-        //    if (model.Qualified) {
-        //        return ApiHelper.QualifiedBack(model);
-        //    }
-        //    else {
-        //        return ApiHelper.UnqualifiedShift(model);
-        //    }
-        //}
 
         /// <summary>
         /// 鍚堟牸鍥炲簱(PDA)
@@ -202,26 +131,5 @@
             }
         }
 
-        ///// <summary>
-        ///// 鎶芥-鍒涘缓鎶芥鍗�WMS)
-        ///// </summary>
-        ///// <param name="model"></param>
-        ///// <returns></returns>
-        //[HttpPost]
-        //[Route("create-check-order")]
-        //public SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) {
-        //    return ApiHelper.CreateCheckOrder(model);
-        //}
-
-        ///// <summary>
-        ///// 绉诲簱-鍒涘缓绉诲簱浠诲姟(WMS)
-        ///// </summary>
-        ///// <param name="model"></param>
-        ///// <returns></returns>
-        //[HttpPost]
-        //[Route("shift-storage")]
-        //public SimpleResult CreateShiftOrder(CreateShiftOrderInfo model) {
-        //    return ApiHelper.CreateShiftOrder(model);
-        //}
     }
 }
diff --git a/api/WMSController.cs b/api/WMSController.cs
index 6a3ecb7..ef806ad 100644
--- a/api/WMSController.cs
+++ b/api/WMSController.cs
@@ -18,7 +18,9 @@
         /// <returns></returns>
         [HttpPost]
         //[Route("WMS/CgInfoSync")]
-        public WmsResult CgInfoSync(CgInfoSyncInfo model) {
+        public MesResult CgInfoSync(CgInfoSyncInfo model) {
+            var apiName = "鍗氬疄鐗╂枡淇℃伅涓嬪彂鍚屾(MES)";
+            LogHelper.InfoApi(apiName, model);
             return ApiHelper.CgInfoSync(model);
         }
     }
diff --git a/config/config.json b/config/config.json
index 4c45dee..1a177bf 100644
--- a/config/config.json
+++ b/config/config.json
@@ -1,6 +1,7 @@
 {
     "WebApiUrl": "http://192.168.1.141:8901",
     "NdcApiUrl": "http://127.0.0.1:5201/api/order/",
+    "ErpApiUrl": "http://127.0.0.1:8085/api/",
     "SqlServer": "Data Source=192.168.1.87;Initial Catalog=AMS_OIMobox;User ID=sa;Password=123456;",
     "TcpServerIp": "127.0.0.1",
     "TcpServerPort": 8085,
@@ -10,28 +11,28 @@
             "Codes": [ "BZQ" ]
         },
         {
-            "Name": "鎿嶄綔鍖�,
-            "Codes": [ "CZQ-KX", "CZQ-MX" ]
+            "Name": "绌虹鎿嶄綔鍖�,
+            "Codes": [ "KXCZQ" ]
         },
         {
-            "Name": "璐ф灦鍖�,
-            "Codes": [ "HJQ-KX", "HJQ-MT", "HJQ-MT" ]
+            "Name": "婊$鎿嶄綔鍖�,
+            "Codes": [ "MXCZQ" ]
         },
         {
             "Name": "绌烘墭瀛樻斁鍖�,
             "Codes": [ "KTCFQ" ]
         },
         {
-            "Name": "绌虹瀛樻斁鍖�,
-            "Codes": [ "HJQ-KX" ]
+            "Name": "绌虹璐ф灦鍖�,
+            "Codes": [ "KXHJQ" ]
         },
         {
-            "Name": "婊℃墭瀛樻斁鍖�,
-            "Codes": [ "HJQ-MT" ]
+            "Name": "婊℃墭璐ф灦鍖�,
+            "Codes": [ "MTHJQ" ]
         },
         {
-            "Name": "婊$瀛樻斁鍖�,
-            "Codes": [ "HJQ-MX" ]
+            "Name": "婊$璐ф灦鍖�,
+            "Codes": [ "MXHJQ" ]
         },
         {
             "Name": "鎶芥鍖�,
@@ -42,72 +43,28 @@
             "Codes": [ "CJYCQ" ]
         },
         {
-            "Name": "绌虹鎿嶄綔鍖�,
-            "Codes": [ "CZQ-KX" ]
-        },
-        {
-            "Name": "婊$鎿嶄綔鍖�,
-            "Codes": [ "CZQ-MX" ]
-        },
-        {
             "Name": "绌烘墭鍏ュ簱鎺ラ┏鍖�,
-            "Codes": [ "JBQ-KT" ]
+            "Codes": [ "KTJBQ" ]
         },
         {
             "Name": "绌虹鍏ュ簱鎺ラ┏鍖�,
-            "Codes": [ "JBQ-KX1", "JBQ-KX2" ]
+            "Codes": [ "KXJBQ1", "KXJBQ2" ]
         },
         {
-            "Name": "姹借溅鍑哄簱澶囪揣鍖�,
-            "Codes": [ "CKQ-QC" ]
+            "Name": "姹借溅鍑哄簱鍖�,
+            "Codes": [ "QCCKQ" ]
         },
         {
-            "Name": "鐏溅鍑哄簱澶囪揣鍖�,
-            "Codes": [ "CKQ-HC" ]
-        }
-    ],
-    "Tasks": [
-        {
-            "Name": "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱",
-            "StartAreas": [ "BZQ" ],
-            "EndAreas": [ "HJQ-MT" ]
+            "Name": "鐏溅鍑哄簱鍖�,
+            "Codes": [ "HCCKQ" ]
         },
         {
-            "Name": "濂借繍绠�婊$涓嬬嚎鍏ュ簱",
-            "StartAreas": [ "CZQ-MX" ],
-            "EndAreas": [ "HJQ-MX" ]
+            "Name": "姹借溅澶囪揣鍖�,
+            "Codes": [ "QCBHQ" ]
         },
         {
-            "Name": "鎵樼洏-绌烘墭涓婄嚎",
-            "StartAreas": [ "KTCFQ" ],
-            "EndAreas": [ "BZQ" ]
-        },
-        {
-            "Name": "濂借繍绠�绌虹涓婄嚎",
-            "StartAreas": [ "HJQ1" ],
-            "EndAreas": [ "CZQ1" ]
-        },
-        {
-            "Name": "鎵樼洏-绌烘墭鍏ュ簱",
-            "StartAreas": [ "KTRKJBQ" ],
-            "EndAreas": [ "KTCFQ" ]
-        },
-        {
-            "Name": "濂借繍绠�绌虹鍏ュ簱",
-            "StartAreas": [ "KXRKJBQ1" ],
-            "EndAreas": [ "HJQ1" ]
-        },
-        {
-            "Name": "鎶芥-鍑哄簱"
-        },
-        {
-            "Name": "鎶芥-鍚堟牸鍥炲簱"
-        },
-        {
-            "Name": "鎶芥-涓嶅悎鏍肩Щ搴�
-        },
-        {
-            "Name": "鎴愬搧鑳跺嚭搴�
+            "Name": "鐏溅澶囪揣鍖�,
+            "Codes": [ "HCBHQ" ]
         }
     ],
     "ProductionLines": [
diff --git a/core/Monitor.cs b/core/Monitor.cs
index b31eb12..9c58898 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -21,7 +21,7 @@
         }
 
         public static void CheckInbound() {
-            var taskName = TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
+            var taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
@@ -66,7 +66,7 @@
                         S_CNTR_CODE = cntrCode,
                     };
 
-                    // TODO 姣忔杞閮芥鏌ュ搴斿鍣ㄦ槸鍚﹀凡鐧昏锛岀櫥璁板垯鏇存柊锛屾湭鐧昏鍒欐彃鍏�+                    // BEG 姣忔杞閮芥鏌ュ搴斿鍣ㄦ槸鍚﹀凡鐧昏锛岀櫥璁板垯鏇存柊锛屾湭鐧昏鍒欐彃鍏�                     var cntrItemRel = db.Queryable<TN_Container_Item>()
                         .Where(i => i.S_CNTR_CODE == cntrCode).First();
 
@@ -79,7 +79,7 @@
                             S_CNTR_CODE = cntrCode,
                         };
                     }
-                    // END TODO
+                    // END
 
                     var startLoc = db.Queryable<TN_Location>()
                         .Where(l => l.S_CODE == startLocCode) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿
@@ -109,7 +109,7 @@
                     //}
 
                     var endLoc = db.Queryable<TN_Location>()
-                        .Where(a => Settings.AreaMap[AreaName.绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE))
+                        .Where(a => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE))
                         .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
                         .OrderBy(l => l.N_LAYER)
@@ -135,7 +135,7 @@
                             continue;
                         }
 
-                        // TODO 鎻掑叆鎴栨洿鏂板鍣ㄤ笌鐗╂枡绫诲瀷鐨勭粦瀹氳〃
+                        // BEG 鎻掑叆鎴栨洿鏂板鍣ㄤ笌鐗╂枡绫诲瀷鐨勭粦瀹氳〃
                         if (insertTable) {
                             if (db.Insertable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
                                 tran.RollbackTran();
@@ -152,7 +152,7 @@
                                 continue;
                             }
                         }
-                        // END TODO
+                        // END
 
                         if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
@@ -207,7 +207,7 @@
         }
 
         public static void CheckOutboundOrder() {
-            var taskName = TaskName.鎴愬搧鑳跺嚭搴�
+            var taskName = TaskName.C鎴愬搧鑳跺嚭搴�
             var db = new SqlHelper<object>().GetInstance();
             var info = $"杞--{taskName}--";
 
@@ -342,6 +342,38 @@
                         continue;
                     }
                 }
+
+
+                //// BEG 鏌ユ壘6涓湀浠ュ墠鐨勪换鍔¤〃鍜屼换鍔″姩浣滆〃
+                //var oldTaskList = db.Queryable<TN_Task>()
+                //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
+                //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚")
+                //    .ToList();
+
+                //var oldTaskActionList = db.Queryable<TN_Task, TN_Task_Action>((t, a) => t.S_CODE == a.S_TASK_CODE)
+                //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
+                //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚")
+                //    .Select((t, a) => a)
+                //    .ToList();
+                //// END
+
+                //using (var tran = db.Ado.UseTran()) {
+                //    // 鍦ㄥ嚭搴撹疆璇腑澶勭悊锛屾煡鎵句换鍔″崟鏄惁鏈夊崐骞村墠涓斿凡缁忓畬鎴愮殑浠诲姟锛屽鏋滄湁鍒欏垹闄�+                //    // 杩欎釜鎿嶄綔涓嶅奖鍝嶆甯告祦绋嬶紝濡傛灉澶辫触涔熶笉闇�鍥炴粴
+                //    //if (db.Deleteable<TN_Task>()
+                //    //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
+                //    //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚")
+                //    //    .ExecuteCommand() <= 0) {
+                //    //    info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触";
+                //    //    LogHelper.Info(info);
+                //    //}
+                //    if (db.Deleteable<TN_Task>(oldTaskList).ExecuteCommand() <= 0
+                //        && db.Deleteable<TN_Task_Action>(oldTaskActionList).ExecuteCommand() <= 0) {
+                //        info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触";
+                //        LogHelper.Info(info);
+                //    }
+                //}
+
             }
             catch (Exception ex) {
                 info += $"鍙戠敓浜嗗紓甯革細{ex.Message}";
@@ -350,7 +382,7 @@
         }
 
         public static void CheckCheckOrder() {
-            var taskName = TaskName.鎶芥_鍑哄簱;
+            var taskName = TaskName.C鎶芥_鍑哄簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
 
@@ -473,7 +505,7 @@
         }
 
         public static void CheckShiftOrder() {
-            var taskName = TaskName.绉诲簱;
+            var taskName = TaskName.Y绉诲簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
             try {
diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index e5a61f9..a9985d1 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
+using HH.WCS.Mobox3.DSZSH.api;
 using HH.WCS.Mobox3.DSZSH.device;
 using HH.WCS.Mobox3.DSZSH.models;
 using HH.WCS.Mobox3.DSZSH.process;
@@ -83,9 +84,12 @@
                     WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
                     TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣
 
-                    if (TN_Task.S_TYPE == TaskName.鎴愬搧鑳跺嚭搴� {
+                    if (TN_Task.S_TYPE == TaskName.C鎴愬搧鑳跺嚭搴� {
                         var nextOutboundTask = Task.Run(() => {
                             UpdateOutboundTaskState(3);
+                        });
+                        var pickUpReturnErpTask = Task.Run(() => {
+                            PickUpReturnErp(TN_Task);
                         });
                     }
 
@@ -215,13 +219,14 @@
         }
 
         public static void UpdateOutboundTaskState(int spotStateCode) {
+            var taskName = TaskName.C鎴愬搧鑳跺嚭搴�
             var db = new SqlHelper<object>().GetInstance();
 
             var detail = db.Queryable<TN_Outbound_Detail>()
                 .First(d => d.N_B_STATE == 2);
 
             if (detail == null) {
-                LogHelper.Info("鍑哄簱--AGV鍙栬揣--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
+                LogHelper.Info($"{taskName}--AGV鍙栬揣--鏌ヨ鏄庣粏鍗曪細褰撳墠娌℃湁鎵ц涓殑鏄庣粏鍗�);
                 return;
             }
 
@@ -229,14 +234,14 @@
                 detail.N_B_STATE = spotStateCode;
                 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浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                    LogHelper.Info($"{taskName}--AGV鍙栬揣锛氫慨鏀规槑缁嗗崟鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触锛�);
                     return;
                 }
 
                 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);
 
-                LogHelper.Info($"鍑哄簱--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount} / {allCount}");
+                LogHelper.Info($"{taskName}--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount}/{allCount}");
 
                 if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚
 
@@ -245,7 +250,7 @@
                         .ExecuteCommand() <= 0) {
 
                         tran.RollbackTran();
-                        LogHelper.Info("鍑哄簱--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                        LogHelper.Info($"{taskName}--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼鍗曟嵁鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触锛�);
                         return;
                     }
                 }
@@ -254,83 +259,17 @@
             }
         }
 
-        public static void UpdateCheckTaskState(int spotStateCode) {
-            var db = new SqlHelper<object>().GetInstance();
-
-            var detail = db.Queryable<TN_Check_Detail>()
-                .First(d => d.N_B_STATE == 2);
-
-            if (detail == null) {
-                LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
-                return;
+        public static void PickUpReturnErp(TN_Task task) {
+            var httpH = new HttpHelper();
+            var model = new OtherModel.PickUpReturnErpInfo();
+            model.LocCode = task.S_START_LOC;
+            try {
+                var jsonInfo = JsonConvert.SerializeObject(model);
+                var result = httpH.WebPost(Settings.ErpApiUrl + "PickUpReturn", jsonInfo);
+                // TODO
             }
-
-            using (var tran = db.Ado.UseTran()) {
-                detail.N_B_STATE = spotStateCode;
-                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;
-                }
-
-                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 == 3)
-                        .Where(it => it.S_NO == detail.S_NO)
-                        .ExecuteCommand() <= 0) {
-
-                        tran.RollbackTran();
-                        LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
-                        return;
-                    }
-                }
-
-                tran.CommitTran();
-            }
-        }
-
-        public static void UpdateShiftTaskState(int spotStateCode) {
-            var db = new SqlHelper<object>().GetInstance();
-
-            var detail = db.Queryable<TN_Shift_Detail>()
-                .First(d => d.N_B_STATE == 2);
-
-            if (detail == null) {
-                LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
-                return;
-            }
-
-            detail.N_B_STATE = spotStateCode;
-
-            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}");
-
-            using (var tran = db.Ado.UseTran()) {
-                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 (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚
-                    if (db.Updateable<TN_Shift_Order>().SetColumns(it => it.N_B_STATE == 3)
-                        .Where(it => it.S_NO == detail.S_NO)
-                        .ExecuteCommand() <= 0) {
-
-                        tran.RollbackTran();
-                        LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
-                        return;
-                    }
-                }
-
-                tran.CommitTran();
+            catch (Exception ex) {
+                LogHelper.InfoEx(ex);
             }
         }
 
@@ -347,12 +286,13 @@
                     //浣跨敤鑷畾涔変换鍔℃帹閫�                     TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧
                     //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧
-
                 });
             }
             else {
                 LogHelper.Info("鏆傛棤浠诲姟");
             }
+
+
         }
     }
 }
diff --git a/models/TN_Record_Table.cs b/models/TN_Record_Table.cs
new file mode 100644
index 0000000..ce93f4f
--- /dev/null
+++ b/models/TN_Record_Table.cs
@@ -0,0 +1,105 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using SqlSugar;
+
+namespace HH.WCS.Mobox3.DSZSH.models {
+    /// <summary>
+    /// 鍑哄叆璁板綍琛�+    /// </summary>
+    [SugarTable("TN_Record_Table")]
+    public class TN_Record_Table {
+        /// <summary>
+        /// 浠诲姟鍙�+        /// </summary>
+        public string S_TASK_NO { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒缂栫爜
+        /// </summary>
+        public string S_CNTR_CODE { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string S_ITEM_CODE { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡瑙勬牸
+        /// </summary>
+        public string S_ITEM_SPEC { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�+        /// </summary>
+        public string S_BATCH_NO { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string S_ITEM_NAME { get; set; }
+
+        /// <summary>
+        /// 璁板綍鏃堕棿
+        /// </summary>
+        public DateTime T_RECORD_TIME { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        public int F_QTY { get; set; } = 0;
+
+        /// <summary>
+        /// 璧风偣璐т綅缂栫爜
+        /// </summary>
+        public string S_START_LOC { get; set; }
+
+        /// <summary>
+        /// 缁堢偣璐т綅缂栫爜
+        /// </summary>
+        public string S_END_LOC { get; set; }
+
+        /// <summary>
+        /// 鏉ユ簮鍗曞彿
+        /// </summary>
+        public string S_BS_CODE { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        public string S_TYPE { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鍒濆鏁伴噺
+        /// </summary>
+        public float F_INITIAL_QTY { get; set; } = 0;
+
+        /// <summary>
+        /// 鏈�粓鏁伴噺
+        /// </summary>
+        public float F_ALL_QTY { get; set; } = 0;
+
+        /// <summary>
+        /// 鐗╂枡浠g爜
+        /// </summary>
+        public string S_ITEM_NO { get; set; }
+
+        /// <summary>
+        /// 鎵ц鏍囧噯
+        /// </summary>
+        public string S_STANDARD { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鍑�惈閲�+        /// </summary>
+        public string S_NET_WEIGHT { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璐ㄩ噺绛夌骇
+        /// </summary>
+        public string S_QUALITY_GRADE { get; set; } = string.Empty;
+    }
+}
diff --git a/models/TN_RelocationList_Detail.cs b/models/TN_RelocationList_Detail.cs
index 1977cb8..98d7d8d 100644
--- a/models/TN_RelocationList_Detail.cs
+++ b/models/TN_RelocationList_Detail.cs
@@ -4,7 +4,13 @@
 using System.Text;
 using System.Threading.Tasks;
 
+using SqlSugar;
+
 namespace HH.WCS.Mobox3.DSZSH.models {
+    /// <summary>
+    /// 绉诲簱鍗曟槑缁�+    /// </summary>
+    [SugarTable("TN_RelocationList_Detail")]
     public class TN_RelocationList_Detail : BaseModel {
         public string S_OO_NO { get; set; }
         public string S_ITEM_CODE { get; set; }
diff --git a/models/TN_Relocation_List.cs b/models/TN_Relocation_List.cs
index ff76c85..abd4c43 100644
--- a/models/TN_Relocation_List.cs
+++ b/models/TN_Relocation_List.cs
@@ -4,7 +4,13 @@
 using System.Text;
 using System.Threading.Tasks;
 
+using SqlSugar;
+
 namespace HH.WCS.Mobox3.DSZSH.models {
+    /// <summary>
+    /// 绉诲簱鍗�+    /// </summary>
+    [SugarTable("TN_Relocation_List")]
     public class TN_Relocation_List : BaseModel {
         public string S_NO { get; set; }
         //public string S_ITEM_CODE { get; set; }
diff --git a/models/TN_Shipping_Order.cs b/models/TN_Shipping_Order.cs
new file mode 100644
index 0000000..72f72d0
--- /dev/null
+++ b/models/TN_Shipping_Order.cs
@@ -0,0 +1,11 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HH.WCS.Mobox3.DSZSH.models {
+    public class TN_Shipping_Order : BaseModel {
+
+    }
+}
diff --git a/util/Settings.cs b/util/Settings.cs
index f5b2934..d510507 100644
--- a/util/Settings.cs
+++ b/util/Settings.cs
@@ -12,22 +12,17 @@
     {
         public static string WebApiUrl { get; set; }
         public static string NdcApiUrl { get; set; }
+        public static string ErpApiUrl { get; set; } // ERP 鍙嶉鎺ュ彛
         public static string SqlServer { get; set; }
         public static string TcpServerIp { get; set; }
         public static int TcpServerPort { get; set; }
         public static List<Config.Area> Areas { get; set; } = new List<Config.Area>();
-        public static List<Config.Task> Tasks { get; set; } = new List<Config.Task>();
         public static List<Config.ProductionLine> ProductionLines { get; set; } = new List<Config.ProductionLine>();
         public static List<Config.ProdAgvSite> ProdAgvSites { get; set; } = new List<Config.ProdAgvSite>();
         /// <summary>
         /// 搴撳尯瀛楀吀锛堝姞杞藉悗灏变笉鍙橈級
         /// </summary>
         public static Dictionary<string, List<string>> AreaMap { get; set; } = new Dictionary<string, List<string>>();
-
-        /// <summary>
-        /// 浠诲姟瀛楀吀锛堝姞杞藉悗灏变笉鍙橈級
-        /// </summary>
-        public static Dictionary<string, Config.Task> TaskMap { get; set; } = new Dictionary<string, Config.Task>();
 
         public static Dictionary<string, int> AgvSite_ProdLineCodeMap { get; set; } = new Dictionary<string, int>();
 
@@ -37,9 +32,6 @@
 
             // 閽堝 Areas 杩涜杞崲锛氬皢 Config 鐨�List 鍔犺浇鍒�Dict 涓�             LoadAreas();
-
-            // 閽堝 Tasks 杩涜杞崲
-            LoadTasks();
         }
 
         private static void LoadJson() {
@@ -56,11 +48,11 @@
 
                 WebApiUrl = root.WebApiUrl;
                 NdcApiUrl = root.NdcApiUrl;
+                ErpApiUrl = root.ErpApiUrl;
                 SqlServer = root.SqlServer;
                 TcpServerIp = root.TcpServerIp;
                 TcpServerPort = root.TcpServerPort;
                 Areas = root.Areas;
-                Tasks = root.Tasks;
                 ProductionLines = root.ProductionLines;
 
                 ProdAgvSites = root.ProdAgvSite;
@@ -84,12 +76,6 @@
         private static void LoadAreas() {
             foreach (var area in Areas) {
                 AreaMap.Add(area.Name, area.Codes);
-            }
-        }
-
-        private static void LoadTasks() {
-            foreach (var task in Tasks) {
-                TaskMap.Add(task.Name, task);
             }
         }
 
@@ -131,56 +117,59 @@
         public class Root {
             public string WebApiUrl { get; set; }
             public string NdcApiUrl { get; set; }
+            public string ErpApiUrl { get; set; }
             public string SqlServer { get; set; }
             public string TcpServerIp { get; set; }
             public int TcpServerPort { get; set; }
             public List<Area> Areas { get; set; }
-            public List<Task> Tasks { get; set; }
+
             public List<ProductionLine> ProductionLines { get; set; }
             public List<ProdAgvSite> ProdAgvSite { get; set; }
         }
-
-        public class Task {
-            public string Name { get; set; }
-            public List<string> StartAreas { get; set; }
-            public List<string> EndAreas { get; set; }
-        }
-
-
     }
 
+
     public class AreaName {
-        public const string 鍖呰鍖�= "鍖呰鍖�;
-        public const string 鎿嶄綔鍖�= "鎿嶄綔鍖�;
+        public const string B鍖呰鍖�= "鍖呰鍖�;
+        public const string K绌虹鎿嶄綔鍖�= "绌虹鎿嶄綔鍖�;
+        public const string M婊$鎿嶄綔鍖�= "婊$鎿嶄綔鍖�;
 
-        public const string 绌烘墭瀛樻斁鍖�= "绌烘墭瀛樻斁鍖�;
+        public const string K绌烘墭瀛樻斁鍖�= "绌烘墭瀛樻斁鍖�;
+        public const string K绌虹璐ф灦鍖�= "绌虹璐ф灦鍖�;
+        public const string M婊℃墭璐ф灦鍖�= "婊℃墭璐ф灦鍖�;
+        public const string M婊$璐ф灦鍖�= "婊$璐ф灦鍖�;
 
-        public const string 璐ф灦鍖�= "璐ф灦鍖�;
-        public const string 绌虹瀛樻斁鍖�= "绌虹瀛樻斁鍖�;
-        public const string 婊℃墭瀛樻斁鍖�= "婊℃墭瀛樻斁鍖�;
-        public const string 婊$瀛樻斁鍖�= "婊$瀛樻斁鍖�;
+        public const string C鎶芥鍖�= "鎶芥鍖�;
+        public const string C鎶芥寮傚父鍖�= "鎶芥寮傚父鍖�;
 
-        public const string 浜哄伐_AGV鎺ラ┏鍖�= "浜哄伐-AGV鎺ラ┏鍖�;
-        public const string 绌烘墭鐩樻帴椹冲尯 = "绌烘墭鐩樻帴椹冲尯";
-        public const string 绌虹鎺ラ┏鍖�= "绌虹鎺ラ┏鍖�;
+        public const string K绌烘墭鍏ュ簱鎺ラ┏鍖�= "绌烘墭鍏ュ簱鎺ラ┏鍖�;
+        public const string K绌虹鍏ュ簱鎺ラ┏鍖�= "绌虹鍏ュ簱鎺ラ┏鍖�;
+
+        public const string Q姹借溅鍑哄簱鍖�= "姹借溅鍑哄簱鍖�;
+        public const string H鐏溅鍑哄簱鍖�= "鐏溅鍑哄簱鍖�;
+        public const string Q姹借溅澶囪揣鍖�= "姹借溅澶囪揣鍖�;
+        public const string H鐏溅澶囪揣鍖�= "鐏溅澶囪揣鍖�;
     }
 
     public class TaskName {
-        public const string 濂借繍绠盻婊$涓嬬嚎鍏ュ簱 = "濂借繍绠�婊$涓嬬嚎鍏ュ簱";
-        public const string 濂借繍绠盻绌虹涓婄嚎 = "濂借繍绠�绌虹涓婄嚎";
-        public const string 濂借繍绠盻绌虹鍏ュ簱 = "濂借繍绠�绌虹鍏ュ簱";
-        public const string 濂借繍绠盻绌虹缁戝畾 = "濂借繍绠�绌虹缁戝畾";
-        public const string 鎴愬搧鑳跺嚭搴�= "鎴愬搧鑳跺嚭搴�;
-        public const string 鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱 = "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱";
-        public const string 鎵樼洏_绌烘墭涓婄嚎 = "鎵樼洏-绌烘墭涓婄嚎";
-        public const string 鎵樼洏_绌烘墭鍏ュ簱 = "鎵樼洏-绌烘墭鍏ュ簱";
-        public const string 鎵樼洏_绌烘墭缁戝畾 = "鎵樼洏-绌烘墭缁戝畾";
-        public const string 鎶芥_涓嶅悎鏍肩Щ搴�= "鎶芥-涓嶅悎鏍肩Щ搴�;
-        public const string 鎶芥_鍑哄簱 = "鎶芥-鍑哄簱";
-        public const string 鎶芥_鍚堟牸鍥炲簱 = "鎶芥-鍚堟牸鍥炲簱";
-        public const string 绉诲簱 = "绉诲簱";
-        public const string 灏剧鍥炲簱 = "灏剧鍥炲簱";
+        public const string H濂借繍绠盻婊$涓嬬嚎鍏ュ簱 = "濂借繍绠�婊$涓嬬嚎鍏ュ簱";
+        public const string H濂借繍绠盻绌虹涓婄嚎 = "濂借繍绠�绌虹涓婄嚎";
+        public const string H濂借繍绠盻绌虹鍏ュ簱 = "濂借繍绠�绌虹鍏ュ簱";
+        public const string H濂借繍绠盻绌虹缁戝畾 = "濂借繍绠�绌虹缁戝畾";
 
+        public const string C鎴愬搧鑳跺嚭搴�= "鎴愬搧鑳跺嚭搴�;
+
+        public const string T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱 = "鎵樼洏-婊℃墭涓嬬嚎鍏ュ簱";
+        public const string T鎵樼洏_绌烘墭涓婄嚎 = "鎵樼洏-绌烘墭涓婄嚎";
+        public const string T鎵樼洏_绌烘墭鍏ュ簱 = "鎵樼洏-绌烘墭鍏ュ簱";
+        public const string T鎵樼洏_绌烘墭缁戝畾 = "鎵樼洏-绌烘墭缁戝畾";
+
+        public const string C鎶芥_涓嶅悎鏍肩Щ搴�= "鎶芥-涓嶅悎鏍肩Щ搴�;
+        public const string C鎶芥_鍑哄簱 = "鎶芥-鍑哄簱";
+        public const string C鎶芥_鍚堟牸鍥炲簱 = "鎶芥-鍚堟牸鍥炲簱";
+
+        public const string Y绉诲簱 = "绉诲簱";
+        public const string W灏剧鍥炲簱 = "灏剧鍥炲簱";
     }
 
 }
diff --git a/wms/SYSHelper.cs b/wms/SYSHelper.cs
index b48f3fd..8044904 100644
--- a/wms/SYSHelper.cs
+++ b/wms/SYSHelper.cs
@@ -2,13 +2,14 @@
 
 using SqlSugar;
 
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
 namespace HH.WCS.Mobox3.DSZSH.wms {
-    /// <summary>
-    /// 鐢ㄤ簬鐢熸垚搴忓垪鍙凤紝骞剁鐞嗗簭鍒楀彿鍓嶇紑鐨勫伐鍏风被
-    /// </summary>
-    internal class SYSHelper
-    {
-        //浣跨敤闈欐� locker 瀵硅薄瀹炵幇绾跨▼鍚屾
+    internal class SYSHelper {
         private static object locker = new object();
         internal static int GetSerialNumber(string snType, string prefix) {
             int result = 0;
@@ -16,16 +17,47 @@
                 var db = new SqlHelper<object>().GetInstance();
                 var sId = db.Queryable<OI_SYS_MAXID>().Where(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix).First();
                 if (sId != null) {
-                    sId.CN_N_MAX++;
-                    //if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX} where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) {
+
+                    if (sId.CN_T_LAST < DateTime.Today) {
+                        sId.CN_N_MAX = 1;
+                    }
+                    else {
+                        sId.CN_N_MAX++;
+                    }
+
+                    sId.CN_T_LAST = DateTime.Now;
+                    if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX}, CN_T_LAST='{sId.CN_T_LAST}' where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) {
+                        //LogHelper.Info($"set cn_n_max {sId.CN_N_MAX}");
+                        result = sId.CN_N_MAX;
+                    }
+
+                    //if (db.Updateable<OI_SYS_MAXID>(sId).UpdateColumns(it => new { it.CN_N_MAX, it.CN_T_LAST}).ExecuteCommand() > 0) {
                     //    result = sId.CN_N_MAX;
                     //}
 
-                    // 鍙傛暟鍖栨煡璇紝閬垮厤SQL娉ㄥ叆
-                    if (db.Updateable<OI_SYS_MAXID>().SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX).Where(it => it.CN_S_TYPE == snType
-                        && it.CN_S_PRE == prefix).ExecuteCommand() > 0) {
-                        result = sId.CN_N_MAX;
-                    }
+                    //if (db.Updateable<OI_SYS_MAXID>()
+                    //    .SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX && it.CN_T_LAST == sId.CN_T_LAST)
+                    //    .Where(it => it.CN_S_TYPE == sId.CN_S_TYPE && it.CN_S_PRE == sId.CN_S_TYPE)
+                    //    .ExecuteCommand() > 0) {
+                    //    result = sId.CN_N_MAX;
+                    //}
+
+                    //var parameters = new[] {
+                    //    new SugarParameter("@CN_N_MAX", sId.CN_N_MAX),
+                    //    new SugarParameter("@CN_T_LAST", sId.CN_T_LAST),
+                    //    new SugarParameter("@CN_S_TYPE", sId.CN_S_TYPE),
+                    //    new SugarParameter("@CN_S_PRE", sId.CN_S_TYPE)
+                    //};
+
+                    //var sql = @"UPDATE OI_SYS_MAXID 
+                    //    SET CN_N_MAX = @CN_N_MAX, CN_T_LAST = @CN_T_LAST 
+                    //    WHERE CN_S_TYPE = @CN_S_TYPE AND CN_S_PRE = @CN_S_PRE";
+
+                    //if (db.Ado.ExecuteCommand(sql, parameters) > 0) {
+                    //    result = sId.CN_N_MAX;
+                    //    LogHelper.Info($"set cn_n_max {sId.CN_N_MAX}");
+                    //}
+
 
                 }
                 else {
@@ -39,11 +71,11 @@
         }
 
         [SugarTable("dbo.OI_SYS_MAXID")]
-        public class OI_SYS_MAXID
-        {
+        public class OI_SYS_MAXID {
             public string CN_S_TYPE { get; set; }
             public string CN_S_PRE { get; set; }
             public int CN_N_MAX { get; set; }
+            public DateTime CN_T_LAST { get; set; }
         }
     }
 }

--
Gitblit v1.9.1