From a949debc0abbe90adfda1af653b7b5c2ab27d997 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期五, 06 六月 2025 17:14:55 +0800
Subject: [PATCH] 使用Container表优化容器与物料类型绑定的逻辑

---
 core/Monitor.cs |   80 +++++++++++++++++++++-------------------
 1 files changed, 42 insertions(+), 38 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index 0f935e1..9d959bb 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -66,21 +66,34 @@
                         S_CNTR_CODE = cntrCode,
                     };
 
-                    // BEG 姣忔杞閮芥鏌ュ搴斿鍣ㄦ槸鍚﹀凡鐧昏锛岀櫥璁板垯鏇存柊锛屾湭鐧昏鍒欐彃鍏�-                    var cntrItemRel = db.Queryable<TN_Container_ItemType>()
-                        .Where(i => i.S_CNTR_CODE == cntrCode).First();
+                    var needInsertContainer = false;
+                    var needUpdateContainer = false;
+                    // 鏌ュ鍣ㄤ俊鎭〃鏄惁宸茬粡鏈夎繖涓鍣�+                    var cntr = db.Queryable<TN_Container>()
+                        .Where(c => c.S_CODE == cntrCode).First();
+                    // 濡傛灉鎵句笉鍒拌瀹瑰櫒锛岄渶瑕佹坊鍔狅紝骞朵笖灏嗗鍣ㄦ潵婧愯缃负浠诲姟鍚嶇О
+                    if (cntr == null) {
+                        needInsertContainer = true;
+                        LogHelper.Info($"杞锛歿taskName}锛氬鍣細{cntrCode}锛屽湪瀹瑰櫒琛ㄤ腑娌℃湁鐧昏锛岀櫥璁板苟璁剧疆瀹瑰櫒鏉ユ簮涓猴細{taskName}");
 
-                    var insertTable = cntrItemRel == null;
-
-                    if (insertTable) {
-                        // 鏆傚畾鍦ㄦ弧鎵樹笅绾垮叆搴撶殑鏃跺�锛岀櫥璁版墭鐩樺鍣�鐗╂枡鍙峰叧绯伙紙鍚庨潰鍙兘浼氭敼鎴愮郴缁熺淮鎶わ級
-                        cntrItemRel = new TN_Container_ItemType {
-                            S_ITEM_CODE = itemCode,
-                            S_CNTR_CODE = cntrCode,
-                            S_CNTR_TYPE = "鎵樼洏",
+                        cntr = new TN_Container {
+                            S_CODE = cntrCode,
+                            S_TYPE = "鎵樼洏",
+                            S_SPEC = itemCode,
+                            S_SOURCE = taskName,
                         };
                     }
-                    // END
+                    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_SOURCE = taskName;
+                        }
+                    }
 
                     var startLoc = db.Queryable<TN_Location>()
                         .Where(l => l.S_CODE == startLocCode) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿
@@ -102,13 +115,6 @@
                         S_CNTR_TYPE = "鎵樼洏",
                     };
 
-                    //if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
-                    //    info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴澶辫触锛� + JsonConvert.SerializeObject(locCntrRel);
-                    //    LogHelper.Info(info);
-                    //    continue;
-                    //    //return;
-                    //}
-
                     var endLoc = db.Queryable<TN_Location>()
                         .Where(a => Settings.AreaMap[AreaName.K绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE))
                         .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
@@ -129,31 +135,29 @@
                     LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� 
                     using (var tran = db.Ado.UseTran()) {
+                        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).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;
                         }
-
-                        // BEG 鎻掑叆鎴栨洿鏂板鍣ㄤ笌鐗╂枡绫诲瀷鐨勭粦瀹氳〃
-                        if (insertTable) {
-                            if (db.Insertable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) {
-                                tran.RollbackTran();
-                                info = $"鐧昏瀹瑰櫒鐗╂枡绫诲瀷缁戝畾琛ㄥけ璐ワ細鐗╂枡缂栫爜{cntrItemRel.S_ITEM_CODE}锛屽鍣ㄧ紪鐮亄cntrItemRel.S_CNTR_CODE}";
-                                LogHelper.Info(info);
-                                continue;
-                            }
-                        }
-                        else {
-                            if (db.Updateable<TN_Container_ItemType>(cntrItemRel).ExecuteCommand() <= 0) {
-                                tran.RollbackTran();
-                                info = $"鐧昏瀹瑰櫒鐗╂枡绫诲瀷缁戝畾琛ㄥけ璐ワ細鐗╂枡缂栫爜{cntrItemRel.S_ITEM_CODE}锛屽鍣ㄧ紪鐮亄cntrItemRel.S_CNTR_CODE}";
-                                LogHelper.Info(info);
-                                continue;
-                            }
-                        }
-                        // END
 
                         if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) {
                             tran.RollbackTran();

--
Gitblit v1.9.1