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 | 1473 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 1,142 insertions(+), 331 deletions(-) diff --git a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs index 2cf2ffd..178735f 100644 --- a/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs +++ b/HH.WCS.Mobox3.HangYang/process/TaskProcess.cs @@ -15,8 +15,11 @@ using System.Linq; using System.Reflection; using System.Security.Cryptography; +using System.Text; using System.Threading.Tasks; +using static HH.WCS.HangYang.api.OtherModel.Putaway_Order_In; using static HH.WCS.HangYang.LISTA.process.HttpModel; +using static HH.WCS.HangYang.util.Settings; using static HH.WCS.HangYang.wms.WMSHelper; using static System.Runtime.CompilerServices.RuntimeHelpers; @@ -44,7 +47,7 @@ { LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}"); - LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList(),mst.S_NOTE); + LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList(), mst.S_NOTE); } } @@ -83,7 +86,7 @@ internal static bool Intercept(WCSTask mst) { var result = false; - + return result; } @@ -464,6 +467,7 @@ return result; } item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE; + item.S_ITEM_NAME = itemType.S_ITEM_NAME; } var groupedInOrders = model.InOrderDetail @@ -475,6 +479,9 @@ S_OP_TYPE = model.S_OP_TYPE, S_BS_TYPE = model.S_BS_TYPE, S_NOTE = model.S_NOTE, + S_FACTORY = "HY001", + S_WH_CODE = "CK001", + S_AREA_CODE = group.Key.Equals("鏂欑搴�) ? "LXLKQ" : "TPLKQ", InOrderDetail = group.Select(detail => { // 淇敼 group 涓殑 S_IO_NO 瀛楁涓�S_NO 鐨勫� @@ -516,7 +523,7 @@ /// <returns></returns> public static Result GetOutboundOrder(OutOrder model) { - Result result = new Result() { success = false, }; + Result result = new Result() { success = false }; try { if (model == null || !model.OutOrderDetail.Any()) @@ -525,6 +532,7 @@ return result; } + // 绗竴姝ワ細璁剧疆鐗╂枡灞炴�淇℃伅 foreach (var item in model.OutOrderDetail) { var itemType = WMSHelper.GetItemType(item.S_ITEM_CODE); @@ -534,26 +542,40 @@ return result; } item.S_EXT_ATTR1 = itemType.S_ITEM_TYPE; + item.S_ITEM_NAME = itemType.S_ITEM_NAME; + item.C_CLEAN = itemType.C_CLEAN; } - var groupedInOrders = model.OutOrderDetail - .GroupBy(detail => detail.S_EXT_ATTR1) // 鎸夌墿鏂欏睘鎬у垎缁�- .Select((group, index) => new OutOrder - { - S_NO = $"{model.S_BS_NO}_{index + 1}", // 鎷兼帴鏉ユ簮鍗曞彿 - S_BS_NO = model.S_BS_NO, - S_OP_TYPE = model.S_OP_TYPE, - S_NOTE = model.S_NOTE, - OutOrderDetail = group.Select(detail => - { - // 淇敼 group 涓殑 S_IO_NO 瀛楁涓�S_NO 鐨勫� - detail.S_OO_NO = $"{model.S_BS_NO}_{index + 1}"; - detail.S_BS_NO = model.S_BS_NO; - return detail; - }).ToList() // 鍒嗙粍鍚庣殑鏄庣粏 - }) - .ToList(); - var res = WMSHelper.CreateOrderOut(groupedInOrders); + // 绗簩姝ワ細鍏堟寜鐗╂枡灞炴�鍒嗙粍锛屽啀鎸夋槸鍚︽竻娲楀垎缁�+ var groupedOrders = model.OutOrderDetail + .GroupBy(detail => new + { + MaterialType = detail.S_EXT_ATTR1, + IsClean = detail.C_CLEAN + }) // 鎸夌墿鏂欏睘鎬у拰鏄惁娓呮礂鍙岄噸鍒嗙粍 + .Select((group, index) => new OutOrder + { + S_NO = $"{model.S_BS_NO}_{index + 1}", + S_BS_NO = model.S_BS_NO, + S_OP_TYPE = model.S_OP_TYPE, + S_OUT_TO = model.S_OUT_TO, + S_NOTE = model.S_NOTE, + S_BS_TYPE = "ERP", + S_FACTORY = "HY001", + S_WH_CODE = "CK001", + S_AREA_CODE = group.Key.MaterialType.Equals("鏂欑搴�) ? "LXLKQ" : "TPLKQ", + C_CLEAN = group.Key.IsClean, // 娣诲姞鏄惁娓呮礂鏍囪 + OutOrderDetail = group.Select(detail => + { + detail.S_OO_NO = $"{model.S_BS_NO}_{index + 1}"; + detail.S_BS_NO = model.S_BS_NO; + return detail; + }).ToList() + }) + .ToList(); + + // 绗笁姝ワ細璋冪敤鍒涘缓鍑哄簱鍗曟柟娉�+ var res = WMSHelper.CreateOrderOut(groupedOrders); if (res) { result.success = true; @@ -565,332 +587,1051 @@ result.success = false; result.errMsg = ex.Message; var st = new System.Diagnostics.StackTrace(ex, true); - var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 + var frame = st.GetFrame(0); if (frame != null) { - LogHelper.Error($"GetInboundOrder鍏ュ簱鍗曟柊澧炲嚭鐜伴敊璇紒锛�, ex); + LogHelper.Error($"GetOutboundOrder鍑哄簱鍗曟柊澧炲嚭鐜伴敊璇紒", ex); LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); } return result; } - } + + ///// <summary> + ///// 鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟 + ///// </summary> + ///// <param name="mst"></param> + ///// <returns></returns> + //internal static bool CreateInTask(WMSTask mst) + //{ + // try + // { + // var result = false; + // var taskState = mst.S_B_STATE.Trim(); + // if (taskState == "绛夊緟") + // { + // if (!string.IsNullOrEmpty(mst.S_START_LOC)) + // { + // //鏉哀鎵�湁搴撳尯 + // var reservoirs = Settings.ReservoirAreas.ToList(); + // if (!reservoirs.Any() || reservoirs == null) + // { + // LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鏉哀鐨勫簱鍖猴紒", "鏉哀"); + // return false; + // } + // if (mst.S_TYPE == "鎵樼洏杞繍") + // { + // var lxAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鏂欑鍏ュ簱缂撳瓨浣�).FirstOrDefault().areaCode); + // if (lxAnyLoc.Any()) + // { + // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, lxAnyLoc.FirstOrDefault().S_CODE, "鏂欑缂撳瓨浣嶅叆搴�, mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鏂欑缂撳瓨浣嶅叆搴撲换鍔″垱寤哄け璐ワ紒", "鏉哀"); + // return false; + // } + // WMSHelper.UpdateStatus(mst, 1); + // } + // else + // { + // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + // if (rkAnyLoc.Any()) + // { + // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鏂欑鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // WMSHelper.UpdateStatus(mst, 1); + // //鏍囪涓哄悎鎵�+ // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鏂欑鍚堟墭"); + // } + // else + // { + // LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + // return false; + // } + // } + // } + // if (mst.S_TYPE == "鎵樼洏鍏ュ簱") + // { + // //1.鏌ヨ涓嬩笅搴撻噷闈㈡槸鍚︽湁瑕佸悎鎵樼殑鎵樼洏 + // var locMerge = WMSHelper.GetLocMerge(mst.S_CNTR_CODE); + // if (locMerge != null) + // { + // //锛�.1锛夊鏋滄湁瑕佸悎鎵樼殑鎵樼洏灏卞幓鍒ゆ柇涓�笅鍚堟墭宸ヤ綅鏄惁涓虹┖ + // var anyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍚堟墭鍖�).FirstOrDefault().areaCode); + // if (anyLoc.Any()) + // { + + // foreach (var item in anyLoc) + // { + // //鐢熸垚涓�潯鍑哄簱鐨勪换鍔�+ // var relevancys = Settings.Relevancys.Where(s => s.InLoc == item.S_CODE).FirstOrDefault(); + // if (relevancys == null) + // { + // LogHelper.Info($"Settings鏈煡璇㈠埌鍚堟墭鍏ュ簱浣峽item.S_CODE}瀵瑰簲鐨勫嚭搴撲綅锛�, "鏉哀"); + // continue; + // } + // //鐢熸垚鍒板悎鎵樺尯鐨勪换鍔�+ // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, item.S_CODE, "鐮佺洏鍚堟墭鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏鍚堟墭鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // res = TaskProcess.HYCreateTransport(locMerge.S_LOC_CODE, relevancys.OutLoc, "鐮佺洏鍚堟墭鍑哄簱", locMerge.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏鍚堟墭鍑哄簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // //锛�.2锛夊鏋滃悎鎵樺伐浣嶄负绌哄氨鐩存帴鍚堟墭鍒板悎鎵樺伐浣嶉噷闈紝鍚屾椂鐢熸垚涓�釜鍑哄簱浠诲姟鎶婅鍚堟墭鐨勬墭鐩樺嚭鍑烘潵锛堟爣璁颁负瑕佸悎鎵橈級 + // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鍚堟墭"); + // WMSHelper.UpdateStatus(mst, 1); + // break; + // } + + + // } + // else + // { + // //锛�.3锛夊鏋滃悎鎵樺伐浣嶄笉涓虹┖灏卞幓鍏ュ簱缂撳瓨鍖猴紙鏍囪涓鸿鍚堟墭锛�+ // //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�+ // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + // if (rkAnyLoc.Any()) + // { + // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // WMSHelper.UpdateStatus(mst, 1); + // //鏍囪涓哄悎鎵�+ // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鍚堟墭"); + // } + // else + // { + // LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + // return false; + // } + // } + + // } + // else + // { + // //2.濡傛灉娌℃湁瑕佸悎鎵樼殑鎵樼洏 + // 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 + // { + // //(2.2)濡傛灉鍏ュ簱鎺ラ┏浣嶄笉涓虹┖锛屽垯鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔★紙鏍囪涓轰笉鍚堟墭锛�+ // //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�+ // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + // if (rkAnyLoc.Any()) + // { + // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // WMSHelper.UpdateStatus(mst, 1); + // //鏍囪涓轰笉鍚堟墭 + // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); + // } + // else + // { + // LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + // return false; + // } + + // } + + // } + // } + // if (mst.S_TYPE == "鍚堟墭鍥炲簱") + // { + // var trayLst = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE); + // if (trayLst.Any()) + // { + // //婊℃墭鍥炲簱 + // 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 + // { + // //(2.2)濡傛灉鍏ュ簱鎺ラ┏浣嶄笉涓虹┖锛屽垯鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔★紙鏍囪涓轰笉鍚堟墭锛�+ // //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�+ // var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + // if (rkAnyLoc.Any()) + // { + // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // WMSHelper.UpdateStatus(mst, 1); + // //鏍囪涓轰笉鍚堟墭 + // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); + // } + // else + // { + // LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + // return false; + // } + + // } + // } + // else + // { + // //绌烘墭鍥炲簱 + // 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 rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + // if (rkAnyLoc.Any()) + // { + // var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + // if (!res) + // { + // LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + // return false; + // } + // //鏍囪涓轰笉鍚堟墭 + // ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); + // WMSHelper.UpdateStatus(mst, 1); + + // } + // else + // { + // LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + // return false; + // } + // } + // } + // } + // if (mst.S_TYPE == "鏂欑鍑哄簱") + // { + + // //婊℃墭鍥炲簱 + // 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 + // { + // LogHelper.Info("鏂欑鐮佺洏鍖烘湭鏈夊彲鐢ㄨ揣浣嶏紒", "鏉哀"); + // } + // } + // } + // } + // else { result = true; } + // return result; + // } + // catch (Exception ex) + // { + // var st = new System.Diagnostics.StackTrace(ex, true); + // var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 + // if (frame != null) + // { + // LogHelper.Error($"CreateInTask鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟鍑虹幇閿欒锛侊紒", ex); + // LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); + // LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); + // LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + // } + // return false; + // } + + //} + + #region 绛夊緟浣滀笟 /// <summary> /// 鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟 /// </summary> /// <param name="mst"></param> /// <returns></returns> - internal static bool CreateInTask(WMSTask mst) + internal static async Task<bool> CreateInTask(WMSTask mst) { try { - var result = false; - var taskState = mst.S_B_STATE.Trim(); - if (taskState == "绛夊緟") + if (mst.S_B_STATE.Trim() != "绛夊緟") return true; + //if (string.IsNullOrEmpty(mst.S_START_LOC)) return false; + + var reservoirs = Settings.ReservoirAreas?.ToList(); + if (reservoirs == null || !reservoirs.Any()) { - if (!string.IsNullOrEmpty(mst.S_START_LOC)) - { - //鏉哀鎵�湁搴撳尯 - var reservoirs = Settings.ReservoirAreas.ToList(); - if (!reservoirs.Any() || reservoirs == null) - { - LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鏉哀鐨勫簱鍖猴紒", "鏉哀"); - return false; - } - if (mst.S_TYPE == "鎵樼洏杞繍") - { - var lxAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鏂欑鍏ュ簱缂撳瓨浣�).FirstOrDefault().areaCode); - if (lxAnyLoc.Any()) - { - - var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, lxAnyLoc.FirstOrDefault().S_CODE, "鏂欑缂撳瓨浣嶅叆搴�, mst.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鏂欑缂撳瓨浣嶅叆搴撲换鍔″垱寤哄け璐ワ紒", "鏉哀"); - return false; - } - WMSHelper.UpdateStatus(mst, 1); - } - else - { - var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); - if (rkAnyLoc.Any()) - { - var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鏂欑鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); - return false; - } - WMSHelper.UpdateStatus(mst, 1); - //鏍囪涓哄悎鎵�- ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鏂欑鍚堟墭"); - } - else - { - LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); - return false; - } - } - } - if (mst.S_TYPE == "鎵樼洏鍏ュ簱") - { - //1.鏌ヨ涓嬩笅搴撻噷闈㈡槸鍚︽湁瑕佸悎鎵樼殑鎵樼洏 - var locMerge = WMSHelper.GetLocMerge(mst.S_CNTR_CODE); - if (locMerge != null) - { - //锛�.1锛夊鏋滄湁瑕佸悎鎵樼殑鎵樼洏灏卞幓鍒ゆ柇涓�笅鍚堟墭宸ヤ綅鏄惁涓虹┖ - var anyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍚堟墭鍖�).FirstOrDefault().areaCode); - if (anyLoc.Any()) - { - - //鐢熸垚涓�潯鍑哄簱鐨勪换鍔�- var relevancys = Settings.Relevancys.Where(s => s.InLoc == anyLoc.FirstOrDefault().S_CODE).FirstOrDefault(); - if (relevancys == null) - { - LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鍚堟墭鍏ュ簱浣嶅搴旂殑鍑哄簱浣嶏紒", "鏉哀"); - return false; - } - //鐢熸垚鍒板悎鎵樺尯鐨勪换鍔�- 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; - } - res = TaskProcess.HYCreateTransport(locMerge.S_LOC_CODE, relevancys.OutLoc, "鐮佺洏鍚堟墭鍑哄簱", locMerge.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鐮佺洏鍚堟墭鍑哄簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); - return false; - } - //锛�.2锛夊鏋滃悎鎵樺伐浣嶄负绌哄氨鐩存帴鍚堟墭鍒板悎鎵樺伐浣嶉噷闈紝鍚屾椂鐢熸垚涓�釜鍑哄簱浠诲姟鎶婅鍚堟墭鐨勬墭鐩樺嚭鍑烘潵锛堟爣璁颁负瑕佸悎鎵橈級 - ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鍚堟墭"); - - WMSHelper.UpdateStatus(mst, 1); - } - else - { - //锛�.3锛夊鏋滃悎鎵樺伐浣嶄笉涓虹┖灏卞幓鍏ュ簱缂撳瓨鍖猴紙鏍囪涓鸿鍚堟墭锛�- //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�- var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); - if (rkAnyLoc.Any()) - { - var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); - return false; - } - WMSHelper.UpdateStatus(mst, 1); - //鏍囪涓哄悎鎵�- ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鍚堟墭"); - } - else - { - LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); - return false; - } - } - - } - else - { - //2.濡傛灉娌℃湁瑕佸悎鎵樼殑鎵樼洏 - 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 - { - //(2.2)濡傛灉鍏ュ簱鎺ラ┏浣嶄笉涓虹┖锛屽垯鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔★紙鏍囪涓轰笉鍚堟墭锛�- //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�- var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); - if (rkAnyLoc.Any()) - { - var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); - return false; - } - WMSHelper.UpdateStatus(mst, 1); - //鏍囪涓轰笉鍚堟墭 - ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); - } - else - { - LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); - return false; - } - - } - - } - } - if (mst.S_TYPE == "鍚堟墭鍥炲簱") - { - var trayLst = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE); - if (trayLst.Any()) - { - //婊℃墭鍥炲簱 - 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 - { - //(2.2)濡傛灉鍏ュ簱鎺ラ┏浣嶄笉涓虹┖锛屽垯鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔★紙鏍囪涓轰笉鍚堟墭锛�- //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�- var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); - if (rkAnyLoc.Any()) - { - var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); - return false; - } - WMSHelper.UpdateStatus(mst, 1); - //鏍囪涓轰笉鍚堟墭 - ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); - } - else - { - LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); - return false; - } - - } - } - else - { - //绌烘墭鍥炲簱 - 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 rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); - if (rkAnyLoc.Any()) - { - var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); - if (!res) - { - LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); - return false; - } - //鏍囪涓轰笉鍚堟墭 - ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); - WMSHelper.UpdateStatus(mst, 1); - - } - else - { - LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); - return false; - } - } - } - } - if (mst.S_TYPE == "鏂欑鍑哄簱") - { - - //婊℃墭鍥炲簱 - 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 - { - LogHelper.Info("鏂欑鐮佺洏鍖烘湭鏈夊彲鐢ㄨ揣浣嶏紒", "鏉哀"); - } - } - } + LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鏉哀鐨勫簱鍖猴紒", "鏉哀"); + return false; } - else { result = true; } - return result; + + switch (mst.S_TYPE) + { + case "鎵樼洏杞繍": + return HandlePalletTransport(mst, reservoirs); + case "鎵樼洏鍏ュ簱": + return HandlePalletStorage(mst, reservoirs); + case "鍚堟墭鍥炲簱": + return HandleMergeReturn(mst, reservoirs); + case "鍒嗘嫞鍥炲簱": + 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 "鍙戣揣鏆傚瓨": + return PreShipmentStage(mst); + case "鍙戣揣娓呮礂": + return PreShipmentStage(mst); + case "鍙戣揣瑁呴厤": + return PreShipmentStage(mst); + default: + return true; + } } catch (Exception ex) { - var st = new System.Diagnostics.StackTrace(ex, true); - var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 - if (frame != null) + LogErrorDetails(ex); + return false; + } + } + + /// <summary> + /// 鎵樼洏杞繍 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static bool HandlePalletTransport(WMSTask mst, List<ReservoirArea> reservoirs) + { + var res = true; + var lxArea = reservoirs.FirstOrDefault(s => s.areaName == "鏂欑鍏ュ簱缂撳瓨浣�); + if (lxArea != null) + { + var lxLocations = LocationHelper.GetLocAreaList(lxArea.areaCode); + if (lxLocations.Any()) { - LogHelper.Error($"CreateInTask鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟鍑虹幇閿欒锛侊紒", ex); - LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); - LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); - LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); + res = TaskProcess.HYCreateTransport(mst.S_START_LOC, lxLocations.FirstOrDefault().S_CODE, "鏂欑缂撳瓨浣嶅叆搴�, mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鏂欑缂撳瓨浣嶅叆搴撲换鍔″垱寤哄け璐ワ紒", "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); } + } + + var rkArea = reservoirs.FirstOrDefault(s => s.areaName == "鍏ュ簱缂撳瓨鍖�); + if (rkArea == null) return false; + + var rkLocations = LocationHelper.GetLocAreaList(rkArea.areaCode); + if (!rkLocations.Any()) + { + LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); return false; } + res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkLocations.FirstOrDefault().S_CODE, "鏂欑鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + //鏍囪涓哄悎鎵�+ ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鏂欑鍚堟墭"); + return true; } + + /// <summary> + /// 鎵樼洏鍏ュ簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static bool HandlePalletStorage(WMSTask mst, List<ReservoirArea> reservoirs) + { + var result = true; + var locMerge = WMSHelper.GetLocMerge(mst.S_CNTR_CODE); + if (locMerge != null) + { + //锛�.1锛夊鏋滄湁瑕佸悎鎵樼殑鎵樼洏灏卞幓鍒ゆ柇涓�笅鍚堟墭宸ヤ綅鏄惁涓虹┖ + var anyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍚堟墭鍖�).FirstOrDefault().areaCode); + if (anyLoc.Any()) + { + foreach (var item in anyLoc) + { + //鐢熸垚涓�潯鍑哄簱鐨勪换鍔�+ var relevancys = Settings.Relevancys.Where(s => s.InLoc == item.S_CODE).FirstOrDefault(); + if (relevancys == null) + { + LogHelper.Info($"Settings鏈煡璇㈠埌鍚堟墭鍏ュ簱浣峽item.S_CODE}瀵瑰簲鐨勫嚭搴撲綅锛�, "鏉哀"); + continue; + } + //鐢熸垚鍒板悎鎵樺尯鐨勪换鍔�+ var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, item.S_CODE, "鐮佺洏鍚堟墭鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏鍚堟墭鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + res = TaskProcess.HYCreateTransport(locMerge.S_LOC_CODE, relevancys.OutLoc, "鐮佺洏鍚堟墭鍑哄簱", locMerge.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏鍚堟墭鍑哄簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + //锛�.2锛夊鏋滃悎鎵樺伐浣嶄负绌哄氨鐩存帴鍚堟墭鍒板悎鎵樺伐浣嶉噷闈紝鍚屾椂鐢熸垚涓�釜鍑哄簱浠诲姟鎶婅鍚堟墭鐨勬墭鐩樺嚭鍑烘潵锛堟爣璁颁负瑕佸悎鎵橈級 + ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鍚堟墭"); + WMSHelper.UpdateStatus(mst, 1); + break; + } + } + else + { + //锛�.3锛夊鏋滃悎鎵樺伐浣嶄笉涓虹┖灏卞幓鍏ュ簱缂撳瓨鍖猴紙鏍囪涓鸿鍚堟墭锛�+ //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�+ var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + if (rkAnyLoc.Any()) + { + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + //鏍囪涓哄悎鎵�+ ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "鍚堟墭"); + } + else + { + LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + return false; + } + } + + } + else + { + //2.濡傛灉娌℃湁瑕佸悎鎵樼殑鎵樼洏 + 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 + { + //(2.2)濡傛灉鍏ュ簱鎺ラ┏浣嶄笉涓虹┖锛屽垯鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔★紙鏍囪涓轰笉鍚堟墭锛�+ //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�+ var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + if (rkAnyLoc.Any()) + { + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + //鏍囪涓轰笉鍚堟墭 + ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); + } + else + { + LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + return false; + } + + } + + } + return result; + } + + /// <summary> + /// 鍚堟墭鍥炲簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static bool HandleMergeReturn(WMSTask mst, List<ReservoirArea> reservoirs) + { + var trayLst = ContainerHelper.GetCntrItemRel(mst.S_CNTR_CODE); + if (trayLst.Any()) + { + //婊℃墭鍥炲簱 + 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 + { + //(2.2)濡傛灉鍏ュ簱鎺ラ┏浣嶄笉涓虹┖锛屽垯鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔★紙鏍囪涓轰笉鍚堟墭锛�+ //鐢熸垚鍒板叆搴撶紦瀛樺尯鐨勪换鍔�+ var rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + if (rkAnyLoc.Any()) + { + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + //鏍囪涓轰笉鍚堟墭 + ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); + } + else + { + LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + return false; + } + + } + } + else + { + //绌烘墭鍥炲簱 + 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 rkAnyLoc = LocationHelper.GetLocAreaList(reservoirs.Where(s => s.areaName == "鍏ュ簱缂撳瓨鍖�).FirstOrDefault().areaCode); + if (rkAnyLoc.Any()) + { + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, rkAnyLoc.FirstOrDefault().S_CODE, "鐮佺洏缂撳瓨鍏ュ簱", mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info("鐮佺洏缂撳瓨鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + //鏍囪涓轰笉鍚堟墭 + ContainerHelper.UpdateCntrAbouts(mst.S_CNTR_CODE, "涓嶅悎鎵�); + WMSHelper.UpdateStatus(mst, 1); + + } + else + { + LogHelper.Info("鍏ュ簱缂撳瓨鍖烘病鏈夌┖璐т綅锛�, "鏉哀"); + return false; + } + } + } + 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> + /// 鏂欑鍑哄簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static bool HandleBoxOutbound(WMSTask mst, List<ReservoirArea> reservoirs) + { + var result = true; + 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 + { + LogHelper.Info("鏂欑鐮佺洏鍖烘湭鏈夊彲鐢ㄨ揣浣嶏紒", "鏉哀"); + } + return result; + } + + /// <summary> + /// 鍙戣揣鏆傚瓨 || 鍙戣揣娓呮礂 || 鍙戣揣瑁呴厤 (鏆傛椂浣跨敤涓�釜鏂规硶澶勭悊) + /// </summary> + /// <param name="mst"></param> + /// <returns></returns> + private static bool PreShipmentStage(WMSTask mst) + { + var locList = LocationHelper.GetLocAreaList(mst.S_END_AREA); + if (locList.Any()) + { + var res = TaskProcess.HYCreateTransport(mst.S_START_LOC, locList.FirstOrDefault().S_CODE, mst.S_TYPE, mst.S_CNTR_CODE, mst.S_CODE); + if (!res) + { + LogHelper.Info($"{mst.S_TYPE}鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); + return false; + } + WMSHelper.UpdateStatus(mst, 1); + } + return true; + } + + /// <summary> + /// 鍙戣揣娓呮礂 + /// </summary> + /// <param name="mst"></param> + /// <returns></returns> + private static bool OutboundCleaning(WMSTask mst) + { + return true; + } + + /// <summary> + /// 鍙戣揣瑁呴厤 + /// </summary> + /// <param name="mst"></param> + /// <returns></returns> + private static bool OutboundAssembly(WMSTask mst) + { + return true; + } + #endregion + + #region 鎵ц浣滀笟 + + /// <summary> + /// 鑾峰彇鎵ц鐨勪綔涓氬垱寤轰换鍔�+ /// </summary> + /// <param name="mst"></param> + /// <returns></returns> + internal static bool exeCreateInTask(WMSTask mst) + { + try + { + if (mst.S_B_STATE.Trim() != "鎵ц") return true; + if (string.IsNullOrEmpty(mst.S_START_LOC)) return false; + + var reservoirs = Settings.ReservoirAreas?.ToList(); + if (reservoirs == null || !reservoirs.Any()) + { + LogHelper.Info("Settings鍑虹幇閿欒鏈煡璇㈠埌鏉哀鐨勫簱鍖猴紒", "鏉哀"); + return false; + } + + switch (mst.S_TYPE) + { + case "閰嶇洏鍑哄簱": + return PalletOutbound(mst); + default: + return true; + } + } + catch (Exception ex) + { + LogErrorDetails(ex); + return false; + } + } + + /// <summary> + /// 閰嶇洏鍑哄簱 + /// </summary> + /// <param name="mst"></param> + /// <param name="reservoirs"></param> + /// <returns></returns> + private static bool PalletOutbound(WMSTask mst) + { + var relevancys = Settings.OutRelevancys.Where(s => s.conLoc == mst.S_END_LOC).FirstOrDefault(); + if (relevancys == null) + { + LogHelper.Info($"Settings鏈煡璇㈠埌闆嗚揣浣峽mst.S_END_LOC}瀵瑰簲鐨勫垎鎷d綅锛�, "鏉哀"); + return false; + } + var locList = LocationHelper.GetLocListEmptyFree(relevancys.sorLoc.ToList()); + if (locList.Any()) + { + var startLoc = WMSHelper.GetCntrLoc(mst.S_CNTR_CODE); + if (startLoc != null) + { + // 鍒涘缓鍑哄簱浠诲姟 + 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; + } + + #endregion + + + + + /// <summary> + /// 閿欒鏃ュ織璁板綍 + /// </summary> + /// <param name="ex">閿欒淇℃伅</param> + private static void LogErrorDetails(Exception ex) + { + var st = new System.Diagnostics.StackTrace(ex, true); + var frame = st.GetFrame(0); + if (frame == null) return; + + var errorDetails = new StringBuilder() + .AppendLine($"閿欒淇℃伅: {ex.Message}") + .AppendLine($"鏂囦欢鍚� {frame.GetFileName()}") + .AppendLine($"琛屽彿: {frame.GetFileLineNumber()}") + .AppendLine($"鍒楀彿: {frame.GetFileColumnNumber()}") + .ToString(); + + LogHelper.Error("CreateInTask鑾峰彇浣滀笟鍒涘缓鍏ュ簱浠诲姟鍑虹幇閿欒锛� + errorDetails, ex); + } + + + + /// <summary> /// 寰幆鍏ュ簱缂撳瓨鍖烘煡璇㈠悎鎵樺伐浣嶅拰鍏ュ簱鎺ラ┏浣嶆槸鍚︽湁绌鸿揣浣嶏紙鍒涘缓浠诲姟锛�@@ -940,7 +1681,7 @@ { return false; } - + //鐢熸垚涓�潯鍑哄簱鐨勪换鍔� var relevancys = Settings.Relevancys.Where(s => s.InLoc == anyLoc.FirstOrDefault().S_CODE).FirstOrDefault(); if (relevancys == null) @@ -969,7 +1710,7 @@ return false; } } - + //涓嶅悎鎵橀�杈� var noCntrAbouts = ContainerHelper.GetCntrAbouts(rkAnyLoc.areaCode, "涓嶅悎鎵�).FirstOrDefault(); if (noCntrAbouts != null) @@ -989,7 +1730,7 @@ } //2.2濡傛灉鍏ュ簱鎺ラ┏浣嶄负绌哄垱寤虹爜鐩樻帴椹冲叆搴撶殑浠诲姟 //鐢熸垚鍒版帴椹充綅鐨勪换鍔�- res = TaskProcess.HYCreateTransport(noCntrAbouts.S_LOC_CODE, anyLoc.FirstOrDefault().S_CODE, "鐮佺洏鎺ラ┏鍏ュ簱", noCntrAbouts.S_CNTR_CODE,list.S_CODE); + res = TaskProcess.HYCreateTransport(noCntrAbouts.S_LOC_CODE, anyLoc.FirstOrDefault().S_CODE, "鐮佺洏鎺ラ┏鍏ュ簱", noCntrAbouts.S_CNTR_CODE, list.S_CODE); if (!res) { LogHelper.Info("鐮佺洏鎺ラ┏鍏ュ簱浠诲姟鍒涘缓澶辫触锛�, "鏉哀"); @@ -1076,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 @@ -1110,7 +1855,7 @@ WMSHelper.UpdateTaskStatus(list.S_CODE, 1); ContainerHelper.UpdateCntrAbouts(list.S_CNTR_CODE, ""); } - + result.success = true; return result; @@ -1142,7 +1887,7 @@ try { // 鍒涘缓璋冨害鍣�- var scheduler = new DoubleDeepOutboundScheduler(distributionCntr); + var scheduler = new DoubleDeepOutboundScheduler(distributionCntr); var listOut = new List<Outbound>(); foreach (var item in distributionCntr) @@ -1159,15 +1904,81 @@ } // 璇锋眰鍑哄簱 var tasks = scheduler.GenerateOutboundTasks(listOut); + foreach (var item in tasks) { - // 鍒涘缓鍑哄簱浠诲姟 - var res = TaskProcess.HYCreateTransport(item.S_START_LOC, item.S_END_LOC, item.S_TYPE, item.S_CNTR_CODE, item.S_OP_CODE); - UpdateDistributionCntrState("浣滀笟涓�, item.S_CNTR_CODE); - if (!res) + var wmsTask = new WMSTask(); + if (string.IsNullOrEmpty(item.S_OP_CODE)) { - LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); - return false; + wmsTask = new WMSTask + { + S_CNTR_CODE = item.S_CNTR_CODE, + S_CODE = WMSHelper.GenerateTaskNo(), + S_START_LOC = item.S_START_LOC, + S_START_AREA = item.S_START_AREA, + S_END_LOC = item.S_END_LOC, + S_END_AREA = item.S_END_AREA, + S_START_WH = "CK001", + S_END_WH = "CK001", + N_B_STATE = 1, + S_B_STATE = "鎵ц", + N_TYPE = 2, + S_TYPE = "閰嶇洏鍑哄簱" + }; + if (!WMSHelper.CreateWmsTask(wmsTask)) + { + return false; + } + } + + if (item.S_END_AREA == "LXLKQ") + { + // 鍒涘缓鍑哄簱浠诲姟 + var res = TaskProcess.HYCreateTransport(item.S_START_LOC, item.S_END_LOC, item.S_TYPE, item.S_CNTR_CODE, wmsTask.S_CODE); + UpdateDistributionCntrState(1, 2, item.S_CNTR_CODE); + if (!res) + { + LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); + return false; + } + } + else + { + //鏍规嵁鍒嗘嫞璐т綅鍘绘煡璇㈤厤缃紝濡傛灉鍒嗘嫞鍖烘病鏈夌┖璐т綅灏卞幓鍑哄簱鍒嗘嫞鏆傚瓨鍖�+ var relevancys = Settings.OutRelevancys.Where(s => s.conLoc == item.S_END_LOC).FirstOrDefault(); + if (relevancys == null) + { + LogHelper.Info($"Settings鏈煡璇㈠埌闆嗚揣浣峽item.S_END_LOC}瀵瑰簲鐨勫垎鎷d綅锛�, "鏉哀"); + break; + } + var locList = LocationHelper.GetLocListEmptyFree(relevancys.sorLoc.ToList()); + if (locList.Any()) + { + // 鍒涘缓鍑哄簱浠诲姟 + var res = TaskProcess.HYCreateTransport(item.S_START_LOC, locList.FirstOrDefault().S_CODE, item.S_TYPE, item.S_CNTR_CODE, wmsTask.S_CODE); + UpdateDistributionCntrState(1, 2, item.S_CNTR_CODE); + if (!res) + { + LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); + return false; + } + } + else + { + var reservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "鎷i�缂撳瓨鍖�).FirstOrDefault(); + var lxLocations = LocationHelper.GetLocAreaList(reservoirs.areaCode); + if (lxLocations.Any()) + { + // 鍒涘缓鍑哄簱浠诲姟 + var res = TaskProcess.HYCreateTransport(item.S_START_LOC, lxLocations.FirstOrDefault().S_CODE, "閰嶇洏缂撳瓨", item.S_CNTR_CODE, wmsTask.S_CODE); + UpdateDistributionCntrState(1, 2, item.S_CNTR_CODE); + if (!res) + { + LogHelper.Info($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″垱寤哄嚭搴撲换鍔″け璐ワ紒锛�); + return false; + } + } + } } } return true; @@ -1178,7 +1989,7 @@ var frame = st.GetFrame(0); // 鑾峰彇绗竴涓爢鏍堝抚 if (frame != null) { - LogHelper.Error($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔★紒锛�, ex); + LogHelper.Error($"鏍规嵁閰嶇洏鍗曠敓鎴愬嚭搴撲换鍔″け璐ex.Message}锛侊紒", ex); LogHelper.Error($"鏂囦欢鍚� {frame.GetFileName()}", ex); LogHelper.Error($"琛屽彿: {frame.GetFileLineNumber()}", ex); LogHelper.Error($"鍒楀彿: {frame.GetFileColumnNumber()}", ex); -- Gitblit v1.9.1