From 2fdf959ac739edd6de84aa8053b8b9683dce8e8b Mon Sep 17 00:00:00 2001
From: zhao
Date: 星期三, 07 七月 2021 14:53:24 +0800
Subject: [PATCH] 中策下任务接口

---
 HH.WMS.WebApi/Controllers/WmsApiController.cs |   37 +
 HH.WMS.Entitys/Entitys/TN_WM_TASKEntity.cs    |    6 
 HH.WMS.BLL/Pda/ZCBLL.cs                       | 1135 +++++++++++++++++----------------
 HH.WMS.Common/JsonHelper.cs                   |    4 
 HH.WMS.BLL/HH.WMS.BLL.csproj                  |    1 
 HH.WMS.WebApi/Config.json                     |  235 ------
 HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs     |   34 +
 HH.WMS.BLL/External/WmsApiBaseBLL.cs          |  483 +------------
 HH.WMS.WebApi/Extension/ExecTransferTask.cs   |   22 
 HH.WMS.Common/Constants.cs                    |    4 
 HH.WMS.BLL/MiddleDB/ZCMiddleOperateBll.cs     |   70 ++
 11 files changed, 790 insertions(+), 1,241 deletions(-)

diff --git a/HH.WMS.BLL/External/WmsApiBaseBLL.cs b/HH.WMS.BLL/External/WmsApiBaseBLL.cs
index adfa8c7..f737913 100644
--- a/HH.WMS.BLL/External/WmsApiBaseBLL.cs
+++ b/HH.WMS.BLL/External/WmsApiBaseBLL.cs
@@ -1512,29 +1512,23 @@
 
             #endregion
 
+            string tno = executeStatePara.transportTask.CN_S_TASK_NO;
+            if (tno.IndexOf('_') > 0)
+            {
+                tno = tno.Substring(tno.IndexOf("_") + 1);
+            }
             // 鑾峰彇涓讳换鍔�-            var task = executeStatePara.transportTask;
-            if (!string.IsNullOrEmpty(task.CN_S_EXT1))
+            var task = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetSingleEntity(new
             {
-                task = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetSingleEntity(new
-                {
-                    CN_S_TASK_NO = task.CN_S_EXT1
-                });
-            }
-            TN_WM_TASKEntity task_kthk = null;
-            // 鐗规畩涓氬姟
-            // 鎴愬瀷鏈烘弧鎵樺嚭搴撳畬鎴愭椂锛岃鎵ц绌烘墭鍥炲簱浠诲姟
-            if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_2)
+                CN_S_TASK_NO = tno
+            });
+            Log.Detail(logPara, "鑾峰彇涓讳换鍔★細浠诲姟缂栧彿锛�" + tno);
+            // mes浠诲姟
+            var mes_task = BLLCreator.CreateDapper<TN_MES_TASK>().GetSingleEntity(new
             {
-                // 鏌ユ壘缁堢偣璐т綅(绾胯竟璐т綅)鏄惁鏈夋湭鎵ц鐨勭┖鎵樺洖搴撲换鍔�-                task_kthk = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetSingleEntity(new
-                {
-                    CN_S_START_AREA = executeStatePara.transportTask.CN_S_END_AREA,
-                    CN_S_START_BIT = executeStatePara.transportTask.CN_S_END_BIT,
-                    CN_S_STATE = Constants.TaskState_NoExecuted,
-                    CN_S_EXT3 = TaskSectionConstants.CXJ_KTHK_RECORD
-                });
-            }
+                task_no = task.CN_S_EXT1
+            });
+            Log.Detail(logPara, "鑾峰彇MES浠诲姟锛氫换鍔$紪鍙凤細 " + task.CN_S_EXT1);
 
             return UseTransaction(trans =>
             {
@@ -1549,453 +1543,60 @@
                 }, new { executeStatePara.transportTask.CN_S_TASK_NO }, trans);
                 Log.Detail(logPara, "鏇存柊浠诲姟鐘舵�-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO + "鐘舵�涓猴細" + executeStatePara.taskState);
 
-                //绔嬪簱浠诲姟   瀛愪换鍔″畬鎴愭椂锛岄渶瑕佸悓姝ュ鐞嗕富浠诲姟   
                 string taskNo = executeStatePara.transportTask.CN_S_TASK_NO;
+
+                //绔嬪簱浠诲姟   瀛愪换鍔″畬鎴愭椂锛岄渶瑕佸悓姝ュ鐞嗕富浠诲姟   
                 if (taskNo.IndexOf('_') > 0)
                 {
-                    string fatherNo = taskNo.Substring(0, taskNo.IndexOf("_"));
-                    string childNo = taskNo.Substring(taskNo.IndexOf("_") + 1);
+                    string topNo = taskNo.Substring(0, taskNo.IndexOf("_"));
+                    string navNo = taskNo.Substring(taskNo.IndexOf("_") + 1);
 
-                    #region 娴锋疆涓瓥
-
-                    #region 鍗婃垚鍝�-
-                    #region 绌烘墭鍑哄簱
-
-                    // 鍗婃垚鍝�绌烘墭鍑哄簱绗竴鏉″瓙浠诲姟
-                    if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.BCP_KTCK_SUB_1)
+                    //A鍒癇鐨凙GV鎼繍浠诲姟
+                    if (navNo == "1")
                     {
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                        if (mes_task.SECTION == TaskSectionConstants.BCP_KTCK ||
+                            mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ||
+                            mes_task.SECTION == TaskSectionConstants.DS_MTCK)
                         {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-                        // 绔嬪簱璐т綅鐘舵�鏀逛负:绌�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Empty
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
 
-                        Log.Detail(logPara, "鍗婃垚鍝�绌烘墭鍑哄簱瀛愪换鍔′竴瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂扮珛搴撶姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Empty);
-                    }
-                    // 鍗婃垚鍝�绌烘墭鍑哄簱绗簩鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.BCP_KTCK_SUB_2)
-                    {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴愰儴鍒�-                        // 涓讳换鍔¢樁娈电疆涓哄崐鎴愬搧-婊℃墭鍏ュ簱
-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_T_END = DateTime.Now,
-                            CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_CompletePart,
-                            CN_S_EXT3 = TaskSectionConstants.BCP_MTRK
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
-                        }, trans);
-                        // 鍑嗗鐐硅揣浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-                        // 绾胯竟璐т綅涓嶇鎺�-
-                        Log.Detail(logPara, "鍗婃垚鍝�绌烘墭鍑哄簱瀛愪换鍔′簩瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + task.CN_S_CONNECT_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂板噯澶囩偣鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_CompletePart + "-闃舵涓猴細" + TaskSectionConstants.BCP_MTRK);
-                    }
-
-                    #endregion
-
-                    #region 婊℃墭鍏ュ簱
-
-                    // 鍗婃垚鍝�婊℃墭鍏ュ簱绗竴鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.BCP_MTRK_SUB_1)
-                    {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴愰儴鍒�-                        // 涓讳换鍔¢樁娈电疆涓哄崐鎴愬搧-婊℃墭鍏ュ簱-绗簩闃舵
-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_T_END = DateTime.Now,
-                            CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_CompletePart,
-                            CN_S_EXT3 = TaskSectionConstants.BCP_MTRK_SECOND
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-                        // 绾胯竟璐т綅涓嶇鎺�-
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鍗婃垚鍝�婊℃墭鍏ュ簱瀛愪换鍔′竴瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_CompletePart + "-闃舵涓猴細" + TaskSectionConstants.BCP_MTRK_SECOND);
-                    }
-                    // 鍗婃垚鍝�婊℃墭鍏ュ簱绗簩鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.BCP_MTRK_SUB_2)
-                    {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴�-                        // 闃舵缃负浠诲姟瀹屾垚
-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_T_END = DateTime.Now,
-                            CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_Complete,
-                            CN_S_EXT3 = TaskSectionConstants.COMPLETE
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-                        // 绔嬪簱鐘舵�鏀逛负:婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鍗婃垚鍝�婊℃墭鍏ュ簱瀛愪换鍔′簩瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂扮珛搴撶姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_Complete + "-闃舵涓猴細" + TaskSectionConstants.COMPLETE);
-                    }
-
-                    #endregion
-
-                    #endregion
-
-                    #region 鎴愬瀷鏈�-
-                    #region 鍗婃垚鍝佸洖搴�-
-                    // 鎴愬瀷鏈�鍗婃垚鍝佸洖搴撶涓�潯瀛愪换鍔�-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1)
-                    {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴愰儴鍒�-                        // 涓讳换鍔¢樁娈电疆涓烘垚鍨嬫満-鍗婃垚鍝佸洖搴�绗簩闃舵
-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_T_END = DateTime.Now,
-                            CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_CompletePart,
-                            CN_S_EXT3 = TaskSectionConstants.CXJ_BCPHK_SECOND
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-                        // 绾胯竟璐т綅涓嶇鎺�-
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈�鍗婃垚鍝佸洖搴撳瓙浠诲姟涓�畬鎴�浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_CompletePart + "-闃舵涓猴細" + TaskSectionConstants.CXJ_BCPHK_SECOND);
-                    }
-                    // 鎴愬瀷鏈�鍗婃垚鍝佸洖搴撶浜屾潯瀛愪换鍔�-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2)
-                    {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴�-                        // 涓讳换鍔¢樁娈电疆涓轰换鍔″畬鎴�-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_T_END = DateTime.Now,
-                            CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_Complete,
-                            CN_S_EXT3 = TaskSectionConstants.COMPLETE
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-                        // 绔嬪簱鐘舵�鏀逛负:婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈�鍗婃垚鍝佸洖搴撳瓙浠诲姟浜屽畬鎴�浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂扮珛搴撶姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_Complete + "-闃舵涓猴細" + TaskSectionConstants.COMPLETE);
-                    }
-
-                    #endregion
-
-                    #region 婊℃墭鍑哄簱
-
-                    // 鎴愬瀷鏈�婊℃墭鍑哄簱绗竴鏉″瓙浠诲姟
-                    if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_1)
-                    {
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-                        // 绔嬪簱璐т綅鐘舵�鏀逛负:绌�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Empty
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈�婊℃墭鍑哄簱瀛愪换鍔′竴瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂扮珛搴撶姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Empty);
-                    }
-                    // 鎴愬瀷鏈�婊℃墭鍑哄簱绗簩鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_2)
-                    {
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
-                        }, trans);
-                        // 鍑嗗鐐硅揣浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-                        // 绾胯竟璐т綅涓嶇鎺�-
-                        if (task_kthk == null)
-                        {
-                            // 娌℃湁闇�鎵ц鐨勭┖鎵樺洖搴撲换鍔�-                            // 涓讳换鍔$姸鎬佺疆涓哄畬鎴�-                            // 涓讳换鍔¢樁娈电疆涓哄畬鎴�-                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                            {
-                                CN_S_STATE = Constants.TaskState_Complete,
-                                CN_S_EXT3 = TaskSectionConstants.COMPLETE
-                            }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-
-                            Log.Detail(logPara, "鎴愬瀷鏈�婊℃墭鍑哄簱瀛愪换鍔′簩瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + task.CN_S_CONNECT_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂板噯澶囩偣鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_Complete + "-闃舵涓猴細" + TaskSectionConstants.COMPLETE
-                            + "锛屾湭鍖归厤鍒扮┖鎵樺洖搴撲换鍔�);
                         }
                         else
                         {
-                            // 鏈夐渶瑕佹墽琛岀殑绌烘墭鍥炲簱浠诲姟
-                            // 涓讳换鍔$姸鎬佺疆涓烘墽琛屼腑锛堥槻姝㈠啀娆″惊鐜埌锛�-                            // 涓讳换鍔¢樁娈电疆涓烘垚鍨嬫満-绌烘墭鍏ュ簱
+                            //涓讳换鍔$姸鎬佹洿鏀逛负:瀹屾垚涓�崐
                             CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
                             {
+                                CN_S_MODIFY = "",
+                                CN_S_MODIFY_BY = "",
                                 CN_T_END = DateTime.Now,
                                 CN_T_MODIFY = DateTime.Now,
-                                CN_S_STATE = Constants.TaskState_Executing,
-                                CN_S_EXT3 = TaskSectionConstants.CXJ_KTRK
-                            }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-                            // 绌烘墭鍥炲簱浠诲姟闃舵缃负鎴愬瀷鏈�绌烘墭鍥炲簱-鍏ュ簱闃舵
-                            // 绌烘墭鍥炲簱浠诲姟涓讳换鍔$紪鍙风疆涓哄綋鍓嶄富浠诲姟
-                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                            {
-                                CN_T_END = DateTime.Now,
-                                CN_T_MODIFY = DateTime.Now,
-                                CN_S_EXT3 = TaskSectionConstants.CXJ_KTHK_KTRK,
-                                CN_S_EXT1 = task.CN_S_TASK_NO
-                            }, new { CN_S_TASK_NO = task_kthk.CN_S_TASK_NO });
-
-                            Log.Detail(logPara, "鎴愬瀷鏈�婊℃墭鍑哄簱瀛愪换鍔′簩瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + task.CN_S_CONNECT_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂板噯澶囩偣鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_Executing + "-闃舵涓猴細" + TaskSectionConstants.CXJ_KTRK
-                            + "锛屽尮閰嶅埌绌烘墭鍥炲簱浠诲姟-浠诲姟鍙凤細" + task_kthk.CN_S_TASK_NO + "闃舵涓猴細" + TaskSectionConstants.CXJ_KTHK_KTRK + "-鍏宠仈涓讳换鍔★細" + task.CN_S_TASK_NO);
+                                CN_S_STATE = Constants.TaskState_CompleteHalf
+                            }, new { CN_S_TASK_NO = topNo }, trans);
+                            Log.Detail(logPara, "鏇存柊涓讳换鍔$姸鎬�浠诲姟鍙凤細" + topNo + "鐘舵�涓猴細" + Constants.TaskState_CompleteHalf);
                         }
                     }
 
-                    #endregion
-
-                    #endregion
-
-                    #region 鎴愬瀷鏈哄甫鏉�-
-                    #region 鍗婃垚鍝�绌烘墭鍥炲簱
-
-                    // 鎴愬瀷鏈哄甫鏉�鍗婃垚鍝�绌烘墭鍥炲簱绗竴鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.DS_BCPKTHK_SUB_1)
+                    //B鍒癈鐨勭珛搴撴惉杩愪换鍔�+                    if (navNo == "2")
                     {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴愰儴鍒�-                        // 涓讳换鍔¢樁娈电疆涓烘垚鍨嬫満甯︽潫-鍗婃垚鍝�绌烘墭鍥炲簱-绗簩闃舵
+                        //涓讳换鍔$姸鎬佹洿鏀逛负:瀹屾垚
                         CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
                         {
+                            CN_S_MODIFY = "",
+                            CN_S_MODIFY_BY = "",
                             CN_T_END = DateTime.Now,
                             CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_CompletePart,
-                            CN_S_EXT3 = TaskSectionConstants.DS_BCPKTHK_SECOND
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-                        // 绾胯竟璐т綅涓嶇鎺�+                            CN_S_STATE = Constants.TaskState_Complete
+                        }, new { CN_S_TASK_NO = topNo }, trans);
+                        Log.Detail(logPara, "鏇存柊涓讳换鍔$姸鎬�浠诲姟鍙凤細" + topNo + "鐘舵�涓猴細" + Constants.TaskState_Complete);
 
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                        // mes浠诲姟杩涘叆涓嬩竴闃舵
+                        CreateDAL<DapperDAL<TN_MES_TASK>>().Update(new
                         {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈哄甫鏉�鍗婃垚鍝�绌烘墭鍥炲簱瀛愪换鍔′竴瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_CompletePart + "-闃舵涓猴細" + TaskSectionConstants.DS_BCPKTHK_SECOND);
+                            NeedTrig = Constants.Y
+                        }, new { task_no = mes_task.task_no }, trans);
                     }
-                    // 鎴愬瀷鏈哄甫鏉�鍗婃垚鍝�绌烘墭鍥炲簱绗簩鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.DS_BCPKTHK_SUB_2)
-                    {
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴�-                        // 涓讳换鍔¢樁娈电疆涓轰换鍔″畬鎴�-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_S_STATE = Constants.TaskState_Complete,
-                            CN_S_EXT3 = TaskSectionConstants.COMPLETE
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-                        // 绔嬪簱鐘舵�鏀逛负:婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈哄甫鏉�鍗婃垚鍝�绌烘墭鍥炲簱瀛愪换鍔′簩瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                            + "锛屾洿鏂扮珛搴撶姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_Complete + "-闃舵涓猴細" + TaskSectionConstants.COMPLETE);
-                    }
-
-                    #endregion
-
-                    #region 婊℃墭鍑哄簱
-
-                    // 鎴愬瀷鏈哄甫鏉�婊℃墭鍑哄簱绗竴鏉″瓙浠诲姟
-                    if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.DS_MTCK_SUB_1)
-                    {
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�婊�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Full
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_END_BIT
-                        }, trans);
-                        // 绔嬪簱璐т綅鐘舵�鏀逛负:绌�-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Empty
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈哄甫鏉�婊℃墭鍑哄簱瀛愪换鍔′竴瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                            + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full
-                            + "锛屾洿鏂扮珛搴撶姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Empty);
-                    }
-                    // 鎴愬瀷鏈哄甫鏉�婊℃墭鍑哄簱绗簩鏉″瓙浠诲姟
-                    else if (executeStatePara.transportTask.CN_S_EXT2 == TaskFlagConstants.DS_MTCK_SUB_2)
-                    {
-                        // 鎺ラ┏浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
-                        }, trans);
-                        // 鍑嗗鐐硅揣浣嶇姸鎬佹敼涓�姝e父
-                        CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
-                        {
-                            CN_S_LOCATION_STATE = Constants.Location_State_Normal
-                        }, new
-                        {
-                            CN_S_LOCATION_CODE = executeStatePara.transportTask.CN_S_START_BIT
-                        }, trans);
-                        // 绾胯竟璐т綅涓嶇鎺�-
-                        // 涓讳换鍔$姸鎬佺疆涓哄畬鎴�-                        // 涓讳换鍔¢樁娈电疆涓哄畬鎴�-                        CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
-                        {
-                            CN_T_END = DateTime.Now,
-                            CN_T_MODIFY = DateTime.Now,
-                            CN_S_STATE = Constants.TaskState_Complete,
-                            CN_S_EXT3 = TaskSectionConstants.COMPLETE
-                        }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
-
-                        Log.Detail(logPara, "鎴愬瀷鏈哄甫鏉�婊℃墭鍑哄簱瀛愪换鍔′簩瀹屾垚-浠诲姟鍙凤細" + executeStatePara.transportTask.CN_S_TASK_NO
-                        + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + task.CN_S_CONNECT_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                        + "锛屾洿鏂板噯澶囩偣鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal
-                        + "锛屾洿鏂颁富浠诲姟-浠诲姟鍙凤細" + task.CN_S_TASK_NO + "鐘舵�涓猴細" + Constants.TaskState_Complete + "-闃舵涓猴細" + TaskSectionConstants.COMPLETE);
-                    }
-
-                    #endregion
-
-                    #endregion
-
-                    #endregion
                 }
+
                 if (executeStatePara.transportTask.CN_S_TASK_TYPE == null)
                     executeStatePara.transportTask.CN_S_TASK_TYPE = "";
 
diff --git a/HH.WMS.BLL/HH.WMS.BLL.csproj b/HH.WMS.BLL/HH.WMS.BLL.csproj
index 4c54914..5725476 100644
--- a/HH.WMS.BLL/HH.WMS.BLL.csproj
+++ b/HH.WMS.BLL/HH.WMS.BLL.csproj
@@ -139,6 +139,7 @@
     <Compile Include="Interface\InfK3Request.cs" />
     <Compile Include="Interface\InfOMSRequest.cs" />
     <Compile Include="Interface\OtherSysApi.cs" />
+    <Compile Include="MiddleDB\ZCMiddleOperateBll.cs" />
     <Compile Include="MiddleDB\GLMiddleOperateBll.cs" />
     <Compile Include="MoveStock\MoveStockTaskBLL.cs" />
     <Compile Include="MoveStock\TN_WM_B_MOVE_RESULTBLL.cs" />
diff --git a/HH.WMS.BLL/MiddleDB/ZCMiddleOperateBll.cs b/HH.WMS.BLL/MiddleDB/ZCMiddleOperateBll.cs
new file mode 100644
index 0000000..c8ebd91
--- /dev/null
+++ b/HH.WMS.BLL/MiddleDB/ZCMiddleOperateBll.cs
@@ -0,0 +1,70 @@
+锘縰sing HH.WMS.BLL.Pda;
+using HH.WMS.Common;
+using HH.WMS.Entitys;
+using HH.WMS.Entitys.Entitys.Mes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HH.WMS.BLL.MiddleDB
+{
+    public class ZCMiddleOperateBll : DapperBaseBLL
+    {
+        public OperateResult TransportSuccess(TN_MES_TASK _req, TN_WM_SERVICE_EXECEntity _serviceExec, string _taskNo)
+        {
+            return UseTransaction(trans =>
+            {
+                //鍙嶉mes
+                if (_serviceExec.CN_C_SEND_MES == Constants.Y)
+                {
+                    CreateDapperDAL<TN_MES_TASK>().Update(new
+                    {
+                        Data_status = _req.Data_status,
+                        NeedTrig = _req.NeedTrig,
+                        Section = _req.SECTION
+                    }, new
+                    {
+                        TaskNo = _req.task_no
+                    }, trans);
+                }
+
+                if (_serviceExec.Update)
+                {
+                    var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Update(new
+                    {
+                        CN_S_START_LOCATION = _serviceExec.CN_S_START_LOCATION,
+                        CN_S_END_LOCATION = _serviceExec.CN_S_END_LOCATION,
+                        CN_C_COMPLETE = _serviceExec.CN_C_COMPLETE,
+                        CN_C_SEND_MES = _serviceExec.CN_C_SEND_MES,
+                        CN_S_MSG = _serviceExec.CN_S_MSG
+                    }, new
+                    {
+                        CN_S_TASK_NO = _serviceExec.CN_S_TASK_NO
+                    });
+                    if (!or.Success)
+                        throw new Exception(or.Msg);
+                }
+                else
+                {
+                    var or = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().Add(_serviceExec);
+                    if (!or.Success)
+                        throw new Exception(or.Msg);
+                }
+
+                // 鍏宠仈涓讳换鍔�+                if (!string.IsNullOrEmpty(_taskNo))
+                {
+                    CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_EXT1 = _req.task_no
+                    }, new
+                    {
+                        CN_S_TASK_NO = _taskNo
+                    }, trans);
+                }
+            });
+        }
+    }
+}
diff --git a/HH.WMS.BLL/Pda/ZCBLL.cs b/HH.WMS.BLL/Pda/ZCBLL.cs
index 16613d1..b22554d 100644
--- a/HH.WMS.BLL/Pda/ZCBLL.cs
+++ b/HH.WMS.BLL/Pda/ZCBLL.cs
@@ -242,20 +242,6 @@
         /// <param name="transportReqs"></param>
         public List<OperateResult> ExecTransferTask(List<TN_MES_TASK> transportReqs)
         {
-            var mapStr = JsonHelper.GetValue("workFlowTransType");
-            if (string.IsNullOrEmpty(mapStr))
-                throw new Exception("鏈壘鍒伴厤缃細workFlowTransType");
-
-            var isEnableAms = new ZCTransferDto();
-            var _isEnableAmsStr = JsonHelper.GetValue("isSendAms");
-            if (!string.IsNullOrEmpty(_isEnableAmsStr))
-            {
-                isEnableAms = JsonConvert.DeserializeObject<ZCTransferDto>(_isEnableAmsStr);
-                isEnableAms = isEnableAms ?? new ZCTransferDto();
-            }
-
-            var workFlowTransType = JsonConvert.DeserializeObject<List<ZCTransferDto>>(mapStr);
-
             List<OperateResult> ors = new List<OperateResult>();
             if (transportReqs.Any())
             {
@@ -265,214 +251,209 @@
                     string endBit = req.Location_To;
 
                     string startArea = string.Empty, endArea = string.Empty;
-                    //鏍¢獙璧风偣
-                    if (!string.IsNullOrEmpty(startBit))
-                    {
-                        var _location = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
-                        {
-                            CN_S_LOCATION_CODE = startBit
-                        });
-                        if (_location == null)
-                        {
-                            ors.Add(OperateResult.Error("鏈壘鍒拌捣濮嬭揣浣嶏細" + startBit, req));
-                            continue;
-                        }
-                        startArea = Util.ToString(_location.CN_S_AREA_CODE).Trim();
-                    }
-                    //鏍¢獙缁堢偣
-                    if (!string.IsNullOrEmpty(endBit))
-                    {
-                        var _location = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
-                        {
-                            CN_S_LOCATION_CODE = endBit
-                        });
-                        if (_location == null)
-                        {
-                            ors.Add(OperateResult.Error("鏈壘鍒扮粓鐐硅揣浣嶏細" + endBit, req));
-                            continue;
-                        }
-                        endArea = Util.ToString(_location.CN_S_AREA_CODE).Trim();
-                    }
-                    if (string.IsNullOrEmpty(startArea) && string.IsNullOrEmpty(endArea))
-                    {
-                        ors.Add(OperateResult.Error("璧风偣缁堢偣涓嶅彲鍚屾椂涓虹┖"));
-                        continue;
-                    }
-                    //鎵句綔涓氳矾寰�-                    //var workRoute = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetSingleRoute(startArea, endArea);
-                    //if (workRoute == null)
-                    //{
-                    //    ors.Add(OperateResult.Error("鏈壘鍒颁綔涓氳矾寰�, req));
-                    //    continue;
-                    //}
 
-                    var workRoute = new TN_AB_B_WORK_AREA_PROEntity();
-                    var workRoutes = BLLCreator.Create<TN_AB_B_WORK_AREA_PROBLL>().GetRoute("", startArea, endArea);
-                    if (!workRoutes.Any())
+                    try
                     {
-                        ors.Add(OperateResult.Error("鏈壘鍒颁綔涓氳矾寰�, req));
-                        continue;
-                    }
-                    else
-                    {
-                        workRoute = workRoutes[0];
-                        if (workRoutes.Count > 1)
+                        InWorkAreaEntity inModel = new InWorkAreaEntity();
+                        inModel.itemCode = req.PROD_NO;
+                        inModel.trayCode = req.TurnCardNum;
+                        inModel.priority = req.Priority;
+                        inModel.startBit = req.Location_From;
+                        inModel.endBit = req.Location_To;
+                        inModel.remark = "涓氬姟绫诲瀷锛� + req.BUSI_TYPE;
+
+                        OutWorkAreaEntity outModel = new OutWorkAreaEntity();
+                        outModel.itemCode = req.PROD_NO;
+                        outModel.trayCode = req.TurnCardNum;
+                        outModel.priority = req.Priority;
+                        outModel.startBit = req.Location_From;
+                        outModel.endBit = req.Location_To;
+                        outModel.remark = "涓氬姟绫诲瀷锛� + req.BUSI_TYPE;
+
+                        // 涓嬩竴姝ヨ鎵ц鐨勯樁娈�+                        string section = NextSection(req);
+                        bool needCreateTask = true;
+                        string direction = "";
+
+                        if (section == TaskSectionConstants.ERROR)
                         {
-                            if (workRoutes.Exists(e => Util.ToString(e.CN_S_TYPE_CODE) == "X6" || Util.ToString(e.CN_S_TYPE_CODE) == "X7"))
+                            // "鎵ц澶辫触锛孧ES浠诲姟涓氬姟绫诲瀷鎴栭樁娈典笉姝g‘"
+                            needCreateTask = false;
+                        }
+                        else if (string.IsNullOrEmpty(section))
+                        {
+                            needCreateTask = false;
+                        }
+                        else if (section == TaskSectionConstants.BCP_KTCK)
+                        {
+                            direction = Constants.Out;
+                        }
+                        else if (section == TaskSectionConstants.BCP_MTRK)
+                        {
+                            direction = Constants.In;
+                        }
+                        else if (section == TaskSectionConstants.CXJ_BCPHK)
+                        {
+                            direction = Constants.In;
+                        }
+                        else if (section == TaskSectionConstants.CXJ_KTHK_RECORD)
+                        {
+                            needCreateTask = false;
+                        }
+                        else if (section == TaskSectionConstants.CXJ_MTCK)
+                        {
+                            direction = Constants.Out;
+                        }
+                        else if (section == TaskSectionConstants.CXJ_KTHK_KTRK)
+                        {
+                            direction = Constants.In;
+                        }
+                        else if (section == TaskSectionConstants.DS_BCPKTHK)
+                        {
+                            direction = Constants.In;
+                        }
+                        else if (section == TaskSectionConstants.DS_MTCK)
+                        {
+                            direction = Constants.Out;
+                        }
+                        // 鏇存柊MES浠诲姟闃舵
+                        req.SECTION = section;
+
+                        var externalRes = new ExternalResponse();
+                        string taskNo = "";
+
+                        if (needCreateTask)
+                        {
+                            if (direction == Constants.In)
                             {
-                                if (string.IsNullOrEmpty(req.PROD_NO))
+                                //浼犻�鍙傛暟
+                                List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>();
+                                inWorkAreaEntitys.Add(inModel);
+
+                                try
                                 {
-                                    workRoute = workRoutes.Find(f => f.CN_S_TYPE_CODE == "X6");
+                                    Log.Info("鍏ヤ綔涓氬尯寮�锛屼紶鍙傦細", JsonConvert.SerializeObject(inWorkAreaEntitys));
+                                    externalRes = BLLCreator.Create<WmsApiBaseBLL>().InWorkArea(inWorkAreaEntitys);
+                                    taskNo = inModel.taskNo;
                                 }
-                                else
+                                catch (Exception ex)
                                 {
-                                    workRoute = workRoutes.Find(f => f.CN_S_TYPE_CODE == "X7");
+                                    Log.Error("鍏ヤ綔涓氬尯澶辫触锛屼紶鍙傦細", JsonConvert.SerializeObject(inWorkAreaEntitys) + ex.ToString());
+                                    ors.Add(OperateResult.Error("鍏ヤ綔涓氬尯澶辫触锛� + ex.Message, req));
+                                    continue;
                                 }
                             }
-                        }
-                        if (workRoute == null)
-                        {
-                            ors.Add(OperateResult.Error("鏈壘鍒颁綔涓氳矾寰�, req));
-                            continue;
-                        }
-                    }
+                            else if (direction == Constants.Out)
+                            {
+                                //浼犻�鍙傛暟
+                                List<OutWorkAreaEntity> outWorkAreaEntitys = new List<OutWorkAreaEntity>();
+                                outWorkAreaEntitys.Add(outModel);
 
-
-                    var existsWorkFlow = workFlowTransType.Find(f => f.workFlowCode == workRoute.CN_S_TYPE_CODE);
-                    if (existsWorkFlow == null)
-                    {
-                        ors.Add(OperateResult.Error("鏈壘鍒颁綔涓氭柟鍚�, req));
-                        continue;
-                    }
-
-                    TN_WM_B_MAKE_TASKEntity makeReq = new TN_WM_B_MAKE_TASKEntity()
-                    {
-                        CN_S_ITEM_CODE = req.PROD_NO,
-                        CN_S_ITEM_NAME = "",
-                        CN_S_START_BIT = req.Location_From,
-                        CN_S_START_AREA = workRoute.CN_S_START_AREA_CODE,
-                        CN_S_END_BIT = req.Location_To,
-                        CN_S_END_AREA = workRoute.CN_S_END_AREA_CODE,
-                        CN_S_TRAY_CODE = req.TurnCardNum,
-                        CN_S_PRIORITY = req.Priority.ToString(),
-                        CN_S_WORKFLOW_NAME = WorkFlowName.FlowNameList[existsWorkFlow.workFlowCode],
-                        CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT),
-                        CN_S_NEED_AMS = isEnableAms.transferEnableAms,
-                        CN_S_ISTRANSPORT = existsWorkFlow.isTransport
-                    };
-
-                    var externalRes = new ExternalResponse();
-                    if (existsWorkFlow.transType == "In")
-                    {
-                        try
-                        {
-                            var res = BLLCreator.Create<ZCBLL>().GLInWorkArea(makeReq);
-                            externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res);
-                        }
-                        catch (Exception ex)
-                        {
-                            ors.Add(OperateResult.Error("鍏ヤ綔涓氬尯澶辫触锛� + ex.Message, req));
-                            continue;
-                        }
-                    }
-                    else
-                    {
-                        try
-                        {
-                            var res = BLLCreator.Create<ZCBLL>().GLOutWorkArea(makeReq);
-                            externalRes = JsonConvert.DeserializeObject<ExternalResponse>(res);
-                        }
-                        catch (Exception ex)
-                        {
-                            ors.Add(OperateResult.Error("鍑轰綔涓氬尯澶辫触锛� + ex.Message, req));
-                            continue;
-                        }
-                    }
-
-                    var _serviceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new
-                    {
-                        CN_S_TASK_NO = req.task_no
-                    });
-                    if (_serviceExec != null)
-                    {
-                        _serviceExec.Update = true;
-                    }
-                    else
-                    {
-                        _serviceExec = new TN_WM_SERVICE_EXECEntity()
-                        {
-                            CN_S_TASK_NO = req.task_no,
-                            CN_S_ITEM_CODE = req.PROD_NO,
-                            CN_S_ITEM_NAME = "",
-                            CN_S_TASK_TYPE = "绉婚�",
-                            CN_S_TRANS_TYPE = WorkFlowName.FlowNameList[existsWorkFlow.workFlowCode],
-                            CN_S_TRAY_CODE = req.TurnCardNum,
-                            CN_N_PRIORITY = req.Priority,
-                            CN_S_START_LOCATION = req.Location_From,
-                            CN_S_END_LOCATION = req.Location_To,
-                            CN_T_CREATE = DateTime.Now,
-                            CN_C_COMPLETE = Constants.N,
-                            CN_C_SEND_MES = Constants.N,
-                            CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT),
-                            CN_N_REQUEST_TYPE = 0,//req.RequestType,
-                            CN_S_TRAY_TYPE = "0"//req.LoadType
-                        };
-                    }
-
-                    if (!externalRes.success)
-                    {
-                        //鍐欎换鍔℃墽琛岃〃锛屽苟鍥炴姤mes
-                        if (externalRes.errCode == "7" || externalRes.errCode == "8")
-                        {
-
-                            _serviceExec.CN_C_COMPLETE = Constants.Y;
-                            _serviceExec.CN_C_SEND_MES = Constants.Y;
-                            _serviceExec.CN_S_MSG = externalRes.errMsg;
+                                try
+                                {
+                                    Log.Info("鍑轰綔涓氬尯寮�锛屼紶鍙傦細", JsonConvert.SerializeObject(outWorkAreaEntitys));
+                                    externalRes = BLLCreator.Create<WmsApiBaseBLL>().OutWorkArea(outWorkAreaEntitys);
+                                    taskNo = outModel.taskNo;
+                                }
+                                catch (Exception ex)
+                                {
+                                    Log.Error("鍑轰綔涓氬尯澶辫触锛屼紶鍙傦細", JsonConvert.SerializeObject(outWorkAreaEntitys) + ex.ToString());
+                                    ors.Add(OperateResult.Error("鍑轰綔涓氬尯澶辫触锛� + ex.Message, req));
+                                    continue;
+                                }
+                            }
+                            else
+                            {
+                                ors.Add(OperateResult.Error("鏈煡鐨勫嚭鍏ュ簱绫诲瀷锛� + direction, req));
+                                continue;
+                            }
                         }
                         else
+                        {
+                            // 涓嶉渶瑕佸垱寤簑ms浠诲姟鐨勬墽琛屾祦绋嬶紝鏍囪瘑涓烘垚鍔�+                            externalRes.success = true;
+                        }
+
+                        var _serviceExec = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetSingleEntity(new
+                        {
+                            CN_S_TASK_NO = req.task_no
+                        });
+                        if (_serviceExec != null)
+                        {
+                            _serviceExec.Update = true;
+                        }
+                        else
+                        {
+                            _serviceExec = new TN_WM_SERVICE_EXECEntity()
+                            {
+                                CN_S_TASK_NO = req.task_no,
+                                CN_S_ITEM_CODE = req.PROD_NO,
+                                CN_S_ITEM_NAME = "",
+                                CN_S_TASK_TYPE = "绉婚�",
+                                CN_S_TRANS_TYPE = req.BUSI_TYPE_NAME,
+                                CN_S_TRAY_CODE = req.TurnCardNum,
+                                CN_N_PRIORITY = req.Priority,
+                                CN_S_START_LOCATION = req.Location_From,
+                                CN_S_END_LOCATION = req.Location_To,
+                                CN_T_CREATE = DateTime.Now,
+                                CN_C_COMPLETE = Constants.N,
+                                CN_C_SEND_MES = Constants.N,
+                                CN_F_QUANTITY = Convert.ToDecimal(req.CURRENT_AMOUNT),
+                                CN_N_REQUEST_TYPE = null,
+                                CN_S_TRAY_TYPE = ""
+                            };
+                        }
+
+                        if (!externalRes.success)
                         {
                             _serviceExec.CN_C_COMPLETE = Constants.N;
                             _serviceExec.CN_C_SEND_MES = Constants.N;
                             _serviceExec.CN_S_MSG = externalRes.errMsg;
-                        }
 
-                        var _or = TransportSuccess(_serviceExec);
+                            var _or = BLLCreator.Create<ZCMiddleOperateBll>().TransportSuccess(req, _serviceExec, taskNo);
 
-                        if (!_or.Success)
-                        {
-                            Log.DomainInfo("TransportSuccess error", _or.Msg);
-                            Log.DomainInfo("externalRes Error锛�" + externalRes.errMsg, JsonConvert.SerializeObject(req));
-
-                            ors.Add(OperateResult.Error("TransportSuccess error", _or.Msg));
-                        }
-                        else
-                        {
-                            if (externalRes.errCode == "7" || externalRes.errCode == "8")
+                            if (!_or.Success)
                             {
-                                ors.Add(OperateResult.Warning("宸插弽棣堣嚦mes锛屾秷鎭細 " + externalRes.errMsg, req));
+                                Log.DomainInfo("TransportSuccess error", _or.Msg);
+                                Log.DomainInfo("externalRes Error锛�" + externalRes.errMsg, JsonConvert.SerializeObject(req));
+
+                                ors.Add(OperateResult.Error("TransportSuccess error", _or.Msg));
                             }
                             else
                             {
                                 ors.Add(OperateResult.Error("externalRes Error锛�" + externalRes.errMsg, req));
                             }
                         }
-                    }
-                    else//鎴愬姛鐨勮瘽鍐欑Щ閫佷换鍔℃棩蹇�-                    {
-                        var ok = externalRes.okList[0];
-
-                        _serviceExec.CN_S_START_LOCATION = ok.startBit;
-                        _serviceExec.CN_S_END_LOCATION = ok.endBit;
-                        _serviceExec.CN_C_COMPLETE = Constants.Y;
-                        _serviceExec.CN_C_SEND_MES = Constants.Y;
-                        _serviceExec.CN_S_MSG = "涓嬭揪鎴愬姛";
-                        var _or = TransportSuccess(_serviceExec);
-                        if (!_or.Success)
+                        else
                         {
-                            ors.Add(OperateResult.Warning("涓嬭揪鎴愬姛,鏇存柊绉婚�浠诲姟鏃ュ織澶辫触锛� + _or.Msg, req));
-                            continue;
+                            var ok = externalRes.okList[0];
+
+                            _serviceExec.CN_S_START_LOCATION = ok.startBit;
+                            _serviceExec.CN_S_END_LOCATION = ok.endBit;
+                            _serviceExec.CN_C_COMPLETE = Constants.Y;
+                            _serviceExec.CN_C_SEND_MES = Constants.Y;
+                            _serviceExec.CN_S_MSG = "涓嬭揪鎴愬姛";
+
+                            req.Data_status = req.SECTION == TaskSectionConstants.COMPLETE ? 2 : 1;
+                            req.NeedTrig = Constants.N;
+                            req.SECTION = section;
+
+                            var _or = BLLCreator.Create<ZCMiddleOperateBll>().TransportSuccess(req, _serviceExec, taskNo);
+
+                            if (!_or.Success)
+                            {
+                                ors.Add(OperateResult.Warning("涓嬭揪鎴愬姛,鏇存柊绉婚�浠诲姟鏃ュ織澶辫触锛� + _or.Msg, req));
+                                continue;
+                            }
+                            ors.Add(OperateResult.Succeed("涓嬭揪鎴愬姛", req));
                         }
-                        ors.Add(OperateResult.Succeed("涓嬭揪鎴愬姛", req));
+
+                        Log.DomainInfo("绉婚�浠诲姟 缁撴灉", JsonConvert.SerializeObject(ors));
+                    }
+                    catch (Exception ex)
+                    {
+                        ors.Add(OperateResult.Error("绉婚�浠诲姟澶辫触锛� + ex.Message, req));
+                        continue;
                     }
                 }
                 Log.DomainInfo("绉婚�浠诲姟 缁撴灉", JsonConvert.SerializeObject(ors));
@@ -480,6 +461,72 @@
             return ors;
         }
         #endregion
+
+        public string NextSection(TN_MES_TASK task)
+        {
+            if (task.BUSI_TYPE == "1")
+            {
+                if (string.IsNullOrEmpty(task.SECTION))
+                    return TaskSectionConstants.BCP_KTCK;
+                else if (task.SECTION == TaskSectionConstants.BCP_KTCK)
+                    return TaskSectionConstants.BCP_MTRK;
+                else if (task.SECTION == TaskSectionConstants.BCP_MTRK)
+                    return TaskSectionConstants.COMPLETE;
+                else
+                    return TaskSectionConstants.ERROR;
+            }
+            else if (task.BUSI_TYPE == "2")
+            {
+                if (string.IsNullOrEmpty(task.SECTION))
+                    return TaskSectionConstants.CXJ_BCPHK;
+                else if (task.SECTION == TaskSectionConstants.CXJ_BCPHK)
+                    return TaskSectionConstants.COMPLETE;
+                else
+                    return TaskSectionConstants.ERROR;
+            }
+            else if (task.BUSI_TYPE == "3")
+            {
+                if (string.IsNullOrEmpty(task.SECTION))
+                    return TaskSectionConstants.CXJ_KTHK_RECORD;
+                else if (task.SECTION == TaskSectionConstants.CXJ_KTHK_RECORD)
+                    return TaskSectionConstants.COMPLETE;
+                else
+                    return TaskSectionConstants.ERROR;
+            }
+            else if (task.BUSI_TYPE == "4")
+            {
+                if (string.IsNullOrEmpty(task.SECTION))
+                    return TaskSectionConstants.CXJ_MTCK;
+                else if (task.SECTION == TaskSectionConstants.CXJ_MTCK)
+                    return TaskSectionConstants.CXJ_KTHK_KTRK;
+                else if (task.SECTION == TaskSectionConstants.CXJ_KTHK_KTRK)
+                    return TaskSectionConstants.COMPLETE;
+                else
+                    return TaskSectionConstants.ERROR;
+            }
+            else if (task.BUSI_TYPE == "5")
+            {
+                if (string.IsNullOrEmpty(task.SECTION))
+                    return TaskSectionConstants.DS_BCPKTHK;
+                else if (task.SECTION == TaskSectionConstants.DS_BCPKTHK)
+                    return TaskSectionConstants.COMPLETE;
+                else
+                    return TaskSectionConstants.ERROR;
+            }
+            else if (task.BUSI_TYPE == "6")
+            {
+                if (string.IsNullOrEmpty(task.SECTION))
+                    return TaskSectionConstants.DS_MTCK;
+                else if (task.SECTION == TaskSectionConstants.DS_MTCK)
+                    return TaskSectionConstants.COMPLETE;
+                else
+                    return TaskSectionConstants.ERROR;
+            }
+            else
+            {
+                return TaskSectionConstants.ERROR;
+            }
+        }
 
         #region 鍒ゆ柇鏄惁鍦ㄥ伐浣滄椂闂�         /// <summary>
@@ -524,9 +571,6 @@
 
                 //浼犻�鍙傛暟
                 List<InWorkAreaEntity> inWorkAreaEntitys = new List<InWorkAreaEntity>();
-
-
-
 
 
                 InWorkAreaEntity model = new InWorkAreaEntity();
@@ -783,267 +827,364 @@
         {
             try
             {
-                //鍙栨湭鎵ц銆佸畬鎴愪竴鍗娿�瀹屾垚閮ㄥ垎鐨勮嚜绠′换鍔�+                //鍙栨湭鎵ц鐨勮嚜绠′换鍔�                 var tasks = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetList(new
                 {
                     CN_S_TASK_FLAG = Constants.TaskFlag_ZG,
-                    CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf, Constants.TaskState_CompletePart }
+                    CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf }
                 });
 
-                // 鎺ラ┏浣嶉厤缃�+                var mes_tasks = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new
+                {
+                    task_no = tasks.ConvertAll(t => t.CN_S_EXT1).ToList()
+                });
+
                 var connectBitStr = JsonHelper.GetValue("connectBit");
                 if (string.IsNullOrEmpty(connectBitStr))
                     throw new Exception("鏈壘鍒伴厤缃細connectBit");
+
+                var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr);
 
                 List<OperateResult> ors = new List<OperateResult>();
                 foreach (var task in tasks)
                 {
                     try
                     {
-                        var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr);
-
-                        OperateResult or = OperateResult.Error("鏈煡閿欒");
-
-                        #region 鍗婃垚鍝�-
-                        #region 绌烘墭鍑哄簱
-
-                        if (task.CN_S_EXT3 == TaskSectionConstants.BCP_KTCK)
+                        var mes_task = mes_tasks.FirstOrDefault(t => t.task_no == task.CN_S_EXT1);
+                        if (mes_task == null)
                         {
-                            // 绌烘墭鍑哄簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTCK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
+                            ors.Add(OperateResult.Error("浠嶵N_MES_TASK琛ㄤ腑鏈壘鍒版浠诲姟鐨勬潵婧怣ES浠诲姟锛屼换鍔$紪鍙凤細" + task.CN_S_TASK_NO));
+                            continue;
+                        }
+                        // 鍑哄簱涓讳换鍔℃槸鍚屾椂涓嬩袱鏉″瓙浠诲姟
+                        if (mes_task.SECTION == TaskSectionConstants.BCP_KTCK ||
+                            mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ||
+                            mes_task.SECTION == TaskSectionConstants.DS_MTCK)
+                        {
+                            string tasktype = mes_task.SECTION == TaskSectionConstants.BCP_KTCK ? ConnectBitConstants.KTCK : mes_task.SECTION == TaskSectionConstants.CXJ_MTCK ? ConnectBitConstants.MTCK : mes_task.SECTION == TaskSectionConstants.DS_MTCK ? ConnectBitConstants.DSCK : "";
+                            //绔嬪簱璐т綅
+                            string lkBit = task.CN_S_START_BIT;
+
+                            var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
                             {
-                                // 鍒涘缓涓ゆ潯骞惰瀛愪换鍔�-                                or = ExecBCP_KTCK_Add(task, connectBit);
+                                CN_S_LOCATION_CODE = lkBit
+                            });
+                            if (locationBit == null)
+                                throw new Exception("鏈壘鍒扮珛搴撹揣浣嶏細" + lkBit);
+                            var _bit = connectBits.Find(f => f.tasktype == tasktype);
+                            if (_bit == null)
+                                throw new Exception("鏈壘鍒伴厤缃被鍨嬩负锛� + tasktype + "鐨勬帴椹充綅");
+
+                            var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+                            {
+                                CN_S_LOCATION_CODE = _bit.bit
+                            });
+                            if (connectBit == null)
+                                throw new Exception("鏈壘鍒版帴椹充綅璐т綅锛� + _bit.bit);
+                            if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
+                                throw new Exception("鎺ラ┏浣嶏細" + _bit.bit + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+                            var readytBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+                            {
+                                CN_S_LOCATION_CODE = _bit.readybit
+                            });
+                            if (readytBit == null)
+                                throw new Exception("鏈壘鍒板噯澶囩偣璐т綅锛� + _bit.bit);
+                            if (readytBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
+                                throw new Exception("鍑嗗鐐癸細" + _bit.bit + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+                            //璧嬪�鎺ラ┏浣�+                            task.CN_S_CONNECT_BIT = _bit.bit;
+                            task.CN_S_EXT2 = _bit.readybit;
+
+                            string taskNo1 = task.CN_S_TASK_NO + "_1";
+                            //鍒涘缓绗竴涓换鍔�+                            TN_WM_TASKEntity taskEntity1 = new TN_WM_TASKEntity()
+                            {
+                                CN_S_TASK_NO = taskNo1,
+                                CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                                CN_S_START_BIT = task.CN_S_START_BIT,
+                                CN_S_END_BIT = task.CN_S_CONNECT_BIT,
+                                CN_S_STATE = Constants.TaskState_NoExecuted,
+                                CN_S_BF_TASK_NO = "",
+                                CN_S_AF_TASK_NO = "",
+                                CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
+                                CN_S_START_AREA = task.CN_S_START_AREA,
+                                CN_S_END_AREA = connectBit.CN_S_AREA_CODE,
+                                CN_N_PRIORITY = 1,
+                                CN_S_CREATOR = "sys",
+                                CN_S_CREATOR_BY = "sys",
+                                CN_T_CREATE = DateTime.Now,
+                                CN_T_MODIFY = DateTime.Now,
+                                CN_S_REMARK = "",
+                                CN_S_TASK_FLAG = Constants.TaskFlag_LG,
+                                CN_S_TASK_TYPE = "杞繍"
+                            };
+                            string taskNo2 = task.CN_S_TASK_NO + "_2";
+                            //鍒涘缓绗簩涓换鍔�+                            TN_WM_TASKEntity taskEntity2 = new TN_WM_TASKEntity()
+                            {
+                                CN_S_TASK_NO = taskNo2,
+                                CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                                CN_S_START_BIT = task.CN_S_CONNECT_BIT,
+                                CN_S_END_BIT = task.CN_S_END_BIT,
+                                CN_S_STATE = Constants.TaskState_NoExecuted,
+                                CN_S_BF_TASK_NO = "",
+                                CN_S_AF_TASK_NO = "",
+                                CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
+                                CN_S_START_AREA = connectBit.CN_S_AREA_CODE,
+                                CN_S_END_AREA = task.CN_S_END_AREA,
+                                CN_N_PRIORITY = 1,
+                                CN_S_CREATOR = "sys",
+                                CN_S_CREATOR_BY = "sys",
+                                CN_T_CREATE = DateTime.Now,
+                                CN_T_MODIFY = DateTime.Now,
+                                CN_S_REMARK = "",
+                                CN_S_TASK_FLAG = Constants.TaskFlag_AGV,
+                                CN_S_TASK_TYPE = "杞繍"
+                            };
+                            var or = UseTransaction(trans =>
+                            {
+                                //澧炲姞瀛愪换鍔�+                                CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity1, trans);
+                                //鏇存柊鎺ラ┏浣嶇姸鎬�+                                CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                                {
+                                    CN_S_LOCATION_STATE = Constants.Location_State_InLock
+                                }, new
+                                {
+                                    CN_S_LOCATION_CODE = taskEntity1.CN_S_END_BIT
+                                }, trans);
+                                // 鏇存柊涓讳换鍔℃帴椹充綅 鐘舵�缃负鎵ц涓�璁板綍鎺ラ┏浣嶅拰鍑嗗鐐�+                                CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                                {
+                                    CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT,
+                                    CN_S_EXT1 = task.CN_S_EXT1,
+                                    CN_S_STATE = Constants.TaskState_Executing
+                                }, new
+                                {
+                                    CN_S_TASK_NO = task.CN_S_TASK_NO
+                                }, trans);
+                                //绔嬪簱浠诲姟  闇�璋冪敤wcs鎺ュ彛
+                                // 鍙戦�Wcs浠诲姟
+                                Log.Detail(LogType.LogPara("璋冪敤WCS鎺ュ彛鎵ц浠诲姟"), "浠诲姟淇℃伅锛� + JsonConvert.SerializeObject(taskEntity1));
+                                OperateResult re = BLLCreator.Create<OtherSysApi>().SendWcsCreateTask(taskEntity1);
+                                Log.Detail(LogType.LogPara("璋冪敤WCS鎺ュ彛鎵ц浠诲姟"), "鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re));
+                                if (!re.Success)
+                                {
+                                    throw new Exception(re.Msg);
+                                }
+
+                                //澧炲姞瀛愪换鍔�+                                CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity2, trans);
+                                //鏇存柊鍑嗗鐐圭姸鎬�+                                CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                                {
+                                    CN_S_LOCATION_STATE = Constants.Location_State_OutLock
+                                }, new
+                                {
+                                    CN_S_LOCATION_CODE = taskEntity2.CN_S_START_BIT
+                                }, trans);
+
+                                //agv浠诲姟
+                                re = new OtherSysApi().SendAmsCreateTask(taskEntity2);
+                                if (!re.Success)
+                                {
+                                    throw new Exception(re.Msg);
+                                }
+                            });
+                            if (!or.Success) throw new Exception(or.Msg);
+                        }
+                        else
+                        {
+                            //鏈墽琛岃〃绀虹涓�釜浠诲姟
+                            if (task.CN_S_STATE == Constants.TaskState_NoExecuted)
+                            {
+                                //绔嬪簱璐т綅
+                                string lkBit = string.Empty;
+                                //鏍规嵁浠诲姟绫诲瀷鍒ゆ柇绔嬪簱璐т綅
+                                if (task.CN_S_TASK_TYPE == Constants.Out)
+                                {
+                                    lkBit = task.CN_S_START_BIT;
+                                }
+                                else if (task.CN_S_TASK_TYPE == Constants.In)
+                                {
+                                    lkBit = task.CN_S_END_BIT;
+                                }
+                                else
+                                {
+                                    throw new Exception("鑷浠诲姟浠诲姟绫诲瀷涓嶆纭�);
+                                }
+
+                                var locationBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+                                {
+                                    CN_S_LOCATION_CODE = lkBit
+                                });
+                                if (locationBit == null)
+                                    throw new Exception("鏈壘鍒扮珛搴撹揣浣嶏細" + lkBit);
+                                var _bit = connectBits.Find(f => f.tunnel == Util.ToString(locationBit.CN_S_ROADWAY).Trim());
+                                if (_bit == null)
+                                    throw new Exception("鏈壘鍒伴厤缃贩閬擄細" + locationBit.CN_S_ROADWAY + "鐨勬帴椹充綅");
+
+                                var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+                                {
+                                    CN_S_LOCATION_CODE = _bit.bit
+                                });
+                                if (connectBit == null)
+                                    throw new Exception("鏈壘鍒版帴椹充綅璐т綅锛� + _bit.bit);
+                                if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
+                                    throw new Exception("鎺ラ┏浣嶏細" + _bit.bit + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+                                //璧嬪�鎺ラ┏浣�+                                task.CN_S_CONNECT_BIT = _bit.bit;
+
+                                string taskNo = task.CN_S_TASK_NO + "_1";
+                                //鍒涘缓绗竴涓换鍔�+                                TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity()
+                                {
+                                    CN_S_TASK_NO = taskNo,
+                                    CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                                    CN_S_START_BIT = task.CN_S_START_BIT,
+                                    CN_S_END_BIT = task.CN_S_CONNECT_BIT,
+                                    CN_S_STATE = Constants.TaskState_NoExecuted,
+                                    CN_S_BF_TASK_NO = "",
+                                    CN_S_AF_TASK_NO = "",
+                                    CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
+                                    CN_S_START_AREA = task.CN_S_START_AREA,
+                                    CN_S_END_AREA = connectBit.CN_S_AREA_CODE,
+                                    CN_N_PRIORITY = 1,
+                                    CN_S_CREATOR = "sys",
+                                    CN_S_CREATOR_BY = "sys",
+                                    CN_T_CREATE = DateTime.Now,
+                                    CN_T_MODIFY = DateTime.Now,
+                                    CN_S_REMARK = "",
+                                    CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_LG : Constants.TaskFlag_AGV,
+                                    CN_S_TASK_TYPE = "杞繍"
+                                };
+                                var or = UseTransaction(trans =>
+                                {
+                                    //澧炲姞瀛愪换鍔�+                                    CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans);
+                                    //鏇存柊鎺ラ┏浣嶇姸鎬�+                                    CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                                    {
+                                        CN_S_LOCATION_STATE = Constants.Location_State_InLock
+                                    }, new
+                                    {
+                                        CN_S_LOCATION_CODE = taskEntity.CN_S_END_BIT
+                                    }, trans);
+                                    // 鏇存柊涓讳换鍔℃帴椹充綅 鐘舵�缃负鎵ц涓�+                                    CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                                    {
+                                        CN_S_CONNECT_BIT = task.CN_S_CONNECT_BIT,
+                                        CN_S_STATE = Constants.TaskState_Executing
+                                    }, new
+                                    {
+                                        CN_S_TASK_NO = task.CN_S_TASK_NO
+                                    }, trans);
+                                    //绔嬪簱浠诲姟  闇�璋冪敤wcs鎺ュ彛
+                                    if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG)
+                                    {
+                                        //to do...
+                                        #region 寰呮祴璇�+                                        //OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit);
+                                        //if (!re.Success)
+                                        //{
+                                        //    throw new Exception(re.Msg);
+                                        //}
+                                        #endregion
+                                    }
+                                    else//agv浠诲姟
+                                    {
+                                        //OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity);
+                                        //if (!re.Success)
+                                        //{
+                                        //    throw new Exception(re.Msg);
+                                        //}
+                                    }
+                                });
+                                if (!or.Success) throw new Exception(or.Msg);
                             }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_KTCK_SUB_1)
+                            else//鎵ц涓�崐鐨勪换鍔★紝寮�鍒涘缓绗簩涓换鍔�                             {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                or = ExecBCP_KTCK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_KTCK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉′换鍔�-                                or = ExecBCP_KTCK_Sub2(task, connectBit);
+                                string taskNo = task.CN_S_TASK_NO + "_2";
+                                var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+                                {
+                                    CN_S_LOCATION_CODE = task.CN_S_CONNECT_BIT
+                                });
+                                var _bit = connectBits.Find(f => f.tunnel == Util.ToString(connectBit.CN_S_ROADWAY).Trim());
+                                if (_bit == null)
+                                    throw new Exception("鏈壘鍒伴厤缃贩閬擄細" + connectBit.CN_S_ROADWAY + "鐨勬帴椹充綅");
+                                //鍒涘缓绗簩涓换鍔�+                                TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity()
+                                {
+                                    CN_S_TASK_NO = taskNo,
+                                    CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                                    CN_S_START_BIT = task.CN_S_CONNECT_BIT,
+                                    CN_S_END_BIT = task.CN_S_END_BIT,
+                                    CN_S_STATE = Constants.TaskState_NoExecuted,
+                                    CN_S_BF_TASK_NO = "",
+                                    CN_S_AF_TASK_NO = "",
+                                    CN_S_STOCK_CODE = task.CN_S_STOCK_CODE,
+                                    CN_S_START_AREA = connectBit.CN_S_AREA_CODE,
+                                    CN_S_END_AREA = task.CN_S_END_AREA,
+                                    CN_N_PRIORITY = 1,
+                                    CN_S_CREATOR = "sys",
+                                    CN_S_CREATOR_BY = "sys",
+                                    CN_T_CREATE = DateTime.Now,
+                                    CN_T_MODIFY = DateTime.Now,
+                                    CN_S_REMARK = "",
+                                    CN_S_TASK_FLAG = task.CN_S_TASK_TYPE == Constants.Out ? Constants.TaskFlag_AGV : Constants.TaskFlag_LG,
+                                    CN_S_TASK_TYPE = "杞繍"
+                                };
+
+                                var or = UseTransaction(trans =>
+                                {
+                                    //澧炲姞瀛愪换鍔�+                                    CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity, trans);
+                                    //鏇存柊鎺ラ┏浣嶇姸鎬�+                                    CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                                    {
+                                        CN_S_LOCATION_STATE = Constants.Location_State_OutLock
+                                    }, new
+                                    {
+                                        CN_S_LOCATION_CODE = taskEntity.CN_S_START_BIT
+                                    }, trans);
+                                    // 鏇存柊涓讳换鍔℃帴椹充綅 鐘舵�缃负鎵ц涓�+                                    CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                                    {
+                                        CN_S_STATE = Constants.TaskState_Executing
+                                    }, new
+                                    {
+                                        CN_S_TASK_NO = task.CN_S_TASK_NO
+                                    }, trans);
+
+                                    //绔嬪簱浠诲姟  闇�璋冪敤wcs鎺ュ彛
+                                    if (taskEntity.CN_S_TASK_FLAG == Constants.TaskFlag_LG)
+                                    {
+                                        //to do...
+                                        #region 寰呮祴璇�+                                        //OperateResult re = new OtherSysApi().SendWcsCreateTask(taskEntity, _bit);
+                                        //if (!re.Success)
+                                        //{
+                                        //    throw new Exception(re.Msg);
+                                        //}
+                                        #endregion
+                                    }
+                                    else//agv浠诲姟
+                                    {
+                                        //OperateResult re = new OtherSysApi().SendAmsCreateTask(taskEntity);
+                                        //if (!re.Success)
+                                        //{
+                                        //    throw new Exception(re.Msg);
+                                        //}
+                                    }
+                                });
+                                if (!or.Success) throw new Exception(or.Msg);
                             }
                         }
 
-                        #endregion
-
-                        #region 婊℃墭鍏ュ簱
-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.BCP_MTRK)
-                        {
-                            // 婊℃墭鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗竴鏉″瓙浠诲姟
-                                or = ExecBCP_MTRK_AddSub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_MTRK_SUB_1)
-                            {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                or = ExecBCP_MTRK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.BCP_MTRK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉″瓙浠诲姟
-                                or = ExecBCP_MTRK_Sub2(task, connectBit);
-                            }
-                        }
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.BCP_MTRK_SECOND)
-                        {
-                            // 婊℃墭鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗簩鏉″瓙浠诲姟
-                                or = ExecBCP_MTRK_AddSub2(task, connectBit);
-                            }
-                        }
-
-                        #endregion
-
-                        #endregion
-
-                        #region 鎴愬瀷鏈�-
-                        #region 鍗婃垚鍝佸洖搴�-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_BCPHK)
-                        {
-                            // 婊℃墭鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗竴鏉″瓙浠诲姟
-                                ExecCXJ_BCPHK_AddSub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1)
-                            {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                ExecCXJ_BCPHK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉″瓙浠诲姟
-                                ExecCXJ_BCPHK_Sub2(task, connectBit);
-                            }
-                        }
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_BCPHK_SECOND)
-                        {
-                            // 婊℃墭鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗簩鏉″瓙浠诲姟
-                                ExecCXJ_BCPHK_AddSub2(task, connectBit);
-                            }
-                        }
-
-                        #endregion
-
-                        #region 绌烘墭鍥炲簱
-
-                        #region 璁板綍
-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_KTHK_RECORD)
-                        {
-                            // 鍙敤浜庤褰�-                            // 鍦ㄥ悓涓�嚎杈硅揣浣嶇殑婊℃墭鍑哄簱浠诲姟瀹屾垚鍚庢墽琛�-                        }
-
-                        #endregion
-
-                        #region 绌烘墭鍏ュ簱
-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_KTHK_KTRK)
-                        {
-                            // 绌烘墭鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗竴鏉″瓙浠诲姟
-                                ExecCXJ_KTHK_KTRK_AddSub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1)
-                            {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                ExecCXJ_KTHK_KTRK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉″瓙浠诲姟
-                                ExecCXJ_KTHK_KTRK_Sub2(task, connectBit);
-                            }
-                        }
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_KTHK_KTRK_SECOND)
-                        {
-                            // 绌烘墭鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗簩鏉″瓙浠诲姟
-                                ExecCXJ_KTHK_KTRK_AddSub2(task, connectBit);
-                            }
-                        }
-
-                        #endregion
-
-                        #endregion
-
-                        #region 婊℃墭鍑哄簱
-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.CXJ_MTCK)
-                        {
-                            // 婊℃墭鍑哄簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTCK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓涓ゆ潯骞惰瀛愪换鍔�-                                or = ExecCXJ_MTCK_Add(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_1)
-                            {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                or = ExecCXJ_MTCK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_MTCK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉′换鍔�-                                or = ExecCXJ_MTCK_Sub2(task, connectBit);
-                            }
-                        }
-
-                        #endregion
-
-                        #endregion
-
-                        #region 甯︽潫
-
-                        #region 鍗婃垚鍝�绌烘墭鍥炲簱
-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.DS_BCPKTHK)
-                        {
-                            // 甯︽潫鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.DSRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗竴鏉″瓙浠诲姟
-                                ExecDS_BCPKTHK_AddSub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_1)
-                            {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                ExecDS_BCPKTHK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.CXJ_BCPHK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉″瓙浠诲姟
-                                ExecDS_BCPKTHK_Sub2(task, connectBit);
-                            }
-                        }
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.DS_BCPKTHK_SECOND)
-                        {
-                            // 甯︽潫鍏ュ簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.DSRK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓绗簩鏉″瓙浠诲姟
-                                ExecDS_BCPKTHK_AddSub2(task, connectBit);
-                            }
-                        }
-
-                        #endregion
-
-                        #region 婊℃墭鍑哄簱
-
-                        else if (task.CN_S_EXT3 == TaskSectionConstants.DS_MTCK)
-                        {
-                            // 甯︽潫鍑哄簱鐨勬帴椹充綅
-                            var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.DSCK);
-                            if (task.CN_S_EXT2 == TaskFlagConstants.ROOT)
-                            {
-                                // 鍒涘缓涓ゆ潯骞惰瀛愪换鍔�-                                or = ExecCXJ_MTCK_Add(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.DS_MTCK_SUB_1)
-                            {
-                                // 鎵ц绗竴鏉″瓙浠诲姟
-                                or = ExecCXJ_MTCK_Sub1(task, connectBit);
-                            }
-                            else if (task.CN_S_EXT2 == TaskFlagConstants.DS_MTCK_SUB_2)
-                            {
-                                // 鎵ц绗簩鏉′换鍔�-                                or = ExecCXJ_MTCK_Sub2(task, connectBit);
-                            }
-                        }
-
-                        #endregion
-
-                        #endregion
+                        ors.Add(OperateResult.Succeed("鐢熸垚鎴愬姛"));
                     }
                     catch (Exception ex)
                     {
@@ -1055,100 +1196,6 @@
             catch (Exception ex)
             {
                 Log.DomainInfo("SelfManageTask Error", ex.Message);
-            }
-        }
-
-        /// <summary>
-        /// 閬嶅巻涓棿琛紝鏍规嵁涓氬姟绫诲瀷鍒涘缓WMS浠诲姟
-        /// </summary>
-        public void ExecTransferTask()
-        {
-            // 宸叉帴鏀跺緟澶勭悊浠诲姟
-            var receiveTasks = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new TN_MES_TASK
-            {
-                NeedTrig = "Y"
-            }).OrderBy(t => t.CreateDate).ToList();
-
-            List<OperateResult> ors = new List<OperateResult>();
-
-            foreach (var task in receiveTasks)
-            {
-                try
-                {
-                    // 浠巑ongo涓幏鍙栬揣浣嶇浉鍏崇殑淇℃伅 - 璧峰璐т綅
-                    AutoBomLocationEntity start_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_From);
-                    // 浠巑ongo涓幏鍙栬揣浣嶇浉鍏崇殑淇℃伅 - 缁堢偣璐т綅
-                    AutoBomLocationEntity end_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_To);
-
-                    // 涓讳换鍔℃墽琛屾祦绋嬩腑鐨勮捣濮嬮樁娈�-                    string section = "";
-                    switch (task.BUSI_TYPE)
-                    {
-                        case "1":
-                            section = TaskSectionConstants.BCP_KTCK;
-                            break;
-                        case "2":
-                            section = TaskSectionConstants.CXJ_BCPHK;
-                            break;
-                        case "3":
-                            section = TaskSectionConstants.CXJ_KTHK_RECORD;
-                            break;
-                        case "4":
-                            section = TaskSectionConstants.CXJ_MTCK;
-                            break;
-                        case "5":
-                            section = TaskSectionConstants.DS_BCPKTHK;
-                            break;
-                        case "6":
-                            section = TaskSectionConstants.DS_MTCK;
-                            break;
-                    }
-                    // 鍒涘缓WMS涓讳换鍔�-                    TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity()
-                    {
-                        CN_S_TASK_NO = task.task_no,
-                        CN_S_TRAY_CODE = task.TurnCardNum,
-                        CN_S_STATE = Constants.TaskState_NoExecuted,
-                        CN_S_BF_TASK_NO = "",
-                        CN_S_AF_TASK_NO = "",
-                        CN_S_STOCK_CODE = start_location.CN_S_STOCK_CODE,
-                        CN_S_START_AREA = start_location.CN_S_AREA_CODE,
-                        CN_S_START_BIT = start_location.CN_S_LOCATION_CODE,
-                        CN_S_END_AREA = end_location.CN_S_AREA_CODE,
-                        CN_S_END_BIT = end_location.CN_S_LOCATION_CODE,
-                        CN_N_PRIORITY = 1,
-                        CN_S_CREATOR = "sys",
-                        CN_S_CREATOR_BY = "sys",
-                        CN_T_CREATE = DateTime.Now,
-                        CN_T_MODIFY = DateTime.Now,
-                        CN_S_REMARK = "",
-                        CN_S_TASK_FLAG = Constants.TaskFlag_ZG,
-                        CN_S_EXT1 = "",
-                        CN_S_EXT2 = TaskFlagConstants.ROOT,
-                        CN_S_EXT3 = section
-                    };
-                    UseTransaction(trans =>
-                    {
-                        // 澧炲姞WMS涓讳换鍔�-                        OperateResult re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity);
-                        if (!re.Success)
-                            throw new Exception(re.Msg);
-                        // 鏇存柊TN_MES_TASK鐘舵�
-                        CreateDapperDAL<TN_MES_TASK>().Update(new
-                        {
-                            NeedTrig = "N"
-                        }, new { task_no = task.task_no }, trans);
-                        if (!re.Success)
-                            throw new Exception(re.Msg);
-                    });
-
-                    ors.Add(OperateResult.Succeed("鐢熸垚鎴愬姛"));
-                }
-                catch (Exception ex)
-                {
-                    ors.Add(OperateResult.Error(ex.Message));
-                }
-                Log.DomainInfo("ExecTransferTask", JsonConvert.SerializeObject(ors));
             }
         }
 
@@ -2866,21 +2913,18 @@
         /// 浠诲姟瀹屾垚
         /// </summary>
         public static string COMPLETE = "浠诲姟瀹屾垚";
+        public static string ERROR = "鎵ц澶辫触";
 
         #region 鍗婃垚鍝� 
         /// <summary>
         /// 鍗婃垚鍝�绌烘墭鍑哄簱
         /// </summary>
-        public static string BCP_KTCK = "绌烘墭鍑哄簱";
+        public static string BCP_KTCK = "鍗婃垚鍝�绌烘墭鍑哄簱";
         /// <summary>
         /// 鍗婃垚鍝�婊℃墭鍏ュ簱
         /// </summary>
         public static string BCP_MTRK = "鍗婃垚鍝�婊℃墭鍏ュ簱";
-        /// <summary>
-        /// 鍗婃垚鍝�婊℃墭鍏ュ簱-绗簩闃舵
-        /// </summary>
-        public static string BCP_MTRK_SECOND = "鍗婃垚鍝�婊℃墭鍏ュ簱-绗簩闃舵";
 
         #endregion
 
@@ -2890,11 +2934,6 @@
         /// 鎴愬瀷鏈�鍗婃垚鍝佸洖搴�         /// </summary>
         public static string CXJ_BCPHK = "鎴愬瀷鏈�鍗婃垚鍝佸洖搴�;
-
-        /// <summary>
-        /// 鎴愬瀷鏈�鍗婃垚鍝佸洖搴�绗簩闃舵
-        /// </summary>
-        public static string CXJ_BCPHK_SECOND = "鎴愬瀷鏈�鍗婃垚鍝佸洖搴�绗簩闃舵";
         /// <summary>
         /// 鎴愬瀷鏈�绌烘墭鍥炲簱-璁板綍闃舵
         /// </summary>
@@ -2904,17 +2943,9 @@
         /// </summary>
         public static string CXJ_KTHK_KTRK = "鎴愬瀷鏈�绌烘墭鍥炲簱-鍏ュ簱闃舵";
         /// <summary>
-        /// 鎴愬瀷鏈�绌烘墭鍥炲簱-鍏ュ簱闃舵-绗簩闃舵
-        /// </summary>
-        public static string CXJ_KTHK_KTRK_SECOND = "鎴愬瀷鏈�绌烘墭鍥炲簱-鍏ュ簱闃舵-绗簩闃舵";
-        /// <summary>
         /// 鎴愬瀷鏈�婊℃墭鍑哄簱
         /// </summary>
         public static string CXJ_MTCK = "鎴愬瀷鏈�婊℃墭鍑哄簱";
-        /// <summary>
-        /// 鎴愬瀷鏈�绌烘墭鍏ュ簱
-        /// </summary>
-        public static string CXJ_KTRK = "鎴愬瀷鏈�绌烘墭鍏ュ簱";
 
         #endregion
 
@@ -2924,10 +2955,6 @@
         /// 甯︽潫-鍗婃垚鍝�绌烘墭鍥炲簱
         /// </summary>
         public static string DS_BCPKTHK = "鎴愬瀷鏈哄甫鏉�鍗婃垚鍝�绌烘墭鍥炲簱";
-        /// <summary>
-        /// 甯︽潫-鍗婃垚鍝�绌烘墭鍥炲簱-绗簩闃舵
-        /// </summary>
-        public static string DS_BCPKTHK_SECOND = "鎴愬瀷鏈哄甫鏉�鍗婃垚鍝�绌烘墭鍥炲簱-绗簩闃舵";
         /// <summary>
         /// 甯︽潫-婊℃墭鍑哄簱
         /// </summary>
diff --git a/HH.WMS.Common/Constants.cs b/HH.WMS.Common/Constants.cs
index 778911e..f2e20d8 100644
--- a/HH.WMS.Common/Constants.cs
+++ b/HH.WMS.Common/Constants.cs
@@ -495,10 +495,6 @@
         /// 浠诲姟鐘舵�-瀹屾垚涓�崐
         /// </summary>
         public static readonly string TaskState_CompleteHalf = "瀹屾垚涓�崐";
-        /// <summary>
-        /// 浠诲姟鐘舵�-瀹屾垚閮ㄥ垎
-        /// </summary>
-        public static readonly string TaskState_CompletePart = "閮ㄥ垎瀹屾垚";
         #endregion
         #region 浠诲姟鎵ц鍙嶉缁撴灉
         /// <summary>
diff --git a/HH.WMS.Common/JsonHelper.cs b/HH.WMS.Common/JsonHelper.cs
index 4138386..24e0751 100644
--- a/HH.WMS.Common/JsonHelper.cs
+++ b/HH.WMS.Common/JsonHelper.cs
@@ -660,8 +660,8 @@
                     using (JsonTextReader reader = new JsonTextReader(file))
                     {
                         JObject o = (JObject)JToken.ReadFrom(reader);
-                        var value = o[name].ToString();
-                        return value.Replace("\r\n", "");
+                        var value = o[name]?.ToString();
+                        return value?.Replace("\r\n", "")??"";
                     }
                 }
             }
diff --git a/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs b/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs
index 83dd663..7f376b3 100644
--- a/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs
+++ b/HH.WMS.Entitys/Entitys/Mes/TN_MES_TASK.cs
@@ -146,5 +146,39 @@
         /// </summary>
         [Column("BUSI_TYPE")]
         public string BUSI_TYPE { get; set; }
+
+        public string BUSI_TYPE_NAME
+        {
+            get
+            {
+                string name = "鏈煡";
+                switch (BUSI_TYPE)
+                {
+                    case "1":
+                        name = "鍗婃垚鍝佹弧鎵樺叆搴�;
+                        break;
+                    case "2":
+                        name = "鎴愬瀷鏈哄崐鎴愬搧鍥炲簱";
+                        break;
+                    case "3":
+                        name = "鎴愬瀷鏈虹┖妗跺洖搴�;
+                        break;
+                    case "4":
+                        name = "鎴愬瀷鏈烘弧鎵樺嚭搴�;
+                        break;
+                    case "5":
+                        name = "鎴愬瀷鏈哄甫鏉熷洖搴�;
+                        break;
+                    case "":
+                        name = "鎴愬瀷鏈哄甫鏉熸弧鎵樺嚭搴�;
+                        break;
+                }
+                return name;
+            }
+        }
+        /// <summary>
+        /// 浠诲姟闃舵
+        /// </summary>
+        public string SECTION { get; set; }
     }
 }
diff --git a/HH.WMS.Entitys/Entitys/TN_WM_TASKEntity.cs b/HH.WMS.Entitys/Entitys/TN_WM_TASKEntity.cs
index 983e698..79b5566 100644
--- a/HH.WMS.Entitys/Entitys/TN_WM_TASKEntity.cs
+++ b/HH.WMS.Entitys/Entitys/TN_WM_TASKEntity.cs
@@ -115,18 +115,18 @@
         [Column("CN_S_END_AREA_TYPE")]
         public string CN_S_END_AREA_TYPE { get; set; }
         /// <summary>
-        /// 鎵╁睍瀛楁1 涓讳换鍔$紪鍙�+        /// 鎵╁睍瀛楁1 MES浠诲姟缂栧彿
         /// </summary>
         [Column("CN_S_EXT1")]
         public string CN_S_EXT1 { get; set; }
         /// <summary>
-        /// 鎵╁睍瀛楁2 浠诲姟鏍囪瘑
+        /// 鎵╁睍瀛楁2 鍑嗗鐐�         /// </summary>
         [Column("CN_S_EXT2")]
         public string CN_S_EXT2 { get; set; }
 
         /// <summary>
-        /// 鎵╁睍瀛楁3 浠诲姟鎵ц闃舵
+        /// 鎵╁睍瀛楁3
         /// </summary>
         [Column("CN_S_EXT3")]
         public string CN_S_EXT3 { get; set; }
diff --git a/HH.WMS.WebApi/Config.json b/HH.WMS.WebApi/Config.json
index 105abe0..3378880 100644
--- a/HH.WMS.WebApi/Config.json
+++ b/HH.WMS.WebApi/Config.json
@@ -1,237 +1,4 @@
 锘縶
-  "isSendAms": {
-    "moveStockEnableAms": "N", //绉诲簱鏄惁鍚敤ams
-    "transferEnableAms": "N" //绉婚�鏄惁鍚敤ams
-  },
-  //鐢熻兌绉诲簱锛堜竴妤间腑杞尯鍒颁簩妤间腑杞尯锛�-  "transferOfRawRubber": {
-    "itemCode": "6972879772026",
-    "itemName": "鐢熻兌鍚嶇О",
-    "transferMax": 10, //浜屾ゼ鍙瓨鏀捐浆杩愮殑鏈�ぇ鍊硷紝澶т簬绛変簬璇ュ�鏈嶅姟鏆傚仠鎵ц
-    "startArea": "F1_SJZZQ", //涓�ゼ涓浆鍖哄煙
-    "endArea": "F2_SJZZQ", //浜屾ゼ涓浆鍖哄煙
-    "startTime": "8:30", //鍑犵偣寮�
-    "endTime": "10:30" //鍑犵偣缁撴潫
-  },
-  //缁堢偧鑳剁Щ搴�-  "transferOfFinalRubber": {
-    "itemCode": "6972879772002",
-    "itemName": "缁堢偧鑳�,
-    "transferMax": 10, //浜屾ゼ鍙瓨鏀捐浆杩愮殑鏈�ぇ鍊硷紝澶т簬绛変簬璇ュ�鏈嶅姟鏆傚仠鎵ц
-    "startArea": "ZLJCFQ", //缁堢偧鑳跺瓨鏀惧尯
-    "endArea": "DCJHCQ", //澶ц溅闂寸紦瀛樺尯
-    "startTime": "8:30", //鍑犵偣寮�
-    "endTime": "10:30" //鍑犵偣缁撴潫
-  },
-  "workFlowTransType": [
-    {
-      "workFlowCode": "S1",
-      "workFlowName": "鐢熻兌涓浆鎼繍",
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "S2",
-      "workFlowName": "鐢熻兌涓浆绉诲簱",
-      "transType": "Out",
-      "isTransport": "Y"
-    },
-    {
-      "workFlowCode": "S3",
-      "workFlowName": "瀵嗙偧鏈哄彨鏂�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "S4",
-      "workFlowName": "瀵嗙偧鏈哄伐浣嶇┖鎵橀�鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "S5",
-      "workFlowName": "鐢熻兌灏忕洏鏂欓�鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-
-    {
-      "workFlowCode": "X1",
-      "workFlowName": "灏忔枡绉ゅ彨鏂�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "X2",
-      "workFlowName": "灏忔枡绉ゅ彨鏂欏彇绌烘墭",
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "X3",
-      "workFlowName": "灏忔枡绉ゆ惉杩�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "X4",
-      "workFlowName": "灏忔枡绉ゆ惉杩愬彇绌烘墭",
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "X5",
-      "workFlowName": "瀵嗙偧浜х嚎鍛煎彨灏忔枡",
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "X6",
-      "workFlowName": "瀵嗙偧鐢熶骇绾垮彇绌烘墭",
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "X7",
-      "workFlowName": "灏忔枡灏忕洏鏂欓�鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-
-    {
-      "workFlowCode": "M1",
-      "workFlowName": "姣嶈兌鏀剁毊涓嬬嚎",
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "M2",
-      "workFlowName": "鏀剁毊璁惧鍛煎彨绌烘墭",
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "M3",
-      "workFlowName": "姣嶈兌瀵嗙偧鏈哄彨鏂�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "M4",
-      "workFlowName": "瀵嗙偧鏈哄鏂欒ˉ璐�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "M5",
-      "workFlowName": "姣嶈兌灏忕洏鏂欓�鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "M6",
-      "workFlowName": "瀵嗙偧鏈哄彨鏂欒繑绌烘墭",
-      "transType": "In"
-    },
-    {
-      "workFlowCode": "Z1",
-      "workFlowName": "缁堢偧鑳惰兌鐩樹笅绾�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "Z2",
-      "workFlowName": "缁堢偧鑳跺懠鍙┖鎵�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "Z3",
-      "workFlowName": "缁堢偧鑳剁Щ搴�,
-      "transType": "Out",
-      "isTransport": "Y"
-    },
-    {
-      "workFlowCode": "Z4",
-      "workFlowName": "缁堢偧鑳朵笅宸ュ簭鍙枡",
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "Z5",
-      "workFlowName": "缁堢偧鑳跺鏂欒ˉ璐�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "Z6",
-      "workFlowName": "缁堢偧鑳跺皬鐩樻枡閫�洖",
-      "transType": "In",
-      "isTransport": "N"
-    },
-
-    {
-      "workFlowCode": "T1",
-      "workFlowName": "鑳庨潰鐢熶骇绾夸笅绾�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "T2",
-      "workFlowName": "绌烘爡杞﹁繍鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "T3",
-      "workFlowName": "鎴愬瀷鏈哄彨鏂�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "T4",
-      "workFlowName": "鎴愬瀷鏈哄彨鏂欏洖绌烘墭",
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "T5",
-      "workFlowName": "浣欐枡鏍兼爡杞﹂�鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-
-    {
-      "workFlowCode": "L1",
-      "workFlowName": "鍘嬪欢鐢熶骇绾夸笅绾�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "L2",
-      "workFlowName": "绌哄嵎杞磋繍鍥�,
-      "transType": "In",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "L3",
-      "workFlowName": "鐩磋/鏂滆鐢熶骇绾垮彨鏂�,
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "L4",
-      "workFlowName": "鐩磋/鏂滆绌烘墭鎺掑嚭鍛煎彨",
-      "transType": "Out",
-      "isTransport": "N"
-    },
-    {
-      "workFlowCode": "L5",
-      "workFlowName": "浣欐枡甯樺竷閫�洖",
-      "transType": "In",
-      "isTransport": "N"
-    }
-  ],
   //鎺ラ┏浣�   "connectBit": [
     {
@@ -240,6 +7,7 @@
     },
     {
       "bit": "鎺ラ┏浣嶈揣浣�,
+      "readybit": "鍑嗗鐐硅揣浣�,
       "tasktype": "甯︽潫鍑哄簱"
     },
     {
@@ -253,6 +21,7 @@
     },
     {
       "bit": "鎺ラ┏浣嶈揣浣�,
+      "readybit": "鍑嗗鐐硅揣浣�,
       "tasktype": "婊℃墭鍑哄簱"
     },
     {
diff --git a/HH.WMS.WebApi/Controllers/WmsApiController.cs b/HH.WMS.WebApi/Controllers/WmsApiController.cs
index 924f931..b1c87ec 100644
--- a/HH.WMS.WebApi/Controllers/WmsApiController.cs
+++ b/HH.WMS.WebApi/Controllers/WmsApiController.cs
@@ -1087,10 +1087,45 @@
         public object InWorkArea(dynamic jsonData)
         {
             var logPara = LogType.LogPara("浠诲姟涓嬪彂");
-            Log.Detail(logPara, "HCZCSendTask:浠诲姟涓嬪彂浼犻�鍙傛暟锛� + jsonData.ToString());
 
             ZCReceiveTaskEntity sendTaskEntity = JsonConvert.DeserializeObject<ZCReceiveTaskEntity>(jsonData.ToString());
 
+            if(string.IsNullOrEmpty(sendTaskEntity.BUSI_TYPE))
+            {
+                Log.Detail(logPara, "ZCSendTask浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癇USI_TYPE銆� + jsonData.ToString());
+                return new
+                {
+                    success = false,
+                    code = -1,
+                    lastTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    message = "缂哄皯鍙傛暟BUSI_TYPE"
+                };
+            }
+            if (string.IsNullOrEmpty(sendTaskEntity.Location_From) && string.IsNullOrEmpty(sendTaskEntity.Location_To))
+            {
+                Log.Detail(logPara, "ZCSendTask浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰拰缁堢偣鍚屾椂涓虹┖銆� + jsonData.ToString());
+                return new
+                {
+                    success = false,
+                    code = -1,
+                    lastTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    message = "缂哄皯璧风偣Location_From鎴栫粓鐐筁ocation_To"
+                };
+            }
+            if (string.IsNullOrEmpty(sendTaskEntity.task_no))
+            {
+                Log.Detail(logPara, "ZCSendTask浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁皌ask_no銆� + jsonData.ToString());
+                return new
+                {
+                    success = false,
+                    code = -1,
+                    lastTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    message = "缂哄皯鍙傛暟task_no"
+                };
+            }
+
+            Log.Detail(logPara, "ZCSendTask浠诲姟涓嬪彂浼犻�鍙傛暟锛� + jsonData.ToString());
+
             //璋冪敤ReceiveTask鏂规硶淇濆瓨鑷充腑闂村簱
             var result = BLLCreator.Create<WmsApiBaseBLL>().ReceiveTask(sendTaskEntity);
             return new
diff --git a/HH.WMS.WebApi/Extension/ExecTransferTask.cs b/HH.WMS.WebApi/Extension/ExecTransferTask.cs
index e70a607..e9ba4c6 100644
--- a/HH.WMS.WebApi/Extension/ExecTransferTask.cs
+++ b/HH.WMS.WebApi/Extension/ExecTransferTask.cs
@@ -25,11 +25,27 @@
         public void Run(object source, ElapsedEventArgs elapsedEventArgs)
         {
             try
-            {  //闃叉Timer閲嶅叆
+            {
+                //闃叉Timer閲嶅叆
                 lock (locko)
                 {
-                    // 浣跨敤TN_MES_TASK涓存椂琛ㄤ腑鎺ユ敹鐨凪ES浠诲姟锛屽垱寤篧MS浠诲姟
-                    BLLCreator.Create<ZCBLL>().ExecTransferTask();                    
+                    var transportReqs = BLLCreator.CreateDapper<TN_MES_TASK>().GetList(new
+                    {
+                        NeedTrig = Constants.Y
+                    }).OrderBy(o => o.CreateDate).ToList();
+
+                    var serviceExecs = BLLCreator.CreateDapper<TN_WM_SERVICE_EXECEntity>().GetList(new
+                    {
+                        CN_C_COMPLETE = Constants.N,
+                        CN_S_TASK_TYPE = "绉婚�"
+                    });
+
+                    transportReqs = transportReqs.FindAll(f => !serviceExecs.Exists(e => e.CN_S_TASK_NO == f.task_no));
+
+                    if (transportReqs.Any())
+                    {
+                        BLLCreator.Create<ZCBLL>().ExecTransferTask(transportReqs);
+                    }
                 }
             }
             catch (Exception ex)

--
Gitblit v1.9.1