From f398a14e78be869dbe96746bada7be3fc2b0b223 Mon Sep 17 00:00:00 2001 From: pengmn <pmn@HanInfo> Date: 星期一, 23 六月 2025 17:47:24 +0800 Subject: [PATCH] 杭氧 --- HH.WCS.Mobox3.HangYang/core/WCSCore.cs | 178 +++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 117 insertions(+), 61 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/core/WCSCore.cs b/HH.WCS.Mobox3.HangYang/core/WCSCore.cs index 8f4b425..a02ebea 100644 --- a/HH.WCS.Mobox3.HangYang/core/WCSCore.cs +++ b/HH.WCS.Mobox3.HangYang/core/WCSCore.cs @@ -13,57 +13,92 @@ { public static void OperateAgvTaskStatus(AgvTaskState model) { - var TN_Task = WCSHelper.GetTask(model.No); - if (TN_Task != null) + if (model == null) return; + + var task = WCSHelper.GetTask(model.No); + if (task == null) return; + + if (model.State > 7) return; + + // 鐘舵�涓庢搷浣滅殑鏄犲皠瀛楀吀 + var stateActions = new Dictionary<int, Action> { - if (model.State <= 7) - { + [1] = () => WCSHelper.Begin(task), + [2] = () => HandleTaskCompletion(task), + [3] = () => WCSHelper.UpdateStatus(task, "寮�鍙栬揣"), + [4] = () => HandlePickCompletion(task), + [5] = () => WCSHelper.UpdateStatus(task, "寮�鍗歌揣"), + [6] = () => HandleUnloadCompletion(task), + [7] = () => HandleTaskFailure(task) + }; - //鏈変换鍔″彿璇锋眰 - switch (model.State) - { - case 1: - WCSHelper.Begin(TN_Task); - break; - #region MyRegion - case 3: - WCSHelper.UpdateStatus(TN_Task, "寮�鍙栬揣"); - break; - case 4: - WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); - TaskProcess.OperateStatus(TN_Task, 4); - break; - case 5: - WCSHelper.UpdateStatus(TN_Task, "寮�鍗歌揣"); - break; - case 6: - WCSHelper.UpdateStatus(TN_Task, "鍗歌揣瀹屾垚"); - TaskProcess.OperateStatus(TN_Task, 6); - break; - #endregion - case 2: - WCSHelper.End(TN_Task); - //鏍规嵁浠诲姟绫诲瀷鏇存柊浣滀笟鐘舵�鍜岀粓鐐�- var taskList = Settings.CompleteTasks; - if (taskList.taskType.Contains(TN_Task.S_TYPE)) - { - //瀹屾垚浣滀笟 - WMSHelper.UpdateWmsTask(TN_Task, 3); - } - WMSHelper.AddChange(TN_Task); - WMSHelper.DeleteChange(TN_Task); - break; - case 7: - TaskProcess.OperateStatus(TN_Task, 7); - WCSHelper.Fail(TN_Task); - break; - } - WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData); - - } - + if (stateActions.TryGetValue(model.State, out var action)) + { + action.Invoke(); + WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData); } } + + // 澶勭悊浠诲姟瀹屾垚閫昏緫 + private static void HandleTaskCompletion(WCSTask task) + { + WCSHelper.End(task); + + // 鏍规嵁浠诲姟绫诲瀷澶勭悊涓嶅悓鐨勫畬鎴愰�杈�+ if (Settings.CompleteTasks.taskType.Contains(task.S_TYPE)) + { + WMSHelper.UpdateWmsTask(task, 2); + WMSHelper.UpdateDistributionCntrState(2, 3, task.S_CNTR_CODE); + } + + if (new List<string> { "鏂欑鍏ュ簱", "鎵樼洏鍏ュ簱" }.Contains(task.S_TYPE)) + { + ContainerHelper.UpdateCntrItem(task.S_CNTR_CODE); + } + + // 澶勭悊鍖哄煙鍙樻洿 + HandleAreaChange(task); + } + + // 澶勭悊鍙栬揣瀹屾垚閫昏緫 + private static void HandlePickCompletion(WCSTask task) + { + WCSHelper.UpdateStatus(task, "鍙栬揣瀹屾垚"); + TaskProcess.OperateStatus(task, 4); + } + + // 澶勭悊鍗歌揣瀹屾垚閫昏緫 + private static void HandleUnloadCompletion(WCSTask task) + { + WCSHelper.UpdateStatus(task, "鍗歌揣瀹屾垚"); + TaskProcess.OperateStatus(task, 6); + } + + // 澶勭悊浠诲姟澶辫触閫昏緫 + private static void HandleTaskFailure(WCSTask task) + { + TaskProcess.OperateStatus(task, 7); + WCSHelper.Fail(task); + } + + // 澶勭悊鍖哄煙鍙樻洿閫昏緫 + private static void HandleAreaChange(WCSTask task) + { + var areas = new List<string> { "TPLKQ", "LXLKQ" }; + var area = new List<string> { "閰嶇洏鍑哄簱", "閰嶇洏缂撳瓨" }; + + if (areas.Contains(task.S_START_AREA) && !area.Contains(task.S_TYPE)) + { + WMSHelper.DeleteChange(task); + } + + if (areas.Contains(task.S_END_AREA)) + { + WMSHelper.AddChange(task); + } + } + + /// <summary> /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 @@ -85,6 +120,10 @@ #region 鏉哀浠诲姟鏈嶅姟 + private static readonly object _jobLock = new object(); + + + /// <summary> /// 寰幆浣滀笟鐢熸垚浠诲姟 /// </summary> @@ -92,18 +131,32 @@ { try { - //鏌ヨ浠诲姟 - //鑾峰彇鎵�湁绛夊緟鐨勪綔涓�- var list = WMSHelper.GetWmsTaskListByState("绛夊緟"); ; - if (list.Count > 0) + lock (_jobLock) { - - list.ForEach(task => + //鏌ヨ浠诲姟 + //鑾峰彇鎵�湁绛夊緟鐨勪綔涓�+ var list = WMSHelper.GetWmsTaskListByState("绛夊緟"); + if (list.Count > 0) { - //鐢熸垚鍏ュ簱浠诲姟 - TaskProcess.CreateInTask(task); - }); + list.ForEach(async task => + { + //鐢熸垚鍏ュ簱浠诲姟 + await TaskProcess.CreateInTask(task); + }); + } + //鏌ヨ浠诲姟 + //鑾峰彇鎵�湁鎵ц鐨勪綔涓�+ var exelist = WMSHelper.GetWmsTaskListByState("鎵ц"); + if (exelist.Count > 0) + { + exelist.ForEach(task => + { + //鐢熸垚浠庡垎鎷f殏瀛樺尯鍒伴泦璐ф墭鐩樹綅鐨勪换鍔′换鍔�+ TaskProcess.exeCreateInTask(task); + }); + } } + } catch (Exception ex) { @@ -119,7 +172,6 @@ } } - /// <summary> /// 寰幆鎺ラ┏浣嶇敓鎴愬叆搴撲换鍔�@@ -157,12 +209,16 @@ { try { - //鏌ヨ宸查厤鐩樼殑閰嶇洏鍗�- var list = WMSHelper.GetPickingListByState("閰嶈揣瀹屾垚"); - if (list.Count > 0) + lock (_jobLock) { - TaskProcess.GenerateFromPicking(list); + //鏌ヨ宸查厤鐩樼殑閰嶇洏鍗�+ var list = WMSHelper.GetPickingListByState(1); + if (list.Count > 0) + { + TaskProcess.GenerateFromPicking(list); + } } + } catch (Exception ex) { -- Gitblit v1.9.1