From f2518583da4cc3d3737986e112b92154535aea4d Mon Sep 17 00:00:00 2001 From: pengmn <pmn@HanInfo> Date: 星期四, 29 五月 2025 17:32:48 +0800 Subject: [PATCH] 1 --- HH.WCS.Mobox3.HangYang/process/TaskProcess.cs | 246 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 236 insertions(+), 10 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs index b5b0ab4..178735f 100644 --- a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs +++ b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs @@ -924,12 +924,12 @@ /// </summary> /// <param name="mst"></param> /// <returns></returns> - internal static bool CreateInTask(WMSTask mst) + internal static async Task<bool> CreateInTask(WMSTask mst) { try { if (mst.S_B_STATE.Trim() != "绛夊緟") return true; - if (string.IsNullOrEmpty(mst.S_START_LOC)) return false; + //if (string.IsNullOrEmpty(mst.S_START_LOC)) return false; var reservoirs = Settings.ReservoirAreas?.ToList(); if (reservoirs == null || !reservoirs.Any()) @@ -947,7 +947,13 @@ case "鍚堟墭鍥炲簱": return HandleMergeReturn(mst, reservoirs); case "鍒嗘嫞鍥炲簱": - return HandleMergeReturn(mst, reservoirs); + return await SortingReturn(mst, reservoirs); + case "瑙g粦鍥炲簱": + return await UnbindReturn(mst, reservoirs); + case "绌烘墭鍥炲簱": + return await EmptyPalletReturn(mst, reservoirs); + case "绌烘墭鍑哄簱": + return EmptyPalletOutbound(mst); case "鏂欑鍑哄簱": return HandleBoxOutbound(mst, reservoirs); case "鍙戣揣鏆傚瓨": @@ -1135,7 +1141,7 @@ } /// <summary> - /// 鍚堟墭鍥炲簱 || 鍒嗘嫞鍥炲簱 + /// 鍚堟墭鍥炲簱 /// </summary> /// <param name="mst"></param> /// <param name="reservoirs"></param> @@ -1237,6 +1243,218 @@ } } return true; + } + + /// <summary> + /// 鍒嗘嫞鍥炲簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static async Task<bool> SortingReturn(WMSTask mst, List<ReservoirArea> reservoirs) + { + var trayLst = ContainerHelper.GetCntr(mst.S_CNTR_CODE); + if (trayLst != null && trayLst.S_TYPE.Equals("鎵樼洏")) + { + //鎵樼洏鍒嗘嫞鍥炲簱 + var area = reservoirs.Where(s => s.areaName == "鍏ュ簱鎺ラ┏浣�).FirstOrDefault(); + if (area == null) + { + LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鍏ュ簱鎺ラ┏浣嶏紒", "鏉哀"); + return false; + } + //(2.1)鍏堟煡璇㈠叆搴撴帴椹充綅鏄惁涓虹┖锛屽鏋滀负绌虹洿鎺ョ敓鎴愬埌鍏ュ簱鐨勪换鍔�+ var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); + if (anyLoc.Any()) + { + //鐢熸垚鍒版帴椹充綅鐨勪换鍔�+ var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "鎵樼洏鍒嗘嫞鍥炲簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鎵樼洏鍒嗘嫞鍥炲簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + } + else + { + //鏂欑鍥炲簱 + var inbound = new Inbound() + { + areaCode = "LXLKQ" + }; + var wh = new Warehouse(inbound); + var stored = await wh.StoreItemAsync(); + if (stored == null) + { + LogHelper.Info($"鏈煡璇㈠埌{inbound.areaCode}鍙敤璐т綅锛�, "鏉哀"); + return false; + } + + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, stored.loationCode, "鏂欑鍒嗘嫞鍥炲簱" , mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鏂欑鍒嗘嫞鍥炲簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + return true; + } + + /// <summary> + /// 瑙g粦鍥炲簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static async Task<bool> UnbindReturn(WMSTask mst, List<ReservoirArea> reservoirs) + { + var trayLst = ContainerHelper.GetCntr(mst.S_CNTR_CODE); + if (trayLst != null && trayLst.S_TYPE.Equals("鎵樼洏")) + { + //鎵樼洏鍒嗘嫞鍥炲簱 + var area = reservoirs.Where(s => s.areaName == "鍏ュ簱鎺ラ┏浣�).FirstOrDefault(); + if (area == null) + { + LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鍏ュ簱鎺ラ┏浣嶏紒", "鏉哀"); + return false; + } + //(2.1)鍏堟煡璇㈠叆搴撴帴椹充綅鏄惁涓虹┖锛屽鏋滀负绌虹洿鎺ョ敓鎴愬埌鍏ュ簱鐨勪换鍔�+ var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); + if (anyLoc.Any()) + { + //鐢熸垚鍒版帴椹充綅鐨勪换鍔�+ var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "鎵樼洏瑙g粦鍥炲簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鎵樼洏瑙g粦鍥炲簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + } + else + { + //鏂欑鍥炲簱 + var inbound = new Inbound() + { + areaCode = "LXLKQ" + }; + var wh = new Warehouse(inbound); + var stored = await wh.StoreItemAsync(); + if (stored == null) + { + LogHelper.Info($"鏈煡璇㈠埌{inbound.areaCode}鍙敤璐т綅锛�, "鏉哀"); + return false; + } + + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, stored.loationCode, "鏂欑瑙g粦鍥炲簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鏂欑瑙g粦鍥炲簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + return true; + } + + /// <summary> + /// 绌烘墭鍥炲簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static async Task<bool> EmptyPalletReturn(WMSTask mst, List<ReservoirArea> reservoirs) + { + var trayLst = ContainerHelper.GetCntr(mst.S_CNTR_CODE); + if (trayLst != null && trayLst.S_TYPE.Equals("鎵樼洏")) + { + //鎵樼洏绌烘墭鍥炲簱 + var area = reservoirs.Where(s => s.areaName == "鍏ュ簱鎺ラ┏浣�).FirstOrDefault(); + if (area == null) + { + LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鍏ュ簱鎺ラ┏浣嶏紒", "鏉哀"); + return false; + } + //(2.1)鍏堟煡璇㈠叆搴撴帴椹充綅鏄惁涓虹┖锛屽鏋滀负绌虹洿鎺ョ敓鎴愬埌鍏ュ簱鐨勪换鍔�+ var anyLoc = LocationHelper.GetLocAreaList(area.areaCode); + if (anyLoc.Any()) + { + //鐢熸垚鍒版帴椹充綅鐨勪换鍔�+ var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, anyLoc.FirstOrDefault().S_CODE, "鎵樼洏绌烘墭鍥炲簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鎵樼洏绌烘墭鍥炲簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + } + else + { + //鏂欑绌烘墭鍥炲簱 + var inbound = new Inbound() + { + areaCode = "LXLKQ" + }; + var wh = new Warehouse(inbound); + var stored = await wh.StoreItemAsync(); + if (stored == null) + { + LogHelper.Info($"鏈煡璇㈠埌{inbound.areaCode}鍙敤璐т綅锛�, "鏉哀"); + return false; + } + + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, stored.loationCode, "鏂欑绌烘墭鍥炲簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鏂欑绌烘墭鍥炲簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + return true; + } + + /// <summary> + /// 绌烘墭鍑哄簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static bool EmptyPalletOutbound(WMSTask mst) + { + var result = true; + var scheduler = new EmptyPalletOutboundScheduler(mst.S_START_AREA); + + var outbound = new Outbound + { + endArea = mst.S_END_AREA, + endBit = mst.S_END_LOC, + requiredCount = 1, + taskType = "绌烘墭鍑哄簱" + }; + // 璇锋眰鍑哄簱 + var tasks = scheduler.GenerateEmptyPalletTasks(outbound); + + foreach (var item in tasks) + { + // 鍒涘缓鍑哄簱浠诲姟 + var res = TaskProcess.HYCreateTransport(item.S_START_LOC, item.S_END_LOC, item.S_TYPE, item.S_CNTR_CODE, mst.S_CODE); + mst.S_START_LOC = item.S_START_LOC; + mst.S_CNTR_CODE = item.S_CNTR_CODE; + //淇敼绌烘墭鍑哄簱璧风偣鍜屾墭鐩樼爜 + UpdateTask(mst,1); + if (!res) + { + LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); + return false; + } + } + return result; } /// <summary> @@ -1370,13 +1588,17 @@ if (locList.Any()) { var startLoc = WMSHelper.GetCntrLoc(mst.S_CNTR_CODE); - // 鍒涘缓鍑哄簱浠诲姟 - var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, locList.FirstOrDefault().S_CODE, mst.S_TYPE, mst.S_CNTR_CODE, mst.S_CODE); - if (!res) + if (startLoc != null) { - LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); - return false; + // 鍒涘缓鍑哄簱浠诲姟 + var res = TaskProcess.HYCreateTransport(startLoc.S_LOC_CODE, locList.FirstOrDefault().S_CODE, mst.S_TYPE, mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); + return false; + } } + } return true; @@ -1595,13 +1817,17 @@ 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 -- Gitblit v1.9.1