From f9ee14fbfe22a0a56350580838bb6e4b57f829dc Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期二, 29 七月 2025 17:28:13 +0800
Subject: [PATCH] 等待交互修改

---
 dispatch/WcsTask.cs |  169 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 137 insertions(+), 32 deletions(-)

diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs
index dd2fd43..566ac59 100644
--- a/dispatch/WcsTask.cs
+++ b/dispatch/WcsTask.cs
@@ -12,6 +12,7 @@
 using System.Linq;
 using System.Reflection;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Web.Services.Description;
 using Top.Api;
@@ -53,18 +54,14 @@
                         isFu = "1";
                     }
                 }
-                var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE);
-
-
-
-                if (workFlow != null)
-                {
-                    if (workFlow.INOROUT.Contains("鍏ュ簱"))
+               
+                
+                    if (mst.S_TYPE.Contains("鍏ュ簱")|| mst.S_TYPE.Contains("鍥炲簱"))
                     {
                         Type = "1";
                     }
 
-                    if (workFlow.INOROUT.Contains("鍑哄簱"))
+                    if (mst.S_TYPE.Contains("鍑哄簱"))
                     {
                         Type = "2";
                         var count = TaskHelper.GetConnectionTask(mst.S_END_LOC);
@@ -75,7 +72,7 @@
 
 
                     }
-                }
+                
 
                 if (mst.S_CNTR_CODE.Contains("KJZ"))
                 {
@@ -292,8 +289,6 @@
         {
                 //浣滀笟娴佺▼
                 WorkFlow workFlow =null;
-
-                
 
                  var item = new MesReturnItem();
 
@@ -589,13 +584,9 @@
                     default:
                         break;
                 }
-
-
                 return false;
         }
 
-
-       
 
 
             ///// <summary>
@@ -645,10 +636,8 @@
                      //浠诲姟瀹屾垚
                     case "2":
                         LogHelper.Info($"浠诲姟{taskNo}瀹屾垚", "Wcs浠诲姟鎵ц閫氱煡");
-                        LocationHelper.UnLockLoc(transportTask.S_START_LOC);
-                        TaskProcess.OperateStatus(transportTask, 4);
-                        LocationHelper.UnLockLoc(transportTask.S_END_LOC);
                         TaskProcess.OperateStatus(transportTask, 6);
+                        LocationHelper.UnLockLoc(transportTask.S_END_LOC);
                         TaskHelper.End(transportTask);
                         LocationHelper.CreateUpAndDown(transportTask);
                         break;
@@ -670,10 +659,20 @@
                             RfidChek.S_OLDTRAY_CODE = transportTask.S_CNTR_CODE;
                             RfidChek.S_JBWBIT = transportTask.S_START_LOC;
 
+                            var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
+                            if (agvTask==null)
+                            {
+                                LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
+                                throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟");
+                            }
+
                             if (model.code=="0")
                             {
                                 LogHelper.Info($"RFID鏍¢獙鐮佹垚鍔�, "Wcs浠诲姟鎵ц閫氱煡");
                                 RfidChek.S_RESULT = "RFID鏍¢獙鎴愬姛";
+                                LogHelper.Info($"浠诲姟鍙�{agvTask.S_CODE}锛岀瓑寰呬氦绠℃垚鍔燂紝淇敼鍙傛暟6涓�,4涓�", "瀹夊叏浜や簰");
+                                NDCApi.ChangeOrderParam(agvTask.S_CODE, 4, "0");
+                                NDCApi.ChangeOrderParam(agvTask.S_CODE, 6, "1");
                             }
                             if (model.code == "1")
                             {
@@ -682,18 +681,9 @@
                                 RfidChek.S_RESULT = "RFID鏍¢獙澶辫触";
                                 if (WcsCancellTask(transportTask))
                                 {
-                                   
                                     TaskHelper.Fail(transportTask);
                                     TaskProcess.OperateStatus(transportTask, 7);
                                     
-                                    var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
-
-                                    if (agvTask == null)
-                                    {
-                                        LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
-                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟");
-                                    }
-
                                     WmsTaskAction ac7 = TaskHelper.GetActionRecord(agvTask.S_CODE, "7");
                                     if (ac7!=null)
                                     {
@@ -738,6 +728,16 @@
                                     }
                                     newDb.CommitTran();
 
+                                    var startSite = LocationHelper.GetAgvSiteZc(agvTask.S_END_LOC);
+                                    var endSite = LocationHelper.GetAgvSiteZc(end.S_CODE);
+                                    LogHelper.Info($"浠诲姟{agvTask.S_CODE}RFID鏍¢獙澶辫触锛屾敼鍙傛暟1涓簕startSite},鏀瑰弬鏁�涓簕endSite}锛屽弬鏁�涓�锛�涓�", "瀹夊叏浜や簰");
+                                    NDCApi.ChangeOrderParam(agvTask.S_CODE, 1, startSite);
+                                    NDCApi.ChangeOrderParam(agvTask.S_CODE, 2, endSite);
+                                    NDCApi.ChangeOrderParam(agvTask.S_CODE, 4, "0");
+                                    Thread.Sleep(1000);
+                                    NDCApi.ChangeOrderParam(agvTask.S_CODE, 6, "2");
+
+
                                     var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
                                     TaskHelper.opMesTask(agvTask1, 3);
                                     ContainerHelper.delCntr(transportTask.S_CNTR_CODE);
@@ -749,8 +749,108 @@
                                 }
                             }
 
-                            if (model.code == "2") { 
-                                
+                            if (model.code == "2") {
+
+                                TaskHelper.Fail(transportTask);
+                                TaskProcess.OperateStatus(transportTask, 7);
+
+                                if (!WcsCancellTask(transportTask)) {
+                                    LogHelper.Info($"澶栧舰妫�祴澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"澶栧舰妫�祴澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触");
+                                }
+
+                                var work = TaskHelper.GetWmsWork(transportTask.S_OP_CODE);
+                                if (work==null)
+                                {
+                                    LogHelper.Info($"鏈煡璇㈠埌{transportTask.S_OP_CODE}瀵瑰簲鐨勪綔涓�, "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勪綔涓�);
+                                }
+
+                                var workFlow = TaskHelper.selectWorkFlowByType(work.N_TYPE.ToString(), work.TOOLSTYPE);
+
+                                if (workFlow == null)
+                                {
+                                    LogHelper.Info($"澶栧舰妫�祴澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"澶栧舰妫�祴澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�);
+                                }
+                                //鏌ユ壘缁堢偣
+                                var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
+
+                                //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
+                                var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA);
+                                LogHelper.Info($"澶栧舰妫�祴澶辫触澶辫触涓嬪彂寮傚父缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Wcs浠诲姟鎵ц閫氱煡");
+
+
+                                if (end == null)
+                                {
+                                    LogHelper.Info($"澶栧舰妫�祴澶辫触澶辫触涓嬪彂浠诲姟澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"澶栧舰妫�祴澶辫触澶辫触缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�);
+                                }
+
+                                LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+
+
+                                var connectionLoc = LocationHelper.GetLoc(work.CONNECTION.Replace("R", "C"));
+
+                                if (connectionLoc==null)
+                                {
+                                    LogHelper.Info($"鏈煡璇㈠埌{work.CONNECTION.Replace("R", "C")}瀵瑰簲鐨勬帴椹充綅", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勫嚭搴撴帴椹充綅");
+                                }
+
+                                var connection = connectionLoc.S_CODE;
+
+                                var operation = new WmsWork
+                                {
+                                    // 浣滀笟鍙�+                                    S_CODE = TaskHelper.GenerateTaskNo(),
+                                    // 浣滀笟绫诲瀷
+                                    N_TYPE = 99,
+                                    // 浣滀笟绫诲瀷
+                                    S_TYPE = work.S_TYPE.Replace("鍏�,"鍑�),
+                                    // 璧风偣璐т綅
+                                    S_START_LOC = work.CONNECTION,
+                                    // 璧风偣搴撳尯缂栫爜
+                                    S_START_AREA = work.CONNECTION_AREA,
+                                    //璧风偣搴撳尯鍚嶇О
+                                    S_START_AREA_NAME = work.CONNECTION_AREA,
+                                    //鎺ラ┏浣�+                                    CONNECTION = connection,
+                                    //鎺ラ┏搴撳尯鍚嶇О
+                                    CONNECTION_AREA = connectionLoc.S_AREA_Name,
+                                    // 缁堢偣璐т綅
+                                    S_END_LOC = end.S_CODE,
+                                    // 缁堢偣搴撳尯缂栫爜
+                                    S_END_AREA = end.S_AREA_CODE,
+                                    //缁堢偣搴撳尯鍚嶇О
+                                    S_END_AREA_NAME = end.S_AREA_Name,
+                                    // 瀹瑰櫒缂栫爜
+                                    S_CNTR_CODE = work.S_CNTR_CODE,
+                                    // 浣滀笟瀹氫箟鍚嶇О
+                                    S_OP_DEF_NAME = workFlow.FLOWNAME,
+                                    //浼樺厛绾�+                                    N_PRIORITY = work.N_PRIORITY,
+                                    //宸ヨ绫诲瀷
+                                    TOOLSTYPE = work.TOOLSTYPE
+                                };
+
+                                //鍒涘缓浣滀笟
+                                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($"寮傚父鍑哄簱浣滀笟鍒涘缓鎴愬姛{operation.S_CODE}", "Mes浠诲姟涓嬪彂");
+                                }
+                                else
+                                {
+                                    LogHelper.Info($"寮傚父鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触", "Mes浠诲姟涓嬪彂");
+                                    throw new Exception($"寮傚父鍑哄簱浠诲姟涓嬪彂鍒涘缓浣滀笟澶辫触");
+                                }
                             }
 
 
@@ -766,7 +866,7 @@
                     //鍙栬揣瀹屾垚
                     case "5":
                         TaskHelper.UpdateStatus(transportTask, "鍙栬揣瀹屾垚");
-                        LocationHelper.UnBindingLoc(transportTask.S_START_LOC, transportTask.S_CNTR_CODE.Split(',').ToList());
+                        TaskProcess.OperateStatus(transportTask, 4);
                         break;
 
                     //7鍙栨秷
@@ -782,6 +882,8 @@
                             {
                                 TaskHelper.Fail(agvTask1);
                                 NDCApi.CancelOrder(agvTask1.S_CODE.Trim());
+                              
+                                LogHelper.Info($"Wcs浠诲姟鎵ц閫氱煡锛屼换鍔″彿{transportTask.S_CODE}鍙栨秷,瑙i攣", "瑙i攣");
                                 TaskProcess.CacheBitCancelUpdate(agvTask1);
                             }
                         }
@@ -1254,8 +1356,9 @@
                     {
                         LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋task.S_START_LOC}璁句负寮傚父", "鍙栬揣鏃犺揣");
                         TaskHelper.Fail(task);
+
                         TaskProcess.OperateStatus(task, 7);
-                        LocationHelper.updateLocLock(task.S_START_LOC, 3, "鍏朵粬閿�);
+                        LocationHelper.updateLocLock(task.S_START_LOC, 3, "鍏跺畠閿�);
                         var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv");
                         if (agvTask != null)
                         {
@@ -1264,6 +1367,8 @@
                                 NDCApi.CancelOrder(agvTask.S_CODE.Trim());
                             }
                             TaskHelper.Fail(agvTask);
+
+                            LogHelper.Info($"鍙栬揣鏃犺揣锛屼换鍔″彿{task.S_CODE}鍙栨秷,瑙i攣", "瑙i攣");
                             TaskProcess.CacheBitCancelUpdate(agvTask);
                         }
                     }
@@ -1329,7 +1434,7 @@
                         {
                             newDb.BeginTran();
                             endLoc.N_LOCK_STATE = 3;
-                            endLoc.S_LOCK_STATE = "鍏朵粬閿�;
+                            endLoc.S_LOCK_STATE = "鍏跺畠閿�;
                             newDb.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand();
                             task.S_END_LOC = end.S_CODE;
                             newDb.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand();

--
Gitblit v1.9.1