From 02ca96debc6056275d58e55d97f7885a195542d0 Mon Sep 17 00:00:00 2001
From: zhao
Date: 星期四, 24 六月 2021 16:42:16 +0800
Subject: [PATCH] 半成品入库-空托出库和满托入库的基本流程

---
 HH.WMS.WebApi/HH.WMS.WebApi.csproj   |    1 
 HH.WMS.BLL/Pda/ZCBLL.cs              |  551 +++++++++++++++++++++++++++++++++++++++++++++
 HH.WMS.BLL/Interface/OtherSysApi.cs  |   44 ++
 HH.WMS.WebApi/Config.json            |    1 
 HH.WMS.Entitys/Dto/ConnectBitDto.cs  |    2 
 HH.WMS.BLL/External/WmsApiBaseBLL.cs |  101 +++++++
 HH.WMS.Common/Constants.cs           |    4 
 7 files changed, 677 insertions(+), 27 deletions(-)

diff --git a/HH.WMS.BLL/External/WmsApiBaseBLL.cs b/HH.WMS.BLL/External/WmsApiBaseBLL.cs
index a3e3506..5b6db14 100644
--- a/HH.WMS.BLL/External/WmsApiBaseBLL.cs
+++ b/HH.WMS.BLL/External/WmsApiBaseBLL.cs
@@ -1512,15 +1512,10 @@
 
             #endregion
 
-            string tno = executeStatePara.transportTask.CN_S_TASK_NO;
+            string tno = executeStatePara.transportTask.CN_S_TASK_NO.Trim();
             if (tno.IndexOf('_') > 0)
             {
-                string TopNo = tno.Substring(0, tno.IndexOf("_"));
-                string navNo = tno.Substring(tno.IndexOf("_") + 1);
-                if (navNo == "2")
-                {
-                    tno = TopNo;
-                }
+                tno = tno.Split('_')[0];
             }
             // 鑾峰彇涓讳换鍔�             var task = BLLCreator.CreateDapper<TN_WM_TASKEntity>().GetSingleEntity(new
@@ -1546,7 +1541,97 @@
                 if (taskNo.IndexOf('_') > 0)
                 {
                     string fatherNo = taskNo.Substring(0, taskNo.IndexOf("_"));
-                    string hzNo = taskNo.Substring(taskNo.IndexOf("_") + 1);
+                    string childNo = taskNo.Substring(taskNo.IndexOf("_") + 1);
+
+                    #region 娴锋疆涓瓥
+
+                    // 鍗婃垚鍝佹弧鎵樺叆搴撴祦绋�+                    if (task.CN_S_EXT1 == BusinessTypeConstants.BCP_MTRK)
+                    {
+                        // 绌烘墭鍑哄簱绗竴鏉″瓙浠诲姟
+                        if (executeStatePara.transportTask.CN_S_EXT2 == "ktck_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);
+                        }
+                        // 绌烘墭鍑哄簱绗簩鏉″瓙浠诲姟
+                        if (executeStatePara.transportTask.CN_S_EXT2 == "ktck_sub_2")
+                        {
+                            // 涓讳换鍔$姸鎬佺疆涓哄畬鎴愰儴鍒�+                            // 涓讳换鍔$殑瀛愪换鍔℃爣璇嗙疆绌�+                            // 涓讳换鍔¢樁娈电疆涓哄崐鎴愬搧-婊℃墭鍏ュ簱
+                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
+                            {
+                                CN_S_STATE = Constants.TaskState_CompletePart,
+                                CN_S_EXT2 = "",
+                                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);
+                            // 缁堢偣璐т綅鐘舵�鏀逛负:婊�+                            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 + "锛屾洿鏂版帴椹充綅鐘舵�-璐т綅鍙凤細" + task.CN_S_CONNECT_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal + "锛屾洿鏂板噯澶囩偣鐘舵�-璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_START_BIT + "鐘舵�涓猴細" + Constants.Location_State_Normal + "锛屾洿鏂扮粓鐐圭姸鎬�璐т綅鍙凤細" + executeStatePara.transportTask.CN_S_END_BIT + "鐘舵�涓猴細" + Constants.Location_State_Full);
+                            // 鍦ㄤ富寰幆涓垱寤哄悗缁т换鍔�+                        }
+                        // 婊℃墭鍏ュ簱绗竴鏉″瓙浠诲姟
+                        if (executeStatePara.transportTask.CN_S_EXT2 == "bcp_mtrk_sub_1")
+                        {
+                            // 涓讳换鍔$姸鎬佺疆涓哄畬鎴愰儴鍒�+                            // 涓讳换鍔$殑瀛愪换鍔℃爣璇嗙疆涓篵cp_mtrk_sub_1_completed
+                            CreateDAL<DapperDAL<TN_WM_TASKEntity>>().Update(new
+                            {
+                                CN_S_STATE = Constants.TaskState_CompletePart,
+                                CN_S_EXT2 = "bcp_mtrk_sub_1_completed"
+                            }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
+                            // 鍦ㄤ富寰幆涓垱寤哄悗缁т换鍔�+                        }
+                        // 婊℃墭鍏ュ簱绗簩鏉″瓙浠诲姟
+                        if (executeStatePara.transportTask.CN_S_EXT2 == "bcp_mtrk_sub_2")
+                        {
+
+                        }
+                    }
+
+                    #endregion
+
+
                     //A鍒癇鐨凙GV鎼繍浠诲姟
                     if (hzNo == "1")
                     {
diff --git a/HH.WMS.BLL/Interface/OtherSysApi.cs b/HH.WMS.BLL/Interface/OtherSysApi.cs
index 4ae6407..4a402f0 100644
--- a/HH.WMS.BLL/Interface/OtherSysApi.cs
+++ b/HH.WMS.BLL/Interface/OtherSysApi.cs
@@ -466,18 +466,35 @@
         {
             List<JObject> sendParams = new List<JObject>();
             JObject sendParam = new JObject();
-            sendParam.Add("taskNo", model.CN_S_TASK_NO);
-            sendParam.Add("lpnNo", model.CN_S_TRAY_CODE);
-            sendParam.Add("taskType", model.CN_S_TASK_TYPE == Constants.In?"10": model.CN_S_TASK_TYPE == Constants.Out?"20":"");
-            sendParam.Add("taskPrty", model.CN_N_PRIORITY);
-            sendParam.Add("laneNo", bit.tunnel);
-            sendParam.Add("frmLocate", model.CN_S_START_BIT);
-            sendParam.Add("toLocate", model.CN_S_END_BIT);
-            sendParam.Add("wmsOrdeNO", "");
-            sendParam.Add("createTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+
+            JObject sendData = new JObject();
+            // 鎵樼洏缂栫爜
+            sendData.Add("PalletCode", model.CN_S_TRAY_CODE);
+            // 浠诲姟缂栫爜
+            sendData.Add("TaskCode", model.CN_S_TASK_NO);
+            // 璧峰璁惧鍙�+            sendData.Add("EquipmentS_Id", "");
+            // 鐩殑璁惧鍙�+            sendData.Add("EquipmentE_Id", "");
+            // 璧峰璐т綅缂栫爜
+            sendData.Add("PositionS_Id", model.CN_S_START_BIT);
+            // 鐩殑璐т綅缂栫爜
+            sendData.Add("PositionE_Id", model.CN_S_END_BIT);
+            // 璧峰娣卞害
+            sendData.Add("StartDepth", "");
+            // 鐩殑娣卞害
+            sendData.Add("EndDepth", "1");
+            sendData.Add("Remarks", "");
+            sendData.Add("Description", "");
+            //璇锋眰绫诲瀷
+            sendParam.Add("request_type", model.CN_S_TASK_TYPE == Constants.In ? "10" : model.CN_S_TASK_TYPE == Constants.Out ? "20" : "");
+            //璇锋眰鏁版嵁闆嗗悎
+            sendParam.Add("request_data", sendData);
+            
             sendParams.Add(sendParam);
-            string sendData = JsonConvert.SerializeObject(sendParams);
-            Log.Info("===>鍙戦�浠诲姟缁橶CS", sendData);
+
+            string sendDatas = JsonConvert.SerializeObject(sendParams);
+            Log.Info("===>鍙戦�浠诲姟缁橶CS", sendDatas);
             string postOmsData = JsonConvert.SerializeObject(sendParams);
             string result = WebApiManager.HttpWcs_Post("api/InformWcs/SendTask", postOmsData);
             Log.Info("===>WCS杩斿洖缁撴灉", result);
@@ -504,4 +521,9 @@
             }
         }
     }
+
+    public class WcsCreateTaskParam
+    {
+        public string PalletCode;
+    }
 }
\ No newline at end of file
diff --git a/HH.WMS.BLL/Pda/ZCBLL.cs b/HH.WMS.BLL/Pda/ZCBLL.cs
index 2fcedf5..ae9cbb5 100644
--- a/HH.WMS.BLL/Pda/ZCBLL.cs
+++ b/HH.WMS.BLL/Pda/ZCBLL.cs
@@ -779,28 +779,84 @@
         }
         #endregion
 
+        // CN_S_EXT1:涓氬姟绫诲瀷
+        // CN_S_EXT2:瀛愪换鍔℃爣璇�+        // CN_S_EXT3:浠诲姟鎵ц闃舵
         public void SelfManageTask()
         {
             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 }
+                    CN_S_STATE = new List<string>() { Constants.TaskState_NoExecuted, Constants.TaskState_CompleteHalf, Constants.TaskState_CompletePart }
                 });
-
-                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 connectBitStr = JsonHelper.GetValue("connectBit");
+                        if (string.IsNullOrEmpty(connectBitStr))
+                            throw new Exception("鏈壘鍒伴厤缃細connectBit");
+                        var connectBits = JsonConvert.DeserializeObject<List<ConnectBitDto>>(connectBitStr);
+                        OperateResult or = OperateResult.Error("鏈煡閿欒");
+                        if (task.CN_S_EXT1 == BusinessTypeConstants.BCP_MTRK)// 鍗婃垚鍝佹弧鎵樺叆搴撴祦绋�+                        {
+                            // -绌烘墭鍑哄簱闃舵
+                            if (task.CN_S_EXT3 == TaskSectionConstants.KTCK)
+                            {
+                                var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.KTCK);
+                                // 鍒涘缓涓ゆ潯骞惰瀛愪换鍔�+                                if (string.IsNullOrEmpty(task.CN_S_EXT2))
+                                {
+                                    or = ExecKTCK(task, connectBit);
+                                }
+                                // sub_1 -鐢ㄤ簬鍚慦CS鍙戦�绌烘墭->鎺ラ┏浣嶇殑鍑哄簱浠诲姟
+                                else if (task.CN_S_EXT2 == "ktck_sub_1")
+                                {
+                                    or = ExecKTCK_Sub1(task, connectBit);
+                                }
+                                // sub_2 - 鐢ㄤ簬鍚慉MS鍙戦�鍑嗗鐐�>缁堢偣鐨勭┖鎵樻惉杩愪换鍔�+                                else if (task.CN_S_EXT2 == "ktck_sub_2")
+                                {
+                                    or = ExecKTCK_Sub2(task, connectBit);
+                                }
+                            }
+                            else if (task.CN_S_EXT3 == TaskSectionConstants.BCP_MTRK)
+                            {
+                                var connectBit = connectBits.Find(f => f.tasktype == ConnectBitConstants.MTRK);
+                                // 鍒涘缓绗竴鏉″瓙浠诲姟
+                                if (string.IsNullOrEmpty(task.CN_S_EXT2))
+                                {
+                                    or = ExecBCP_MTRK_AddSub1(task, connectBit);
+                                }
+                                // 鎵ц绗竴鏉″瓙浠诲姟
+                                else if (task.CN_S_EXT2 == "bcp_mtrk_sub_1")
+                                {
+                                    or = ExecBCP_MTRK_Sub1(task, connectBit);
+                                }
+                                // 鍒涘缓绗簩鏉″瓙浠诲姟
+                                else if (task.CN_S_EXT2 == "bcp_mtrk_sub_1_completed")
+                                {
+                                    or = ExecBCP_MTRK_AddSub2(task, connectBit);
+                                }
+                                // 鎵ц绗簩鏉″瓙浠诲姟
+                                else if (task.CN_S_EXT2 == "bcp_mtrk_sub_2")
+                                {
+                                    or = ExecBCP_MTRK_Sub2(task, connectBit);
+                                }
+                            }
+                        }
+                        else
+                        {
+                            or = OperateResult.Error("鏈煡鐨勪笟鍔$被鍨嬶細task.CN_S_EXT1=" + task.CN_S_EXT1);
+                        }
+
+                        continue;
+
                         //鏈墽琛岃〃绀虹涓�釜浠诲姟
                         if (task.CN_S_STATE == Constants.TaskState_NoExecuted)
                         {
@@ -1043,6 +1099,24 @@
                     // 浠巑ongo涓幏鍙栬揣浣嶇浉鍏崇殑淇℃伅 - 缁堢偣璐т綅
                     AutoBomLocationEntity end_location = CreateDAL<TN_AB_STOCK_LOCATIONDAL>().GetModel(task.Location_To);
 
+                    // 涓讳换鍔℃墽琛屾祦绋嬩腑鐨勮捣濮嬮樁娈�+                    string section = "";
+                    switch (task.BUSI_TYPE)
+                    {
+                        case "1":
+                            section = TaskSectionConstants.KTCK;
+                            break;
+                        case "2":
+                            break;
+                        case "3":
+                            break;
+                        case "4":
+                            break;
+                        case "5":
+                            break;
+                        case "6":
+                            break;
+                    }
                     // 鍒涘缓WMS涓讳换鍔�                     TN_WM_TASKEntity taskEntity = new TN_WM_TASKEntity()
                     {
@@ -1063,6 +1137,9 @@
                         CN_T_MODIFY = DateTime.Now,
                         CN_S_REMARK = "",
                         CN_S_TASK_FLAG = Constants.TaskFlag_ZG,
+                        CN_S_EXT1 = task.BUSI_TYPE,
+                        CN_S_EXT2 = "",
+                        CN_S_EXT3 = section
                     };
                     UseTransaction(trans =>
                     {
@@ -1088,5 +1165,463 @@
                 Log.DomainInfo("ExecTransferTask", JsonConvert.SerializeObject(ors));
             }
         }
+
+        #region 鍗婃垚鍝�婊℃墭鍏ュ簱
+
+        #region 绌烘墭鍑哄簱
+
+        /// <summary>
+        /// 鍒涘缓绌烘墭鍑哄簱骞惰瀛愪换鍔�+        /// </summary>
+        public OperateResult ExecKTCK(TN_WM_TASKEntity task, ConnectBitDto bit)
+        {
+            // 绌烘墭鍑哄簱鍜屾弧鎵樺叆搴撴槸鍙嶅悜鐨�+            var connectBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+            {
+                CN_S_LOCATION_CODE = bit.bit
+            });
+            var readyBit = BLLCreator.CreateDapper<TN_WM_LOCATION_EXTEntity>().GetSingleEntity(new
+            {
+                CN_S_LOCATION_CODE = bit.readybit
+            });
+            if (connectBit == null)
+                throw new Exception("鏈壘鍒版帴椹充綅璐т綅锛� + bit.bit);
+            if (connectBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
+                throw new Exception("鎺ラ┏浣嶏細" + bit.bit + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+            if (readyBit == null)
+                throw new Exception("鏈壘鍒版帴椹充綅璐т綅锛� + bit.readybit);
+            if (readyBit.CN_S_LOCATION_STATE != Constants.Location_State_Normal)
+                throw new Exception("鎺ラ┏浣嶏細" + bit.readybit + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+            // 绔嬪簱->鎺ラ┏浣�+            TN_WM_TASKEntity taskEntity1 = new TN_WM_TASKEntity()
+            {
+                CN_S_TASK_NO = task.CN_S_TASK_NO + "_1",
+                CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                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_END_AREA,
+                CN_S_START_BIT = task.CN_S_END_BIT,
+                CN_S_END_AREA = connectBit.CN_S_AREA_CODE,
+                CN_S_END_BIT = connectBit.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 = task.CN_S_EXT1,
+                CN_S_EXT2 = "ktck_sub_1"
+            };
+            // 鍑嗗鐐�>宸ヤ綅
+            TN_WM_TASKEntity taskEntity2 = new TN_WM_TASKEntity()
+            {
+                CN_S_TASK_NO = task.CN_S_TASK_NO + "_2",
+                CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                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 = readyBit.CN_S_AREA_CODE,
+                CN_S_START_BIT = readyBit.CN_S_LOCATION_CODE,
+                CN_S_END_AREA = task.CN_S_START_AREA,
+                CN_S_END_BIT = task.CN_S_START_BIT,
+                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 = task.CN_S_EXT1,
+                CN_S_EXT2 = "ktck_sub_2"
+            };
+
+            OperateResult re = OperateResult.Error("鏈煡閿欒");
+
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鍒涘缓绌烘墭鍑哄簱瀛愪换鍔�
+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity1);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+                    // 鍒涘缓绌烘墭鍑哄簱瀛愪换鍔�
+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity2);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+
+                    // 涓讳换鍔$姸鎬佺疆涓烘墽琛屼腑 璁板綍鎺ラ┏浣�+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing,
+                        CN_S_CONNECT_BIT = bit.bit
+                    }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鍒涘缓绌烘墭鍑哄簱瀛愪换鍔″け璐ワ紝涓讳换鍔$紪鍙�" + task.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+
+            return re;
+        }
+        /// <summary>
+        /// 鎵ц绌烘墭鍑哄簱鐨勭涓�潯瀛愪换鍔�+        /// </summary>
+        /// <param name="task"></param>
+        /// <param name=""></param>
+        /// <returns></returns>
+        public OperateResult ExecKTCK_Sub1(TN_WM_TASKEntity task1, ConnectBitDto connectBit)
+        {
+            OperateResult or = OperateResult.Error("鏈煡閿欒");
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鎺ラ┏浣�棰勫叆搴撻攣瀹�+                    CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                    {
+                        CN_S_LOCATION_STATE = Constants.Location_State_InLock
+                    }, new { CN_S_LOCATION_CODE = connectBit.bit }, trans);
+                    // 瀛愪换鍔�鐘舵�缃负鎵ц涓�+                    or = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing
+                    }, new { CN_S_TASK_NO = task1.CN_S_TASK_NO }, trans);
+                    // 鍙戦�Wcs浠诲姟
+                    or = BLLCreator.Create<OtherSysApi>().SendWcsCreateTask(task1, connectBit);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鎵ц绌烘墭鍑哄簱瀛愪换鍔�澶辫触锛屼换鍔$紪鍙�" + task1.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+            return or;
+        }
+        /// <summary>
+        /// 鎵ц绌烘墭鍑哄簱鐨勭浜屾潯瀛愪换鍔�+        /// </summary>
+        /// <param name="task"></param>
+        /// <param name="connectBit"></param>
+        /// <returns></returns>
+        public OperateResult ExecKTCK_Sub2(TN_WM_TASKEntity task2, ConnectBitDto connectBit)
+        {
+            OperateResult or = OperateResult.Error("鏈煡閿欒");
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鍑嗗鐐�棰勫嚭搴撻攣瀹�+                    CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                    {
+                        CN_S_LOCATION_STATE = Constants.Location_State_OutLock
+                    }, new { CN_S_LOCATION_CODE = connectBit.readybit }, trans);
+                    // 瀛愪换鍔�鐘舵�缃负鎵ц涓�+                    or = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing
+                    }, new { CN_S_TASK_NO = task2.CN_S_TASK_NO }, trans);
+                    // 鍙戦�Ams浠诲姟
+                    or = BLLCreator.Create<OtherSysApi>().SendAmsTask(task2);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鎵ц绌烘墭鍑哄簱瀛愪换鍔�澶辫触锛屼换鍔$紪鍙�" + task2.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+            return or;
+        }
+
+        #endregion
+
+        #region 婊℃墭鍏ュ簱
+
+        #region 涓讳换鍔�+
+        /// <summary>
+        /// 鍒涘缓 鍗婃垚鍝�婊℃墭鍏ュ簱 瀛愪换鍔�
+        /// </summary>
+        public OperateResult ExecBCP_MTRK_AddSub1(TN_WM_TASKEntity task, ConnectBitDto bit)
+        {
+            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 + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+            // 宸ヤ綅->鎺ラ┏浣�+            TN_WM_TASKEntity taskEntity1 = new TN_WM_TASKEntity()
+            {
+                CN_S_TASK_NO = task.CN_S_TASK_NO + "_3",
+                CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                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_START_BIT = task.CN_S_START_BIT,
+                CN_S_END_AREA = connectBit.CN_S_AREA_CODE,
+                CN_S_END_BIT = connectBit.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 = task.CN_S_EXT1,
+                CN_S_EXT2 = "bcp_mtrk_sub_1"
+            };
+            OperateResult re = OperateResult.Error("鏈煡閿欒");
+
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鍒涘缓婊℃墭鍏ュ簱瀛愪换鍔�
+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity1);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+
+                    // 涓讳换鍔$姸鎬佺疆涓烘墽琛屼腑
+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing
+                    }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鍒涘缓婊℃墭鍏ュ簱瀛愪换鍔�澶辫触锛屼换鍔$紪鍙�" + task.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+
+            return re;
+        }
+        /// <summary>
+        /// 鍒涘缓 鍗婃垚鍝�婊℃墭鍏ュ簱 瀛愪换鍔�
+        /// </summary>
+        public OperateResult ExecBCP_MTRK_AddSub2(TN_WM_TASKEntity task, ConnectBitDto bit)
+        {
+            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 + "瀛樺湪鏈墽琛屽畬鐨勪换鍔�);
+
+            // 鎺ラ┏浣�>绔嬪簱
+            TN_WM_TASKEntity taskEntity2 = new TN_WM_TASKEntity()
+            {
+                CN_S_TASK_NO = task.CN_S_TASK_NO + "_4",
+                CN_S_TRAY_CODE = task.CN_S_TRAY_CODE,
+                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_START_BIT = connectBit.CN_S_LOCATION_CODE,
+                CN_S_END_AREA = task.CN_S_END_AREA,
+                CN_S_END_BIT = task.CN_S_END_BIT,
+                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 = task.CN_S_EXT1,
+                CN_S_EXT2 = "bcp_mtrk_sub_2"
+            };
+            OperateResult re = OperateResult.Error("鏈煡閿欒");
+
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鍒涘缓婊℃墭鍏ュ簱瀛愪换鍔�
+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Add(taskEntity2);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+
+                    // 涓讳换鍔$姸鎬佺疆涓烘墽琛屼腑
+                    re = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing
+                    }, new { CN_S_TASK_NO = task.CN_S_TASK_NO }, trans);
+                    if (!re.Success)
+                        throw new Exception(re.Msg);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鍒涘缓婊℃墭鍏ュ簱瀛愪换鍔�澶辫触锛屼换鍔$紪鍙�" + task.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+
+            return re;
+        }
+
+        /// <summary>
+        /// 鎵ц鍗婃垚鍝�婊℃墭鍏ュ簱鐨勭涓�潯瀛愪换鍔�+        /// </summary>
+        /// <param name="task"></param>
+        /// <param name=""></param>
+        /// <returns></returns>
+        public OperateResult ExecBCP_MTRK_Sub1(TN_WM_TASKEntity task1, ConnectBitDto connectBit)
+        {
+            OperateResult or = OperateResult.Error("鏈煡閿欒");
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鎺ラ┏浣�棰勫叆搴撻攣瀹�+                    CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                    {
+                        CN_S_LOCATION_STATE = Constants.Location_State_InLock
+                    }, new { CN_S_LOCATION_CODE = connectBit.bit }, trans);
+                    // 瀛愪换鍔�鐘舵�缃负鎵ц涓�+                    or = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing
+                    }, new { CN_S_TASK_NO = task1.CN_S_TASK_NO }, trans);
+                    // 鍙戦�Ams浠诲姟
+                    or = BLLCreator.Create<OtherSysApi>().SendAmsTask(task1);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鎵ц婊℃墭鍏ュ簱瀛愪换鍔�澶辫触锛屼换鍔$紪鍙�" + task1.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+            return or;
+        }
+        /// <summary>
+        /// 鎵ц鍗婃垚鍝�婊℃墭鍏ュ簱鐨勭浜屾潯瀛愪换鍔�+        /// </summary>
+        /// <param name="task"></param>
+        /// <param name="connectBit"></param>
+        /// <returns></returns>
+        public OperateResult ExecBCP_MTRK_Sub2(TN_WM_TASKEntity task2, ConnectBitDto connectBit)
+        {
+            OperateResult or = OperateResult.Error("鏈煡閿欒");
+            try
+            {
+                UseTransaction(trans =>
+                {
+                    // 鎺ラ┏浣�棰勫嚭搴撻攣瀹�+                    CreateDapperDAL<TN_WM_LOCATION_EXTEntity>().Update(new
+                    {
+                        CN_S_LOCATION_STATE = Constants.Location_State_OutLock
+                    }, new { CN_S_LOCATION_CODE = connectBit.bit }, trans);
+                    // 瀛愪换鍔�鐘舵�缃负鎵ц涓�+                    or = CreateDapperDAL<TN_WM_TASKEntity>().Update(new
+                    {
+                        CN_S_STATE = Constants.TaskState_Executing
+                    }, new { CN_S_TASK_NO = task2.CN_S_TASK_NO }, trans);
+                    // 鍙戦�Wcs浠诲姟
+                    or = BLLCreator.Create<OtherSysApi>().SendWcsCreateTask(task2, connectBit);
+                });
+            }
+            catch (Exception ex)
+            {
+                OperateResult.Error("鎵ц婊℃墭鍏ュ簱瀛愪换鍔�澶辫触锛屼换鍔$紪鍙�" + task2.CN_S_TASK_NO + "锛岄敊璇俊鎭細" + ex.Message);
+            }
+            return or;
+        }
+
+        #endregion
+
+        #endregion
+
+        #endregion
+    }
+
+    /// <summary>
+    /// 閰嶇疆鏂囦欢涓殑甯搁噺瀹氫箟
+    /// </summary>
+    public class ConnectBitConstants
+    {
+        /// <summary>
+        /// 甯︽潫鍏ュ簱
+        /// </summary>
+        public static string DSRK = "甯︽潫鍏ュ簱";
+        /// <summary>
+        /// 甯︽潫鍑哄簱
+        /// </summary>
+        public static string DSCK = "甯︽潫鍑哄簱";
+        /// <summary>
+        /// 婊℃墭鍏ュ簱
+        /// </summary>
+        public static string MTRK = "婊℃墭鍏ュ簱";
+        /// <summary>
+        /// 绌烘墭鍑哄簱
+        /// </summary>
+        public static string KTCK = "绌烘墭鍑哄簱";
+        /// <summary>
+        /// 婊℃墭鍑哄簱
+        /// </summary>
+        public static string MTCK = "婊℃墭鍑哄簱";
+        /// <summary>
+        /// 绌烘墭鍏ュ簱
+        /// </summary>
+        public static string KTRK = "绌烘墭鍏ュ簱";
+    }
+
+    /// <summary>
+    /// 鎺ュ彛鍚屾鐨勪笟鍔$被鍨嬪畾涔�+    /// </summary>
+    public class BusinessTypeConstants
+    {
+        /// <summary>
+        /// 鍗婃垚鍝佹弧鎵樺叆搴�+        /// </summary>
+        public static string BCP_MTRK = "1";
+        /// <summary>
+        /// 鎴愬瀷鏈哄崐鎴愬搧鍥炲簱
+        /// </summary>
+        public static string CXJ_BCPHK = "2";
+        /// <summary>
+        /// 鎴愬瀷鏈虹┖妗跺洖搴�+        /// </summary>
+        public static string CXJ_KTHK = "3";
+        /// <summary>
+        /// 鎴愬瀷鏈烘弧鎵樺嚭搴�+        /// </summary>
+        public static string CXJ_MTCK = "4";
+        /// <summary>
+        /// 鎴愬瀷鏈哄甫鏉熷洖搴�+        /// </summary>
+        public static string CXJ_DSHK = "5";
+        /// <summary>
+        /// 鎴愬瀷鏈哄甫鏉熸弧鎵樺嚭搴�+        /// </summary>
+        public static string CXJ_DSMTCK = "6";
+    }
+
+    public class TaskSectionConstants
+    {
+        /// <summary>
+        /// 绌烘墭鍑哄簱
+        /// </summary>
+        public static string KTCK = "绌烘墭鍑哄簱";
+        /// <summary>
+        /// 鍗婃垚鍝�婊℃墭鍏ュ簱
+        /// </summary>
+        public static string BCP_MTRK = "鍗婃垚鍝�婊℃墭鍏ュ簱";
     }
 }
diff --git a/HH.WMS.Common/Constants.cs b/HH.WMS.Common/Constants.cs
index f2e20d8..7de0e6e 100644
--- a/HH.WMS.Common/Constants.cs
+++ b/HH.WMS.Common/Constants.cs
@@ -495,6 +495,10 @@
         /// 浠诲姟鐘舵�-瀹屾垚涓�崐
         /// </summary>
         public static readonly string TaskState_CompleteHalf = "瀹屾垚涓�崐";
+        /// <summary>
+        /// 浠诲姟鐘舵�-瀹屾垚閮ㄥ垎
+        /// </summary>
+        public static readonly string TaskState_CompletePart = "瀹屾垚閮ㄥ垎";
         #endregion
         #region 浠诲姟鎵ц鍙嶉缁撴灉
         /// <summary>
diff --git a/HH.WMS.Entitys/Dto/ConnectBitDto.cs b/HH.WMS.Entitys/Dto/ConnectBitDto.cs
index 17408ee..964e439 100644
--- a/HH.WMS.Entitys/Dto/ConnectBitDto.cs
+++ b/HH.WMS.Entitys/Dto/ConnectBitDto.cs
@@ -10,5 +10,7 @@
     {
         public string tunnel { get; set; }
         public string bit { get; set; }
+        public string readybit { get; set; }
+        public string tasktype { get; set; }
     }
 }
diff --git a/HH.WMS.WebApi/Config.json b/HH.WMS.WebApi/Config.json
index 078671d..105abe0 100644
--- a/HH.WMS.WebApi/Config.json
+++ b/HH.WMS.WebApi/Config.json
@@ -248,6 +248,7 @@
     },
     {
       "bit": "鎺ラ┏浣嶈揣浣�,
+      "readybit": "鍑嗗鐐硅揣浣�,
       "tasktype": "绌烘墭鍑哄簱"
     },
     {
diff --git a/HH.WMS.WebApi/HH.WMS.WebApi.csproj b/HH.WMS.WebApi/HH.WMS.WebApi.csproj
index 08a6a63..ac09c0f 100644
--- a/HH.WMS.WebApi/HH.WMS.WebApi.csproj
+++ b/HH.WMS.WebApi/HH.WMS.WebApi.csproj
@@ -446,6 +446,7 @@
           <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
         </WebProjectProperties>
       </FlavorProperties>
+      <UserProperties config_1json__JsonSchema="" />
     </VisualStudio>
   </ProjectExtensions>
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.

--
Gitblit v1.9.1