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