From 99d001bbf2a0371373e15c97d3c6c7dcf45e97e3 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期五, 13 六月 2025 15:44:22 +0800
Subject: [PATCH] 修复空托上线与满托下线联调的逻辑错误

---
 core/Monitor.cs |  310 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 191 insertions(+), 119 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index b31eb12..23f9962 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -20,10 +20,15 @@
             public string cntr_code { get; set; }
         }
 
-        public static void CheckInbound() {
-            var taskName = TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
+        public static void CheckInbound() {                
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
+
+            const string taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
+            const string startAreaName = AreaName.B鍖呰鍖�
+            const string endAreaName = AreaName.M婊℃墭璐ф灦鍖�
+            const string cntrType = "鎵樼洏";
+
             try {
                 // 鏌ヤ骇绾挎槸鍚︽湁鐗╂枡淇℃伅
                 foreach (var prod in Settings.ProductionLines) {
@@ -53,106 +58,127 @@
 
                     LogHelper.Info(JsonConvert.SerializeObject(data));
 
-                    var itemCode = data.item_code;
-                    var batchNo = data.batch_no;
+                    //var itemCode = data.item_code;
+                    //var batchNo = data.batch_no;
                     var cntrCode = data.cntr_code;
 
                     var startLocCode = prod.OffLoc[0]; // 鐢ㄤ簬娴嬭瘯
                     //var startLocCode = "CX01"; // 鐢ㄤ簬娴嬭瘯
 
-                    var cgDetail = new TN_CG_Detail {
-                        S_ITEM_CODE = itemCode,
-                        S_BATCH_NO = batchNo,
-                        S_CNTR_CODE = cntrCode,
-                    };
+                    //var cgDetail = new TN_CG_Detail { // 绌烘墭涓婄嚎鏃跺氨缁戝畾濂戒簡
+                    //    S_ITEM_CODE = itemCode,
+                    //    S_BATCH_NO = batchNo,
+                    //    S_CNTR_CODE = cntrCode,
+                    //};
 
-                    // TODO 姣忔杞閮芥鏌ュ搴斿鍣ㄦ槸鍚﹀凡鐧昏锛岀櫥璁板垯鏇存柊锛屾湭鐧昏鍒欐彃鍏�-                    var cntrItemRel = db.Queryable<TN_Container_Item>()
-                        .Where(i => i.S_CNTR_CODE == cntrCode).First();
+                    //var needInsertContainer = false;
+                    //var needUpdateContainer = false;
 
-                    var insertTable = cntrItemRel == null;
+                    // TEMP 鑷姩瑙﹀彂鐨勬墭鐩樹笅绾挎殏鏃朵笉鑰冭檻鍒ゆ柇锛岄粯璁ゆ病鏈夋椂鍐欏叆
+                    // 鏌ュ鍣ㄤ俊鎭〃鏄惁宸茬粡鏈夎繖涓鍣�+                    //var cntr = db.Queryable<TN_Container>()
+                    //    .Where(c => c.S_CODE == cntrCode).First();
+                    // 濡傛灉鎵句笉鍒拌瀹瑰櫒锛岄渶瑕佹坊鍔狅紝骞朵笖灏嗗鍣ㄦ潵婧愯缃负浠诲姟鍚嶇О
+                    //if (cntr == null) {
+                    //    needInsertContainer = true;
+                    //    LogHelper.Info($"杞锛歿taskName}锛氬鍣細{cntrCode}锛屽湪瀹瑰櫒琛ㄤ腑娌℃湁鐧昏锛岀櫥璁板苟璁剧疆瀹瑰櫒鏉ユ簮涓猴細{taskName}");
 
-                    if (insertTable) {
-                        // 鏆傚畾鍦ㄦ弧鎵樹笅绾垮叆搴撶殑鏃跺�锛岀櫥璁版墭鐩樺鍣�鐗╂枡鍙峰叧绯伙紙鍚庨潰鍙兘浼氭敼鎴愮郴缁熺淮鎶わ級
-                        cntrItemRel = new TN_Container_Item {
-                            S_ITEM_CODE = itemCode,
-                            S_CNTR_CODE = cntrCode,
-                        };
-                    }
-                    // END TODO
+                    //    cntr = new TN_Container {
+                    //        S_CODE = cntrCode,
+                    //        S_TYPE = cntrType,
+                    //        S_SPEC = itemCode,
+                    //    };
+                    //}
+                    //else {
+                    //    濡傛灉鎵惧埌璇ュ鍣紝浣嗗鍣ㄧ墿鏂欑被鍨嬩笌涓嬬嚎鐗╂枡涓嶇锛岃褰曞苟鐩存帴瑕嗙洊锛堝緟瀹氾級
+                    //    if (!string.IsNullOrEmpty(cntr.S_SPEC) && cntr.S_SPEC != itemCode) {
+                    //        needUpdateContainer = true;
+                    //        LogHelper.Info($"杞锛歿taskName}锛氬鍣ㄨ〃涓鍣▄cntrCode}瀵瑰簲鐨勭墿鏂欎俊鎭細{cntr.S_SPEC}锛� +
+                    //            $"涓庢墍闇�鐨勭墿鏂欎俊鎭瘂itemCode}涓嶇锛岀洿鎺ヨ鐩栫粨鏋�);
+
+                    //        cntr.S_SPEC = itemCode;
+                    //    }
+                    //}
 
                     var startLoc = db.Queryable<TN_Location>()
-                        .Where(l => l.S_CODE == startLocCode) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿
-                        .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
-                        .Where(l => l.N_CURRENT_NUM == 0)
-                        .First();
+                    .Where(l => l.S_CODE == startLocCode)
+                    .Where(l => Settings.AreaMap[startAreaName].Contains(l.S_AREA_CODE))
+                    .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
+                    //.Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓�+                    .First();
 
                     if (startLoc == null) {
-                        info = $"璧风偣浣嶇疆 '{startLocCode}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�;
+                        info = $"鍦�{startAreaName}'涓病鏈夋壘鍒拌捣鐐硅揣浣�{startLocCode}'锛屾垨涓嶆弧瓒宠姹傦細鏈笂閿併�褰撳墠瀹瑰櫒鏁伴噺=0";
                         LogHelper.Info(info);
-                        continue;
-                        //return;
                     }
+
+                    var locCntrRelOld = db.Queryable<TN_Loc_Container>()
+                        .Where(c => c.S_CNTR_CODE == cntrCode).First();
 
                     // 缁戝畾璐т綅鍜屽鍣ㄥ彿
                     var locCntrRel = new TN_Loc_Container {
                         S_LOC_CODE = startLocCode,
-                        S_CNTR_CODE = cgDetail.S_CNTR_CODE,
-                        S_CNTR_TYPE = "鎵樼洏",
+                        S_CNTR_CODE = cntrCode,
+                        S_CNTR_TYPE = cntrType,
                     };
 
-                    //if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
-                    //    info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴澶辫触锛� + JsonConvert.SerializeObject(locCntrRel);
-                    //    LogHelper.Info(info);
-                    //    continue;
-                    //    //return;
-                    //}
+                    startLoc.N_CURRENT_NUM = 1; // 缁戝畾鍚� 
                     var endLoc = db.Queryable<TN_Location>()
-                        .Where(a => Settings.AreaMap[AreaName.绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE))
+                        .Where(a => Settings.AreaMap[endAreaName].Contains(a.S_AREA_CODE))
                         .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
                         .OrderBy(l => l.N_LAYER)
                         .First();
 
                     if (endLoc == null) {
-                        info = "绌烘墭鍏ュ簱鏆傛椂娌℃湁鍚堥�鐨勮揣浣嶅彲浠ュ叆搴�;
+                        info = $"鍦ㄧ粓鐐硅揣鍖�{endAreaName}'涓紝娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆戯紝闇�婊¤冻瑕佹眰锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0";
                         LogHelper.Info(info);
-                        continue;
                     }
 
                     var cntId = locCntrRel.S_CNTR_CODE;
                     var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
 
-                    LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�-                    LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+                    LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+                    LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�+
+                    //cntr.S_SOURCE = task.S_CODE;
+                    //cntr.T_MODIFY = DateTime.Now;
 
                     using (var tran = db.Ado.UseTran()) {
-                        if (db.Insertable<TN_CG_Detail>(cgDetail).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            info = $"鎻掑叆瀹瑰櫒璐у搧淇℃伅琛ㄥけ璐ワ細鐗╂枡缂栫爜{cgDetail.S_ITEM_CODE}锛屽鍣ㄧ紪鐮亄cgDetail.S_CNTR_CODE}";
-                            LogHelper.Info(info);
-                            continue;
+                        if (locCntrRelOld != null) {
+                            if (db.Deleteable<TN_Loc_Container>(locCntrRelOld).ExecuteCommand() <= 0 &&
+                                db.Updateable<TN_Location>().SetColumns(l => l.N_CURRENT_NUM == 0).Where(l => l.S_CODE == locCntrRelOld.S_LOC_CODE).ExecuteCommand() <= 0) {
+                                tran.RollbackTran();
+                                info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触锛氳揣浣嶇紪鐮亄locCntrRelOld.S_LOC_CODE}锛屽鍣ㄧ紪鐮亄locCntrRelOld.S_CNTR_CODE}";
+                                LogHelper.Info(info);
+                                continue;
+                            }
                         }
+                        //if (needInsertContainer) {
+                        //    if (db.Insertable<TN_Container>(cntr).ExecuteCommand() <= 0) {
+                        //        info = $"鎻掑叆瀹瑰櫒琛ㄥけ璐ワ細" + JsonConvert.SerializeObject(cntr);
+                        //        tran.RollbackTran();
+                        //        LogHelper.Info(info);
+                        //        continue;
+                        //    }
+                        //}
+                        //else if (needUpdateContainer) {
+                        //    if (db.Updateable<TN_Container>(cntr)
+                        //        .UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) {
+                        //        info = $"鏇存柊瀹瑰櫒琛ㄥけ璐ワ細" + JsonConvert.SerializeObject(cntr);
+                        //        tran.RollbackTran();
+                        //        LogHelper.Info(info);
+                        //        continue;
+                        //    }
+                        //}
 
-                        // TODO 鎻掑叆鎴栨洿鏂板鍣ㄤ笌鐗╂枡绫诲瀷鐨勭粦瀹氳〃
-                        if (insertTable) {
-                            if (db.Insertable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
-                                tran.RollbackTran();
-                                info = $"鐧昏瀹瑰櫒鐗╂枡绫诲瀷缁戝畾琛ㄥけ璐ワ細鐗╂枡缂栫爜{cntrItemRel.S_ITEM_CODE}锛屽鍣ㄧ紪鐮亄cntrItemRel.S_CNTR_CODE}";
-                                LogHelper.Info(info);
-                                continue;
-                            }
-                        }
-                        else {
-                            if (db.Updateable<TN_Container_Item>(cntrItemRel).ExecuteCommand() <= 0) {
-                                tran.RollbackTran();
-                                info = $"鐧昏瀹瑰櫒鐗╂枡绫诲瀷缁戝畾琛ㄥけ璐ワ細鐗╂枡缂栫爜{cntrItemRel.S_ITEM_CODE}锛屽鍣ㄧ紪鐮亄cntrItemRel.S_CNTR_CODE}";
-                                LogHelper.Info(info);
-                                continue;
-                            }
-                        }
-                        // END TODO
+                        //if (db.Insertable<TN_CG_Detail>(cgDetail).ExecuteCommand() <= 0) {
+                        //    tran.RollbackTran();
+                        //    info = $"鎻掑叆瀹瑰櫒璐у搧淇℃伅琛ㄥけ璐ワ細鐗╂枡缂栫爜{cgDetail.S_ITEM_CODE}锛屽鍣ㄧ紪鐮亄cgDetail.S_CNTR_CODE}";
+                        //    LogHelper.Info(info);
+                        //    continue;
+                        //}
 
                         if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
@@ -165,7 +191,8 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -177,7 +204,7 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -187,13 +214,13 @@
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
                         }
 
                         tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }
@@ -207,9 +234,10 @@
         }
 
         public static void CheckOutboundOrder() {
-            var taskName = TaskName.鎴愬搧鑳跺嚭搴�
             var db = new SqlHelper<object>().GetInstance();
-            var info = $"杞--{taskName}--";
+            var info = "";
+
+            const string taskName = TaskName.C鎴愬搧鑳跺嚭搴�
 
             try {
                 var orderList = db.Queryable<TN_Outbound_Order>()
@@ -218,7 +246,7 @@
                     .ToList();
 
                 if (orderList.Count == 0) {
-                    info += $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�;
+                    info = $"杞锛歿taskName}锛氭殏鏃犲緟鎵ц鐨剓taskName}鍗�;
                     LogHelper.Info(info);
                     return;
                 }
@@ -229,7 +257,7 @@
                         .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�                     var allCount = db.Queryable<TN_Outbound_Detail>()
                         .Count(d => d.S_OO_NO == order.S_NO);
-                    info += $"缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}";
+                    info = $"杞锛歿taskName}锛氱粺璁taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}";
                     LogHelper.Info(info);
 
                     if (doingCount == allCount) {
@@ -243,7 +271,7 @@
                         .First();
 
                     if (lastDetail != null) {
-                        info += $"{taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail);
+                        info = $"杞锛歿taskName}锛歿taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail);
                         LogHelper.Info(info);
                         continue;
                     }
@@ -253,7 +281,7 @@
                         .First();
 
                     if (outboundDetail == null) {
-                        info += $"浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�;
+                        info = $"杞锛歿taskName}锛氫粛鏈変换鍔℃湭鎵ц瀹屾垚锛屼絾褰撳墠娌℃湁宸蹭笅鍙戠殑浠诲姟";
                         LogHelper.Info(info);
                         continue;
                     }
@@ -269,13 +297,14 @@
                 foreach (var detail in detailList) {
                     var startLoc = db.Queryable<TN_Location>()
                         .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
-                        .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE)
+                        .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) // 鏍规嵁瀹瑰櫒鍙锋悳绱㈣捣鐐硅揣浣�                         .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                         .Where(l => l.N_CURRENT_NUM == 1)
                         .First();
 
                     if (startLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
+                        info = $"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�;
+                        LogHelper.Info(info);
                         continue;
                     }
 
@@ -285,22 +314,25 @@
                         .Where(a => a.N_CURRENT_NUM == 0).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛佸崟鍙�{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'");
+                        info = $"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛佸崟鍙�{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'";
+                        LogHelper.Info(info);
                         continue;
                     }
-
+                    
                     detail.N_B_STATE = 2;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
 
-                    LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�-                    LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+                    var erp_no = string.IsNullOrEmpty(detail.S_BS_NO) ? "" : detail.S_BS_NO;
+                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO, erp_no);
+
+                    LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+                    LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� 
                     using (var tran = db.Ado.UseTran()) {
                         if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info += $"淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触锛�;
+                            info = $"杞锛歿taskName}锛氫慨鏀规槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�;
                             LogHelper.Info(info);
                             continue;
                         }
@@ -309,10 +341,11 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
                             LogHelper.Info(info);
                             continue;
                         }
@@ -321,38 +354,71 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
                             LogHelper.Info(info);
                             continue;
                         }
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
                         }
 
                         tran.CommitTran();
-                        info += $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }
                 }
+
+
+                //// BEG 鏌ユ壘6涓湀浠ュ墠鐨勪换鍔¤〃鍜屼换鍔″姩浣滆〃
+                //var oldTaskList = db.Queryable<TN_Task>()
+                //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
+                //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚")
+                //    .ToList();
+
+                //var oldTaskActionList = db.Queryable<TN_Task, TN_Task_Action>((t, a) => t.S_CODE == a.S_TASK_CODE)
+                //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
+                //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚")
+                //    .Select((t, a) => a)
+                //    .ToList();
+                //// END
+
+                //using (var tran = db.Ado.UseTran()) {
+                //    // 鍦ㄥ嚭搴撹疆璇腑澶勭悊锛屾煡鎵句换鍔″崟鏄惁鏈夊崐骞村墠涓斿凡缁忓畬鎴愮殑浠诲姟锛屽鏋滄湁鍒欏垹闄�+                //    // 杩欎釜鎿嶄綔涓嶅奖鍝嶆甯告祦绋嬶紝濡傛灉澶辫触涔熶笉闇�鍥炴粴
+                //    //if (db.Deleteable<TN_Task>()
+                //    //    .Where(t => t.T_MODIFY < DateTime.Now.AddMonths(-6))
+                //    //    .Where(t => t.N_B_STATE == 3 && t.S_B_STATE == "瀹屾垚")
+                //    //    .ExecuteCommand() <= 0) {
+                //    //    info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触";
+                //    //    LogHelper.Info(info);
+                //    //}
+                //    if (db.Deleteable<TN_Task>(oldTaskList).ExecuteCommand() <= 0
+                //        && db.Deleteable<TN_Task_Action>(oldTaskActionList).ExecuteCommand() <= 0) {
+                //        info = $"杞{taskName}鍗曟椂灏濊瘯鍒犻櫎鍗婂勾鍓嶇殑浠诲姟澶辫触";
+                //        LogHelper.Info(info);
+                //    }
+                //}
+
             }
             catch (Exception ex) {
-                info += $"鍙戠敓浜嗗紓甯革細{ex.Message}";
+                info = $"杞锛歿taskName}锛氬彂鐢熶簡寮傚父锛歿ex.Message}";
                 LogHelper.InfoEx(ex);
             }
         }
 
         public static void CheckCheckOrder() {
-            var taskName = TaskName.鎶芥_鍑哄簱;
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
+
+            const string taskName = TaskName.C鎶芥_鍑哄簱;
 
             try {
                 var orderList = db.Queryable<TN_Spot_Check>()
@@ -361,7 +427,7 @@
                     .ToList();
 
                 if (orderList.Count == 0) {
-                    LogHelper.Info($"杞--{taskName}--鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
+                    LogHelper.Info($"杞锛歿taskName}锛氭殏鏃犲緟鎵ц鐨剓taskName}鍗�);
                     return;
                 }
 
@@ -371,7 +437,7 @@
                         .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�                     var allCount = db.Queryable<TN_SpotCheck_Detail>()
                         .Count(d => d.S_OO_NO == order.S_NO);
-                    LogHelper.Info($"杞--{taskName}--缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
+                    LogHelper.Info($"杞锛歿taskName}锛氱粺璁taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
 
                     if (doingCount == allCount) {
                         order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц
@@ -384,7 +450,7 @@
                         .ToList();
 
                     if (checkDetailList.Count == 0) {
-                        LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
+                        LogHelper.Info($"杞锛歿taskName}锛氫粛鏈変换鍔℃湭鎵ц瀹屾垚锛屼絾褰撳墠娌℃湁宸蹭笅鍙戠殑浠诲姟");
                         continue;
                     }
 
@@ -400,7 +466,7 @@
                         .First();
 
                     if (startLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
+                        LogHelper.Info($"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
                         continue;
                     }
 
@@ -410,22 +476,22 @@
                         .Where(a => a.N_CURRENT_NUM == 0).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
+                        LogHelper.Info($"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
                         continue;
                     }
 
                     detail.N_B_STATE = 2;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO);
 
-                    LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�-                    LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+                    LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+                    LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� 
                     using (var tran = db.Ado.UseTran()) {
                         if (db.Updateable<TN_SpotCheck_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            LogHelper.Info($"杞--{taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
+                            LogHelper.Info($"杞锛歿taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
                             continue;
                         }
 
@@ -433,7 +499,8 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -445,7 +512,7 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -455,13 +522,13 @@
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
                         }
 
                         tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }
@@ -472,10 +539,12 @@
             }
         }
 
-        public static void CheckShiftOrder() {
-            var taskName = TaskName.绉诲簱;
+        public static void CheckShiftOrder() {                
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
+
+            const string taskName = TaskName.Y绉诲簱;
+
             try {
                 var orderList = db.Queryable<TN_Relocation_List>()
                     .Where(c => c.N_B_STATE == 1)
@@ -483,7 +552,7 @@
                     .ToList();
 
                 if (orderList.Count == 0) {
-                    LogHelper.Info($"杞--{taskName}--鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
+                    LogHelper.Info($"杞锛歿taskName}锛氭殏鏃犲緟鎵ц鐨剓taskName}鍗�);
                     return;
                 }
 
@@ -493,7 +562,7 @@
                         .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�                     var allCount = db.Queryable<TN_RelocationList_Detail>()
                         .Count(d => d.S_OO_NO == order.S_NO);
-                    LogHelper.Info($"杞--{taskName}--缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
+                    LogHelper.Info($"杞锛歿taskName}锛氱粺璁taskName}鍗�{order.S_NO}浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
 
                     if (doingCount == allCount) {
                         order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц
@@ -506,7 +575,7 @@
                         .ToList();
 
                     if (checkDetailList.Count == 0) {
-                        LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
+                        LogHelper.Info($"杞锛歿taskName}锛氫粛鏈変换鍔℃湭鎵ц瀹屾垚锛屼絾褰撳墠娌℃湁宸蹭笅鍙戠殑浠诲姟");
                         continue;
                     }
 
@@ -524,7 +593,8 @@
                         .First();
 
                     if (startLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
+                        info = $"杞锛歿taskName}锛氭病鏈夋壘鍒板鍣ㄥ彿={detail.S_CNTR_CODE}鐨勮捣鐐硅揣浣嶏紒闇�婊¤冻锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�1";
+                        LogHelper.Info(info);
                         continue;
                     }
 
@@ -534,22 +604,23 @@
                         .Where(a => a.N_CURRENT_NUM == 0).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
+                        info = $"杞锛歿taskName}锛氭病鏈夋壘鍒扮粓鐐硅揣浣�{detail.S_END_AREA}鐨勭粓鐐硅揣浣嶏紒闇�婊¤冻锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0";
+                        LogHelper.Info(info);
                         continue;
                     }
 
                     detail.N_B_STATE = 2;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO);
 
-                    LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�-                    LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+                    LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+                    LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� 
                     using (var tran = db.Ado.UseTran()) {
                         if (db.Updateable<TN_RelocationList_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            LogHelper.Info($"杞--{taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
+                            LogHelper.Info($"杞锛歿taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
                             continue;
                         }
 
@@ -557,7 +628,8 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -569,7 +641,7 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -579,13 +651,13 @@
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
-                        }
+                        }   
 
                         tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }

--
Gitblit v1.9.1