From b079910e5de15863c26e479ffab15cc45d706f1a Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期一, 19 五月 2025 16:25:22 +0800 Subject: [PATCH] 测试修复轮询出库、抽检流程的问题 --- ServiceCore/OutboundCore.cs | 72 +++++++++++++++++++----------------- 1 files changed, 38 insertions(+), 34 deletions(-) diff --git a/ServiceCore/OutboundCore.cs b/ServiceCore/OutboundCore.cs index 29e3cda..488821a 100644 --- a/ServiceCore/OutboundCore.cs +++ b/ServiceCore/OutboundCore.cs @@ -2,8 +2,9 @@ using HH.WCS.Mobox3.DSZSH.Consts; using HH.WCS.Mobox3.DSZSH.Helpers; -using HH.WCS.Mobox3.DSZSH.Helpers.Model; using HH.WCS.Mobox3.DSZSH.Models; + +using Newtonsoft.Json; namespace HH.WCS.Mobox3.DSZSH.ServiceCore { public class OutboundCore { @@ -15,42 +16,35 @@ .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc).First(); if (order == null) { - LogHelper.Info("杞锛氭殏鏃犲緟鎵ц鐨勫嚭搴撳崟"); + LogHelper.Info("杞--鍑哄簱--鏆傛棤寰呮墽琛岀殑Order"); return; } - if (db.Queryable<TN_Outbound_Detail>() - .First(d => d.S_NO == order.S_NO && d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓� != null) { - LogHelper.Debug("杞锛氫笂涓�釜鍑哄簱浠诲姟浠嶅湪杩涜涓�); + var lastDetail = db.Queryable<TN_Outbound_Detail>() + .First(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�; + + if (lastDetail != null) { + LogHelper.Info($"杞--鍑哄簱--涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail)); return; } var detail = db.Queryable<TN_Outbound_Detail>() - .Where(d => d.S_NO == order.S_NO && d.N_B_STATE == SpotStateCode.宸叉墽琛屽緟鐢熸垚浠诲姟) + .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == SpotStateCode.宸叉墽琛屽緟鐢熸垚浠诲姟) .OrderBy(d => d.T_CREATE, SqlSugar.OrderByType.Asc).First(); if (detail == null) { //order.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓� - LogHelper.Info("杞鍑哄簱锛氭殏鏃犲緟鎵ц鐨勪换鍔�); + LogHelper.Info($"杞--鍑哄簱--褰撳墠Order '{order.S_NO}' 鏆傛棤寰呮墽琛岀殑浠诲姟"); return; } - var startLocCntrRel = db.Queryable<TN_Location, TN_Loc_Container, TN_CG_Detail> - ((l, c, d) => l.S_CODE == c.S_LOC_CODE && c.S_CNTR_CODE == d.S_CNTR_CODE) - // 绛涢�瑕佹眰鐨勭墿鏂欑紪鐮佸拰鎵规鍙�- .Where((l, c, d) => d.S_CG_ID == detail.S_CG_ID && d.S_BATCH_NO == detail.S_BATCH_NO) - // 濡傛灉涓嶆槸寮哄埗鍑哄簱锛岀墿鏂欑姸鎬佸繀椤诲繀椤诲悎鏍�- // 鍚﹀垯锛屽彧瑕佷笉鏄�姝e湪妫�獙 鐨勭墿鏂欏嵆鍙�- .Where((l, c, d) => (detail.N_FORCE == 0 && d.N_ITEM_STATE == 0 && d.S_ITEM_STATE == "鍚堟牸") - || (detail.N_FORCE != 0 && d.N_ITEM_STATE != 3 && d.S_ITEM_STATE != "姝e湪妫�獙")) - // 鎺掑簭锛氭暟瀛楄秺灏忚秺浼樺厛锛屽悎鏍硷紴寰呮锛炰笉鍚堟牸 - .OrderBy((l, c, d) => d.N_ITEM_STATE) - .OrderBy(l => l.N_LAYER) - .Select((l, c) => c).First(); + var startLocCntrRel = db.Queryable<TN_Loc_Container>() + .Where(c => c.S_CNTR_CODE == detail.S_CNTR_CODE) + .First(); if (startLocCntrRel == null) { - LogHelper.Info("杞锛氬嚭搴擄細娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�); + LogHelper.Info($"杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); return; } @@ -60,7 +54,7 @@ .Where(ExprHelper.LocIsEmpty).First(); if (endLoc == null) { - LogHelper.Info("杞锛氬嚭搴擄細娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�); + LogHelper.Info($"杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛丼_NO涓�'{detail.S_OO_NO}'锛岃姹侫rea涓�'{detail.S_END_AREA}'"); return; } @@ -68,16 +62,15 @@ detail.N_B_STATE = SpotStateCode.浠诲姟鎵ц涓� if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { tran.RollbackTran(); - LogHelper.Info($"杞锛氬嚭搴擄細鏇存柊澶辫触锛氫慨鏀规槑缁嗚〃鐘舵�涓哄畬鎴�); + LogHelper.Info($"杞--鍑哄簱--淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚澶辫触锛�); } - if (TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE, + if (!TaskHelper.LogCreateTask(startLocCntrRel.S_LOC_CODE, startLocCntrRel.S_CNTR_CODE, endLoc.S_CODE, TaskName.鎴愬搧鑳跺嚭搴�) { - tran.CommitTran(); - } - else { tran.RollbackTran(); } + + tran.CommitTran(); } } catch (Exception ex) { @@ -86,28 +79,39 @@ } public static void UpdateTaskState(int spotStateCode) { + var db = DbHelper.GetDbClient(); var detail = db.Queryable<TN_Outbound_Detail>() - .First(d => d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�; + .First(d => d.N_B_STATE == SpotStateCode.浠诲姟鎵ц涓�; if (detail == null) { - LogHelper.Info("褰撳墠娌℃湁鎵ц涓殑鍑哄簱鍗曟槑缁嗛」鐩�); + LogHelper.Info("鍑哄簱--AGV鍙栬揣--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒"); return; } using (var tran = db.Ado.UseTran()) { detail.N_B_STATE = spotStateCode; - db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand(); + if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info("鍑哄簱--AGV鍙栬揣锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); + return; + } - if (db.Queryable<TN_Outbound_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 2) == - db.Queryable<TN_Outbound_Detail>().Count(d => d.S_NO == detail.S_NO)) { + var finishedCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO && d.N_B_STATE == 3); + var allCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO); - if (db.Updateable<TN_Check_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.浠诲姟鎵ц瀹屾垚) - .Where(it => it.S_NO == detail.S_NO) + LogHelper.Info($"鍑哄簱--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount} / {allCount}"); + + if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚 + + if (db.Updateable<TN_Outbound_Order>().SetColumns(it => it.N_B_STATE == SpotStateCode.浠诲姟鎵ц瀹屾垚) + .Where(it => it.S_NO == detail.S_OO_NO) .ExecuteCommand() <= 0) { + tran.RollbackTran(); - LogHelper.Info("淇敼Order鐘舵�閿欒"); + LogHelper.Info("鍑哄簱--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�); + return; } } -- Gitblit v1.9.1