From 62d49f6df86a43aadaf5b5fab89e3ac8ee8c0727 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期一, 23 六月 2025 11:37:37 +0800
Subject: [PATCH] Merge branch 'master' of http://121.37.118.194:8000/r/WMSPrjInstance/HH-0014_NongFu_QingXi

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |   65 +++++++++++++++++++++-----------
 1 files changed, 42 insertions(+), 23 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 46ae16a..f759986 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -95,7 +95,7 @@
                         {
                             if (item.SQL_State != "瀹屾垚")
                             {
-                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
+                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                                 WCSHelper.Do(db =>
                                 {
                                     LogHelper.Info("绉诲簱宸ュ崟鏁伴噺瀹屾垚" + item.SQL_WorkNo);
@@ -118,7 +118,7 @@
                         {
                             LogHelper.Info($"{item.Turn_Type}宸ュ崟{item.SQL_WorkNo} 鎵嬪姩瀹屾垚锛屽鐞嗚В閿�");
 
-                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
+                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                             WCSHelper.Do(db =>
                             {
                                 if (item.Turn_Type == "鑷姩绉诲簱")
@@ -178,7 +178,7 @@
                             {
                                 //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0);
                                 //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0);
-                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
+                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
 
                                 LogHelper.Info($"{item.Turn_Type}宸ュ崟,瀹屾垚" + item.SQL_WorkNo + "璧锋帓鏃犺揣 鎴�缁堟帓宸叉弧 鏃犳硶绉诲簱");
                                 item.SQL_State = "瀹屾垚";
@@ -302,7 +302,7 @@
                         {
                             //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0);
                             //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0);
-                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
+                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                             LogHelper.Info($"{item.Turn_Type}宸ュ崟,瀹屾垚" + item.SQL_WorkNo + "璧风偣宸茬粡娌℃湁璐т簡锛岀Щ搴撳畬鎴�);
                             item.SQL_State = "瀹屾垚";
                             item.Note = "璧风偣宸茬粡娌℃湁璐т簡锛岀Щ搴撳畬鎴�;
@@ -321,7 +321,7 @@
                         {
                             //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0);
                             //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0);
-                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
+                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                             LogHelper.Info($"{item.Turn_Type}宸ュ崟,瀹屾垚" + item.SQL_WorkNo + "缁堢偣婊′簡锛岀Щ搴撳畬鎴�);
                             item.SQL_State = "瀹屾垚";
                             item.Note = "缁堢偣婊′簡锛岀Щ搴撳畬鎴�;
@@ -418,11 +418,24 @@
             }
         }
 
-        static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true)
+        static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true, string WorkNo = "")
         {
             LogHelper.Info("dooooooooooooooooooooooooooooooooooooooooooooo" + msg + "---" + sign);
             LogHelper.Info(JsonConvert.SerializeObject(startBit));
             LogHelper.Info(JsonConvert.SerializeObject(EndBit));
+            bool j瑙i攣璧风偣搴撳尯鎺�= true;
+            if (!string.IsNullOrEmpty(WorkNo) && sign == 0)
+            {
+                //瑙i攣鏃讹紝鏈夊伐鍗曞彿銆� 鏌ユ煡闄や簡杩欎釜宸ュ崟鍙蜂互澶栫殑鍏朵粬 鎸囧畾鍑哄簱鎺掓墽琛�+                var orders = WCSHelper.GetWorkOrder2();
+                var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo);
+                if (thisOrder != null)
+                {
+                    var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row);
+                    if (other != null)
+                        j瑙i攣璧风偣搴撳尯鎺�= false;
+                }
+            }
             //if (sign == 1)
             //{
             //    if (LocationHelper.GetRowLock(x => x.S_AREA_CODE == startBit.S_AREA_CODE && x.N_ROW == startBit.N_ROW).Count > 0)
@@ -430,7 +443,8 @@
             //        return;
             //    }
             //}
-            LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign);
+            if (j瑙i攣璧风偣搴撳尯鎺�
+                LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign);
             LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW, S_LOCK_STATE = msg }, sign);
             //if (EndBit == null || EndBit.S_AREA_CODE.StartsWith("BHQ-"))
             //    return;
@@ -439,9 +453,12 @@
                 {
                     case 0:
                         {
+                            var lst = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC };
+                            if (!j瑙i攣璧风偣搴撳尯鎺�
+                                lst = new List<string> { EndBit.S_Fule_LOC };
                             var req = JsonConvert.SerializeObject(new
                             {
-                                areaNum = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC },
+                                areaNum = lst,
                                 repoNo = Settings.repoNo,
                                 areaLock = "2"
                             });
@@ -4036,10 +4053,10 @@
                 var locS = LocationHelper.GetAreaNormalLocList(ODs.Key);
                 foreach (var od in ODs)
                 {
-                    LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 寮� 銆嬨�銆�);
-                    if (string.IsNullOrEmpty(od.S_ZZ_AREA) || string.IsNullOrEmpty(od.S_END_AREA))
+                    LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 寮� 銆嬨�銆�);
+                    if (string.IsNullOrEmpty(od.S_ZZ_AREA) && string.IsNullOrEmpty(od.S_END_AREA))
                     {
-                        LogHelper.CError($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�");
+                        LogHelper.CError($"YWL_ZX_Turn from{od.S_START_AREA} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�");
                         continue;
                     }
                     var rows = locS.FindAll(x => x.N_ROW == od.N_START_ROW);
@@ -4056,13 +4073,23 @@
                             var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault();
                             if (lastful != null)
                             {
-                                LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆�);
+                                LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆�);
                                 var crs = LocationHelper.GetLocCntrRel(lastful.S_LOC_CODE);
                                 var cntritems = ContainerHelper.GetCntrItemRel(crs.FirstOrDefault()?.S_CNTR_CODE);
                                 if (!cntritems.Any())
                                     continue;
-                                LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆傛帴椹虫槸鍚﹁閿侊紵锛歿InworkLock}");
+                                LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 鎵惧埌绉诲簱璧风偣銆媨lastful.S_LOC_CODE}銆傛帴椹虫槸鍚﹁閿侊紵锛歿InworkLock}");
                                 var cir1 = cntritems.First();
+
+                                if (!string.IsNullOrEmpty(od.S_ITEM_CODE))
+                                {
+                                    ///缁欑Щ搴撳崟 鍐欎笂杞繍鐨勭墿鏂欐暟鎹�
+                                    od.S_ITEM_CODE = cir1.S_ITEM_CODE;
+                                    od.S_ITEM_NAME = cir1.S_ITEM_NAME;
+                                    od.S_CJ_NAME = cir1.S_CJ_NAME;
+                                    WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand());
+                                }
+
                                 if (od.S_ZZ_AREA == "YWLWJJB")
                                 {
                                     if (InworkLock)
@@ -4092,24 +4119,16 @@
                                         Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0));
                                     if (Endbit != null)
                                     {
-                                        LogHelper.Info($"鍏ヤ腑杞尯{od.S_ZZ_AREA}浣跨敤{Endbit.S_LOC_CODE}");
+                                        LogHelper.Info($"鍏ヤ腑杞尯{nextarea}浣跨敤{Endbit.S_LOC_CODE}");
                                         break;
                                     }
                                 }
-                                LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱缁堢偣銆媨Endbit?.S_LOC_CODE}");
+                                LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鎵惧埌绉诲簱缁堢偣銆媨Endbit?.S_LOC_CODE}");
                                 if (Endbit != null)
                                 {
                                     //鐢熸垚鎺ラ┏鍖轰换鍔★紝鏍囪涓虹粓鐐瑰簱鍖恒�
                                     var b = TaskProcess.CreateTransport(od.S_ID, lastful.S_LOC_CODE, Endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", crs.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, crs.Count, 50, nextarea == od.S_END_AREA ? "" : od.S_END_AREA);
                                     if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;
-                                    if (!string.IsNullOrEmpty(od.S_ITEM_CODE))
-                                    {
-                                        ///缁欑Щ搴撳崟 鍐欎笂杞繍鐨勭墿鏂欐暟鎹�
-                                        od.S_ITEM_CODE = cir1.S_ITEM_CODE;
-                                        od.S_ITEM_NAME = cir1.S_ITEM_NAME;
-                                        od.S_CJ_NAME = cir1.S_CJ_NAME;
-                                        WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand());
-                                    }
                                     break;
                                 }
                                 else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;

--
Gitblit v1.9.1