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 | 471 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 343 insertions(+), 128 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs index 2996c62..cbb716f 100644 --- a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs +++ b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs @@ -374,9 +374,9 @@ } /// <summary> - /// 鍏ュ簱鍗曟柊澧�+ /// 鏉哀鐗╂枡涓绘暟鎹柊澧炴帴鍙� /// </summary> - /// <param name="model">鍏ュ簱鍗�/param> + /// <param name="model">鐗╂枡涓绘暟鎹�/param> /// <returns></returns> public static Result GetMaterialData(List<MES_Material> model) { @@ -385,44 +385,25 @@ { if (model == null) { - result.errMsg = "鍏ュ簱鍗曚笉鍙负绌哄�锛�; + result.errMsg = "鐗╂枡涓绘暟鎹笉鍙负绌哄�锛�; return result; } + var materialList = new List<TN_Material>(); - //foreach (var item in model.InOrderDetail) - //{ - // var itemType = WMSHelper.GetItemType(item.S_ITEM_CODE); - // if (itemType == null) - // { - // result.errMsg = $"鏈煡璇㈠埌鐗╂枡{item.S_ITEM_CODE}鐨勭墿鏂欏睘鎬э紒"; - // return result; - // } - // item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE; - //} - - //var groupedInOrders = model.InOrderDetail - // .GroupBy(detail => detail.S_EXT_ATTR1) // 鎸夌墿鏂欏睘鎬у垎缁�- // .Select((group, index) => new InOrder - // { - // S_NO = $"{model.S_BS_NO}_{index + 1}", // 鎷兼帴鏉ユ簮鍗曞彿 - // S_BS_NO = model.S_BS_NO, - // S_OP_TYPE = model.S_OP_TYPE, - // S_BS_TYPE = model.S_BS_TYPE, - // S_NOTE = model.S_NOTE, - // InOrderDetail = group.Select(detail => - // { - // // 淇敼 group 涓殑 S_IO_NO 瀛楁涓�S_NO 鐨勫� - // detail.S_IO_NO = $"{model.S_BS_NO}_{index + 1}"; - // detail.S_BS_NO = model.S_BS_NO; - // return detail; - // }).ToList() // 鍒嗙粍鍚庣殑鏄庣粏 - // }) - // .ToList(); - //var res = WMSHelper.CreateOrderIn(groupedInOrders); - //if (res) - //{ - // result.success = true; - //} + foreach (var item in model) + { + materialList.Add(new TN_Material + { + S_ITEM_CODE = item.S_ITEM_CODE, + S_ITEM_NAME = item.S_ITEM_NAME, + S_AREA_CODE = item.S_AREA_CODE, + S_ITEM_SPEC = item.S_MATERIAL_SPEC, + S_MATERIAL = item.S_MATERIAL, + S_UOM = item.S_UOM, + C_CLEAN = item.C_CLEAN, + }); + } + WMSHelper.CreateMaterialData(materialList); return result; } catch (Exception ex) @@ -433,7 +414,7 @@ var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 if (frame != null) { - LogHelper.Error($"GetInboundOrder鍏ュ簱鍗曟柊澧炲嚭鐜伴敊璇紒锛�, ex); + LogHelper.Error($"GetMaterialData鐗╂枡涓绘暟鎹柊澧炲嚭鐜伴敊璇紒锛�, ex); LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); @@ -444,7 +425,7 @@ } /// <summary> - /// 鍏ュ簱鍗曟柊澧�+ /// 鍏ュ簱鍗曟柊澧炰互鍙婁慨鏀� /// </summary> /// <param name="model">鍏ュ簱鍗�/param> /// <returns></returns> @@ -467,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; } @@ -518,9 +499,9 @@ } /// <summary> - /// 鍑哄簱鍗曟柊澧�+ /// 鍑哄簱鍗曟柊澧炰互鍙婁慨鏀� /// </summary> - /// <param name="model">鍏ュ簱鍗�/param> + /// <param name="model">鍑哄簱鍗�/param> /// <returns></returns> public static Result GetOutboundOrder(OutOrder model) { @@ -542,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; } @@ -599,6 +580,85 @@ return result; } } + + /// <summary> + /// 鍏ュ簱鍗曞彇娑�+ /// </summary> + /// <param name="model">鍏ュ簱鍗�/param> + /// <returns></returns> + public static Result CancelInboundOrder(InOrderCancel model) + { + Result result = new Result() { success = false, }; + try + { + if (model == null || !model.OrderDetail.Any()) + { + result.errMsg = "鍏ュ簱鍗曞彇娑堜笉鍙负绌哄�锛�; + return result; + } + var res = WMSHelper.CancelOrderIn(model); + if (res) + { + 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($"CancelInboundOrder鍏ュ簱鍗曞彇娑堝嚭鐜伴敊璇紒锛�, ex); + LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); + LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); + LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + } + return result; + } + } + + /// <summary> + /// 鍑哄簱鍗曞彇娑�+ /// </summary> + /// <param name="model">鍑哄簱鍗�/param> + /// <returns></returns> + public static Result CancelOutboundOrder(OutOrderCancel model) + { + Result result = new Result() { success = false }; + try + { + if (model == null || !model.OrderDetail.Any()) + { + result.errMsg = "鍑哄簱鍗曚笉鍙负绌哄�锛�; + return result; + } + var res = WMSHelper.CancelOrderOut(model); + if (res) + { + 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($"CancelOutboundOrder鍑哄簱鍗曞彇娑堝嚭鐜伴敊璇紒", ex); + LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); + LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); + LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + } + return result; + } + } + ///// <summary> ///// 鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟 @@ -1607,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 + @@ -1629,10 +1929,6 @@ LogHelper.Error("CreateInTask鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟鍑虹幇閿欒锛� + errorDetails, ex); } - - - - /// <summary> /// 寰幆鍏ュ簱缂撳瓨鍖烘煡璇㈠悎鎵樺伐浣嶅拰鍏ュ簱鎺ラ┏浣嶆槸鍚︽湁绌鸿揣浣嶏紙鍒涘缓浠诲姟锛�@@ -1795,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