From 01cc5773457f68274ef1b2d9d9daca8983761828 Mon Sep 17 00:00:00 2001 From: 杨前锦 <1010338399@qq.com> Date: 星期四, 05 六月 2025 17:33:03 +0800 Subject: [PATCH] 佳通bug优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs | 310 +++++++++++++++++++++++---------------------------- 1 files changed, 140 insertions(+), 170 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs index 3f325f8..27e6ed6 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs @@ -194,96 +194,14 @@ ReturnResult result = new ReturnResult(); try { - Location startLoc = WMSHelper.GetEmptyTrayStartLoc(model.trayType); - Location middleLoc = null; - string cntrCode = ""; - string descCntrCode = ""; - if (startLoc != null) + EmptyTrayBuffer buffer = new EmptyTrayBuffer() { - // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�- var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); - if (locCntrRels.Count > 0) - { - foreach (var item in locCntrRels) - { - var container = ContainerHelper.GetCntr(item.S_CNTR_CODE); - if (model.trayType == container.N_TYPE) - { - descCntrCode = item.S_CNTR_CODE; - } - cntrCode = cntrCode + "," + item.S_CNTR_CODE; - } - cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); - } - - var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2); - if (locCodes.Count > 0) - { - middleLoc = LocationHelper.GetLoc(locCodes[0]); - } - } - - Location endLoc = LocationHelper.GetLoc(model.endLoc); - if (endLoc == null) - { - result.ResultCode = 1; - result.ResultMsg = "WMS绯荤粺娌℃湁璇ヨ揣浣嶏紝璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�; - return result; - } - - if (startLoc != null) - { - var wmsTask = new WMSTask() - { - S_CNTR_CODE = descCntrCode, - S_CODE = WMSHelper.GenerateTaskNo(), - S_START_LOC = startLoc.S_CODE, - S_START_AREA = startLoc.S_AREA_CODE, - S_END_LOC = endLoc.S_CODE, - S_END_AREA = endLoc.S_AREA_CODE, - S_TYPE = "绌烘墭鍑哄簱浠诲姟", - S_OP_DEF_CODE = model.taskNo, - S_OP_DEF_NAME = "绌烘墭鍑哄簱浠诲姟", - N_PRIORITY = model.priority, - T_START_TIME = DateTime.Now, - }; - - if (WMSHelper.CreateWmsTask(wmsTask)) - { - // 鍒涘缓涓�鍑哄簱浠诲姟 - WCSTask wcsTask = new WCSTask() - { - S_OP_NAME = wmsTask.S_OP_DEF_NAME, - S_OP_CODE = wmsTask.S_CODE, - S_CODE = WCSHelper.GenerateTaskNo(), - S_CNTR_CODE = cntrCode, - S_TYPE = wmsTask.S_TYPE + "-1", - S_START_LOC = startLoc.S_CODE, - S_START_AREA = startLoc.S_AREA_CODE, - S_END_LOC = middleLoc.S_CODE, - S_END_AREA = middleLoc.S_AREA_CODE, - S_SCHEDULE_TYPE = "WCS", - N_PRIORITY = 1, - T_START_TIME = DateTime.Now, - }; - - if (WCSHelper.CreateTask(wcsTask) ) - { - // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�- LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); - - // 鏇存柊浣滀笟浠诲姟鐘舵� - wmsTask.N_B_STATE = 1; - WMSHelper.UpdateTaskState(wmsTask); - } - } - } - else - { - result.ResultCode = 1; - result.ResultMsg = "搴撳唴娌℃湁鏌ュ埌绌烘墭鐩�; - } + TASK_NO = model.taskNo, + TRAY_TYPE = model.trayType, + END_LOC = model.endLoc, + PRIORITY = model.priority, + }; + WMSHelper.addEmptyTrayBuffer(buffer); } catch (Exception ex) { @@ -304,90 +222,109 @@ ReturnResult result = new ReturnResult(); try { - Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode); - Location middleLoc = null; - string descCntrCode = ""; - string cntrCode = ""; - if (startLoc != null) + Location endLoc = LocationHelper.GetLoc(model.endLoc); + if (endLoc.N_CURRENT_NUM == 0) { - // 鏌ヨ鎺ラ┏浣�- var locCodes = Settings.getAgvJBLocList(1, startLoc.N_ROADWAY, 2); - if (locCodes.Count > 0) + int taskNum = 0; + for (int i = 0; i < endLoc.N_CAPACITY; i++) { - middleLoc = LocationHelper.GetLoc(locCodes[0]); + Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode); + Location middleLoc = null; + string descCntrCode = ""; + string cntrCode = ""; + if (startLoc != null) + { + // 鏌ヨ鎺ラ┏浣�+ var locCodes = Settings.getAgvJBLocList(startLoc.N_ROADWAY, 2); + if (locCodes.Count > 0) + { + middleLoc = LocationHelper.GetLoc(locCodes[0]); + } + + // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�+ var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); + if (locCntrRels.Count > 0) + { + foreach (var item in locCntrRels) + { + var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE); + if (cntrItemRels.Count > 0) + { + descCntrCode = cntrItemRels[0].S_CNTR_CODE; + } + cntrCode = cntrCode + "," + item.S_CNTR_CODE; + } + cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); + } + } + else + { + LogHelper.Info($"搴撳唴娌℃湁鐗╂枡:{model.itemCode}", "WMS"); + break; + } + + + if (endLoc != null) + { + var wmsTask = new WMSTask() + { + S_CNTR_CODE = descCntrCode, + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = startLoc.S_CODE, + S_START_AREA = startLoc.S_AREA_CODE, + S_END_LOC = endLoc.S_CODE, + S_END_AREA = endLoc.S_AREA_CODE, + S_TYPE = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, + S_OP_DEF_CODE = model.taskNo, + S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, + N_PRIORITY = model.priority, + T_START_TIME = DateTime.Now, + }; + + if (WMSHelper.CreateWmsTask(wmsTask)) + { + // 鍒涘缓涓�鍑哄簱浠诲姟 + WCSTask wcsTask = new WCSTask() + { + S_OP_NAME = wmsTask.S_OP_DEF_NAME, + S_OP_CODE = wmsTask.S_CODE, + S_CODE = WCSHelper.GenerateTaskNo(), + S_CNTR_CODE = cntrCode, + S_TYPE = wmsTask.S_TYPE + "-1", + S_START_LOC = startLoc.S_CODE, + S_START_AREA = startLoc.S_AREA_CODE, + S_END_LOC = middleLoc.S_CODE, + S_END_AREA = middleLoc.S_AREA_CODE, + S_SCHEDULE_TYPE = "WCS", + N_PRIORITY = 1, + T_START_TIME = DateTime.Now, + }; + + if (WCSHelper.CreateTask(wcsTask)) + { + // 璧风偣銆佹帴椹崇偣鍔犻攣 + LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); + LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); + + // 鏇存柊浣滀笟浠诲姟鐘舵� + wmsTask.N_B_STATE = 1; + WMSHelper.UpdateTaskState(wmsTask); + taskNum++; + } + } + } } - // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�- var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE); - if (locCntrRels.Count > 0) + if (taskNum < endLoc.N_CAPACITY) { - foreach (var item in locCntrRels) - { - var cntrItemRels = ContainerHelper.GetCntrItemRel(item.S_CNTR_CODE); - if (cntrItemRels.Count > 0) - { - descCntrCode = cntrItemRels[0].S_CNTR_CODE; - } - cntrCode = cntrCode + "," + item.S_CNTR_CODE; - } - cntrCode = cntrCode.Substring(1, cntrCode.Length - 1); + result.ResultCode = 1; + result.ResultMsg = $"搴撳唴鐗╂枡涓嶈冻锛屽凡鐢熸垚鍑哄簱浠诲姟鏁�{taskNum}"; } } else { result.ResultCode = 1; - result.ResultMsg = "搴撳唴娌℃湁婊¤冻鏉′欢鐨勭墿鏂�; - return result; - } - - Location endLoc = LocationHelper.GetLoc(model.endLoc); - if (endLoc != null) - { - var wmsTask = new WMSTask() - { - S_CNTR_CODE = descCntrCode, - S_CODE = WMSHelper.GenerateTaskNo(), - S_START_LOC = startLoc.S_CODE, - S_START_AREA = startLoc.S_AREA_CODE, - S_END_LOC = endLoc.S_CODE, - S_END_AREA = endLoc.S_AREA_CODE, - S_TYPE = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, - S_OP_DEF_CODE = model.taskNo, - S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�, - N_PRIORITY = model.priority, - T_START_TIME = DateTime.Now, - }; - - if (WMSHelper.CreateWmsTask(wmsTask)) - { - // 鍒涘缓涓�鍑哄簱浠诲姟 - WCSTask wcsTask = new WCSTask() - { - S_OP_NAME = wmsTask.S_OP_DEF_NAME, - S_OP_CODE = wmsTask.S_CODE, - S_CODE = WCSHelper.GenerateTaskNo(), - S_CNTR_CODE = cntrCode, - S_TYPE = wmsTask.S_TYPE + "-1", - S_START_LOC = startLoc.S_CODE, - S_START_AREA = startLoc.S_AREA_CODE, - S_END_LOC = middleLoc.S_CODE, - S_END_AREA = middleLoc.S_AREA_CODE, - S_SCHEDULE_TYPE = "WCS", - N_PRIORITY = 1, - T_START_TIME = DateTime.Now, - }; - - if (WCSHelper.CreateTask(wcsTask)) - { - // 璧风偣銆佹帴椹崇偣鍔犻攣 - LocationHelper.LockLoc(wcsTask.S_START_LOC, 2); - LocationHelper.LockLoc(wcsTask.S_END_LOC, 1); - - // 鏇存柊浣滀笟浠诲姟鐘舵� - wmsTask.N_B_STATE = 1; - WMSHelper.UpdateTaskState(wmsTask); - } - } + result.ResultMsg = "缁堢偣璐т綅褰撳墠瀹归噺涓嶄负0锛屾棤娉曞彨鏂�; } } catch (Exception ex) @@ -716,7 +653,7 @@ /// <param name="loc"></param> /// <param name="wmsTaskNo"></param> /// <returns></returns> - public static ReturnResult baseTrayInStockAgv(string loc, string wmsTaskNo) + public static ReturnResult autoBaseTrayInStock(string loc, string wmsTaskNo) { ReturnResult result = new ReturnResult(); try @@ -725,8 +662,13 @@ if (cst == null) { Location startLoc = LocationHelper.GetLoc(loc); - Location endLoc = LocationHelper.GetLoc(Settings.baseTrayInBufferLoc); - if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0)) + Location endLoc = null; + var baseTrayBufferLoc = Settings.baseTrayBufferLocList.Where(a => a.bufferOutLoc == loc).FirstOrDefault(); + if (baseTrayBufferLoc != null) + { + endLoc = LocationHelper.GetLoc(baseTrayBufferLoc.bufferInLoc); + } + if (endLoc == null || endLoc.N_CURRENT_NUM > 0) { endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2); } @@ -886,7 +828,7 @@ /// <param name="loc"></param> /// <param name="wmsTaskNo"></param> /// <returns></returns> - public static ReturnResult baseTrayOutStockAgv(string loc, string wmsTaskNo) + public static ReturnResult autoBaseTrayOutStock(string loc, string wmsTaskNo) { ReturnResult result = new ReturnResult(); try @@ -992,10 +934,9 @@ TaskProcess.OperateStatus(cst, 6); break; case 7: - WCSHelper.UpdateStatus(cst, "寮傚父鍙栨秷"); + WCSHelper.Cancel(cst); + WCSHelper.UpdateStatus(cst, "鍙栨秷"); TaskProcess.OperateStatus(cst, 7); - mst.N_B_STATE = 3; - WMSHelper.UpdateTaskState(mst); break; case 8: WCSHelper.UpdateStatus(cst, "寮哄埗瀹屾垚"); @@ -1026,6 +967,35 @@ } /// <summary> + /// 璐т綅鐘舵�鍙嶉 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public static bool locStateFeedBack(LocStateFeedBackModel model) + { + bool result = false; + var task = WCSHelper.GetTask(model.req_no); + if (task != null) + { + TaskAction taskAction = null; + if (model.type == "1") + { + taskAction = WCSHelper.getActionRecord(task.S_CODE, 1101); + } + if (model.type == "2") + { + taskAction = WCSHelper.getActionRecord(task.S_CODE, 1103); + } + if (taskAction != null) + { + taskAction.N_S_STATUS = 1; + result = WCSHelper.updateActionRecord(taskAction); + } + } + return result; + } + + /// <summary> /// 璇荤爜鍙嶉 /// </summary> /// <param name="model"></param> -- Gitblit v1.9.1