From 9ad3666d15deccc40a2aa4d1b96950c78eaf165f Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期四, 22 五月 2025 17:28:56 +0800
Subject: [PATCH] 金坛修改

---
 process/TaskProcess.cs |  356 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 269 insertions(+), 87 deletions(-)

diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index 0c74448..f7b6b43 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -116,16 +116,30 @@
             }
             else if (state == 1105)
             {
-                //鍒ゆ柇鎺ラ┏浣嶅拰宸烽亾鏄惁鍙敤 涓嶅彲鐢ㄩ渶瑕佹敼閬�-                changeBit(mst);
+                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
+
+                if (workFlow == null)
+                {
+                    LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{mst.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "鏀归亾瀹夊叏浜や簰");
+                    return;
+                }
+
+                var wcsTask = TaskHelper.GetTaskByWorkNo(mst.S_OP_CODE,"wcs");
+                if (wcsTask == null)
+                {
+                    LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤澶辫触锛屾病鎵惧埌瀵瑰簲{mst.S_OP_CODE}鐨剋cs浠诲姟", "鏀归亾瀹夊叏浜や簰");
+                    return;
+                }
+                //鍒ゆ柇绌烘墭缂撳瓨銆佹帴椹充綅鍜屽贩閬撴槸鍚﹀彲鐢�涓嶅彲鐢ㄩ渶瑕佹敼閬�+                changeBit(mst,wcsTask,workFlow);
             }
             else if (state == 1023 || state == 1025)
             {
                 //寮�叧鍏抽棬鐢宠
                 DeviceProcess.Door(mst, forkliftNo, state);
             }
-            else if (state == 1013) {
-                LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}锛屽嵏璐т氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰");
+            else if (state == 1002) {
+                LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}", "瀹夊叏浜や簰");
 
                 //绛夊緟rfid鏍¢獙
                 var rfidFlag = TaskHelper.GetRfid(mst.S_CODE);
@@ -187,33 +201,87 @@
 
         private static object locLocker = new object();
 
-        internal static void changeBit(WMSTask task) {
+        internal static void changeBit(WMSTask task, WMSTask wcsTask, WorkFlow workFlow) {
 
             var db = new SqlHelper<object>().GetInstance();
 
             try
             {
-                var workFlow = TaskHelper.selectWorkFlowByType(task.N_TYPE.ToString(), task.TOOLSTYPE);
-
-                if (workFlow == null)
-                {
-                    LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{task.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "鏀归亾瀹夊叏浜や簰");
-                    throw new Exception($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{task.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�);
-                }
-
-                var wcsTask = db.Queryable<WMSTask>().Where(e => e.S_CODE == task.S_OP_CODE + "_2")?.First();
-                if (wcsTask == null)
-                {
-                    LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤澶辫触锛屾病鎵惧埌瀵瑰簲{task.S_OP_CODE + "_2"}浠诲姟", "鏀归亾瀹夊叏浜や簰");
-                    throw new Exception($"鍒ゆ柇宸烽亾鍙敤澶辫触,娌℃壘鍒板搴攞task.S_OP_CODE + "_2"}浠诲姟");
-
-                }
-
+               
                 //鍒ゆ柇鎺ラ┏浣嶅彲鐢�                 var flag = true;
 
+                //绌烘墭鍏ュ簱鍒ゆ柇绌烘墭鍑虹紦瀛樿〃锛屾湁瀵瑰簲璁板綍鐩存帴鏀归亾鍒扮紦瀛樿〃缁堢偣
+                if (workFlow.FLOWCODE=="3") {
+                    var kt = db.Queryable<MesKtTask>().Where(e => e.TOOLS_TPYE==task.TOOLSTYPE && e.Status=="N").OrderBy(a=>a.CreateDate).First();
+                    if (kt == null)
+                    {
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}娌℃壘鍒扮┖鎵樺嚭缂撳瓨璁板綍", "鏀归亾瀹夊叏浜や簰");
+                    }
+                    else {
+
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎵惧埌绌烘墭鍑虹紦瀛樿褰�"+JsonConvert.SerializeObject(kt), "鏀归亾瀹夊叏浜や簰");
+
+                        //鏌ユ壘缁欏畾缁堢偣
+                        var end = LocationHelper.GetLoc(kt.Location_To);
+                        //LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰");
+                        //if (end == null || end.S_LOCK_STATE != "鏃�)
+                        //{
+                        //    LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣澶辫触锛岀粓鐐�{kt.Location_To},娌℃壘鍒版垨鏈夐攣", "鏀归亾瀹夊叏浜や簰");
+                        //}
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
+                        LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+                        db.BeginTran();
+                        //鏀逛竴娈典换鍔$粓鐐�+                        task.S_END_LOC = end.S_CODE;
+                        task.S_END_AREA = end.S_AREA_CODE;
+                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC,it.S_END_AREA}).ExecuteCommand();
+                        kt.Status = "Y";
+                        db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand();
+                        db.CommitTran();
+                        var site = LocationHelper.GetAgvSiteZc(end.S_CODE);
+                        LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�", "鏀归亾瀹夊叏浜や簰");
+                        NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
+                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
+                        return;
+                    }
+                }
+
                 if (workFlow.FLOWNAME.Contains("鍏ュ簱"))
                 {
+                    var loc1 = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
+                    //鏌ユ壘鍙敤宸烽亾
+                    var rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == wcsTask.S_END_AREA && x.status == "0" && x.roadWay == loc1.N_ROADWAY.ToString()).First();
+                    if (rowdwa == null)
+                    {
+                        LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤,涓嶉渶瑕佹敼閬�, "鏀归亾瀹夊叏浜や簰");
+                    }
+                    else
+                    {
+                        LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝闇�鏀归亾", "鏀归亾瀹夊叏浜や簰");
+                        var endLoc = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
+
+                        var endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                        var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝闇�鏀归亾锛屾柊缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰");
+                        if (end == null)
+                        {
+                            LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "鏀归亾瀹夊叏浜や簰");
+                            throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
+                        }
+                        LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+                        db.BeginTran();
+                        endLoc.N_LOCK_STATE = 0;
+                        endLoc.S_LOCK_STATE = "鏃�;
+                        db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
+                        wcsTask.S_END_LOC = end.S_CODE;
+                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
+                        db.CommitTran();
+                    }
+
+
+
                     var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                     var usableConnectionList = WcsTask.WcsPositionAvailable(task.S_CODE, connectionList);
                     if (usableConnectionList != null && usableConnectionList.code == "0")
@@ -223,6 +291,7 @@
                             var con = LocationHelper.GetLoc(item);
                             if (con.S_CODE.Contains(task.S_END_LOC))
                             {
+
                                 flag = false;
                                 LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽con.S_CODE}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�", "鏀归亾瀹夊叏浜や簰");
                                 NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
@@ -243,7 +312,7 @@
                         foreach (var item in usableConnectionList.available)
                         {
                             var con = LocationHelper.GetLoc(item);
-                            if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
+                            if (con.N_CURRENT_NUM < 2)
                             {
                                 connection = con.S_CODE;
                                 LogHelper.Info($"鏀归亾瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰");
@@ -257,8 +326,7 @@
 
                         var loc = LocationHelper.GetLocOne(connection);
 
-                        if (workFlow.FLOWNAME.Contains("鍏ュ簱"))
-                        {
+                       
                             LocationHelper.LockLoc(loc.S_CODE, "鍏ュ簱閿�, 1);
                             var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
                             endLoc.N_LOCK_STATE = 0;
@@ -267,11 +335,14 @@
                             db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
                             //鏀逛竴娈典换鍔$粓鐐�                             task.S_END_LOC = loc.S_CODE;
-                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
+                            task.S_END_AREA = loc.S_AREA_CODE;
+                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand();
+                            
 
                             //鏀逛簩娈典换鍔¤捣鐐�                             wcsTask.S_START_LOC = loc.S_CODE;
-                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC }).ExecuteCommand();
+                            wcsTask.S_START_AREA = loc.S_AREA_CODE;
+                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC ,it.S_START_AREA}).ExecuteCommand();
                             db.CommitTran();
                             
                             var site = LocationHelper.GetAgvSiteZc(loc.S_CODE);
@@ -279,7 +350,7 @@
                             NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
                             NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
                            
-                        }
+                        
                         //} else if (workFlow.FLOWNAME.Contains("鍑哄簱")) {
                         //    var endLoc = LocationHelper.GetLocOne(task.S_START_LOC);
                         //    endLoc.N_LOCK_STATE = 3;
@@ -720,8 +791,8 @@
 
             try
             {
-                var task = TaskHelper.GetTask(model.task_no + "_1");
-                var wcsTask = TaskHelper.GetTask(model.task_no + "_2");
+                var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
+                var wcsTask = TaskHelper.GetTaskByWorkNo(model.task_no,"wcs");
                 if (task != null && wcsTask != null)
                 {
                     if (task.S_B_STATE.Trim() == "鏈墽琛�)
@@ -785,7 +856,7 @@
                 else
                 {
                     result.errCode = 1;
-                    result.errMsg = "浠诲姟涓嶅瓨鍦�;
+                    result.errMsg = $"{model.task_no}浠诲姟涓嶅瓨鍦�;
                     result.success = false;
                 }
             }
@@ -1198,10 +1269,10 @@
 
                     //鏌ユ壘璧风偣
                     var start = LocationHelper.GetLoc(model.Location_From);
-                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂璧风偣淇℃伅"+JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
+                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
 
 
-                    if (start == null || start.S_LOCK_STATE!="鏃�) {
+                    if (start == null || start.S_LOCK_STATE != "鏃�) {
                         LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂澶辫触锛岃捣鐐�{model.Location_From},娌℃壘鍒版垨鏈夐攣", "Mes浠诲姟涓嬪彂");
                         throw new Exception($"璧风偣:{model.Location_From},娌℃壘鍒版垨鏈夐攣");
                     }
@@ -1209,8 +1280,11 @@
                     //鎺ラ┏浣�                     var connection = "";
 
+                    //鎺ラ┏浣嶅簱鍖哄悕绉�+                    var connectionArea = "";
+
                     //濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�-                    if (workFlow.SENDWCS=="Y") {
+                    if (workFlow.SENDWCS == "Y") {
 
                         //娴嬭瘯榛樿鍙栦竴涓帴椹充綅
                         //var connectionList = LocationHelper.GetAllLocList1(workFlow.CONNECTION);
@@ -1234,13 +1308,16 @@
                         var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
                         if (usableConnectionList != null && usableConnectionList.code == "0")
                         {
-                            foreach (var item in usableConnectionList.available)
+                            //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
+                            var balanceConnectionList =  LocationHelper.GetBalanceConnectionList(usableConnectionList.available);
+                            foreach (var item in balanceConnectionList)
                             {
-                                var con = LocationHelper.GetLoc(item);
-                                if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
+                                if (item.loc.N_CURRENT_NUM<2)
                                 {
-                                    connection = con.S_CODE;
+                                    connection = item.loc.S_CODE;
+                                    connectionArea = item.loc.S_AREA_Name;
                                     LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                                    break;
                                 }
                             }
                         }
@@ -1250,7 +1327,7 @@
                             throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
                         }
 
-                        if (connection=="")
+                        if (connection == "")
                         {
                             LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
                             throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
@@ -1258,33 +1335,40 @@
                     }
 
                     //鏌ユ壘缁堢偣
-                    var endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                    List<Location> endList ;
 
                     Location end = null;
 
+                    if (!string.IsNullOrEmpty(workFlow.ZONECODE))
+                    {
+                        endList = LocationHelper.GetZoneLoc(workFlow.ZONECODE);
+                    }
+                    else {
+                        endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                    }
 
                     if (workFlow.FLOWCODE == "1")
                     {
                         //婊℃墭鍏�-                        end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                     }
                     else if (workFlow.FLOWCODE == "3")
                     {
                         //绌烘墭鍏�浼樺厛鍏ョ紦瀛樺尯锛屾病鏈夊叆绔嬪簱鍖�-                        var ktHcq = Settings.EmptyPalletBufferArea;
+                        //var ktHcq = Settings.EmptyPalletBufferArea;
                         cntrCount = 0;
-                        var endList1 = LocationHelper.GetAllLocList1(ktHcq);
-                        end = LocationHelper.FindEndcolByLoc(endList1, ktHcq);
-                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘绌烘墭缂撳瓨鍖虹粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
-                        if (end == null)
-                        {
+                        //var endList1 = LocationHelper.GetAllLocList1(ktHcq);
+                        //end = LocationHelper.FindEndcolByLoc(endList1, ktHcq);
+                        //LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟瀵绘壘绌烘墭缂撳瓨鍖虹粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+                        //if (end == null)
+                        //{
                             LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟娌℃壘鍒扮┖鎵樼紦瀛樺尯缁堢偣,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
-                            end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
-                        }
-                        else
-                        {
-                            connection = "";
-                        }
+                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        //}
+                        //else
+                        //{
+                        //    connection = "";
+                        //}
                     }
                     else if (workFlow.FLOWCODE == "2")
                     {
@@ -1297,7 +1381,7 @@
                         }
                         else
                         {
-                            end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
                         }
                     }
                     else if (workFlow.FLOWCODE == "12")
@@ -1310,15 +1394,15 @@
                     }
 
 
-                        LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
 
                     if (end == null) {
-                        LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂");
+                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "Mes浠诲姟涓嬪彂");
                         throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
                     }
 
                     //娣诲姞鎵樼洏鐗╂枡鍏宠仈琛�-                    if (cntrCount!=0)
+                    if (cntrCount != 0)
                     {
                         CntrItemRel rel = new CntrItemRel();
                         rel.S_ITEM_CODE = model.PROD_NO;
@@ -1360,7 +1444,7 @@
                         rel.itemFeature = model.PROD_TECH;
                         ContainerHelper.CreateCntrItem(rel);
                     }
-                   
+
 
 
                     //娣诲姞鎵樼洏
@@ -1370,13 +1454,13 @@
                     cntr1.N_DETAIL_COUNT = cntrCount;
                     cntr1.S_TYPE = "";
 
-                    LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅"+JsonConvert.SerializeObject(cntr1), "Mes浠诲姟涓嬪彂");
+                    LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅" + JsonConvert.SerializeObject(cntr1), "Mes浠诲姟涓嬪彂");
                     if (ContainerHelper.CreateCntr(cntr1))
                     {
-                        LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅鎴愬姛" , "Mes浠诲姟涓嬪彂");
+                        LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅鎴愬姛", "Mes浠诲姟涓嬪彂");
                     }
                     else {
-                        LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅澶辫触" , "Mes浠诲姟涓嬪彂");
+                        LogHelper.Info($"娣诲姞瀹瑰櫒淇℃伅澶辫触", "Mes浠诲姟涓嬪彂");
                     }
 
 
@@ -1411,17 +1495,27 @@
                         //浼樺厛绾�                         N_PRIORITY = model.Priority,
                         //宸ヨ绫诲瀷
-                        TOOLSTYPE = TOOLSTYPE
-
+                        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 (WMSHelper.CreateWmsWork(operation))
+                    {
                         LogHelper.Info($"ZCSendTask鍏ュ簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂");
                         result.errMsg = "鍏ュ簱浣滀笟鍒涘缓鎴愬姛";
                         result.errCode = 0;
                         result.success = true;
                         return result;
+                    }
+                    else {
+                        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂");
+                        throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触");
                     }
 
 
@@ -1432,6 +1526,10 @@
 
                     //鎺ラ┏浣�                     var connection = "";
+
+                    //鎺ラ┏浣嶅簱鍖�+                    var connectionArea = "";
+                    
 
                     //鏌ユ壘缁欏畾缁堢偣
                     var end = LocationHelper.GetLoc(model.Location_To);
@@ -1458,23 +1556,86 @@
                         else {
                             //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�                             start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY);
+                            if (start==null)
+                            {
+                                strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);
+                                var itemFlag = LocationHelper.FindStartcolByLoclistAndItemFlag(strrtList, model.PROD_NO, workFlow.STARTAREA);
+                                LogHelper.Info($"ZCSendTask婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂");
+                                if (itemFlag)
+                                {
+                                    result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ";
+                                    result.errCode = 2001;
+                                    result.success = true;
+                                    return result;
+                                }
+                            }
                         }
 
-                       
+
                     }
                     else if (workFlow.FLOWCODE == "7") {
                         //瀵绘壘绔嬪簱鍖虹┖鎵�                         start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA);
+                        if (start == null)
+                        {
+                            strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);
+                            var itemFlag = LocationHelper.FindStartcolByLoclistAndcntrFlag(strrtList, workFlow.STARTAREA);
+                            LogHelper.Info($"ZCSendTask绌烘墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂");
+
+                            if (itemFlag)
+                            {
+                                result.errMsg = "绌烘墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ";
+                                result.errCode = 2001;
+                                result.success = true;
+                                return result;
+                            }
+                        }
                     }
 
 
                     LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
 
-                    if (start == null)
+                    if (workFlow.FLOWCODE == "7" && start == null)
                     {
-                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂");
-                        throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�);
+                        //绌烘墭鍑烘病鎵惧埌璧风偣锛屽厛缂撳瓨鍒扮┖鎵樿〃
+
+                        MesKtTask req = new MesKtTask()
+                        {
+                            Location_From_Area = workFlow.STARTAREA,
+                            Location_To = end.S_CODE,
+                            Priority = model.Priority,
+                            CreateDate = DateTime.Now,
+                            BUSI_TYPE = model.BUSI_TYPE,
+                            TOOLS_TPYE = model.TOOLS_TPYE,
+                            Status = "N"
+                        };
+
+                        if (TaskHelper.CreateMesKtTask(req))
+                        {
+                            LogHelper.Info($"ZCSendTask绌烘墭鍑哄垱寤烘垚鍔�, "Mes浠诲姟涓嬪彂");
+                            result.errMsg = "绌烘墭鍑哄簱缂撳瓨鎴愬姛";
+                            result.errCode = 0;
+                            result.success = true;
+                            return result;
+                        }
+                        else
+                        {
+                            LogHelper.Info($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�, "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�);
+                        }
+                        
+                     
+
                     }
+                    else {
+                        if (start == null)
+                        {
+                            LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�);
+                        }
+                    }
+
+                    
 
                     //鑾峰彇鎵樼洏鐮�                     var cntrCode = LocationHelper.GetLocCntrCode(start.S_CODE);
@@ -1501,29 +1662,43 @@
 
                         //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
                         var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
-                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
-                        if (usableConnectionList != null && usableConnectionList.code == "0")
+                        //var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
+                        //if (usableConnectionList != null && usableConnectionList.code == "0")
+                        //{
+                        //    foreach (var item in usableConnectionList.available)
+                        //    {
+                        //        var con = LocationHelper.GetLoc(item);
+                        //        if (con.C_ENABLE == "Y" && con.N_CURRENT_NUM < 2)
+                        //        {
+                        //            connection = con.S_CODE;
+                        //            connectionArea = con.S_AREA_Name;
+                        //            LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                        //        }
+                        //    }
+                        //}
+                        //else
+                        //{
+                        //    LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
+                        //    throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
+                        //}                
+
+                        //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
+                        var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
+                        foreach (var item in balanceConnectionList)
                         {
-                            foreach (var item in usableConnectionList.available)
+                            if (item.loc.N_CURRENT_NUM < 2)
                             {
-                                var con = LocationHelper.GetLoc(item);
-                                if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
-                                {
-                                    connection = con.S_CODE;
-                                    LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
-                                }
+                                connection = item.loc.S_CODE;
+                                connectionArea = item.loc.S_AREA_Name;
+                                LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
+                                break;
                             }
-                        }
-                        else
-                        {
-                            LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                            throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
                         }
 
                         if (connection == "")
                         {
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                            throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
+                            LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
                         }
                     }
 
@@ -1557,7 +1732,13 @@
                         //浼樺厛绾�                         N_PRIORITY = model.Priority,
                         //宸ヨ绫诲瀷
-                        TOOLSTYPE = TOOLSTYPE
+                        TOOLSTYPE = TOOLSTYPE,
+                        //璧风偣搴撳尯鍚嶇О
+                        S_START_AREA_NAME = start.S_AREA_Name,
+                        //璧风偣搴撳尯鍚嶇О
+                        S_END_AREA_NAME = end.S_AREA_Name,
+                        //璧风偣搴撳尯鍚嶇О
+                        CONNECTION_AREA = connectionArea
                     };
 
                     //鍒涘缓浣滀笟
@@ -1568,6 +1749,10 @@
                         result.errCode = 0;
                         result.success = true;
                         return result;
+                    }
+                    else {
+                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂");
+                        throw new Exception($"ZCSendTask鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触");
                     }
 
                 }
@@ -1618,9 +1803,6 @@
                 result.success = false;
                 return result;
             }
-
-            return result;
-        
         }
 
 

--
Gitblit v1.9.1