From 121a380d651097586384ee0ac70943ce1fc13583 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期三, 09 七月 2025 17:32:58 +0800
Subject: [PATCH] 金坛入库修改

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

diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs
index 67e3707..cb47896 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,10 +586,13 @@
         }
 
 
-        ///// <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();
 
@@ -595,7 +610,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)
                 {
@@ -674,7 +689,8 @@
                                     //鏌ユ壘缁堢偣
                                     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 +699,24 @@
                                         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();
-                                    //鏀瑰弬鏁伴�鐭ュ皬杞�-
                                 }
                             }
-
                             newDb.BeginTran();
                             var R = newDb.Insertable(RfidChek).ExecuteCommand();
                             if (R == 0)
@@ -707,25 +724,40 @@
                                 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":
+                        if (transportTask.S_B_STATE=="瀹屾垚")
+                        {
+                            throw new Exception($"{transportTask}浠诲姟宸插畬鎴愶紝涓嶅厑璁稿彇娑�);
+                        }
+
+                        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,13 +765,15 @@
 
                 result.msg = "閫氱煡鎴愬姛";
                 result.code = "0";
+                result.requestPk = model.requestPk;
 
             }
             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;
             }
@@ -792,14 +826,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 +953,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 +1012,14 @@
                     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;
+                    }
+                   
                     Meshod = "AgvRequestCancel";
                     break;
             }
@@ -1150,41 +1195,68 @@
                             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)
+                            {
+                                TaskHelper.Fail(agvTask);
+                                NDCApi.CancelOrder(agvTask.S_CODE.Trim());
+                                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}鏈夌鍚堢殑璐т綅");
-                     }
+
+                       
 
                     }
                     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;
                     }
@@ -1222,14 +1294,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;
             }
@@ -1252,6 +1326,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