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 |  133 ++++++++++++++++++++++++-------------------
 1 files changed, 74 insertions(+), 59 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index 5c83eba..23f9962 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -25,6 +25,8 @@
             var info = "";
 
             const string taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
+            const string startAreaName = AreaName.B鍖呰鍖�
+            const string endAreaName = AreaName.M婊℃墭璐ф灦鍖�
             const string cntrType = "鎵樼洏";
 
             try {
@@ -56,78 +58,82 @@
 
                     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,
+                    //};
 
-                    var needInsertContainer = false;
-                    var needUpdateContainer = false;
+                    //var needInsertContainer = false;
+                    //var needUpdateContainer = false;
 
                     // TEMP 鑷姩瑙﹀彂鐨勬墭鐩樹笅绾挎殏鏃朵笉鑰冭檻鍒ゆ柇锛岄粯璁ゆ病鏈夋椂鍐欏叆
                     // 鏌ュ鍣ㄤ俊鎭〃鏄惁宸茬粡鏈夎繖涓鍣�-                    var cntr = db.Queryable<TN_Container>()
-                        .Where(c => c.S_CODE == cntrCode).First();
+                    //var cntr = db.Queryable<TN_Container>()
+                    //    .Where(c => c.S_CODE == cntrCode).First();
                     // 濡傛灉鎵句笉鍒拌瀹瑰櫒锛岄渶瑕佹坊鍔狅紝骞朵笖灏嗗鍣ㄦ潵婧愯缃负浠诲姟鍚嶇О
-                    if (cntr == null) {
-                        needInsertContainer = true;
-                        LogHelper.Info($"杞锛歿taskName}锛氬鍣細{cntrCode}锛屽湪瀹瑰櫒琛ㄤ腑娌℃湁鐧昏锛岀櫥璁板苟璁剧疆瀹瑰櫒鏉ユ簮涓猴細{taskName}");
+                    //if (cntr == null) {
+                    //    needInsertContainer = true;
+                    //    LogHelper.Info($"杞锛歿taskName}锛氬鍣細{cntrCode}锛屽湪瀹瑰櫒琛ㄤ腑娌℃湁鐧昏锛岀櫥璁板苟璁剧疆瀹瑰櫒鏉ユ簮涓猴細{taskName}");
 
-                        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 = 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;
-                        }
-                    }
+                    //        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;
                     }
+
+                    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_CODE = cntrCode,
                         S_CNTR_TYPE = cntrType,
                     };
 
+                    startLoc.N_CURRENT_NUM = 1; // 缁戝畾鍚�+
                     var endLoc = db.Queryable<TN_Location>()
-                        .Where(a => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.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;
@@ -136,34 +142,43 @@
                     LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�                     LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� 
-                    cntr.S_SOURCE = task.S_CODE;
-                    cntr.T_MODIFY = DateTime.Now;
+                    //cntr.S_SOURCE = task.S_CODE;
+                    //cntr.T_MODIFY = DateTime.Now;
 
                     using (var tran = db.Ado.UseTran()) {
-                        if (needInsertContainer) {
-                            if (db.Insertable<TN_Container>(cntr).ExecuteCommand() <= 0) {
-                                info = $"鎻掑叆瀹瑰櫒琛ㄥけ璐ワ細" + JsonConvert.SerializeObject(cntr);
+                        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;
                             }
                         }
-                        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;
-                            }
-                        }
+                        //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;
+                        //    }
+                        //}
 
-                        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_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();

--
Gitblit v1.9.1