From 945a65e917ffd620fc51354245f0e5b31f7a03ab Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期二, 13 五月 2025 18:09:56 +0800
Subject: [PATCH] 中策金坛

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

diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index a9a515f..72934f9 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -116,8 +116,22 @@
             }
             else if (state == 1105)
             {
-                //鍒ゆ柇鎺ラ┏浣嶅拰宸烽亾鏄惁鍙敤 涓嶅彲鐢ㄩ渶瑕佹敼閬�-                changeBit(mst);
+                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
+
+                if (workFlow == null)
+                {
+                    LogHelper.Info($"鍒ゆ柇鎺ラ┏浣嶄互鍙婂贩閬撴槸鍚﹀彲鐢紝BUSI_TYpe:{mst.N_TYPE},娌℃壘鍒板搴斾綔涓氭祦绋�, "鏀归亾瀹夊叏浜や簰");
+                    return;
+                }
+
+                var wcsTask = TaskHelper.GetTask(mst.S_OP_CODE + "_2");
+                if (wcsTask == null)
+                {
+                    LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤澶辫触锛屾病鎵惧埌瀵瑰簲{mst.S_OP_CODE + "_2"}浠诲姟", "鏀归亾瀹夊叏浜や簰");
+                    return;
+                }
+                //鍒ゆ柇绌烘墭缂撳瓨銆佹帴椹充綅鍜屽贩閬撴槸鍚﹀彲鐢�涓嶅彲鐢ㄩ渶瑕佹敼閬�+                changeBit(mst,wcsTask,workFlow);
             }
             else if (state == 1023 || state == 1025)
             {
@@ -187,38 +201,22 @@
 
         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 {
 
@@ -231,32 +229,59 @@
                         //{
                         //    LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鏀归亾缁堢偣澶辫触锛岀粓鐐�{kt.Location_To},娌℃壘鍒版垨鏈夐攣", "鏀归亾瀹夊叏浜や簰");
                         //}
-                        
+                        TaskHelper.Fail(wcsTask);
+                        TaskProcess.OperateStatus(wcsTask, 7);
                         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();
+                        task.S_END_AREA = end.S_AREA_CODE;
+                        db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC,it.S_END_AREA}).ExecuteCommand();
                         kt.Status = "Y";
                         db.Updateable(kt).UpdateColumns(it => new { it.Status }).ExecuteCommand();
                         db.CommitTran();
-
-                        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");
-
+                        return;
                     }
-
                 }
 
                 if (workFlow.FLOWNAME.Contains("鍏ュ簱"))
                 {
+                    var loc1 = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
+                    //鏌ユ壘鍙敤宸烽亾
+                    var rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == wcsTask.S_END_AREA && x.status == "0" && x.roadWay == loc1.N_ROADWAY.ToString()).First();
+                    if (rowdwa == null)
+                    {
+                        LogHelper.Info($"鍒ゆ柇宸烽亾鍙敤,褰撳墠搴撳尯{wcsTask.S_END_AREA}褰撳墠宸烽亾{loc1.N_ROADWAY}鍙敤,涓嶉渶瑕佹敼閬�, "鏀归亾瀹夊叏浜や簰");
+                    }
+                    else
+                    {
+                        LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝闇�鏀归亾", "鏀归亾瀹夊叏浜や簰");
+                        var endLoc = LocationHelper.GetLocOne(wcsTask.S_END_LOC);
+
+                        var endList = LocationHelper.GetAllLocList1(workFlow.ENDAREA);
+                        var end = LocationHelper.FindEndcolByLocList(endList, workFlow.ENDAREA, workFlow.ROADWAY);
+                        LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝闇�鏀归亾锛屾柊缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "鏀归亾瀹夊叏浜や簰");
+                        if (end == null)
+                        {
+                            LogHelper.Info($"褰撳墠宸烽亾涓嶅彲鐢紝缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�, "鏀归亾瀹夊叏浜や簰");
+                            throw new Exception($"缁堢偣搴撳尯{workFlow.ENDAREA},娌℃壘鍒扮粓鐐�);
+                        }
+                        LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+                        db.BeginTran();
+                        endLoc.N_LOCK_STATE = 0;
+                        endLoc.S_LOCK_STATE = "鏃�;
+                        db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
+                        wcsTask.S_END_LOC = end.S_CODE;
+                        db.Updateable(wcsTask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
+                        db.CommitTran();
+                    }
+
+
+
                     var connectionList = LocationHelper.GetConnectionList(workFlow.CONNECTION);
                     var usableConnectionList = WcsTask.WcsPositionAvailable(task.S_CODE, connectionList);
                     if (usableConnectionList != null && usableConnectionList.code == "0")
@@ -264,8 +289,9 @@
                         foreach (var item in usableConnectionList.available)
                         {
                             var con = LocationHelper.GetLoc(item);
-                            if (con.S_CODE.Contains(task.S_END_LOC))
+                            if (con.S_CODE.Contains(task.S_END_LOC) && con.C_ENABLE=="Y")
                             {
+
                                 flag = false;
                                 LogHelper.Info($"褰撳墠浠诲姟{task.S_CODE}鎺ラ┏浣峽con.S_CODE}鍙敤锛屼笉闇�鏀归亾锛岀洿鎺ヤ慨鏀瑰弬鏁�涓�", "鏀归亾瀹夊叏浜や簰");
                                 NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
@@ -286,7 +312,7 @@
                         foreach (var item in usableConnectionList.available)
                         {
                             var con = LocationHelper.GetLoc(item);
-                            if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
+                            if (con.N_CURRENT_NUM < 2)
                             {
                                 connection = con.S_CODE;
                                 LogHelper.Info($"鏀归亾瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "鏀归亾瀹夊叏浜や簰");
@@ -300,8 +326,7 @@
 
                         var loc = LocationHelper.GetLocOne(connection);
 
-                        if (workFlow.FLOWNAME.Contains("鍏ュ簱"))
-                        {
+                       
                             LocationHelper.LockLoc(loc.S_CODE, "鍏ュ簱閿�, 1);
                             var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
                             endLoc.N_LOCK_STATE = 0;
@@ -310,11 +335,14 @@
                             db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
                             //鏀逛竴娈典换鍔$粓鐐�                             task.S_END_LOC = loc.S_CODE;
-                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();
+                            task.S_END_AREA = loc.S_AREA_CODE;
+                            db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand();
+                            
 
                             //鏀逛簩娈典换鍔¤捣鐐�                             wcsTask.S_START_LOC = loc.S_CODE;
-                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC }).ExecuteCommand();
+                            wcsTask.S_START_AREA = loc.S_AREA_CODE;
+                            db.Updateable(wcsTask).UpdateColumns(it => new { it.S_START_LOC ,it.S_START_AREA}).ExecuteCommand();
                             db.CommitTran();
                             
                             var site = LocationHelper.GetAgvSiteZc(loc.S_CODE);
@@ -322,7 +350,7 @@
                             NDCApi.ChangeOrderParam(task.S_CODE, 2, site);
                             NDCApi.ChangeOrderParam(task.S_CODE, 6, "1");
                            
-                        }
+                        
                         //} else if (workFlow.FLOWNAME.Contains("鍑哄簱")) {
                         //    var endLoc = LocationHelper.GetLocOne(task.S_START_LOC);
                         //    endLoc.N_LOCK_STATE = 3;
@@ -1280,7 +1308,7 @@
                             foreach (var item in usableConnectionList.available)
                             {
                                 var con = LocationHelper.GetLoc(item);
-                                if (con.S_LOCK_STATE == "鏃� && con.N_CURRENT_NUM < 2)
+                                if (con.N_CURRENT_NUM < 2 && con.C_ENABLE == "Y")
                                 {
                                     connection = con.S_CODE;
                                     LogHelper.Info($"ZCSendTask鍏ュ簱浠诲姟涓嬪彂瀵绘壘鍒板彲鐢ㄦ帴椹充綅{connection}", "Mes浠诲姟涓嬪彂");

--
Gitblit v1.9.1