From d8c0f4088dd1619279f6f894766a28bb0ecfe0a4 Mon Sep 17 00:00:00 2001 From: pengmn <pmn@HanInfo> Date: 星期五, 04 七月 2025 17:21:12 +0800 Subject: [PATCH] 1 --- HH.WCS.Mobox3.HangYang/process/TaskProcess.cs | 335 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 245 insertions(+), 90 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs index 1ef67ec..cbb716f 100644 --- a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs +++ b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs @@ -396,7 +396,7 @@ { S_ITEM_CODE = item.S_ITEM_CODE, S_ITEM_NAME = item.S_ITEM_NAME, - S_ITEM_TYPE = item.S_AREA_CODE, + S_AREA_CODE = item.S_AREA_CODE, S_ITEM_SPEC = item.S_MATERIAL_SPEC, S_MATERIAL = item.S_MATERIAL, S_UOM = item.S_UOM, @@ -448,7 +448,7 @@ result.errMsg = $"鏈煡璇㈠埌鐗╂枡{item.S_ITEM_CODE}鐨勭墿鏂欏睘鎬э紒"; return result; } - item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE; + item.S_EXT_ATTR1 = itemType.S_AREA_CODE; item.S_ITEM_NAME = itemType.S_ITEM_NAME; } @@ -523,7 +523,7 @@ result.errMsg = $"鏈煡璇㈠埌鐗╂枡{item.S_ITEM_CODE}鐨勭墿鏂欏睘鎬э紒"; return result; } - item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE; + item.S_EXT_ATTR1 = itemType.S_AREA_CODE; item.S_ITEM_NAME = itemType.S_ITEM_NAME; item.C_CLEAN = itemType.C_CLEAN; } @@ -586,7 +586,7 @@ /// </summary> /// <param name="model">鍏ュ簱鍗�/param> /// <returns></returns> - public static Result CancelInboundOrder(InOrder model) + public static Result CancelInboundOrder(InOrderCancel model) { Result result = new Result() { success = false, }; try @@ -625,7 +625,7 @@ /// </summary> /// <param name="model">鍑哄簱鍗�/param> /// <returns></returns> - public static Result CancelOutboundOrder(OutOrder model) + public static Result CancelOutboundOrder(OutOrderCancel model) { Result result = new Result() { success = false }; try @@ -1667,6 +1667,246 @@ #endregion + #region WCS璋冪敤鎺ュ彛 + + /// <summary> + /// WCS璋冪敤璁惧淇″彿鍙嶉 + /// </summary> + /// <param name="model">璇锋眰鍙傛暟</param> + /// <returns></returns> + public static async Task<WcsResult> notifyDeviceSignal(List<WcsModel> model) + { + WcsResult result = new WcsResult() { code = 1, }; + try + { + foreach (var item in model) + { + if (string.IsNullOrEmpty(item.cntrNo)) + { + result.msg = "鎵樼洏鍙蜂负绌猴紒"; + return result; + } + var list = WMSHelper.GetWmsTaskList("绛夊緟", item.cntrNo); + if (list == null) + { + list = WMSHelper.GetWmsTaskList("鎵ц", item.cntrNo); + if (list != null && list.S_TYPE.Contains("鍥炲簱")) + { + list.S_END_AREA = "TPLKQ"; + } + } + if (list == null) + { + result.msg = "鏈煡璇㈠埌鍦ㄧ瓑寰呬腑鐨勪綔涓氾紒"; + return result; + } + + var inbound = new Inbound() + { + areaCode = list.S_END_AREA + }; + var wh = new Warehouse(inbound); + var stored = await wh.StoreItemAsync(); + if (stored == null) + { + result.msg = "绔嬪簱鍖烘湭鏌ヨ鍒板彲鐢ㄨ揣浣嶏紒"; + return result; + } + + var startLoc = ContainerHelper.GetCntrLoc(list.S_CNTR_CODE); + if (startLoc == null) + { + result.msg = $"鏈煡璇㈠埌鎵樼洏{list.S_CNTR_CODE}鎵�湪鐨勮揣浣嶏紒"; + return result; + } + var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, stored.loationCode, list.S_B_STATE == "绛夊緟" ? "鏂欑鍏ュ簱" : "鎵樼洏鍏ュ簱", list.S_CNTR_CODE, list.S_CODE); + if (!res) + { + result.msg = "鍏ュ簱浠诲姟鍒涘缓澶辫触锛�; + return result; + } + WMSHelper.UpdateTaskStatus(list.S_CODE, 1); + ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, ""); + } + result.code = 0; + return result; + } + catch (Exception ex) + { + result.code = 2; + result.msg = ex.Message; + var st = new System.Diagnostics.StackTrace(ex, true); + var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 + if (frame != null) + { + LogHelper.Error($"notifyDeviceSignal璁惧淇″彿鍙嶉鍑虹幇閿欒锛侊紒", ex); + LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); + LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); + LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + } + return result; + } + } + + /// <summary> + /// WCS璋冪敤浠诲姟鐘舵�鍙嶉 + /// </summary> + /// <param name="model">璇锋眰鍙傛暟</param> + /// <returns></returns> + public static async Task<WcsResult> notifyTaskStatus(WcsTaskModel model) + { + WcsResult result = new WcsResult() { code = 1, }; + try + { + if (model == null) + { + result.msg = "璇锋眰鍙傛暟涓虹┖"; + return result; + } + + var task = WCSHelper.GetTask(model.taskNo); + if (task == null) + { + result.msg = "鏈煡璇㈠埌浠诲姟鍙�; + return result; + } + + // 鐘舵�涓庢搷浣滅殑鏄犲皠瀛楀吀 + var stateActions = new Dictionary<int, Action> + { + [1] = () => WCSHelper.Begin(task), + [2] = () => HandleTaskCompletion(task), + [3] = () => WCSHelper.UpdateStatus(task, "寮�鍙栬揣"), + [4] = () => HandlePickCompletion(task), + [5] = () => WCSHelper.UpdateStatus(task, "寮�鍗歌揣"), + [6] = () => HandleUnloadCompletion(task), + [7] = () => HandleTaskFailure(task), + [8] = () => HandleTaskCompletion(task) + }; + result.code = 0; + return result; + } + catch (Exception ex) + { + result.code = 2; + result.msg = ex.Message; + var st = new System.Diagnostics.StackTrace(ex, true); + var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 + if (frame != null) + { + LogHelper.Error($"notifyTaskStatus浠诲姟鐘舵�鍙嶉鍑虹幇閿欒锛侊紒", ex); + LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); + LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); + LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + } + return result; + } + } + + // 澶勭悊浠诲姟瀹屾垚閫昏緫 + 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> + /// WCS璋冪敤鐢宠缁堢偣 + /// </summary> + /// <param name="model">璇锋眰鍙傛暟</param> + /// <returns></returns> + public static async Task<WcsResult> applyDest(WcsTaskEnd model) + { + WcsResult result = new WcsResult() { code = 1, }; + try + { + if (model == null) + { + result.msg = "璇锋眰鍙傛暟涓虹┖"; + return result; + } + + var task = WCSHelper.GetTask(model.taskNo); + if (task == null) + { + result.msg = "鏈煡璇㈠埌浠诲姟鍙�; + return result; + } + + result.code = 0; + result.data.Add(new DataModel { taskNo = task.S_CODE, cntrCode = task.S_CNTR_CODE, end = task.S_END_LOC }); + return result; + } + catch (Exception ex) + { + result.code = 2; + result.msg = ex.Message; + var st = new System.Diagnostics.StackTrace(ex, true); + var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 + if (frame != null) + { + LogHelper.Error($"applyDest鐢宠缁堢偣鍑虹幇閿欒锛侊紒", ex); + LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); + LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); + LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + } + return result; + } + } + #endregion + @@ -1689,10 +1929,6 @@ LogHelper.Error("CreateInTask鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟鍑虹幇閿欒锛� + errorDetails, ex); } - - - - /// <summary> /// 寰幆鍏ュ簱缂撳瓨鍖烘煡璇㈠悎鎵樺伐浣嶅拰鍏ュ簱鎺ラ┏浣嶆槸鍚︽湁绌鸿揣浣嶏紙鍒涘缓浠诲姟锛�@@ -1855,87 +2091,6 @@ return false; } - } - - /// <summary> - /// WCS璋冪敤璁惧淇″彿鍙嶉 - /// </summary> - /// <param name="model">璇锋眰鍙傛暟</param> - /// <returns></returns> - public static async Task<Result> notifyDeviceSignal(List<Wcsmodel> model) - { - Result result = new Result() { success = false, }; - try - { - foreach (var item in model) - { - if (string.IsNullOrEmpty(item.cntrNo)) - { - result.errMsg = "鎵樼洏鍙蜂负绌猴紒"; - return result; - } - var list = WMSHelper.GetWmsTaskList("绛夊緟", item.cntrNo); - if (list == null) - { - list = WMSHelper.GetWmsTaskList("鎵ц", item.cntrNo); - if (list != null && list.S_TYPE.Contains("鍥炲簱")) - { - list.S_END_AREA = "TPLKQ"; - } - } - if (list == null) - { - result.errMsg = "鏈煡璇㈠埌鍦ㄧ瓑寰呬腑鐨勪綔涓氾紒"; - return result; - } - - var inbound = new Inbound() - { - areaCode = list.S_END_AREA - }; - var wh = new Warehouse(inbound); - var stored = await wh.StoreItemAsync(); - if (stored == null) - { - result.errMsg = "绔嬪簱鍖烘湭鏌ヨ鍒板彲鐢ㄨ揣浣嶏紒"; - return result; - } - - var startLoc = ContainerHelper.GetCntrLoc(list.S_CNTR_CODE); - if (startLoc == null) - { - result.errMsg = $"鏈煡璇㈠埌鎵樼洏{list.S_CNTR_CODE}鎵�湪鐨勮揣浣嶏紒"; - return result; - } - var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, stored.loationCode, list.S_B_STATE == "绛夊緟" ? "鏂欑鍏ュ簱" : "鎵樼洏鍏ュ簱", list.S_CNTR_CODE, list.S_CODE); - if (!res) - { - result.errMsg = "鍏ュ簱浠诲姟鍒涘缓澶辫触锛�; - return result; - } - WMSHelper.UpdateTaskStatus(list.S_CODE, 1); - ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, ""); - } - - - result.success = true; - return result; - } - catch (Exception ex) - { - result.success = false; - result.errMsg = ex.Message; - var st = new System.Diagnostics.StackTrace(ex, true); - var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 - if (frame != null) - { - LogHelper.Error($"notifyDeviceSignalWCS璋冪敤璁惧淇″彿鍙嶉鍑虹幇閿欒锛侊紒", ex); - LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); - LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); - LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); - } - return result; - } } /// <summary> -- Gitblit v1.9.1