From d0a265713fd18162f3a82bdcd22e267df7298c7b Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期一, 26 五月 2025 08:59:52 +0800 Subject: [PATCH] 印尼佳通-半制品代码逻辑优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs | 158 ++++++++++++++++++++++++++++------------------------ 1 files changed, 86 insertions(+), 72 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs index 895d834..41ea36e 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs @@ -21,6 +21,7 @@ namespace HH.WCS.Mobox3.YNJT_BZP.core { internal class WCSCore { public static void OperateAgvTaskStatus(AgvTaskState model) { + LogHelper.Info($"AGV浠诲姟鐘舵�鍙嶉锛屽叆鍙傦細{JsonConvert.SerializeObject(model)}", "AGV"); try { if (string.IsNullOrEmpty(model.No)) @@ -100,10 +101,54 @@ break; } } - else if (model.State == 2001) + else if (model.State == 1002) { - //鐢宠鏂扮粓鐐�- string endLoc = AGVApplyEndLoc(model.No); + //鏌ヨ褰撳墠缁堢偣鏄瓑寰呭尯锛屽垯鏌ヨ鍏ュ簱agv鎺ラ┏浣�+ var waitLoc = Settings.getAgvWaitLoc(TN_Task.S_END_LOC); + if (waitLoc != null) + { + string endLoc = AGVApplyEndLoc(model.No); + + + } + + //濡傛灉涓嶆槸绛夊緟鍖鸿揣浣嶏紝鍒欐煡璇㈢粓鐐硅揣浣嶆槸鍚︽槸鍏ュ簱鎺ラ┏浣�+ var agvJBLoc = Settings.getAgvJBLoc(TN_Task.S_END_LOC); + if (agvJBLoc != null && agvJBLoc.type == 1 && agvJBLoc.action == 1) + { + //鏄垯鏌ヨWCS鐨勪换鍔℃墽琛屾儏鍐�+ var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE ,"WCS"); + if (wcsTask != null) + { + bool existAction = WCSHelper.CheckActionRecordExist(wcsTask.S_CODE, 7); + if (existAction) + { + //濡傛灉WCS鍙嶉7鍙栨秷浠诲姟锛屽垯rfid鏍¢獙澶辫触锛岀敓鎴愭柊浠诲姟鍒板紓甯稿尯锛屽苟鍙樻洿agv浠诲姟鍙枫�璧风偣銆佺粓鐐�+ var mst = WMSHelper.GetWmsTask(TN_Task.S_OP_CODE); + var endLoc = WMSHelper.getErrorBufferAreaLoc(); + if (endLoc != null) + { + LocationHelper.UnLockLoc(mst.S_END_LOC); + mst.S_END_LOC = endLoc.S_CODE; + mst.S_END_AREA = endLoc.S_AREA_CODE; + + WMSHelper.UpdateTaskEnd(mst); + WCSCore.createLastTask(TN_Task.S_END_LOC, mst, 2); + } + else + { + LogHelper.Info("", "AGV"); + } + } + + existAction = WCSHelper.CheckActionRecordExist(wcsTask.S_CODE, 3); + if (existAction) + { + //WCS鍙嶉3宸插彇璐э紝鍒檃gv浠诲姟姝e父缁撴潫 + + } + } + } } else { @@ -213,100 +258,69 @@ /// <param name="taskNo"></param> public static string AGVApplyEndLoc(string taskNo) { - LogHelper.Info("銆恆gv鐢宠缁堢偣銆�, "AGV"); - string endLocCode = null; + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV绛夊緟鍖虹敵璇风粓鐐�, "AGV"); var cst = WCSHelper.GetTask(taskNo); - if (cst != null && cst.N_B_STATE < 3) + if (cst != null && cst.N_B_STATE < 3) { var mst = WMSHelper.GetWmsTask(cst.S_OP_CODE); - if (mst != null && mst.N_B_STATE < 2 && mst.S_END_LOC == "铏氭嫙璐т綅") + if (mst != null && mst.N_B_STATE < 2 && mst.S_END_LOC == "铏氭嫙璐т綅") { var container = ContainerHelper.GetCntr(cst.S_CNTR_CODE); - if (container != null) + if (container != null) { var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE); if (endLoc != null) { Location agvLoc = null; var locCodes = Settings.getAgvJBLocList(1, endLoc.N_ROADWAY, 1); - if (locCodes.Count > 0) + if (locCodes.Count > 0) { - agvLoc = LocationHelper.GetLoc(locCodes[0]); - } - - if (agvLoc != null && agvLoc.C_ENABLE == "Y") - { - var wcsTask = WCSHelper.GetTaskByStartAndEnd(agvLoc.S_CODE); - if (wcsTask == null && agvLoc.N_LOCK_STATE == 0) + foreach (var locCode in locCodes) { - // 鑳庡湀鍏ュ簱锛屼笅鍙戞瘝鎷栧嚭搴撲换鍔�\ 甯樺竷銆佸唴琛叆搴擄紝涓嬪彂鎵樼洏鍥炲簱浠诲姟 - if (mst.S_TYPE.Contains("鍏ュ簱")) + agvLoc = LocationHelper.GetLoc(locCode); + if (agvLoc != null && agvLoc.C_ENABLE == "Y") { - if (agvLoc.N_CURRENT_NUM == 1) - { - var locCntrRels = LocationHelper.GetLocCntr(agvLoc.S_CODE); - if (locCntrRels.Count > 0) - { - var container1 = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE); - if (container1.N_TYPE == 0) - { - if (container.N_TYPE == 4 || container.N_TYPE == 5) - { - ApiHelper.baseTrayInStockAgv(agvLoc.S_CODE, mst.S_CODE); - } - } - else - { - LogHelper.Info($"鎺ラ┏浣�{agvLoc.S_CODE},瀛樺湪闈炴瘝鎷栧鍣�, "AGV"); - } - } - else - { - LogHelper.Info($"鎺ラ┏浣�{agvLoc.S_CODE}鐨勫綋鍓嶆暟閲忎笌瀹瑰櫒鏁伴噺涓嶅尮閰�, "AGV"); - } - } - else if (agvLoc.N_CURRENT_NUM == 0) - { - if (container.N_TYPE == 6) - { - ApiHelper.baseTrayOutStockAgv(agvLoc.S_CODE, mst.S_CODE); - } - } - else - { - return endLocCode; - } + cst.S_END_LOC = agvLoc.S_CODE; + cst.S_END_AREA = agvLoc.S_AREA_CODE; + WCSHelper.UpdateTaskEnd(cst); + + mst.S_END_LOC = endLoc.S_CODE; + mst.S_END_AREA = endLoc.S_AREA_CODE; + WMSHelper.UpdateTaskEnd(mst); + LocationHelper.LockLoc(endLoc.S_CODE, 1); + + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV鐢宠鐨勭粓鐐癸細{agvLoc.S_CODE}", "AGV"); + return agvLoc.S_CODE; } - cst.S_END_LOC = agvLoc.S_CODE; - cst.S_END_AREA = agvLoc.S_AREA_CODE; - WCSHelper.UpdateTaskEnd(cst); - - mst.S_END_LOC = endLoc.S_CODE; - mst.S_END_AREA = endLoc.S_AREA_CODE; - WMSHelper.UpdateTaskEnd(mst); - - LocationHelper.LockLoc(agvLoc.S_CODE, 1); - LocationHelper.LockLoc(endLoc.S_CODE, 1); - endLocCode = agvLoc.S_CODE; } - else - { - LogHelper.Info("鎺ラ┏浣嶅綋鍓嶆湁浠诲姟鏈畬鎴愶紝璇风◢绛�, "AGV"); - } + + LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV"); } - else + else { - LogHelper.Info("娌℃湁鍙敤鐨勫叆搴撴帴椹充綅", "AGV"); + LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV"); } } - else + else { - LogHelper.Info("娌℃湁绌轰綑鐨勮揣浣�, "AGV"); + LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV"); } } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV浠诲姟鐨勫鍣細{cst.S_CNTR_CODE}涓嶅瓨鍦�, "AGV"); + } + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV浠诲姟宸茬敵璇风粓鐐癸紝璇峰嬁閲嶅鐢宠", "AGV"); } } - return endLocCode; + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV浠诲姟宸插畬鎴愭垨鍙栨秷", "AGV"); + } + return null; } } -- Gitblit v1.9.1