From e0d89637030791ce1e7dd46ca5fdec9979977960 Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期三, 11 六月 2025 17:28:41 +0800 Subject: [PATCH] 印尼佳通-硫化流程出入库流程开发 --- HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs | 152 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 115 insertions(+), 37 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 d184c8a..1758ea2 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 @@ -17,6 +17,7 @@ using static HH.WCS.Mobox3.YNJT_BZP.api.AgvController; using static HH.WCS.Mobox3.YNJT_BZP.api.ApiModel; using static HH.WCS.Mobox3.YNJT_BZP.dispatch.GtDispatch; +using static HH.WCS.Mobox3.YNJT_BZP.util.Settings; namespace HH.WCS.Mobox3.YNJT_BZP.core { internal class WCSCore { @@ -36,7 +37,6 @@ var wmsTask = WMSHelper.GetWmsTask(TN_Task.S_OP_CODE); if (wmsTask != null && wmsTask.N_B_STATE < 2) { - WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData); if (model.State <= 7) { //鏈変换鍔″彿璇锋眰 @@ -123,17 +123,23 @@ var waitLoc = Settings.getAgvWaitLoc(TN_Task.S_END_LOC); if (waitLoc != null) { - var endLoc = AGVApplyEndLoc(model.No); - LogHelper.Info($"浠诲姟鍙凤細{TN_Task.S_CODE}锛孉GV灏忚溅鍙樻洿缁堢偣锛歿endLoc.S_CODE}", "AGV"); - // 閫氱煡AGV鏇存敼缁堢偣 - ChangeParamModel paramModel = new ChangeParamModel() + if (TN_Task.S_TYPE.Contains("鍏ュ簱")) { - task_no = model.No, - param_no = 0, - param = $"{model.No};{TN_Task.S_START_LOC};{TN_Task.S_END_LOC};0;400;0;2" - }; - LogHelper.Info($"閫氱煡AGV鏇存敼缁堢偣锛屽弬鏁�{paramModel}", "AGV"); - /* NDCApi.ChangeOrderParam(paramModel);*/ + var endLoc = AGVApplyEndLoc(model.No); + if (endLoc != null) + { + LogHelper.Info($"浠诲姟鍙凤細{TN_Task.S_CODE}锛孉GV灏忚溅鍙樻洿缁堢偣锛歿endLoc.S_CODE}", "AGV"); + // 閫氱煡AGV鏇存敼缁堢偣 + ChangeParamModel paramModel = new ChangeParamModel() + { + task_no = model.No, + param_no = 0, + param = $"{model.No};{TN_Task.S_START_LOC};{TN_Task.S_END_LOC};0;400;0;2" + }; + LogHelper.Info($"閫氱煡AGV鏇存敼缁堢偣锛屽弬鏁�{paramModel}", "AGV"); + /* NDCApi.ChangeOrderParam(paramModel);*/ + } + } } } else if (model.State == 1004) @@ -142,10 +148,10 @@ // 鍗歌揣鍚庣瓑寰� // 鏌ヨ缁堢偣璐т綅鏄惁鏄叆搴撴帴椹充綅 var agvJBLoc = Settings.getAgvJBLoc(TN_Task.S_END_LOC); - if (agvJBLoc != null && agvJBLoc.type == 1 && agvJBLoc.action == 1) + if (agvJBLoc != null && agvJBLoc.action == 1) { //鏄垯鏌ヨWCS鐨勪换鍔℃墽琛屾儏鍐�- var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE, "WCS"); + var wcsTask = WCSHelper.GetTaskBySrcNoAndScheduleType(TN_Task.S_OP_CODE, "WCS" , wmsTask.S_TYPE); if (wcsTask != null) { bool existAction = WCSHelper.CheckActionRecordExist(wcsTask.S_CODE, 7); @@ -161,7 +167,7 @@ mst.S_END_LOC = endLoc.S_CODE; mst.S_END_AREA = endLoc.S_AREA_CODE; - var newWcsTask = WCSCore.createLastTask(TN_Task.S_END_LOC, mst, 2, "鍏ュ簱寮傚父鍖轰换鍔�); + var newWcsTask = WCSCore.createLastTask(TN_Task.S_END_LOC, mst, 2, "鍑哄簱寮傚父鍖轰换鍔�); LogHelper.Info($"浠诲姟鍙凤細{TN_Task.S_CODE}锛孉GV灏忚溅鏀归亾缁堢偣锛歿newWcsTask.S_END_LOC}", "AGV"); if (newWcsTask != null) { @@ -207,6 +213,8 @@ //瀹夊叏璇锋眰绛� TaskProcess.OperateReq(model.No, model.State, model.ForkliftNo, model.ExtData); } + + WCSHelper.AddActionRecord(model.No, model.State, model.ForkliftNo, model.ExtData); } } } @@ -315,7 +323,7 @@ } } - + private static readonly object emptyTrayInLock = new object(); // 闈欐�閿佸璞� /// <summary> /// agv鐢宠缁堢偣 @@ -333,23 +341,63 @@ var container = ContainerHelper.GetCntr(cst.S_CNTR_CODE); if (container != null) { - var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE); - if (endLoc != null) + string itemCode = null; + var cntrItemRels = ContainerHelper.GetCntrItemRel(cst.S_CNTR_CODE); + if (cntrItemRels.Count > 0) { - Location agvLoc = null; - var locCodes = Settings.getAgvJBLocList(1, endLoc.N_ROADWAY, 1); - if (locCodes.Count > 0) + // 婊℃枡鎵樼洏鍏ュ簱 + itemCode = cntrItemRels[0].S_ITEM_CODE; + var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, null, 1, itemCode); + if (endLoc != null) { - foreach (var locCode in locCodes) + Location agvLoc = null; + var locCodes = Settings.getAgvJBLocList( endLoc.N_ROADWAY, 1); + if (locCodes.Count > 0) { - agvLoc = LocationHelper.GetLoc(locCode); - if (agvLoc != null && agvLoc.C_ENABLE == "Y") + foreach (var locCode in locCodes) { - LogHelper.Info($"妫�祴AGV鎺ラ┏浣�{locCode}璁惧鏄惁鍙敤", "AGV"); + agvLoc = LocationHelper.GetLoc(locCode); + if (agvLoc != null && agvLoc.C_ENABLE == "Y") + { + 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); - cst.S_END_LOC = agvLoc.S_CODE; - cst.S_END_AREA = agvLoc.S_AREA_CODE; + LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV鐢宠鐨勭粓鐐癸細{agvLoc.S_CODE}", "AGV"); + return agvLoc; + } + } + LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV"); + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV"); + } + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV"); + } + } + else + { + // 绌烘墭鐩樺洖搴�+ lock (emptyTrayInLock) + { + var emptyTrayBuffers = WMSHelper.getEmptyTrayBufferList(); + if (emptyTrayBuffers.Count > 0) + { + var emptyTray = emptyTrayBuffers.Where(a => a.TRAY_TYPE == container.N_TYPE).OrderBy(a => a.T_CREATE).FirstOrDefault(); + if (emptyTray != null) + { + var endLoc = LocationHelper.GetLoc(emptyTray.END_LOC); + cst.S_END_LOC = endLoc.S_CODE; + cst.S_END_AREA = endLoc.S_AREA_CODE; WCSHelper.UpdateTaskEnd(cst); mst.S_END_LOC = endLoc.S_CODE; @@ -357,21 +405,51 @@ WMSHelper.UpdateTaskEnd(mst); LocationHelper.LockLoc(endLoc.S_CODE, 1); - LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV鐢宠鐨勭粓鐐癸細{agvLoc.S_CODE}", "AGV"); - return agvLoc; + emptyTray.IS_CREATED = "Y"; + WMSHelper.updateEmptyTrayBuffer(emptyTray); } } + else + { + var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, null, 1); + if (endLoc != null) + { + Location agvLoc = null; + var locCodes = Settings.getAgvJBLocList(endLoc.N_ROADWAY, 1); + if (locCodes.Count > 0) + { + foreach (var locCode in locCodes) + { + agvLoc = LocationHelper.GetLoc(locCode); + if (agvLoc != null && agvLoc.C_ENABLE == "Y") + { + cst.S_END_LOC = agvLoc.S_CODE; + cst.S_END_AREA = agvLoc.S_AREA_CODE; + WCSHelper.UpdateTaskEnd(cst); - LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV"); + 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; + } + } + + LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV"); + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV"); + } + } + else + { + LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV"); + } + } } - else - { - LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV"); - } - } - else - { - LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV"); } } else -- Gitblit v1.9.1