From 27e00e4c0d354727728ac4b8770b1575b5077399 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期一, 14 七月 2025 17:30:59 +0800
Subject: [PATCH] 出库修改

---
 process/TaskProcess.cs | 1461 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 1,145 insertions(+), 316 deletions(-)

diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index a9a515f..c39b185 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
 {
@@ -59,7 +60,7 @@
             else
             {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
-                LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
+                LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
                 LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
 
@@ -114,29 +115,67 @@
                     LogHelper.Info($"娌℃壘鍒颁换鍔no}锛屼氦浜掕姹傚け璐�, "瀹夊叏浜や簰");
                 }
             }
-            else if (state == 1105)
+            else if (state == 1003)
             {
-                //鍒ゆ柇鎺ラ┏浣嶅拰宸烽亾鏄惁鍙敤 涓嶅彲鐢ㄩ渶瑕佹敼閬�-                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 == 1004) {
+                LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}", "瀹夊叏浜や簰");
 
+                var wcsCode = "";
+
+                if (mst.S_TYPE.Contains("鍏ュ簱")|| mst.S_TYPE.Contains("鍥炲簱"))
+                {
+                    wcsCode = mst.S_CODE.Replace(@"_1", "_2");
+                }
+
+                if (mst.S_TYPE.Contains("鍑哄簱"))
+                {
+                    wcsCode = mst.S_CODE.Replace(@"_2", "_1");
+                }
+
+                LogHelper.Info($"绛夊緟浜や簰锛屾煡璇㈡牎楠屼换鍔″彿={wcsCode}", "瀹夊叏浜や簰");
                 //绛夊緟rfid鏍¢獙
-                var rfidFlag = TaskHelper.GetRfid(mst.S_CODE);
+                var rfidFlag = TaskHelper.GetRfid(wcsCode);
 
                 LogHelper.Info($"绛夊緟浜や簰锛屼换鍔″彿={mst.S_CODE}锛孯FID鏍¢獙淇℃伅"+JsonConvert.SerializeObject(rfidFlag), "瀹夊叏浜や簰");
                 if (rfidFlag!=null)
                 {
                     if (rfidFlag.S_RESULT.Contains("鎴愬姛"))
                     {
-                        LogHelper.Info($"浠诲姟鍙�{mst.S_CODE}锛岀瓑寰呬氦绠℃垚鍔燂紝淇敼鍙傛暟", "瀹夊叏浜や簰");
+                        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}锛屽弬鏁�涓�锛�涓�", "瀹夊叏浜や簰");
+                        NDCApi.ChangeOrderParam(mst.S_CODE, 1, startSite);
+                        NDCApi.ChangeOrderParam(mst.S_CODE, 2, endSite);
+                        NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0");
+                        Thread.Sleep(1000);
+                        NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2");
                     }
                 }
             }
@@ -165,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)
             {
@@ -187,38 +229,21 @@
 
         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").First();
+                    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}娌℃壘鍒扮┖鎵樺嚭缂撳瓨璁板綍锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�", "鏀归亾瀹夊叏浜や簰");
-                        NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
-                        return;
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}娌℃壘鍒扮┖鎵樺嚭缂撳瓨璁板綍", "鏀归亾瀹夊叏浜や簰");
                     }
                     else {
 
@@ -226,49 +251,74 @@
 
                         //鏌ユ壘缁欏畾缁堢偣
                         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},娌℃壘鍒版垨鏈夐攣", "鏀归亾瀹夊叏浜や簰");
-                        //}
-                        
-                        LocationHelper.LockLoc(end.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 = end.S_CODE;
-                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
-                        kt.Status = "Y";
-                        db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand();
-                        db.CommitTran();
+                        if (end.S_LOCK_STATE=="鏃� && end.N_CURRENT_NUM==0)
+                        {
+                            //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;
+                            task.S_END_AREA_NAME = end.S_AREA_Name;
 
-                        WcsTask.WcsCancellTask(wcsTask);
-                        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");
-
+                            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, 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}鍙敤", "鏀归亾瀹夊叏浜や簰");
+                        flag = false;
+                    }
+
+                    //鍒ゆ柇鍙敤鎺ラ┏浣�                     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)
+                        balanceConnectionList = LocationHelper.GetConnectionListByst(usableConnectionList.available);
+
+                        foreach (var item in balanceConnectionList)
                         {
-                            var con = LocationHelper.GetLoc(item);
-                            if (con.S_CODE.Contains(task.S_END_LOC))
+                            if (item.S_CODE.Contains(task.S_END_LOC))
                             {
-                                flag = false;
-                                LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽con.S_CODE}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�", "鏀归亾瀹夊叏浜や簰");
-                                NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
+
+                                flag1 = false;
+                                LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽item.S_CODE}鍙敤", "鏀归亾瀹夊叏浜や簰");
                                 break;
                             }
                         }
@@ -278,51 +328,111 @@
                         LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�, "鏀归亾瀹夊叏浜や簰");
                         throw new Exception($"鍒ゆ柇鎺ラ┏浣嶆槸鍚﹀彲鐢ㄦ帴鍙e洖澶嶅紓甯�);
                     }
-                    if (flag)
+
+
+
+                    if (flag || flag1)
                     {
 
-                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣嶄笉鍙敤锛岄渶瑕佹敼閬�, "鏀归亾瀹夊叏浜や簰");
-                        var connection = "";
-                        foreach (var item in usableConnectionList.available)
+                        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))
                         {
-                            var con = LocationHelper.GetLoc(item);
-                            if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
+                            endList = LocationHelper.GetZoneLoc(workFlow.ZONECODE);
+                        }
+                        else
+                        {
+                            endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                        }
+                        
+
+                        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)
                             {
-                                connection = con.S_CODE;
-                                LogHelper.Info($"鏀归亾瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰");
-                                break;
+                                //LogHelper.Info($"鏀归亾瀹夊叏浜や簰item淇℃伅" + JsonConvert.SerializeObject(item), "鏀归亾瀹夊叏浜や簰");
+                                foreach (var item1 in balanceConnectionList)
+                                {
+                                    if (item1.CONNEC_ROADWAY == item.N_ROADWAY)
+                                    {
+                                        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 == "")
+
+
+                        if (connection == null)
                         {
                             throw new Exception($"鏀归亾瀵绘壘涓嶅埌鍙敤鎺ラ┏浣�);
                         }
 
-                        var loc = LocationHelper.GetLocOne(connection);
-
-                        if (workFlow.FLOWNAME.Contains("鍏ュ簱"))
+                        LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}锛屽綋鍓嶅贩閬撲笉鍙敤锛岄渶瑕佹敼閬擄紝鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰");
+                        if (end == null)
                         {
-                            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;
-                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
-
-                            //鏀逛簩娈典换鍔¤捣鐐�-                            wcsTask.S_START_LOC = loc.S_CODE;
-                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC }).ExecuteCommand();
-                            db.CommitTran();
-                            
-                            var site = LocationHelper.GetAgvSiteZc(loc.S_CODE);
-                            LogHelper.Info($"浠诲姟{task.S_CODE}鏀归亾鎴愬姛锛屾敼鍙傛暟2涓簕site},鍙傛暟6涓�", "鏀归亾瀹夊叏浜や簰");
-                            NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
-                            NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
-                           
+                            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();
+
+                        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;
+
+                        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();
+
+                        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);
                         //    endLoc.N_LOCK_STATE = 3;
@@ -334,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");
                     }
                 }
 
@@ -404,6 +520,56 @@
 
                 LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}", "NDC");
 
+
+                if (mst.S_TYPE.Contains("鍑哄簱"))
+                {
+                    //鏌ユ壘瀵瑰簲浣滀笟锛屾槸鎺ラ┏浣嶅氨鏌ヨ瀵瑰簲绔嬪簱浠诲姟
+
+
+                    var wmsWork = TaskHelper.GetWmsWork(mst.S_OP_CODE);
+
+                    if (wmsWork==null)
+                    {
+                        LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}", "NDC");
+                        return false;
+                    }
+
+                    if (!string.IsNullOrEmpty(wmsWork.CONNECTION))
+                    {
+                        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 == "鏈墽琛�)
+                        {
+                            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.S_B_STATE!="鍙栬揣瀹屾垚")
+                        {
+                            LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屽綋鍓嶆帴椹充綅{wmsWork.CONNECTION}锛宎gv浠诲姟{agvTask.S_CODE},鐘舵�{agvTask.S_B_STATE}锛屾殏涓嶆帹閫�, "NDC");
+                            return false;
+                        }
+                    }
+
+
+                }
+
+
                 start = LocationHelper.GetAgvSiteZc(mst.S_START_LOC);
                 end = LocationHelper.GetAgvSiteZc(mst.S_END_LOC);
 
@@ -412,6 +578,35 @@
                 var ndcParme = new List<param>();
                 ndcParme.Add(new param() { name = "From", value = start.ToString() });
                 ndcParme.Add(new param() { name = "To", value = end.ToString() });
+                ndcParme.Add(new param() { name = "FUNC", value = "0" });
+
+
+                var work = TaskHelper.GetWmsWork(mst.S_OP_CODE);
+                if (work==null)
+                {
+                    LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}锛屾病鎵惧埌浣滀笟:{mst.S_OP_CODE}", "NDC");
+                    return false;
+                }
+
+                if (string.IsNullOrEmpty(work.CONNECTION))
+                {
+                    ndcParme.Add(new param() { name = "DATA", value = "0" });
+                }
+                else {
+                    if (work.S_TYPE.Contains("鍏ュ簱") || work.S_TYPE.Contains("鍥炲簱"))
+                    {
+                        ndcParme.Add(new param() { name = "DATA", value = "768" });
+                    }
+                    else {
+                        ndcParme.Add(new param() { name = "DATA", value = "0" });
+                    }
+                }
+              
+
+
+
+                ndcParme.Add(new param() { name = "Ctype", value = "0" });
+
 
                 var res =  NDCApi.AddOrderNew(1, mst.N_PRIORITY, mst.S_CODE, ndcParme);
 
@@ -458,6 +653,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)
         {
@@ -584,15 +788,22 @@
                     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 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)
                     {
@@ -733,14 +944,19 @@
                     }
                     db.CommitTran();
                     LogHelper.Info("缁戝畾瑙g粦", "缁撴潫");
+                    result.errMsg = "瑙g粦瀹屾垚";
+                    result.errCode = 0;
+                    result.success = true;
+                    return result;
                     }
                 }
             catch (Exception e)
             {
                 db.RollbackTran();
                 LogHelper.Info("鐗╂枡缁戝畾瑙g粦寮傚父:" + e.Message, "鐗╂枡缁戝畾瑙g粦");
-                result.errMsg = "鐗╂枡缁戝畾瑙g粦寮傚父";
+                result.errMsg = "鐗╂枡缁戝畾瑙g粦寮傚父" + e.Message;
                 result.errCode = 1;
+                result.success = false;
                 return result;
             }
             return result;
@@ -763,31 +979,24 @@
 
             try
             {
-                var task = TaskHelper.GetTask(model.task_no + "_1");
-                var wcsTask = TaskHelper.GetTask(model.task_no + "_2");
-                if (task != null && wcsTask != null)
+                var task = TaskHelper.GetTaskByWorkNo(model.task_no, "agv");
+
+                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);
-                        }
-                        
-                       
-                        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();
@@ -801,19 +1010,13 @@
                             result.success = false;
                             return result;
                         }
-
+                        TaskHelper.opMesTask(task, 3);
                         //宸叉帹閫佷絾鏄病鏈夊畬鎴愭垨鑰呭彇娑堬紝閫氱煡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);
-                        }
-                        TaskHelper.Fail(wcsTask);
-                        TaskProcess.OperateStatus(wcsTask, 7);
+
                         result.errCode = 0;
                         result.errMsg = "鍙栨秷鎴愬姛";
                         result.success = true;
@@ -828,14 +1031,55 @@
                 else
                 {
                     result.errCode = 1;
-                    result.errMsg = "浠诲姟涓嶅瓨鍦�;
+                    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 (task.S_TYPE.Contains("鍏ュ簱") || task.S_TYPE.Contains("鍥炲簱"))
+                        {
+                            ContainerHelper.delCntr(task.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(task.S_CNTR_CODE);
+                        }
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                        return result;
+                    }
+                    else if (wcsTask.S_B_STATE.Trim() != "鍙栨秷" && wcsTask.S_B_STATE.Trim() != "澶辫触" && wcsTask.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 == "5").First();
+
+
+                        if (qhflag != null)
+                        {
+                            LogHelper.Info($"璇ヤ换鍔task.S_CODE}宸茬粡鍙栬揣瀹屾垚", "鍙栨秷");
+                            result.errCode = 1;
+                            result.errMsg = "浠诲姟宸茬粡鍙栬揣瀹屾垚锛屼笉鍏佽鍙栨秷";
+                            result.success = false;
+                            return result;
+                        }
+                        WcsTask.WcsCancellTask(wcsTask);
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
+                        result.errCode = 0;
+                        result.errMsg = "鍙栨秷鎴愬姛";
+                        result.success = true;
+                    }
                 }
             }
             catch (Exception ex)
             {
 
-                LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛�+ex.Message, "鍙栨秷");
+                LogHelper.Info("cancelTask1鍙栨秷浠诲姟寮傚父锛� + ex.Message, "鍙栨秷");
                 result.errCode = 1;
                 result.errMsg = "鍙栨秷浠诲姟寮傚父";
                 return result;
@@ -1057,7 +1301,7 @@
                     result.success = false;
                     return result;
                 }
-                var endTask = TaskHelper.GetTaskByStartLoc(zd);
+                var endTask = TaskHelper.GetTaskByEndLoc(zd);
                 if (endTask != null)
                 {
                     result.errMsg = "缁堢偣鏈夋墽琛屼腑浠诲姟";
@@ -1143,7 +1387,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>
@@ -1151,7 +1650,36 @@
             /// </summary>
             internal static Result addMesTask(ZcInWorkAreaParme model) { 
             var result = new Result();
-
+            //淇濆瓨鍒癿es浠诲姟璁板綍
+            MesTask mesRes = new MesTask()
+            {
+                task_no = model.task_no,
+                Task_type = model.Task_type,
+                TurnCardNum = model.TurnCardNum,
+                PROD_NO = model.PROD_NO,
+                PROD_TECH = model.PROD_TECH,
+                PROD_SPEC = model.PROD_SPEC,
+                PROD_BOM = model.PROD_BOM,
+                PROD_Feature = model.PROD_Feature,
+                TOOLS_NO = model.TOOLS_NO,
+                ST_AMOUNT = model.ST_AMOUNT,
+                CURRENT_AMOUNT = model.CURRENT_AMOUNT,
+                Location_From = model.Location_From,
+                Location_To = model.Location_To,
+                PRODUCE_TIME = model.PRODUCE_TIME,
+                SHELF_LIFE_TIME = model.SHELF_LIFE_TIME,
+                EXPIRED_TIME = model.EXPIRED_TIME,
+                SHELF_REP = model.SHELF_REP,
+                EXPIRED_REP = model.EXPIRED_REP,
+                CHECK_CODE = model.CHECK_CODE,
+                CHECK_INFO = model.CHECK_INFO,
+                Priority = model.Priority,
+                Data_status = model.Data_status,
+                CreateDate = DateTime.Now,
+                standardWeight = model.standardWeight,
+                BUSI_TYPE = model.BUSI_TYPE,
+                TOOLS_TPYE = model.TOOLS_TPYE,
+            };
 
             try
             {
@@ -1249,116 +1777,180 @@
                         throw new Exception($"璧风偣:{model.Location_From},娌℃壘鍒版垨鏈夐攣");
                     }
 
-                    //鎺ラ┏浣�-                    var connection = "";
 
-                    //濡傛灉闇�涓嬪彂wcs绔嬪簱锛屽垯闇�瀵绘壘鍙敤鎺ラ┏浣�-                    if (workFlow.SENDWCS == "Y") {
-
-                        //娴嬭瘯榛樿鍙栦竴涓帴椹充綅
-                        //var connectionList = LocationHelper.GetAllLocList1(workFlow.CONNECTION);
-                        //foreach (var item in connectionList)
-                        //{
-                        //    if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM < 2)
-                        //    {
-                        //        connection = item.S_CODE;
-                        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
-                        //    }
-                        //}
-
-                        //if (connection=="")
-                        //{
-                        //    LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                        //    throw new Exception($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
-                        //}
-
-                        //姝e紡浠g爜锛岃皟鐢ㄦ帴鍙e鎵惧彲鐢ㄦ帴椹充綅
-                        var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
-                        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.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
-                                {
-                                    connection = con.S_CODE;
-                                    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
-                                }
-                            }
-                        }
-                        else
-                        {
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                            throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
-                        }
-
-                        if (connection == "")
-                        {
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                            throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
-                        }
-                    }
 
                     //鏌ユ壘缁堢偣
-                    var endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                    List<Location> endList;
 
                     Location end = null;
 
-
-                    if (workFlow.FLOWCODE == "1")
+                    if (!string.IsNullOrEmpty(workFlow.ZONECODE))
                     {
-                        //婊℃墭鍏�-                        end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        endList = LocationHelper.GetZoneLoc(workFlow.ZONECODE);
                     }
-                    else if (workFlow.FLOWCODE == "3")
+                    else
                     {
-                        //绌烘墭鍏�浼樺厛鍏ョ紦瀛樺尯锛屾病鏈夊叆绔嬪簱鍖�-                        //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)
+                        endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                    }
+
+                    //绔嬪簱鍧囪 鍚庤揣浣嶉泦鍚�+                    List<Location> balanceLocList = new List<Location>();
+
+
+                    //鎺ラ┏浣�+                    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")
                         //{
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟娌℃壘鍒扮┖鎵樼紦瀛樺尯缁堢偣,瀵绘壘绔嬪簱鍖虹┖璐т綅", "Mes浠诲姟涓嬪彂");
-                            end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        //    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
                         //{
-                        //    connection = "";
+                        //    LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�, "Mes浠诲姟涓嬪彂");
+                        //    throw new Exception($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶆帴鍙eけ璐�);
                         //}
-                    }
-                    else if (workFlow.FLOWCODE == "2")
-                    {
 
-                        //85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋�-                        if (TOOLSTYPE == "85" || TOOLSTYPE == "95")
+
+                        if (workFlow.FLOWCODE == "1" || workFlow.FLOWCODE == "2" || workFlow.FLOWCODE == "5" || workFlow.FLOWCODE == "8" || workFlow.FLOWCODE == "11")
+                        {
+                            //婊℃墭鍏�+
+                            if (TOOLSTYPE == "25" || TOOLSTYPE == "35")
+                            {
+                                LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟宸ヨ鏄簩鍚堜竴搴�闇�鐗╂枡鍧囪 ", "Mes浠诲姟涓嬪彂");
+                                end = LocationHelper.FindBalanceEndcolByLocListItem(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no, model.PROD_NO);
+
+                            }
+                            else {
+                                end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY, workFlow.CONNECTION, model.task_no);
+                            }
+
+                        }
+                        else if (workFlow.FLOWCODE == "3" || workFlow.FLOWCODE == "10")
+                        {
+                            //绌烘墭鍏ョ珛搴撳尯
+                            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")
                         {
                             end = LocationHelper.FindEndcolByLoc(endList, workFlow.ENDAREA);
-                            LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟85绾ょ淮 95閽笣涓�浠诲姟鍏ヤ笁灞傝揣鏋剁粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
                         }
-                        else
+                        else if (workFlow.FLOWCODE == "2")
                         {
-                            end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                            //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 == "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浠诲姟涓嬪彂");
+                    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)
@@ -1375,7 +1967,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
@@ -1386,7 +1978,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
@@ -1454,17 +2046,34 @@
                         //浼樺厛绾�                         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 (connection != "")
+                        {
+                            LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
+                            LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
+                            LocationHelper.LockLoc(operation.CONNECTION, "鍏朵粬閿�, 3);
+                        }
+
+
                         LogHelper.Info($"ZCSendTask鍏ュ簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂");
                         result.errMsg = "鍏ュ簱浣滀笟鍒涘缓鎴愬姛";
                         result.errCode = 0;
                         result.success = true;
+                        mesRes.errCode = result.errCode;
+                        mesRes.errMsg = result.errMsg;
+                        //淇濆瓨mes璁板綍
+                        CreatMesRes(mesRes);
                         return result;
                     }
                     else {
@@ -1481,46 +2090,132 @@
                     //鎺ラ┏浣�                     var connection = "";
 
+                    //鎺ラ┏浣嶅簱鍖�+                    var connectionArea = "";
+                    
+
                     //鏌ユ壘缁欏畾缁堢偣
                     var end = LocationHelper.GetLoc(model.Location_To);
                     LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Mes浠诲姟涓嬪彂");
 
 
-                    if (end == null || end.S_LOCK_STATE != "鏃�)
+                    if (end == null)
                     {
-                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To},娌℃壘鍒版垨鏈夐攣", "Mes浠诲姟涓嬪彂");
-                        throw new Exception($"缁堢偣:{model.Location_To},娌℃壘鍒版垨鏈夐攣");
+                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{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($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岀粓鐐�{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}", "Mes浠诲姟涓嬪彂");
+                            throw new Exception($"缁堢偣:{model.Location_To}鏈変换鍔℃墽琛屼腑锛屼换鍔″彿:{endTask.S_CODE}");
+                        }
+                    }
+                   
+
+
                     //鏌ユ壘璧风偣
-                    var strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);
+                    List<Location> strrtList;
+
                     Location start = null;
-                    if (workFlow.FLOWCODE == "9")
+
+
+                    if (!string.IsNullOrEmpty(workFlow.ZONECODE))
+                    {
+                        strrtList = LocationHelper.GetZoneLoc(workFlow.ZONECODE);
+                    }
+                    else
+                    {
+                        strrtList = LocationHelper.GetAllLocList2(workFlow.STARTAREA);
+                    }
+
+
+
+                    if (workFlow.FLOWCODE == "9" || workFlow.FLOWCODE == "4" || workFlow.FLOWCODE == "6")
                     {
                         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);
+                            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($"ZCSendTask婊℃墭鍑哄簱浠诲姟娌℃壘鍒拌捣鐐癸紝鏍¢獙鏄惁鏈夊簱瀛樹絾鏄澶囨姤璀itemFlag}", "Mes浠诲姟涓嬪彂");
+                                if (itemFlag)
+                                {
+                                    result.errMsg = "婊℃墭鍑哄簱浣滀笟鏈夊簱瀛樹絾璁惧鎶ヨ";
+                                    result.errCode = 2001;
+                                    result.success = true;
+                                    mesRes.errCode = result.errCode;
+                                    mesRes.errMsg = result.errMsg;
+                                    //淇濆瓨mes璁板綍
+                                    CreatMesRes(mesRes);
+                                    return result;
+                                }
+                            }
                         }
 
 
                     }
-                    else if (workFlow.FLOWCODE == "7") {
-                        //瀵绘壘绔嬪簱鍖虹┖鎵�-                        start = LocationHelper.FindStartcolByLoclistAndcntr(strrtList, workFlow.STARTAREA);
-                    }
-
-
-                    LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
-
-                    if (workFlow.FLOWCODE == "7" && start == null)
+                    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;
+                        //    }
+                        //}
+
+                        //绌烘墭鍑哄厛缂撳瓨鍒扮┖鎵樿〃
+
+                        //鍏堟煡璇㈡湁娌℃湁鍚岀粓鐐圭紦瀛樼殑璁板綍
+
+                        if (endLocFlag)
+                        {
+                            var ktTask = TaskHelper.GetMesKtTask(end.S_CODE);
+                            if (ktTask != null)
+                            {
+                                LogHelper.Info($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�缁堢偣{end.S_CODE}宸叉湁缂撳瓨", "Mes浠诲姟涓嬪彂");
+                                throw new Exception($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�缁堢偣{end.S_CODE}宸叉湁缂撳瓨");
+                            }
+                        }
+
+
 
                         MesKtTask req = new MesKtTask()
                         {
@@ -1529,7 +2224,8 @@
                             Priority = model.Priority,
                             CreateDate = DateTime.Now,
                             BUSI_TYPE = model.BUSI_TYPE,
-                            TOOLS_TPYE = model.TOOLS_TPYE,
+                            TOOLS_TPYE = TOOLSTYPE,
+                            task_no = model.task_no,
                             Status = "N"
                         };
 
@@ -1539,6 +2235,10 @@
                             result.errMsg = "绌烘墭鍑哄簱缂撳瓨鎴愬姛";
                             result.errCode = 0;
                             result.success = true;
+                            mesRes.errCode = result.errCode;
+                            mesRes.errMsg = result.errMsg;
+                            //淇濆瓨mes璁板綍
+                            CreatMesRes(mesRes);
                             return result;
                         }
                         else
@@ -1546,17 +2246,23 @@
                             LogHelper.Info($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�, "Mes浠诲姟涓嬪彂");
                             throw new Exception($"ZCSendTask绌烘墭鍑虹紦瀛樺け璐�);
                         }
-                        
-                     
-
                     }
-                    else {
+                    else if (workFlow.FLOWCODE == "5")
+                    {
+                        //瀵绘壘璐ф灦鍖虹┖鎵�+                        start = LocationHelper.FindStartcolByHjArea(strrtList, workFlow.STARTAREA);
+                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟閽笣绌烘墭涓�浠诲姟璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
+                    }
+
+
+                        LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂璧风偣淇℃伅" + JsonConvert.SerializeObject(start), "Mes浠诲姟涓嬪彂");
+
                         if (start == null)
                         {
                             LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟涓嬪彂澶辫触锛岃捣鐐瑰簱鍖簕workFlow.STARTAREA},娌℃壘鍒拌捣鐐�, "Mes浠诲姟涓嬪彂");
                             throw new Exception($"璧风偣搴撳尯{workFlow.STARTAREA},娌℃壘鍒拌捣鐐�);
                         }
-                    }
+                    
 
                     
 
@@ -1565,49 +2271,46 @@
 
                     if (workFlow.SENDWCS == "Y")
                     {
-                        //娴嬭瘯榛樿鍙栦竴涓帴椹充綅
-                        //var connectionList = LocationHelper.GetAllLocList1(workFlow.CONNECTION);
-                        //foreach (var item in connectionList)
-                        //{
-                        //    if (item.S_LOCK_STATE == "鏃� && item.N_CURRENT_NUM < 2)
-                        //    {
-                        //        connection = item.S_CODE;
-                        //        LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");
-                        //    }
-                        //}
-
-                        //if (connection == "")
-                        //{
-                        //    LogHelper.Info($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�, "Mes浠诲姟涓嬪彂");
-                        //    throw new Exception($"ZCSendTask浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
-                        //}
-
 
                         //姝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.CONNEC_ROADWAY==start.N_ROADWAY)
                             {
-                                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鍑哄簱浠诲姟涓嬪彂瀵绘壘鎺ラ┏浣嶅け璐�);
                         }
                     }
 
@@ -1641,16 +2344,34 @@
                         //浼樺厛绾�                         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 (connection!="")
+                        {
+                            LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
+                            LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
+                            LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1);
+                        }
+
+
                         LogHelper.Info($"ZCSendTask鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂");
                         result.errMsg = "鍑哄簱浣滀笟鍒涘缓鎴愬姛";
                         result.errCode = 0;
                         result.success = true;
+                        mesRes.errCode = result.errCode;
+                        mesRes.errMsg = result.errMsg;
+                        //淇濆瓨mes璁板綍
+                        CreatMesRes(mesRes);
                         return result;
                     }
                     else {
@@ -1664,39 +2385,6 @@
                     throw new Exception("Task_type涓嶇瓑浜�鎴�");
                 }
 
-
-                //鍙傛暟鏍¢獙瀹屾垚淇濆瓨鍒癿es浠诲姟璁板綍
-                //MesTask req = new MesTask()
-                //{
-                //    task_no = model.task_no,
-                //    Task_type = model.Task_type,
-                //    TurnCardNum = model.TurnCardNum,
-                //    PROD_NO = model.PROD_NO,
-                //    PROD_TECH = model.PROD_TECH,
-                //    PROD_SPEC = model.PROD_SPEC,
-                //    PROD_BOM = model.PROD_BOM,
-                //    PROD_Feature = model.PROD_Feature,
-                //    TOOLS_NO = model.TOOLS_NO,
-                //    ST_AMOUNT = model.ST_AMOUNT,
-                //    CURRENT_AMOUNT = model.CURRENT_AMOUNT,
-                //    Location_From = model.Location_From,
-                //    Location_To = model.Location_To,
-                //    PRODUCE_TIME = model.PRODUCE_TIME,
-                //    SHELF_LIFE_TIME = model.SHELF_LIFE_TIME,
-                //    EXPIRED_TIME = model.EXPIRED_TIME,
-                //    SHELF_REP = model.SHELF_REP,
-                //    EXPIRED_REP = model.EXPIRED_REP,
-                //    CHECK_CODE = model.CHECK_CODE,
-                //    CHECK_INFO = model.CHECK_INFO,
-                //    Priority = model.Priority,
-                //    Data_status = model.Data_status,
-                //    CreateDate = DateTime.Now,
-                //    standardWeight = model.standardWeight,
-                //    BUSI_TYPE = model.BUSI_TYPE,
-                //    TOOLS_TPYE = model.TOOLS_TPYE,
-                //};
-
-
             }
             catch (Exception ex)
             {
@@ -1704,11 +2392,12 @@
                 result.errMsg = "ZCSendTask浠诲姟涓嬪彂寮傚父"+ex.Message;
                 result.errCode = 1;
                 result.success = false;
+                mesRes.errCode = result.errCode;
+                mesRes.errMsg = result.errMsg;
+                //淇濆瓨mes璁板綍
+                CreatMesRes(mesRes);
                 return result;
             }
-
-            return result;
-        
         }
 
 
@@ -1733,7 +2422,12 @@
 
 
 
+        internal static bool CreatMesRes(MesTask model)
+        {
+            var newDb = new SqlHelper<object>().GetInstance();
+            return newDb.Insertable(model).ExecuteCommand()>0;
 
+        }
 
 
 
@@ -1980,13 +2674,148 @@
         }
 
 
-      
 
-      
+
+        internal static void inPri(WMSTask mst)
+        {
+            LogHelper.Info($"浠诲姟{mst.S_CODE}杩涘叆inpri", "鍏ュ簱浼樺厛绾�);
+            var inprilist = TaskHelper.GetInPri();
+            var db = new SqlHelper<object>().GetInstance();
+          
+            foreach (var item in inprilist)
+            {
+                
+                LogHelper.Info("鍏ュ簱浼樺厛绾ц褰曚俊鎭�+JsonConvert.SerializeObject(item), "鍏ュ簱浼樺厛绾�);
+
+                if (item.Type=="0" && mst.S_TYPE.Contains("绌烘墭鍑�))
+                {
+                    if (mst.S_END_LOC.Contains(item.OutEndLoc))
+                    {
+                        
+                        var task = db.Queryable<WMSTask>().Where(a => a.S_B_STATE.Trim() == "宸叉帹閫� && a.S_SCHEDULE_TYPE.Contains("agv") && !a.S_TYPE.Contains("绌烘墭") && (a.S_TYPE.Contains("鍏ュ簱")|| a.S_TYPE.Contains("鍥炲簱")) && a.S_START_LOC.Contains(item.InStartLoc)).First();
+
+                        LogHelper.Info($"鏌ユ壘璧风偣{item.InStartLoc}婊℃墭鍏ュ簱浠诲姟淇℃伅锛� + JsonConvert.SerializeObject(task), "鍏ュ簱浼樺厛绾�);
+                        if (task != null)
+                        {
+                            NDCApi.ChangeOrderPri(task.S_CODE, item.Pri);
+                        }
+                       
+                    }
+                }
+
+
+                if (item.Type == "1"  && !mst.S_TYPE.Contains("绌烘墭") && mst.S_TYPE.Contains("鍑哄簱"))
+                {
+                    if (mst.S_END_LOC.Contains(item.OutEndLoc))
+                    {
+                        var task = db.Queryable<WMSTask>().Where(a => a.S_B_STATE.Trim() == "宸叉帹閫� && a.S_SCHEDULE_TYPE.Contains("agv") && a.S_TYPE.Contains("绌烘墭鍏ュ簱") && a.S_START_LOC.Contains(item.InStartLoc)).First();
+                        LogHelper.Info($"鏌ユ壘璧风偣{item.InStartLoc}绌烘墭鍏ュ簱浠诲姟淇℃伅锛� + JsonConvert.SerializeObject(task), "鍏ュ簱浼樺厛绾�);
+                        if (task != null)
+                        {
+                            NDCApi.ChangeOrderPri(task.S_CODE, item.Pri);
+                        }
+                    }
+                }
+
+            }
+            LogHelper.Info($"浠诲姟{mst.S_CODE}锛岀粨鏉焛npri", "鍏ュ簱浼樺厛绾�);
+        }
 
 
 
-        
+        ////濡傛灉闇�涓嬪彂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