From 46dc31d4e66e45cde693b9c909691a710fabfcee Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期四, 10 七月 2025 17:31:14 +0800
Subject: [PATCH] mes接口修改

---
 dispatch/WcsTask.cs |  230 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 166 insertions(+), 64 deletions(-)

diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs
index 67e3707..0fdfb0d 100644
--- a/dispatch/WcsTask.cs
+++ b/dispatch/WcsTask.cs
@@ -5,6 +5,7 @@
 using HH.WCS.ZhongCeJinTan.util;
 using HH.WCS.ZhongCeJinTan.wms;
 using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
 using S7.Net.Types;
 using System;
 using System.Collections.Generic;
@@ -13,6 +14,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using System.Web.Services.Description;
+using Top.Api;
 using static HH.WCS.ZhongCeJinTan.api.ApiModel;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
 
@@ -62,6 +64,13 @@
                 if (workFlow.INOROUT.Contains("鍑哄簱"))
                 {
                     Type = "2";
+                    var count = TaskHelper.GetConnectionTask(mst.S_END_LOC);
+                    if (count>=2)
+                    {
+                        return false;
+                    }
+
+
                 }
             }
 
@@ -246,10 +255,12 @@
                 {
                     result.msg = "Wcs涓嬪彂浠诲姟鎴愬姛";
                     result.code = "0";
+                    result.requestPk = model.requestPk;
                 }
                 else {
                     result.msg = "Wcs涓嬪彂浠诲姟澶辫触";
                     result.code = "1";
+                    result.requestPk = model.requestPk;
                 }
                 return result;
 
@@ -257,8 +268,9 @@
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs涓嬪彂浠诲姟寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs涓嬪彂浠诲姟寮傚父" + ex.Message, "Wcs涓嬪彂浠诲姟");
                 return result;
             }
@@ -574,16 +586,18 @@
         }
 
 
-        ///// <summary>
-        /// Wcs浠诲姟鎵ц閫氱煡
-        /// </summary>
-        internal static WcsWarningReurn WcsOperateTask(WcsOperateTaskParme model) {
+       
+
+
+            ///// <summary>
+            /// Wcs浠诲姟鎵ц閫氱煡
+            /// </summary>
+            internal static WcsWarningReurn WcsOperateTask(WcsOperateTaskParme model) {
             var result = new WcsWarningReurn();
             var newDb = new SqlHelper<object>().GetInstance();
 
             try
             {
-            
                 var taskNo = "";
             
                 if (string.IsNullOrEmpty(model.requestPk))
@@ -595,7 +609,7 @@
                 {
                     taskNo = model.requestPk;
                 }
-                var transportTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == taskNo)?.First();
+                var transportTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == taskNo && e.S_SCHEDULE_TYPE.Contains("wcs"))?.First();
 
                 if (transportTask == null)
                 {
@@ -603,6 +617,13 @@
                     throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勪换鍔�);
                 }
 
+                if (transportTask.S_B_STATE == "瀹屾垚" || transportTask.S_B_STATE == "鍙栨秷")
+                {
+                    throw new Exception($"{transportTask}浠诲姟宸瞷transportTask.S_B_STATE}锛屼笉鍏佽鎿嶄綔");
+                }
+
+
+             
                 TaskHelper.WcsAddActionRecord(model.requestPk, model.noticeType, "WCS");
 
                 switch (model.noticeType)
@@ -662,19 +683,20 @@
                                     if (agvTask == null)
                                     {
                                         LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
-                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE }鐨刟gv浠诲姟");
+                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟");
                                     }
                                     var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE);
-                                  
-                                        if (workFlow == null)
-                                        {
-                                            LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡");
-                                            throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�);
-                                        }
+
+                                    if (workFlow == null)
+                                    {
+                                        LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡");
+                                        throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�);
+                                    }
                                     //鏌ユ壘缁堢偣
                                     var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA);
 
-                                    var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
+                                    //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY);
+                                    var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA);
                                     LogHelper.Info($"RFID鏍¢獙澶辫触涓嬪彂寮傚父缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Wcs浠诲姟鎵ц閫氱煡");
 
 
@@ -683,23 +705,28 @@
                                         LogHelper.Info($"RFID鏍¢獙澶辫触涓嬪彂浠诲姟澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs浠诲姟鎵ц閫氱煡");
                                         throw new Exception($"RFID鏍¢獙澶辫触缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�);
                                     }
+                                    LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
                                     agvTask.S_START_LOC = agvTask.S_END_LOC;
                                     agvTask.S_START_AREA = agvTask.S_END_AREA;
+                                    agvTask.S_START_AREA_NAME = agvTask.S_END_AREA_NAME;
                                     agvTask.S_END_LOC = end.S_CODE;
                                     agvTask.S_END_AREA = end.S_AREA_CODE;
+                                    agvTask.S_END_AREA_NAME = end.S_AREA_Name;
                                     agvTask.S_TYPE = workFlow.FLOWNAME;
+
                                     newDb.BeginTran();
-                                    var I = newDb.Updateable(agvTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA,it.S_END_LOC,it.S_END_AREA,it.S_TYPE,it.S_B_STATE }).ExecuteCommand();
+                                    var I = newDb.Updateable(agvTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA, it.S_END_LOC, it.S_END_AREA, it.S_TYPE, it.S_B_STATE, it.S_START_AREA_NAME, it.S_END_AREA_NAME }).ExecuteCommand();
                                     if (I == 0)
                                     {
                                         throw new Exception("淇敼浠诲姟琛ㄥけ璐�);
                                     }
                                     newDb.CommitTran();
-                                    //鏀瑰弬鏁伴�鐭ュ皬杞�-
+                                }
+                                else {
+                                    LogHelper.Info($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡");
+                                    throw new Exception($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触");
                                 }
                             }
-
                             newDb.BeginTran();
                             var R = newDb.Insertable(RfidChek).ExecuteCommand();
                             if (R == 0)
@@ -707,25 +734,35 @@
                                 throw new Exception("娣诲姞RFID鏍¢獙琛ㄥけ璐�);
                             }
                             newDb.CommitTran();
-
                         }
                         break;
-                    //9鍙栬揣鏃犺揣
-                    case "9":
-                        LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "Wcs浠诲姟鎵ц閫氱煡");
-                        if (WcsCancellTask(transportTask)) {
-                            LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋transportTask.S_START_LOC}璁句负寮傚父", "Wcs浠诲姟鎵ц閫氱煡");
-                            TaskHelper.Fail(transportTask);
-                            TaskProcess.OperateStatus(transportTask, 7);
-                            LocationHelper.updateLocLock(transportTask.S_START_LOC, 4, "寮傚父閿�);
-                            var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
-                            if (agvTask!=null)
+                    //鍙栬揣瀹屾垚
+                    case "5":
+                        TaskHelper.UpdateStatus(transportTask, "鍙栬揣瀹屾垚");
+                        LocationHelper.UnBindingLoc(transportTask.S_START_LOC, transportTask.S_CNTR_CODE.Split(',').ToList());
+                        break;
+
+                    //7鍙栨秷
+                    case "7":
+                        LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栨秷浠诲姟鎴愬姛", "Wcs浠诲姟鎵ц閫氱煡");
+                        TaskHelper.Fail(transportTask);
+                        TaskProcess.OperateStatus(transportTask, 7);
+
+                        if (transportTask.S_TYPE.Contains("鍑哄簱"))
+                        {
+                            var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv");
+                            if (agvTask1 != null)
                             {
-                                TaskHelper.Fail(agvTask);
-                                NDCApi.CancelOrder(agvTask.S_CODE.Trim());
-                                TaskProcess.CacheBitCancelUpdate(agvTask);
+                                TaskHelper.Fail(agvTask1);
+                                NDCApi.CancelOrder(agvTask1.S_CODE.Trim());
+                                TaskProcess.CacheBitCancelUpdate(agvTask1);
                             }
                         }
+                        else {
+                            ContainerHelper.delCntr(transportTask.S_CNTR_CODE);
+                            ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE);
+                        }
+
                         break;
                     default:
                         break;
@@ -733,14 +770,18 @@
 
                 result.msg = "閫氱煡鎴愬姛";
                 result.code = "0";
+                result.requestPk = model.requestPk;
 
             }
             catch (Exception ex)
             {
-                newDb.RollbackTran();
-                result.msg = ex.Message;
-                result.code = "1";
+               
+
                 LogHelper.Info("Wcs浠诲姟鎵ц閫氱煡寮傚父" + ex.Message, "Wcs浠诲姟鎵ц閫氱煡");
+                result.msg = "Wcs浠诲姟鎵ц閫氱煡寮傚父";
+                result.code = "1";
+                result.requestPk = model.requestPk;
+                newDb.RollbackTran();
                 return result;
             }
             return result;
@@ -792,14 +833,16 @@
                 newDb.CommitTran();
                 result.code = "0";
                 result.msg = "鎴愬姛";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs鎶ヨ涓婃姤杩斿洖"+ JsonConvert.SerializeObject(result), "鎶ヨ涓婃姤");
                 return result;
             }
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs鎶ヨ淇℃伅寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs鎶ヨ淇℃伅寮傚父" + ex.Message, "鎶ヨ涓婃姤");
                 return result;
             }
@@ -917,14 +960,16 @@
                
                 result.code = "0";
                 result.msg = "鎴愬姛";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs宸烽亾鍙敤涓婃姤杩斿洖" + JsonConvert.SerializeObject(result), "宸烽亾鍙敤涓婃姤");
                 return result;
             }
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs宸烽亾鍙敤涓婃姤寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs宸烽亾鍙敤涓婃姤寮傚父" + ex.Message, "宸烽亾鍙敤涓婃姤");
                 return result;
             }
@@ -974,7 +1019,21 @@
                     break;
                 case 7:
                     Type = "5";
-                    bit = mst.S_END_LOC;
+                    if (mst.S_TYPE.Contains("鍑哄簱"))
+                    {
+                        bit = mst.S_START_LOC;
+                    }
+                    else {
+                        bit = mst.S_END_LOC;
+                    }
+
+                    //閫�簱鍙栨秷鍙慳gv璧风偣
+                    if (LocationHelper.GetErroArea(mst.S_END_AREA))
+                    {
+                        bit = mst.S_START_LOC;
+                    }
+
+
                     Meshod = "AgvRequestCancel";
                     break;
             }
@@ -1150,41 +1209,73 @@
                             throw new Exception($"鏈煡璇㈠埌浠诲姟鍙穥model.taskNo}鐨勪换鍔�);
                         }
 
-                        if (task.S_B_STATE.Contains("瀹屾垚")|| task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触"))
+                    if (task.S_TYPE.Contains("鍑哄簱"))
+                    {
+                        //鍙栬揣鏃犺揣
+                        LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "鏀捐揣鏈夎揣");
+                        if (WcsCancellTask(task))
+                        {
+                            LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋task.S_START_LOC}璁句负寮傚父", "鏀捐揣鏈夎揣");
+                            TaskHelper.Fail(task);
+                            TaskProcess.OperateStatus(task, 7);
+                            LocationHelper.updateLocLock(task.S_START_LOC, 4, "寮傚父閿�);
+                            var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv");
+                            if (agvTask != null)
+                            {
+                                if (agvTask.S_B_STATE!="鏈墽琛�)
+                                {
+                                    NDCApi.CancelOrder(agvTask.S_CODE.Trim());
+                                }
+                                TaskHelper.Fail(agvTask);
+                                TaskProcess.CacheBitCancelUpdate(agvTask);
+                            }
+                        }
+
+                    }
+                    else {
+                        //鍗歌揣鏈夎揣
+                        if (task.S_B_STATE.Contains("瀹屾垚") || task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触"))
                         {
                             throw new Exception($"浠诲姟鍙穥model.taskNo}锛屼换鍔$姸鎬侊細{task.S_B_STATE}锛屼笉鑳芥敼閬�);
                         }
 
-                      var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
+                        var endLoc = LocationHelper.GetLocOne(task.S_END_LOC);
 
-                       var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE=="Y").OrderBy(b=>b.N_COL).First();
+                        var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_COL).First();
 
-                      LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣");
+                        LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣");
 
-                    if (end!=null)
-                    {
-                        newDb.BeginTran();
-                        endLoc.N_LOCK_STATE = 4;
-                        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();
-                        newDb.CommitTran();
-                        LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
-                        result.msg = end.S_CODE;
-                        result.code = "0";
+                        if (end != null)
+                        {
+                            newDb.BeginTran();
+                            endLoc.N_LOCK_STATE = 4;
+                            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();
+                            newDb.CommitTran();
+                            LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1);
+                            result.msg = end.S_CODE;
+                            result.code = "0";
+                            result.requestPk = model.requestPk;
+                        }
+                        else
+                        {
+                            throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅");
+                        }
                     }
-                    else
-                    {
-                        throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅");
-                     }
 
+                        result.msg = "Wcs鏀捐揣鏈夎揣/鍙栬揣鏃犺揣澶勭悊鎴愬姛";
+                        result.code = "0";
+                        result.requestPk = model.requestPk;
+                        return result;
                     }
                     catch (Exception ex)
                     {
                         newDb.RollbackTran();
-                        result.msg = ex.Message;
+                        result.msg = "Wcs鏀捐揣鏈夎揣寮傚父";
                         result.code = "1";
+                        result.requestPk = model.requestPk;
                         LogHelper.Info("Wcs鏀捐揣鏈夎揣寮傚父" + ex.Message, "鏀捐揣鏈夎揣");
                     return result;
                     }
@@ -1200,7 +1291,6 @@
             public static WcsWarningReurn agvResponse(agvResponseParme model) {
             var result = new WcsWarningReurn();
             var newDb = new SqlHelper<object>().GetInstance();
-
             try
             {
                 newDb.BeginTran();
@@ -1222,20 +1312,20 @@
                 newDb.CommitTran();
                 result.code = "0";
                 result.msg = "鎴愬姛";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs閫氱煡纭杩斿洖" + JsonConvert.SerializeObject(result), "閫氱煡纭");
                 return result;
             }
             catch (Exception ex)
             {
                 newDb.RollbackTran();
-                result.msg = ex.Message;
+                result.msg = "Wcs閫氱煡纭寮傚父";
                 result.code = "1";
+                result.requestPk = model.requestPk;
                 LogHelper.Info("Wcs閫氱煡纭寮傚父" + ex.Message, "閫氱煡纭");
                 return result;
             }
         }
-        
-
     }
     
     
@@ -1252,6 +1342,18 @@
             public string status { get; set; }
     }
 
+
+    /// <summary>
+    /// mes姹囨姤浠诲姟杩斿洖
+    /// </summary>
+    public class MesTaskReturn
+    {
+        public string code { get; set; }
+        public string msg { get; set; }
+        public bool success { get; set; }
+        public DataItem lastTime { get; set; }
+    }
+
     /// <summary>
     /// Mes鎺ュ彛杩斿洖
     /// </summary>

--
Gitblit v1.9.1