From 91af36651929bdd77afaedc517e9c3c2106fd8e1 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期一, 23 六月 2025 11:27:40 +0800
Subject: [PATCH] 更新成品起点排锁解锁问题。

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |   33 +++++++++++++++++++++++++--------
 1 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 28e067a..430ca26 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -96,7 +96,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);
@@ -119,7 +119,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 == "鑷姩绉诲簱")
@@ -179,7 +179,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 = "瀹屾垚";
@@ -303,7 +303,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 = "璧风偣宸茬粡娌℃湁璐т簡锛岀Щ搴撳畬鎴�;
@@ -322,7 +322,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 = "缁堢偣婊′簡锛岀Щ搴撳畬鎴�;
@@ -419,11 +419,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)
@@ -431,7 +444,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;
@@ -440,9 +454,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"
                             });

--
Gitblit v1.9.1