From 00b6105b34870f6f5a33551534d0088f3f741906 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期一, 07 七月 2025 17:33:53 +0800
Subject: [PATCH] 退库修改

---
 process/TaskProcess.cs |  540 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 362 insertions(+), 178 deletions(-)

diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index 86cec16..e88f347 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -33,6 +33,7 @@
 using Container = HH.WCS.ZhongCeJinTan.wms.Container;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
 using Top.Api;
+using HH.WCS.ZhongCeJinTan;
 
 namespace HH.WCS.ZhongCeJinTan.process
 {
@@ -162,17 +163,19 @@
                 {
                     if (rfidFlag.S_RESULT.Contains("鎴愬姛"))
                     {
-                        LogHelper.Info($"浠诲姟鍙�{mst.S_CODE}锛岀瓑寰呬氦绠℃垚鍔燂紝淇敼鍙傛暟6涓�", "瀹夊叏浜や簰");
+                        LogHelper.Info($"浠诲姟鍙�{mst.S_CODE}锛岀瓑寰呬氦绠℃垚鍔燂紝淇敼鍙傛暟6涓�,4涓�", "瀹夊叏浜や簰");
+                        NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0");
                         NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1");
                     }
                     else {
                         var startSite = LocationHelper.GetAgvSiteZc(mst.S_START_LOC);
                         var endSite = LocationHelper.GetAgvSiteZc(mst.S_END_LOC);
-                        LogHelper.Info($"浠诲姟{mst.S_CODE}RFID鏍¢獙澶辫触锛屾敼鍙傛暟1涓簕startSite},鏀瑰弬鏁�涓簕endSite}锛屽弬鏁�涓�锛�涓�", "鏀归亾瀹夊叏浜や簰");
+                        LogHelper.Info($"浠诲姟{mst.S_CODE}RFID鏍¢獙澶辫触锛屾敼鍙傛暟1涓簕startSite},鏀瑰弬鏁�涓簕endSite}锛屽弬鏁�涓�锛�涓�", "瀹夊叏浜や簰");
                         NDCApi.ChangeOrderParam(mst.S_CODE, 1, startSite);
                         NDCApi.ChangeOrderParam(mst.S_CODE, 2, endSite);
                         NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0");
-                        NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1");
+                        Thread.Sleep(1000);
+                        NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2");
                     }
                 }
             }
@@ -201,13 +204,16 @@
         /// <param name="state"></param>
         internal static void OperateStatus(WMSTask mst, int state)
         {
-            if (state == 4)
+            if (state == 4)//鍙栬揣瀹屾垚
             {
                 CacheBitUpdate(mst, true);
             }
             if (state == 6)//鍗歌揣瀹屾垚
             {
-                CacheBitUpdate(mst, false);
+                //閫�簱浠诲姟涓嶇粦瀹�+                if (!LocationHelper.GetErroArea(mst.S_END_AREA)) {
+                    CacheBitUpdate(mst, false);
+                }  
             }
             if (state == 7)
             {
@@ -230,8 +236,7 @@
             try
             {
                
-                //鍒ゆ柇鎺ラ┏浣嶅彲鐢�-                var flag = true;
+               
 
                 //绌烘墭鍏ュ簱鍒ゆ柇绌烘墭鍑虹紦瀛樿〃锛屾湁瀵瑰簲璁板綍鐩存帴鏀归亾鍒扮紦瀛樿〃缁堢偣
                 if (workFlow.FLOWCODE=="3") {
@@ -260,33 +265,84 @@
                             //鏀逛竴娈典换鍔$粓鐐�                             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();
+                            task.S_END_AREA_NAME = end.S_AREA_Name;
+
+                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA ,it.S_END_AREA_NAME}).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, "2");
                             NDCApi.ChangeOrderParam(task.S_CODE, 4, "0");
+                            Thread.Sleep(1000);
+                            NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
                             return;
                         }
                        
                     }
                 }
 
+                //鍒ゆ柇宸烽亾鍙敤
+                var flag = true;
+
+                //鍒ゆ柇鎺ラ┏浣嶅彲鐢�+                var flag1 = true;
+
                 if (workFlow.FLOWNAME.Contains("鍏ュ簱"))
                 {
+
+                    List<Location> balanceConnectionList = new List<Location>();
+
                     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($"褰撳墠浠诲姟{task.S_CODE}鍒ゆ柇宸烽亾鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤,涓嶉渶瑕佹敼閬�, "鏀归亾瀹夊叏浜や簰");
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鍒ゆ柇宸烽亾鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤", "鏀归亾瀹夊叏浜や簰");
+                        flag = false;
+                    }
+
+                    //鍒ゆ柇鍙敤鎺ラ┏浣�+                    var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
+                    var usableConnectionList = WcsTask.WcsPositionAvailable(task.S_CODE, connectionList);
+
+                  
+                    if (usableConnectionList != null && usableConnectionList.code == "0")
+                    {
+                        balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
+
+                        foreach (var item in balanceConnectionList)
+                        {
+                            if (item.S_CODE.Contains(task.S_END_LOC))
+                            {
+
+                                flag1 = false;
+                                LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽item.S_CODE}鍙敤", "鏀归亾瀹夊叏浜や簰");
+                                break;
+                            }
+                        }
                     }
                     else
                     {
-                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}褰撳墠宸烽亾涓嶅彲鐢紝闇�鏀归亾", "鏀归亾瀹夊叏浜や簰");
+                        LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�, "鏀归亾瀹夊叏浜や簰");
+                        throw new Exception($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�);
+                    }
+
+
+
+                    if (flag || flag1)
+                    {
+
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽task.S_END_LOC}鎴栬�褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}涓嶅彲鐢紝闇�鏀归亾", "鏀归亾瀹夊叏浜や簰");
+                        Location connection = null;
+
+
+                        Location end = null;
+
+                        //绔嬪簱鍧囪 鍚庤揣浣嶉泦鍚�+                        List<Location> balanceLocList = new List<Location>();
+
                         var endLoc = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
                         List<Location> endList;
                         if (!string.IsNullOrEmpty(workFlow.ZONECODE))
@@ -298,8 +354,41 @@
                             endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
                         }
 
-                      
-                        var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+
+                        balanceLocList = LocationHelper.FindBalanceEndLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+
+
+                        balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
+
+                        foreach (var item in balanceLocList)
+                        {
+                            if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM == 0)
+                            {
+                                //LogHelper.Info($"鏀归亾瀹夊叏浜や簰item淇℃伅" + JsonConvert.SerializeObject(item), "鏀归亾瀹夊叏浜や簰");
+                                foreach (var item1 in balanceConnectionList)
+                                {
+                                    if (item1.CONNEC_ROADWAY == item.N_ROADWAY && item1.N_CURRENT_NUM < 2)
+                                    {
+                                        connection = item1;
+                                      
+                                        end = item;
+                                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰");
+                                        break;
+                                    }
+                                }
+                                if (end != null)
+                                {
+                                    LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}瀵绘壘鍒扮粓鐐箋end.S_CODE}", "鏀归亾瀹夊叏浜や簰");
+                                    break;
+                                }
+                            }
+                        }
+
+                        if (connection == null)
+                        {
+                            throw new Exception($"鏀归亾瀵绘壘涓嶅埌鍙敤鎺ラ┏浣�);
+                        }
+
                         LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}锛屽綋鍓嶅贩閬撲笉鍙敤锛岄渶瑕佹敼閬擄紝鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰");
                         if (end == null)
                         {
@@ -314,79 +403,35 @@
                         wcsTask.S_END_LOC = end.S_CODE;
                         db.Updateable(wcsTask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
                         db.CommitTran();
-                    }
+
+                        LocationHelper.LockLoc(connection.S_CODE, "鍏ュ簱閿�, 1);
+                        var endLoc1 = LocationHelper.GetLocOne(task.S_END_LOC);
+                        endLoc1.N_LOCK_STATE = 0;
+                        endLoc1.S_LOCK_STATE = "鏃�;
+                        db.BeginTran();
+                        db.Updateable(endLoc1).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
+                        //鏀逛竴娈典换鍔$粓鐐�+                        task.S_END_LOC = connection.S_CODE;
+                        task.S_END_AREA = connection.S_AREA_CODE;
+
+                        task.S_END_AREA_NAME = connection.S_AREA_Name;
+                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA,it.S_END_AREA_NAME }).ExecuteCommand();
 
 
+                        //鏀逛簩娈典换鍔¤捣鐐�+                        wcsTask.S_START_LOC = connection.S_CODE;
+                        wcsTask.S_START_AREA = connection.S_AREA_CODE;
 
-                    var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
-                    var usableConnectionList = WcsTask.WcsPositionAvailable(task.S_CODE, connectionList);
-                    if (usableConnectionList != null && usableConnectionList.code == "0")
-                    {
-                        foreach (var item in usableConnectionList.available)
-                        {
-                            var con = LocationHelper.GetLoc(item);
-                            if (con.S_CODE.Contains(task.S_END_LOC))
-                            {
+                        wcsTask.S_START_AREA_NAME = connection.S_AREA_Name;
+                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA,it.S_START_AREA_NAME}).ExecuteCommand();
+                        db.CommitTran();
 
-                                flag = false;
-                                LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽con.S_CODE}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�锛�涓�024", "鏀归亾瀹夊叏浜や簰");
-                                NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
-                                NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024");
-                                break;
-                            }
-                        }
-                    }
-                    else
-                    {
-                        LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�, "鏀归亾瀹夊叏浜や簰");
-                        throw new Exception($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�);
-                    }
-                    if (flag)
-                    {
-
-                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣嶄笉鍙敤锛岄渶瑕佹敼閬�, "鏀归亾瀹夊叏浜や簰");
-                        var connection = "";
-                        foreach (var item in usableConnectionList.available)
-                        {
-                            var con = LocationHelper.GetLoc(item);
-                            if (con.N_CURRENT_NUM < 2)
-                            {
-                                connection = con.S_CODE;
-                                LogHelper.Info($"鏀归亾瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰");
-                                break;
-                            }
-                        }
-                        if (connection == "")
-                        {
-                            throw new Exception($"鏀归亾瀵绘壘涓嶅埌鍙敤鎺ラ┏浣�);
-                        }
-
-                        var loc = LocationHelper.GetLocOne(connection);
-
-                       
-                            LocationHelper.LockLoc(loc.S_CODE, "鍏ュ簱閿�, 1);
-                            var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
-                            endLoc.N_LOCK_STATE = 0;
-                            endLoc.S_LOCK_STATE = "鏃�;
-                            db.BeginTran();
-                            db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
-                            //鏀逛竴娈典换鍔$粓鐐�-                            task.S_END_LOC = loc.S_CODE;
-                            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;
-                            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);
-                            LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�,4涓�024", "鏀归亾瀹夊叏浜や簰");
-                            NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
-                            NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
-                            NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024");
+                        var site = LocationHelper.GetAgvSiteZc(connection.S_CODE);
+                        LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�,4涓�024", "鏀归亾瀹夊叏浜や簰");
+                        NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
+                        NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024");
+                        Thread.Sleep(1000);
+                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
 
                         //} else if (workFlow.FLOWNAME.Contains("鍑哄簱")) {
                         //    var endLoc = LocationHelper.GetLocOne(task.S_START_LOC);
@@ -399,6 +444,12 @@
                         //    db.CommitTran();
                         //    LocationHelper.LockLoc(loc.S_CODE, "鍑哄簱閿�, 2);
                         //}
+                    }
+                    else {
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽task.S_END_LOC}鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�锛�涓�024", "鏀归亾瀹夊叏浜や簰");
+                        NDCApi.ChangeOrderParam(task.S_CODE, 4, "1024");
+                        Thread.Sleep(1000);
+                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "2");
                     }
                 }
 
@@ -695,14 +746,14 @@
                     var TrayLocation = db.Queryable<LocCntrRel>().Where(e => e.S_CNTR_CODE == model.TOOLS_NO).ToList();
                     if (TrayLocation.Count() > 0)
                     {
-                        LogHelper.Info("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗚揣浣嶄俊鎭�, "鐗╂枡缁戝畾瑙g粦");
-                        throw new Exception("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗚揣浣嶄俊鎭�);
+                        LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡璐т綅淇℃伅", "鐗╂枡缁戝畾瑙g粦");
+                        throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡璐т綅淇℃伅");
                     }
                     var TrayItems = db.Queryable<CntrItemRel>().Where(e => e.S_CNTR_CODE == model.TOOLS_NO).ToList();
                     if (TrayItems.Count() > 0)
                     {
-                        LogHelper.Info("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗙墿鏂欎俊鎭�, "鐗╂枡缁戝畾瑙g粦");
-                        throw new Exception("鏌ヨ鍒拌宸ヨ宸茬粡缁戝畾浜嗙墿鏂欎俊鎭�);
+                        LogHelper.Info("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡鐗╂枡淇℃伅", "鐗╂枡缁戝畾瑙g粦");
+                        throw new Exception("鏌ヨ鍒拌宸ヨ鎵樼洏鐮佸凡缁忕粦瀹氫簡鐗╂枡淇℃伅");
                     }
                     var Locations = db.Queryable<Location>().Where(e => e.S_CODE == model.LOCATION_CODE)?.First();
                     if (Locations == null)
@@ -894,6 +945,9 @@
                             ContainerHelper.delCntr(task.S_CNTR_CODE);
                             ContainerHelper.delCntrItem(task.S_CNTR_CODE);
                         }
+                        else {
+                           WcsTask.WcsCancellTask(wcsTask);
+                        }
                         
                        
                         TaskHelper.Fail(wcsTask);
@@ -927,6 +981,9 @@
                         {
                             ContainerHelper.delCntr(task.S_CNTR_CODE);
                             ContainerHelper.delCntrItem(task.S_CNTR_CODE);
+                        }
+                        else {
+                            WcsTask.WcsCancellTask(wcsTask);
                         }
                         TaskHelper.Fail(wcsTask);
                         TaskProcess.OperateStatus(wcsTask, 7);
@@ -1394,50 +1451,10 @@
                         throw new Exception($"璧风偣:{model.Location_From},娌℃壘鍒版垨鏈夐攣");
                     }
 
-                    //鎺ラ┏浣�-                    var connection = "";
 
-                    //鎺ラ┏浣嶅簱鍖哄悕绉�-                    var connectionArea = "";
-
-                    //濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�-                    if (workFlow.SENDWCS == "Y") {
-
-                        //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
-                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
-                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
-                        if (usableConnectionList != null && usableConnectionList.code == "0")
-                        {
-                            //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
-                            var balanceConnectionList =  LocationHelper.GetBalanceConnectionList(usableConnectionList.available);
-
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍧囪 鎺ラ┏浣�+JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂");
-                            foreach (var item in balanceConnectionList)
-                            {
-                                if (item.loc.N_CURRENT_NUM<2)
-                                {
-                                    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鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
-                        }
-                    }
 
                     //鏌ユ壘缁堢偣
-                    List<Location> endList ;
+                    List<Location> endList;
 
                     Location end = null;
 
@@ -1445,55 +1462,121 @@
                     {
                         endList = LocationHelper.GetZoneLoc(workFlow.ZONECODE);
                     }
-                    else {
+                    else
+                    {
                         endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
                     }
 
-                    if (workFlow.FLOWCODE == "1")
-                    {
-                        //婊℃墭鍏�-                        end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
-                    }
-                    else if (workFlow.FLOWCODE == "3")
-                    {
-                        //绌烘墭鍏�浼樺厛鍏ョ紦瀛樺尯锛屾病鏈夊叆绔嬪簱鍖�-                        //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)
-                        //{
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟娌℃壘鍒扮┖鎵樼紦瀛樺尯缁堢偣,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
-                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
-                        //}
-                        //else
-                        //{
-                        //    connection = "";
-                        //}
-                    }
-                    else if (workFlow.FLOWCODE == "2")
+                    //绔嬪簱鍧囪 鍚庤揣浣嶉泦鍚�+                    List<Location> balanceLocList = new List<Location>();
+
+
+                    //鎺ラ┏浣�+                    var connection = "";
+
+                    //鎺ラ┏浣嶅簱鍖哄悕绉�+                    var connectionArea = "";
+
+                    //濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�+                    if (workFlow.SENDWCS == "Y")
                     {
 
-                        //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�-                        if (TOOLSTYPE == "85" || TOOLSTYPE == "95")
+                        //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
+                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
+                        var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
+                        if (usableConnectionList != null && usableConnectionList.code == "0")
                         {
-                            end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+                            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 && 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
                         {
-                            end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�);
                         }
+
+                       
                     }
-                    else if (workFlow.FLOWCODE == "12")
-                    {
-                        //绌烘灦瀛愬叆
-                        end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
-                        cntrCount = 0;
-                        //鐢熸垚绌烘灦瀛愯櫄鎷熷彿
-                        cntrCode = ContainerHelper.GenerateCntrNo();
-                    }
+                    else {
+                        if (workFlow.FLOWCODE == "3")
+                        {
+                            end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+                        }
+                        else if (workFlow.FLOWCODE == "2")
+                        {
+                            //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�+                              end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+                              LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+                        }
+                        else if (workFlow.FLOWCODE == "12")
+                        {
+                            //绌烘灦瀛愬叆
+                            end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+                            cntrCount = 0;
+                            //鐢熸垚绌烘灦瀛愯櫄鎷熷彿
+                            cntrCode = ContainerHelper.GenerateCntrNo();
+                        }
+                        else if (workFlow.FLOWCODE == "0")
+                        {
+                            //閽笣鍏ュ簱
+                            end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+                        }
+                     }
+
+
+                    
 
 
                     LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
@@ -1518,7 +1601,7 @@
                         var EXPIRED_TIME = model.EXPIRED_TIME.ToString();
                         if (EXPIRED_TIME == "0001/1/1 0:00:00")
                         {
-                            rel.expireTime = model.SHELF_LIFE_TIME.AddHours(model.EXPIRED_REP);
+                            rel.expireTime = model.PRODUCE_TIME.AddHours(model.EXPIRED_REP);
                             LogHelper.Info($"澶辨晥鏃堕棿涓�001/1/1 0:00:00锛屼慨鏀逛负锛歿rel.expireTime}", "Mes浠诲姟涓嬪彂");
                         }
                         else
@@ -1529,7 +1612,7 @@
                         var SHELF_LIFE_TIME = model.SHELF_LIFE_TIME.ToString();
                         if (SHELF_LIFE_TIME == "0001/1/1 0:00:00")
                         {
-                            rel.takeEffectTime = model.SHELF_LIFE_TIME.AddHours(-model.SHELF_REP);
+                            rel.takeEffectTime = model.PRODUCE_TIME.AddHours(-model.SHELF_REP);
                             LogHelper.Info($"鐢熸晥鏃堕棿涓�001/1/1 0:00:00锛屼慨鏀逛负锛歿rel.takeEffectTime}", "Mes浠诲姟涓嬪彂");
                         }
                         else
@@ -1701,17 +1784,18 @@
 
 
 
-                    if (workFlow.FLOWCODE == "9")
+                    if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4")
                     {
                         if (TOOLSTYPE == "85" || TOOLSTYPE == "95")
                         {
                             start = LocationHelper.FindStartcolByHjLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA);
                             LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟涓夊眰璐ф灦璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
                         }
-                        else {
+                        else
+                        {
                             //鏍规嵁鍒跺搧缂栧彿瀵绘壘绔嬪簱鍖哄搴旂墿鏂欐墭鐩�-                            start = LocationHelper.FindStartcolByLoclistAndItem(strrtList, model.PROD_NO, workFlow.STARTAREA, workFlow.ROADWAY);
-                            if (start==null)
+                            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);
@@ -1732,7 +1816,8 @@
 
 
                     }
-                    else if (workFlow.FLOWCODE == "7") {
+                    else if (workFlow.FLOWCODE == "7")
+                    {
                         //瀵绘壘绔嬪簱鍖虹┖鎵�                         //start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA);
                         //if (start == null)
@@ -1754,7 +1839,8 @@
 
                         //鍏堟煡璇㈡湁娌℃湁鍚岀粓鐐圭紦瀛樼殑璁板綍
 
-                        if (endLocFlag) {
+                        if (endLocFlag)
+                        {
                             var ktTask = TaskHelper.GetMesKtTask(end.S_CODE);
                             if (ktTask != null)
                             {
@@ -1763,7 +1849,7 @@
                             }
                         }
 
-                      
+
 
                         MesKtTask req = new MesKtTask()
                         {
@@ -1773,7 +1859,7 @@
                             CreateDate = DateTime.Now,
                             BUSI_TYPE = model.BUSI_TYPE,
                             TOOLS_TPYE = TOOLSTYPE,
-                            task_no=model.task_no,
+                            task_no = model.task_no,
                             Status = "N"
                         };
 
@@ -1794,6 +1880,12 @@
                             LogHelper.Info($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�, "Mes浠诲姟涓嬪彂");
                             throw new Exception($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�);
                         }
+                    }
+                    else if (workFlow.FLOWCODE == "5")
+                    {
+                        //瀵绘壘璐ф灦鍖虹┖鎵�+                        start = LocationHelper.FindStartcolByHjArea(strrtList, workFlow.STARTAREA);
+                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟閽笣绌烘墭涓�浠诲姟璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
                     }
 
 
@@ -1840,7 +1932,7 @@
                         var balanceConnectionList = LocationHelper.GetBalanceConnectionList(connectionList);
                         foreach (var item in balanceConnectionList)
                         {
-                            if (item.loc.N_CURRENT_NUM < 2)
+                            if (item.loc.N_CURRENT_NUM < 2 && item.loc.CONNEC_ROADWAY==start.N_ROADWAY)
                             {
                                 connection = item.loc.S_CODE;
                                 connectionArea = item.loc.S_AREA_Name;
@@ -2267,7 +2359,99 @@
 
 
 
-           
+        ////濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�+        //if (workFlow.SENDWCS == "Y")
+        //{
+
+        //    //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
+        //    var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
+        //    var usableConnectionList = WcsTask.WcsPositionAvailable(model.task_no, connectionList);
+        //    if (usableConnectionList != null && usableConnectionList.code == "0")
+        //    {
+        //        //鏍规嵁鎺ラ┏浣嶄换鍔℃暟閲忚幏鍙栧潎琛℃帴椹充綅闆嗗悎浼樺厛浠诲姟鏁板皯鐨勬帴椹充綅
+        //        var balanceConnectionList = LocationHelper.GetBalanceConnectionList(usableConnectionList.available);
+
+        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍧囪 鎺ラ┏浣� + JsonConvert.SerializeObject(balanceConnectionList), "Mes浠诲姟涓嬪彂");
+        //        foreach (var item in balanceConnectionList)
+        //        {
+        //            if (item.loc.N_CURRENT_NUM < 2)
+        //            {
+        //                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鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
+        //    }
+        //}
+        //if (workFlow.FLOWCODE == "1")
+        //{
+        //    //婊℃墭鍏�+        //   end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+        //}
+        //else if (workFlow.FLOWCODE == "3")
+        //{
+        //    if (TOOLSTYPE == "35" || TOOLSTYPE == "75")
+        //    {
+        //        //绌烘墭鍏�浼樺厛鍏ョ紦瀛樺尯锛屾病鏈夊叆绔嬪簱鍖�+        //        //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)
+        //        //{
+        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟娌℃壘鍒扮┖鎵樼紦瀛樺尯缁堢偣,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
+        //        end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+        //        //}
+        //        //else
+        //        //{
+        //        //    connection = "";
+        //        //}
+        //    }
+        //    else
+        //    {
+        //        end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+        //    }
+        //}
+        //else if (workFlow.FLOWCODE == "2")
+        //{
+
+        //    //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�+        //    if (TOOLSTYPE == "85" || TOOLSTYPE == "95")
+        //    {
+        //        end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
+        //    }
+        //    else
+        //    {
+        //        end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+        //    }
+        //}
+        //else if (workFlow.FLOWCODE == "12")
+        //{
+        //    //绌烘灦瀛愬叆
+        //    end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+        //    cntrCount = 0;
+        //    //鐢熸垚绌烘灦瀛愯櫄鎷熷彿
+        //    cntrCode = ContainerHelper.GenerateCntrNo();
+        //}
+        //else if (workFlow.FLOWCODE == "0")
+        //{
+        //    //閽笣鍏ュ簱
+        //    end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
+        //}
 
 
         public class signalInfo

--
Gitblit v1.9.1