From 5321419f5fddb4e877fe90ccd90ebdc1a115af64 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期五, 18 七月 2025 17:29:26 +0800
Subject: [PATCH] 出库修改

---
 process/TaskProcess.cs |  615 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 507 insertions(+), 108 deletions(-)

diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index e88f347..c2088d3 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -210,10 +210,20 @@
             }
             if (state == 6)//鍗歌揣瀹屾垚
             {
+                //鎺ラ┏浣嶄笉缁戝畾
+                var safety = Settings.safetyLocations.Where(a => a.Area.Contains(mst.S_END_AREA)).FirstOrDefault();
+                if (safety != null) {
+                    if (safety.type==1)
+                    {
+                        return;
+                    }
+                }
                 //閫�簱浠诲姟涓嶇粦瀹�-                if (!LocationHelper.GetErroArea(mst.S_END_AREA)) {
-                    CacheBitUpdate(mst, false);
-                }  
+                if (LocationHelper.GetErroArea(mst.S_END_AREA)) {
+                    return;
+                }
+
+                CacheBitUpdate(mst, false);
             }
             if (state == 7)
             {
@@ -353,10 +363,9 @@
                         {
                             endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
                         }
-
+                        
 
                         balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
-
 
                         balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
 
@@ -367,7 +376,7 @@
                                 //LogHelper.Info($"鏀归亾瀹夊叏浜や簰item淇℃伅" + JsonConvert.SerializeObject(item), "鏀归亾瀹夊叏浜や簰");
                                 foreach (var item1 in balanceConnectionList)
                                 {
-                                    if (item1.CONNEC_ROADWAY == item.N_ROADWAY && item1.N_CURRENT_NUM < 2)
+                                    if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
                                     {
                                         connection = item1;
                                       
@@ -383,6 +392,7 @@
                                 }
                             }
                         }
+
 
                         if (connection == null)
                         {
@@ -523,17 +533,53 @@
 
                 if (mst.S_TYPE.Contains("鍑哄簱"))
                 {
-                    var wcsTask = TaskHelper.GetTaskByWork("wcs", mst.S_OP_CODE);
-                    if (wcsTask == null) {
-                        LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}瀵瑰簲鐨勫嚭搴撲换鍔�, "NDC");
+                    //鏌ユ壘瀵瑰簲浣滀笟锛屾槸鎺ラ┏浣嶅氨鏌ヨ瀵瑰簲绔嬪簱浠诲姟
+
+
+                    var wmsWork = TaskHelper.GetWmsWork(mst.S_OP_CODE);
+
+                    if (wmsWork==null)
+                    {
+                        LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}", "NDC");
                         return false;
                     }
 
-                    if (wcsTask.S_B_STATE=="鏈墽琛�)
+                    if (!string.IsNullOrEmpty(wmsWork.CONNECTION))
                     {
-                        LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽搴旂殑Wcs鍑哄簱浠诲姟鏈墽琛岋紝鏆備笉鎺ㄩ�", "NDC");
-                        return false;
+                        var wcsTask = TaskHelper.GetTaskByWork("wcs", mst.S_OP_CODE);
+                        if (wcsTask == null)
+                        {
+                            LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}瀵瑰簲鐨勫嚭搴撲换鍔�, "NDC");
+                            return false;
+                        }
+
+                        if (wcsTask.S_B_STATE == "鏈墽琛� || wcsTask.S_B_STATE == "宸叉帹閫�)
+                        {
+                            LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽搴旂殑Wcs鍑哄簱浠诲姟鏈墽琛岋紝鏆備笉鎺ㄩ�", "NDC");
+                            return false;
+                        }
+
+                        //鎺ラ┏浣嶄袱涓猘gv浠诲姟锛宎浠诲姟鍙栬揣瀹屾垚 鎺ㄩ�b浠诲姟
+                        var agvTask = LocationHelper.GetConnectionTask(wmsWork.CONNECTION,"agv");
+
+                        LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛岀涓�釜agv浠诲姟淇℃伅"+JsonConvert.SerializeObject(agvTask), "NDC");
+                        //if (agvTask==null)
+                        //{
+                        //    LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟娌℃壘鍒帮紝鏆備笉鎺ㄩ�", "NDC");
+                        //    return false;
+                        //}
+
+                        if (agvTask != null)
+                        {
+                            if (agvTask.S_B_STATE != "鍙栬揣瀹屾垚")
+                            {
+                                LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟{agvTask.S_CODE},鐘舵�{agvTask.S_B_STATE}锛屾殏涓嶆帹閫�, "NDC");
+                                return false;
+                            }
+                        }
                     }
+
+
                 }
 
 
@@ -620,6 +666,15 @@
             }
             return result;
         }
+
+        internal static LocationRecordsResult LocationRecords(LocationRecordsParme model) {
+            var result = new LocationRecordsResult();
+            var db = new SqlHelper<object>().GetInstance();
+            
+            return result;
+        }
+
+        
 
         internal static Result MesUdeItem(MesUdeItemParme model)
         {
@@ -755,6 +810,13 @@
                         LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡鐗╂枡淇℃伅", "鐗╂枡缁戝畾瑙g粦");
                         throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡鐗╂枡淇℃伅");
                     }
+                    var Tray = db.Queryable<Container>().Where(e => e.S_CODE == model.TOOLS_NO).ToList();
+                    if (Tray.Count() > 0)
+                    {
+                        LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡瀹瑰櫒淇℃伅", "鐗╂枡缁戝畾瑙g粦");
+                        throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡瀹瑰櫒淇℃伅");
+                    }
+
                     var Locations = db.Queryable<Location>().Where(e => e.S_CODE == model.LOCATION_CODE)?.First();
                     if (Locations == null)
                     {
@@ -905,7 +967,7 @@
             {
                 db.RollbackTran();
                 LogHelper.Info("鐗╂枡缁戝畾瑙g粦寮傚父:" + e.Message, "鐗╂枡缁戝畾瑙g粦");
-                result.errMsg = "鐗╂枡缁戝畾瑙g粦寮傚父";
+                result.errMsg = "鐗╂枡缁戝畾瑙g粦寮傚父" + e.Message;
                 result.errCode = 1;
                 result.success = false;
                 return result;
@@ -931,33 +993,30 @@
             try
             {
                 var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
-                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no,"wcs");
-                if (task != null && wcsTask != null)
+
+                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no, "wcs");
+
+                if (task != null)
                 {
+                    LogHelper.Info($"cancelTask1鍙栨秷agv浠诲姟{task.S_CODE}锛�, "鍙栨秷");
                     if (task.S_B_STATE.Trim() == "鏈墽琛�)
                     {
                         //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷
-                        LogHelper.Info("cancelTask1鍙栨秷agv浠诲姟锛�, "鍙栨秷");
+                        TaskHelper.opMesTask(task, 3);
                         TaskHelper.Fail(task);
                         TaskProcess.CacheBitCancelUpdate(task);
+                        
                         if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱"))
                         {
                             ContainerHelper.delCntr(task.S_CNTR_CODE);
                             ContainerHelper.delCntrItem(task.S_CNTR_CODE);
+
                         }
-                        else {
-                           WcsTask.WcsCancellTask(wcsTask);
-                        }
-                        
-                       
-                        TaskHelper.Fail(wcsTask);
-                        TaskProcess.OperateStatus(wcsTask, 7);
                         result.errCode = 0;
                         result.errMsg = "鍙栨秷鎴愬姛";
                         result.success = true;
-                        return result;
                     }
-                    else if (task.S_B_STATE.Trim() != "鍙栨秷"  && task.S_B_STATE.Trim() != "澶辫触")
+                    else if (task.S_B_STATE.Trim() != "鍙栨秷" && task.S_B_STATE.Trim() != "澶辫触" && task.S_B_STATE.Trim() != "瀹屾垚")
                     {
                         var db = new SqlHelper<object>().GetInstance();
                         var qhflag = db.Queryable<WmsTaskAction>().Where(a => a.S_TASK_CODE == task.S_CODE && a.S_ACTION == "4").First();
@@ -971,22 +1030,20 @@
                             result.success = false;
                             return result;
                         }
-
-                        //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv
-                        TaskHelper.Fail(task);
-                        
-                        NDCApi.CancelOrder(task.S_CODE.Trim());
-                        TaskProcess.CacheBitCancelUpdate(task);
                         if (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱"))
                         {
                             ContainerHelper.delCntr(task.S_CNTR_CODE);
                             ContainerHelper.delCntrItem(task.S_CNTR_CODE);
+                            ContainerHelper.delCntrLoc(task.S_CNTR_CODE);
                         }
-                        else {
-                            WcsTask.WcsCancellTask(wcsTask);
-                        }
-                        TaskHelper.Fail(wcsTask);
-                        TaskProcess.OperateStatus(wcsTask, 7);
+
+                        TaskHelper.opMesTask(task, 3);
+                        //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡hosttoagv
+                        TaskHelper.Fail(task);
+
+                        NDCApi.CancelOrder(task.S_CODE.Trim());
+                        TaskProcess.CacheBitCancelUpdate(task);
+
                         result.errCode = 0;
                         result.errMsg = "鍙栨秷鎴愬姛";
                         result.success = true;
@@ -1004,11 +1061,40 @@
                     result.errMsg = $"{model.task_no}浠诲姟涓嶅瓨鍦�;
                     result.success = false;
                 }
+
+                if (wcsTask != null)
+                {
+                    LogHelper.Info($"cancelTask1鍙栨秷Wcs浠诲姟{wcsTask.S_CODE}", "鍙栨秷");
+                    if (wcsTask.S_B_STATE.Trim() == "鏈墽琛�)
+                    {
+                        //鏈墽琛岀洿鎺ヤ慨鏀圭姸鎬佷负鍙栨秷
+                        if (wcsTask.S_TYPE.Contains("鍏ュ簱") || wcsTask.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            ContainerHelper.delCntr(wcsTask.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(wcsTask.S_CNTR_CODE);
+                        }
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                        return result;
+                    }
+                    else 
+                    {
+                            LogHelper.Info($"璇ヤ换鍔wcsTask.S_CODE}宸茬粡鎺ㄩ�", "鍙栨秷");
+                            result.errCode = 1;
+                            result.errMsg = "浠诲姟宸茬粡鎺ㄩ�锛屼笉鍏佽鍙栨秷";
+                            result.success = false;
+                            return result;
+                       
+                    }
+                }
             }
             catch (Exception ex)
             {
 
-                LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛�+ex.Message, "鍙栨秷");
+                LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛� + ex.Message, "鍙栨秷");
                 result.errCode = 1;
                 result.errMsg = "鍙栨秷浠诲姟寮傚父";
                 return result;
@@ -1316,7 +1402,262 @@
 
         }
 
-       
+
+        /// <summary>
+        /// 娣诲姞mes浠诲姟
+        /// </summary>
+        internal static Result addMesTaskInWorkArea(InWorkAreaParme model)
+        {
+            var result = new Result();
+            var TOOLSTYPE = "";
+            try
+            {
+                if (string.IsNullOrEmpty(model.BUSI_TYPE.ToString()))
+                {
+                    LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癇USI_TYPE銆�, "Mes浠诲姟涓嬪彂");
+                    throw new Exception("缂哄皯鍙傛暟BUSI_TYPE");
+                }
+                if (string.IsNullOrEmpty(model.PROD_NO))
+                {
+                    LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癙ROD_NO銆�, "Mes浠诲姟涓嬪彂");
+                    throw new Exception("缂哄皯鍙傛暟PROD_NO");
+                }
+                if (string.IsNullOrEmpty(model.Location_To))
+                {
+                    LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀粓鐐逛负绌恒�", "Mes浠诲姟涓嬪彂");
+                    throw new Exception("缂哄皯缁堢偣Location_To");
+                }
+                if (string.IsNullOrEmpty(model.CHECK_INFO))
+                {
+                    LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁癈HECK_INFO銆�, "Mes浠诲姟涓嬪彂");
+                    throw new Exception("缂哄皯鍙傛暟CHECK_INFO");
+                }
+                if (string.IsNullOrEmpty(model.task_no))
+                {
+                    LogHelper.Info("InWorkArea浠诲姟涓嬪彂澶辫触锛岀己灏戝弬鏁皌ask_no銆�, "Mes浠诲姟涓嬪彂");
+                    throw new Exception("缂哄皯鍙傛暟task_no");
+                }
+
+                if (model.Task_type==2)
+                {
+                    //鍛煎彨鑳舵枡鍑哄簱
+
+
+
+                  var   workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE);
+
+                  
+
+
+                    if (workFlow == null)
+                    {
+                        LogHelper.Info($"InWorkArea浠诲姟涓嬪彂澶辫触锛孊USI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "Mes浠诲姟涓嬪彂");
+                        throw new Exception($"BUSI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�);
+                    }
+                    else
+                    {
+                        LogHelper.Info($"浣滀笟娴佺▼淇℃伅" + JsonConvert.SerializeObject(workFlow), "Mes浠诲姟涓嬪彂");
+                    }
+
+                    //鍑哄簱浠诲姟
+
+                    //鎺ラ┏浣�+                    var connection = "";
+
+                    //鎺ラ┏浣嶅簱鍖�+                    var connectionArea = "";
+
+
+                    //鏌ユ壘缁欏畾缁堢偣
+                    var end = LocationHelper.GetLoc(model.Location_To);
+                    LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+
+
+                    if (end == null)
+                    {
+                        LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒�, "Mes浠诲姟涓嬪彂");
+                        throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒�);
+                    }
+
+
+                    var unlimitedLocation = TaskHelper.GetMesKtLoc();
+
+                    //鏍囪缁堢偣璐т綅鏄惁鍙互鏃犻檺鍒朵笅浠诲姟
+                    var endLocFlag = true;
+
+                    foreach (var item in unlimitedLocation)
+                    {
+                        //鍑哄簱缁堢偣璐т綅鍦ㄩ厤缃噷 鍙互鏃犻檺鍒朵笅浠诲姟
+                        if (item.Loc.Contains(model.Location_To))
+                        {
+                            endLocFlag = false;
+                            break;
+                        }
+                    }
+
+                    if (endLocFlag)
+                    {
+                        var endTask = TaskHelper.GetTaskByEndLoc(model.Location_To);
+                        if (endTask != null)
+                        {
+                            LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}", "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"缁堢偣:{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}");
+                        }
+                    }
+
+
+
+                    //鏌ユ壘璧风偣
+                    List<Location> strrtList;
+
+                    Location start = null;
+
+
+                    if (!string.IsNullOrEmpty(workFlow.ZONECODE))
+                    {
+                        strrtList = LocationHelper.GetZoneLoc(workFlow.ZONECODE);
+                    }
+                    else
+                    {
+                        strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);
+                    }
+
+
+
+                    if (workFlow.FLOWCODE == "9")
+                    {
+                            //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�+                            start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY, workFlow.CONNECTION);
+                            if (start == null)
+                            {
+                                strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);
+                                var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA);
+                                LogHelper.Info($"InWorkArea婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂");
+                                if (itemFlag)
+                                {
+                                    result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ";
+                                    result.errCode = 2001;
+                                    result.success = true;
+                                    return result;
+                                }
+                            }
+
+
+                        LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
+
+                        if (start == null)
+                        {
+                            LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�);
+                        }
+
+
+
+
+                        //鑾峰彇鎵樼洏鐮�+                        var cntrCode = LocationHelper.GetLocCntrCode(start.S_CODE);
+
+                        if (workFlow.SENDWCS == "Y")
+                        {
+
+                            //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
+                            var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
+                                 
+                            //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
+                            var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
+                            foreach (var item in balanceConnectionList)
+                            {
+                                if (item.loc.CONNEC_ROADWAY == start.N_ROADWAY)
+                                {
+                                    connection = item.loc.S_CODE;
+                                    connectionArea = item.loc.S_AREA_Name;
+                                    LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                                    break;
+                                }
+                            }
+
+                            if (connection == "")
+                            {
+                                LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
+                                throw new Exception($"InWorkArea鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
+                            }
+                        }
+
+
+                        //璧风偣缁堢偣鏌ユ壘鎴愬姛锛屽垱寤轰綔涓�+
+                        var taskType = int.Parse(workFlow.FLOWCODE);
+
+                        var operation = new WmsWork
+                        {
+                            // 浣滀笟鍙�+                            S_CODE = model.task_no,
+                            // 浣滀笟绫诲瀷
+                            N_TYPE = taskType,
+                            // 浣滀笟绫诲瀷
+                            S_TYPE = workFlow.FLOWNAME,
+                            // 璧风偣璐т綅
+                            S_START_LOC = start.S_CODE,
+                            // 璧风偣搴撳尯缂栫爜
+                            S_START_AREA = start.S_AREA_CODE,
+                            //鎺ラ┏浣�+                            CONNECTION = connection,
+                            // 缁堢偣璐т綅
+                            S_END_LOC = end.S_CODE,
+                            // 缁堢偣搴撳尯缂栫爜
+                            S_END_AREA = end.S_AREA_CODE,
+                            // 瀹瑰櫒缂栫爜
+                            S_CNTR_CODE = cntrCode,
+                            // 浣滀笟瀹氫箟鍚嶇О
+                            S_OP_DEF_NAME = workFlow.FLOWNAME,
+                            //浼樺厛绾�+                            N_PRIORITY = model.Priority,
+                            //宸ヨ绫诲瀷
+                            TOOLSTYPE = TOOLSTYPE,
+                            //璧风偣搴撳尯鍚嶇О
+                            S_START_AREA_NAME = start.S_AREA_Name,
+                            //璧风偣搴撳尯鍚嶇О
+                            S_END_AREA_NAME = end.S_AREA_Name,
+                            //璧风偣搴撳尯鍚嶇О
+                            CONNECTION_AREA = connectionArea
+                        };
+
+                        //鍒涘缓浣滀笟
+                        if (WMSHelper.CreateWmsWork(operation))
+                        {
+                            if (connection != "")
+                            {
+                                LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
+                                LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
+                                LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1);
+                            }
+
+
+                            LogHelper.Info($"InWorkArea鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂");
+                            result.errMsg = "鍑哄簱浣滀笟鍒涘缓鎴愬姛";
+                            result.errCode = 0;
+                            result.success = true;
+                            return result;
+                        }
+                        else
+                        {
+                            LogHelper.Info($"InWorkArea鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"InWorkArea鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触");
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("InWorkArea浠诲姟涓嬪彂寮傚父" + ex.Message, "Mes浠诲姟涓嬪彂");
+                result.errMsg = "InWorkArea浠诲姟涓嬪彂寮傚父" + ex.Message;
+                result.errCode = 1;
+                result.success = false;
+                throw;
+            }
+
+            return result;
+        }
 
 
             /// <summary>
@@ -1409,15 +1750,35 @@
                 var TOOLSTYPE = "";
                 if (!string.IsNullOrEmpty(model.TOOLS_TPYE))
                 {
-                    TOOLSTYPE = model.TOOLS_TPYE;
-                    
+                    TOOLSTYPE = model.TOOLS_TPYE;  
                 }
 
-                workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE, TOOLSTYPE);
-               
+                //鍏ュ簱鎸夌収宸ヨ鍜屾祦绋嬬紪鍙�+                if (model.Task_type == 1) {
+                    workFlow = TaskHelper.selectWorkFlowByType(model.BUSI_TYPE, TOOLSTYPE);
+                }
+                else if (model.Task_type == 2)
+                {
+                    //鍑哄簱鎸夌収缁堢偣搴撳尯鍜屾祦绋嬬紪鍙�+
+                    var end = LocationHelper.GetLoc(model.Location_To);
+                    LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+
+
+                    if (end == null)
+                    {
+                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒�, "Mes浠诲姟涓嬪彂");
+                        throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒�);
+                    }
+
+                    workFlow = TaskHelper.selectWorkFlowByEndArea(model.BUSI_TYPE, end.S_AREA_CODE);
+                    TOOLSTYPE = workFlow.TOOLSTYPE;
+                }
+
                 LogHelper.Info($"浣滀笟{model.task_no}锛屽伐瑁呯被鍨媨TOOLSTYPE}", "Mes浠诲姟涓嬪彂");
 
-               
+
+
                 if (workFlow == null) {
                     LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂澶辫触锛孊USI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "Mes浠诲姟涓嬪彂");
                     throw new Exception($"BUSI_TYpe:{model.BUSI_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�);
@@ -1482,72 +1843,114 @@
                     {
 
                         //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
-                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
-                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
-                        if (usableConnectionList != null && usableConnectionList.code == "0")
+                        //var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
+                        //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
+                        //if (usableConnectionList != null && usableConnectionList.code == "0")
+                        //{
+                        //    var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
+                        //    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍙敤鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂");
+
+                        //    if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2")
+                        //    {
+                        //        //婊℃墭鍏�+                        //        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+
+                        //        if (TOOLSTYPE == "25" || TOOLSTYPE == "35") {
+                        //            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂");
+                        //            balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
+                        //        }
+
+
+
+                        //    }
+                        //    else if (workFlow.FLOWCODE == "3")
+                        //    {
+                        //        //绌烘墭鍏ョ珛搴撳尯
+                        //        cntrCount = 0;
+                        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
+                        //        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        //    }
+
+                        //    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘缁堢偣鏁伴噺{balanceLocList.Count}", "Mes浠诲姟涓嬪彂");
+
+                        //    foreach (var item in balanceLocList)
+                        //    {
+                        //        if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0)
+                        //        {
+                        //           // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂item淇℃伅" + JsonConvert.SerializeObject(item), "Mes浠诲姟涓嬪彂");
+                        //            foreach (var item1 in balanceConnectionList)
+                        //            {
+                        //                if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
+                        //                {
+                        //                    connection = item1.S_CODE;
+                        //                    connectionArea = item1.S_AREA_Name;
+                        //                    end = item;
+                        //                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                        //                    break;
+                        //                }
+                        //            }
+                        //            if (end!=null)
+                        //            {
+                        //                LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒扮粓鐐箋end.S_CODE}", "Mes浠诲姟涓嬪彂");
+                        //                break;
+                        //            }
+                        //        }
+                        //    }
+                        //    if (connection == "")
+                        //    {
+                        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂");
+                        //        throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅");
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂");
+                        //    throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�);
+                        //}
+
+
+                        if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11")
                         {
-                            var balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍙敤鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂");
+                            //婊℃墭鍏� 
-                            if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2")
+                            if (TOOLSTYPE == "25" || TOOLSTYPE == "35")
                             {
-                                //婊℃墭鍏�-                                balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
-
-                                if (TOOLSTYPE == "25" || TOOLSTYPE == "35") {
-                                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂");
-                                    balanceLocList = LocationHelper.RoadWayBalance1ByItem(balanceLocList, model.PROD_NO);
-                                }
-
-                                
+                                LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂");
+                                end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO);
 
                             }
-                            else if (workFlow.FLOWCODE == "3")
-                            {
-                                //绌烘墭鍏ョ珛搴撳尯
-                                cntrCount = 0;
-                                LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
-                                balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                            else {
+                                end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                             }
 
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘缁堢偣鏁伴噺{balanceLocList.Count}", "Mes浠诲姟涓嬪彂");
-
-                            foreach (var item in balanceLocList)
-                            {
-                                if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0)
-                                {
-                                   // LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂item淇℃伅" + JsonConvert.SerializeObject(item), "Mes浠诲姟涓嬪彂");
-                                    foreach (var item1 in balanceConnectionList)
-                                    {
-                                        if (item1.CONNEC_ROADWAY == item.N_ROADWAY && item1.N_CURRENT_NUM < 2)
-                                        {
-                                            connection = item1.S_CODE;
-                                            connectionArea = item1.S_AREA_Name;
-                                            end = item;
-                                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
-                                            break;
-                                        }
-                                    }
-                                    if (end!=null)
-                                    {
-                                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒扮粓鐐箋end.S_CODE}", "Mes浠诲姟涓嬪彂");
-                                        break;
-                                    }
-                                }
-                            }
-                            if (connection == "")
-                            {
-                                LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂");
-                                throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂娌℃壘鍒版帴椹充綅");
-                            }
                         }
-                        else
+                        else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10")
                         {
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂");
-                            throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�);
+                            //绌烘墭鍏ョ珛搴撳尯
+                            cntrCount = 0;
+                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
+                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
                         }
 
-                       
+                        if (end == null)
+                        {
+                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐瑰贩閬撴垨鎺ラ┏浣嶄笉鍙敤", "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�宸烽亾鎴栨帴椹充綅涓嶅彲鐢�);
+                        }
+
+                        var jb = LocationHelper.GetConnectionByEnd(workFlow.CONNECTION, end.N_ROADWAY);
+
+                        if (jb==null)
+                        {
+                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅", "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂搴撳尯{workFlow.CONNECTION}锛屽贩閬搟end.N_ROADWAY},娌℃壘鍒版帴椹充綅");
+                        }
+
+
+                        connection = jb.S_CODE;
+                        connectionArea = jb.S_AREA_Name;
+
+
                     }
                     else {
                         if (workFlow.FLOWCODE == "3")
@@ -1575,16 +1978,14 @@
                         }
                      }
 
-
-                    
-
-
                     LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
 
                     if (end == null) {
-                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂");
-                        throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
+                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟{model.task_no}涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂");
+                        throw new Exception($"{model.task_no}涓嬪彂澶辫触缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
                     }
+
+
 
                     //娣诲姞鎵樼洏鐗╂枡鍏宠仈琛�                     if (cntrCount != 0)
@@ -1784,7 +2185,7 @@
 
 
 
-                    if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4")
+                    if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4" || workFlow.FLOWCODE == "6")
                     {
                         if (TOOLSTYPE == "85" || TOOLSTYPE == "95")
                         {
@@ -1932,7 +2333,7 @@
                         var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
                         foreach (var item in balanceConnectionList)
                         {
-                            if (item.loc.N_CURRENT_NUM < 2 && item.loc.CONNEC_ROADWAY==start.N_ROADWAY)
+                            if (item.loc.CONNEC_ROADWAY==start.N_ROADWAY)
                             {
                                 connection = item.loc.S_CODE;
                                 connectionArea = item.loc.S_AREA_Name;
@@ -2018,8 +2419,6 @@
                     LogHelper.Info("ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛孴ask_type涓嶇瓑浜�鎴�", "Mes浠诲姟涓嬪彂");
                     throw new Exception("Task_type涓嶇瓑浜�鎴�");
                 }
-
-
 
             }
             catch (Exception ex)

--
Gitblit v1.9.1