From 6b43055b5aa32dbea0dacee5a0235b0d5a76c293 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期五, 30 五月 2025 17:19:35 +0800
Subject: [PATCH] 优化后台报错信息,空箱入库容器号增加检查逻辑

---
 core/WCSCore.cs |  170 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 88 insertions(+), 82 deletions(-)

diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index e5a61f9..312a7a3 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Threading.Tasks;
 
+using HH.WCS.Mobox3.DSZSH.api;
 using HH.WCS.Mobox3.DSZSH.device;
 using HH.WCS.Mobox3.DSZSH.models;
 using HH.WCS.Mobox3.DSZSH.process;
@@ -83,10 +84,13 @@
                     WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
                     TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣
 
-                    if (TN_Task.S_TYPE == TaskName.鎴愬搧鑳跺嚭搴� {
+                    if (TN_Task.S_TYPE == TaskName.C鎴愬搧鑳跺嚭搴� {
                         var nextOutboundTask = Task.Run(() => {
                             UpdateOutboundTaskState(3);
                         });
+                        //var pickUpReturnErpTask = Task.Run(() => {
+                        //    PickUpReturnErp(TN_Task);
+                        //});
                     }
 
                     break;
@@ -106,6 +110,10 @@
                     //    });
                     //}
 
+                    var recordTask = Task.Run(() => {
+                        RecordTaskTable(TN_Task);
+                    });
+
                     break;
                 case 7: // 寮傚父
                     TaskProcess.OperateStatus(TN_Task, 7); // 寮傚父澶勭悊
@@ -118,6 +126,68 @@
             //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus锛屾坊鍔犱换鍔″姩浣滃叧绯昏〃
 
             return true;
+        }
+
+        private static void RecordTaskTable(TN_Task task) {
+            var db = new SqlHelper<object>().GetInstance();
+            var info = "";
+
+            try {
+                var cgDetail = new TN_CG_Detail();
+                
+                var emptyTask = false;
+                if (task.S_TYPE != TaskName.H濂借繍绠盻绌虹涓婄嚎 && task.S_TYPE != TaskName.H濂借繍绠盻绌虹鍏ュ簱 &&
+                    task.S_TYPE != TaskName.T鎵樼洏_绌烘墭涓婄嚎 && task.S_TYPE != TaskName.T鎵樼洏_绌烘墭鍏ュ簱) {
+                    // 闈炵┖鎵樹换鍔★紙绌烘墭浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅锛�+                    emptyTask= true;
+                    cgDetail = db.Queryable<TN_CG_Detail>()
+                        .Where(d => d.S_CNTR_CODE == task.S_CNTR_CODE)
+                        .First();
+
+                    if (cgDetail == null) {
+                        info = $"浠诲姟{task.S_CODE}瀹屾垚锛岃褰曞嚭鍏ュ簱澶辫触锛氭棤娉曞湪瀹瑰櫒璐у搧鏄庣粏琛ㄤ腑鎵惧埌鎵樼洏{task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�;
+                        LogHelper.Info(info);
+                    }
+                }
+
+                var isInbound = false;
+                var inboundTasks = new List<string> {
+                    TaskName.H濂借繍绠盻婊$涓嬬嚎鍏ュ簱, TaskName.H濂借繍绠盻绌虹鍏ュ簱, TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱, TaskName.T鎵樼洏_绌烘墭鍏ュ簱,
+                    TaskName.C鎶芥_鍚堟牸鍥炲簱, TaskName.C鎶芥_涓嶅悎鏍肩Щ搴� TaskName.Y绉诲簱
+                };
+                if (inboundTasks.Contains(task.S_TYPE)) {
+                    isInbound= true;
+                }
+
+                var record = new TN_Record_Table {
+                    S_ITEM_CODE = cgDetail.S_ITEM_CODE,
+                    S_BATCH_NO = cgDetail.S_BATCH_NO,
+                    S_ITEM_NAME = cgDetail.S_ITEM_NAME,
+                    S_LOC_CODE = isInbound ? task.S_END_LOC : task.S_START_LOC, // 鍏ュ簱璁板綍缁堢偣璐т綅锛屽嚭搴撹褰曡捣鐐硅揣浣�+                    S_CNTR_CODE = task.S_CNTR_CODE,
+                    S_ITEM_SPEC = cgDetail.S_ITEM_SPEC,
+                    S_NET_WEIGHT = cgDetail.S_NET_WEIGHT,
+                    S_QUALITY_GRADE = cgDetail.S_QUALITY_GRADE,
+                    S_STANDARD = cgDetail.S_STANDARD,
+                    S_TASK_NO = task.S_CODE,
+                    T_RECORD_TIME = DateTime.Now,
+                    S_TYPE = task.S_TYPE,
+                    S_BS_CODE = task.S_BS_TYPE,
+                    N_QTY = cgDetail.N_ITEM_NUM,
+                };
+
+                if (db.Insertable<TN_Record_Table>(record).ExecuteCommand() <= 0) {
+                    info = "鎻掑叆鍑哄叆搴撹褰曡〃澶辫触锛� + JsonConvert.SerializeObject(record);
+                    LogHelper.Info(info);
+                    return;
+                }
+
+                info = "鎻掑叆鍑哄叆搴撹褰曡〃鎴愬姛";
+                LogHelper.Info(info);
+            }
+            catch (Exception ex) {
+                LogHelper.InfoEx(ex);
+            }
         }
 
         public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) {
@@ -215,13 +285,14 @@
         }
 
         public static void UpdateOutboundTaskState(int spotStateCode) {
+            var taskName = TaskName.C鎴愬搧鑳跺嚭搴�
             var db = new SqlHelper<object>().GetInstance();
 
             var detail = db.Queryable<TN_Outbound_Detail>()
                 .First(d => d.N_B_STATE == 2);
 
             if (detail == null) {
-                LogHelper.Info("鍑哄簱--AGV鍙栬揣--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
+                LogHelper.Info($"{taskName}--AGV鍙栬揣--鏌ヨ鏄庣粏鍗曪細褰撳墠娌℃湁鎵ц涓殑鏄庣粏鍗�);
                 return;
             }
 
@@ -229,14 +300,14 @@
                 detail.N_B_STATE = spotStateCode;
                 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浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                    LogHelper.Info($"{taskName}--AGV鍙栬揣锛氫慨鏀规槑缁嗗崟鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触锛�);
                     return;
                 }
 
                 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);
 
-                LogHelper.Info($"鍑哄簱--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount} / {allCount}");
+                LogHelper.Info($"{taskName}--AGV鍙栬揣--缁熻浠诲姟宸插畬鎴愶細{finishedCount}/{allCount}");
 
                 if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚
 
@@ -245,7 +316,7 @@
                         .ExecuteCommand() <= 0) {
 
                         tran.RollbackTran();
-                        LogHelper.Info("鍑哄簱--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
+                        LogHelper.Info($"{taskName}--AGV鍙栬揣--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼鍗曟嵁鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触锛�);
                         return;
                     }
                 }
@@ -254,83 +325,17 @@
             }
         }
 
-        public static void UpdateCheckTaskState(int spotStateCode) {
-            var db = new SqlHelper<object>().GetInstance();
-
-            var detail = db.Queryable<TN_Check_Detail>()
-                .First(d => d.N_B_STATE == 2);
-
-            if (detail == null) {
-                LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
-                return;
+        public static void PickUpReturnErp(TN_Task task) {
+            var httpH = new HttpHelper();
+            var model = new OtherModel.PickUpReturnErpInfo();
+            model.LocCode = task.S_START_LOC;
+            try {
+                var jsonInfo = JsonConvert.SerializeObject(model);
+                var result = httpH.WebPost(Settings.ErpApiUrl + "PickUpReturn", jsonInfo);
+                // TODO
             }
-
-            using (var tran = db.Ado.UseTran()) {
-                detail.N_B_STATE = spotStateCode;
-                if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
-                    tran.RollbackTran();
-                    LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
-                    return;
-                }
-
-                var finishedCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3);
-                var allCount = db.Queryable<TN_Check_Detail>().Count(d => d.S_NO == detail.S_NO);
-
-                LogHelper.Info($"鎶芥--AGV浠诲姟瀹屾垚锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount} / {allCount}");
-
-                if (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚
-
-                    if (db.Updateable<TN_Check_Order>().SetColumns(it => it.N_B_STATE == 3)
-                        .Where(it => it.S_NO == detail.S_NO)
-                        .ExecuteCommand() <= 0) {
-
-                        tran.RollbackTran();
-                        LogHelper.Info("鎶芥--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
-                        return;
-                    }
-                }
-
-                tran.CommitTran();
-            }
-        }
-
-        public static void UpdateShiftTaskState(int spotStateCode) {
-            var db = new SqlHelper<object>().GetInstance();
-
-            var detail = db.Queryable<TN_Shift_Detail>()
-                .First(d => d.N_B_STATE == 2);
-
-            if (detail == null) {
-                LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鏌ヨDetail锛氬綋鍓嶆病鏈�鎵ц涓�鐨凞etail琛紒");
-                return;
-            }
-
-            detail.N_B_STATE = spotStateCode;
-
-            var finishedCount = db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO && d.N_B_STATE == 3);
-            var allCount = db.Queryable<TN_Shift_Detail>().Count(d => d.S_NO == detail.S_NO);
-
-            LogHelper.Info($"绉诲簱--AGV浠诲姟瀹屾垚锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount} / {allCount}");
-
-            using (var tran = db.Ado.UseTran()) {
-                if (db.Updateable<TN_Shift_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
-                    tran.RollbackTran();
-                    LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚锛氫慨鏀笵etail鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
-                    return;
-                }
-
-                if (finishedCount == allCount) { // 褰撳墠order涓嬬殑detail锛屼换鍔¢兘宸茬粡瀹屾垚
-                    if (db.Updateable<TN_Shift_Order>().SetColumns(it => it.N_B_STATE == 3)
-                        .Where(it => it.S_NO == detail.S_NO)
-                        .ExecuteCommand() <= 0) {
-
-                        tran.RollbackTran();
-                        LogHelper.Info("绉诲簱--AGV浠诲姟瀹屾垚--鎵�湁浠诲姟瀹屾垚鏃讹細淇敼Order鐘舵� N_B_STATE 涓�3浠诲姟鎵ц瀹屾垚 澶辫触锛�);
-                        return;
-                    }
-                }
-
-                tran.CommitTran();
+            catch (Exception ex) {
+                LogHelper.InfoEx(ex);
             }
         }
 
@@ -347,12 +352,13 @@
                     //浣跨敤鑷畾涔変换鍔℃帹閫�                     TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧
                     //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧
-
                 });
             }
             else {
                 LogHelper.Info("鏆傛棤浠诲姟");
             }
+
+
         }
     }
 }

--
Gitblit v1.9.1