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 | 166 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 122 insertions(+), 44 deletions(-) diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs index 1c79251..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; @@ -253,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; @@ -264,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; } @@ -684,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浠诲姟鎵ц閫氱煡"); @@ -693,13 +699,17 @@ 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("淇敼浠诲姟琛ㄥけ璐�); @@ -707,7 +717,6 @@ newDb.CommitTran(); } } - newDb.BeginTran(); var R = newDb.Insertable(RfidChek).ExecuteCommand(); if (R == 0) @@ -715,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; @@ -741,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; } @@ -800,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; } @@ -925,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; } @@ -982,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; } @@ -1158,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; } @@ -1230,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; } @@ -1260,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