From e552f3366723d8a2392ca59e95e5d9589ad7a858 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期一, 23 六月 2025 13:03:47 +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 |   51 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index b8fe932..279ecc6 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -8,7 +8,6 @@
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
-using System.Web.UI.WebControls.WebParts;
 
 namespace HH.WCS.QingXigongchang.core
 {
@@ -421,7 +420,7 @@
 
         static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true, string WorkNo = "")
         {
-            LogHelper.Info("dooooooooooooooooooooooooooooooooooooooooooooo" + msg + "---" + sign);
+            LogHelper.Info("绉诲簱瑙i攣 doo" + msg + "---" + sign + "--" + WorkNo);
             LogHelper.Info(JsonConvert.SerializeObject(startBit));
             LogHelper.Info(JsonConvert.SerializeObject(EndBit));
             bool j瑙i攣璧风偣搴撳尯鎺�= true;
@@ -430,9 +429,11 @@
                 //瑙i攣鏃讹紝鏈夊伐鍗曞彿銆� 鏌ユ煡闄や簡杩欎釜宸ュ崟鍙蜂互澶栫殑鍏朵粬 鎸囧畾鍑哄簱鎺掓墽琛�                 var orders = WCSHelper.GetWorkOrder2();
                 var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo);
+                LogHelper.Info("绉诲簱瑙i攣 --褰撳墠宸ュ崟 sid:" + thisOrder?.S_ID);
                 if (thisOrder != null)
                 {
                     var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row);
+                    LogHelper.Info($"绉诲簱瑙i攣 --鍏朵粬宸ュ崟 x.start_area == {thisOrder.start_area} start_row == {thisOrder.start_row} SID:" + other?.S_ID);
                     if (other != null)
                         j瑙i攣璧风偣搴撳尯鎺�= false;
                 }
@@ -1027,7 +1028,7 @@
         static bool InworkLock = false;
         /// <summary>
         /// 鍘熸潗鏂�妫�祴鍚勬祦杞綅缃�  鍐欏叆鎵樼洏璐т綅s_type 涓�涓嬩竴涓洰鐨勫湴銆傚氨寮�涓浆銆�-        /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�+        /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�YWLRGDD--浜哄伐鍫嗗彔鍖�         /// </summary>
         internal static void BottTask()
         {
@@ -1035,9 +1036,9 @@
             var usingSpace = new List<string> { "鍏ュ簱鎺ラ┏鍖�, "搴撳唴鎺ラ┏鍖�, "鍑哄簱鎺ラ┏鍖�, "鎻愬崌鏈洪�鏂欏彛" };
             //usingSpace = new List<string> { "YWLRGDD", "YWLWJJB", "YWLYLTKQ", "YWLTKKTQ", "YWLKTDDQ", "YWLT1TSJ", "YWLT1TSJCD", "YWLT2TSJ", "YWLT2TSJCD" };
             usingSpace = new List<string> { "YWLYLTKQ", "YWLTKKTQ", "YWLWJJB", "YWLRGDD", "YWLT1TSJ", "YWLT2TSJ" };
+            var dbll = new SqlHelper<object>().GetInstance();
             ///----------------------------閫�綑鏂欎腑闂村簱鍖猴紝閫�┖涓棿搴撳尯锛�             ///   /*鎵樼洏璐т綅琛ㄧ殑 S_TYPE銆� 搴撳尯1,搴撳尯,*/
-
             foreach (var area in usingSpace)
             {
                 try
@@ -1122,7 +1123,7 @@
                                         var arloclist = LocationHelper.GetAreaNormalLocList(EdnRarea);// LocationHelper.GetList<Location>(x => x.S_AREA_CODE == _clrel0.S_TYPE && x.S_LOCK_STATE != "鎶ュ簾");
                                         if (arloclist.Any())
                                         {
-                                            if (EdnRarea == "YWLWJJB")
+                                            if (EdnRarea == "YWLWJJB")//绾哥鏃犺弻鎺ラ┏鍖�                                             //    InworkLock = true;
                                             //else InworkLock = false;
                                             //if (od.S_ZZ_AREA == "YWLWJJB")
@@ -1136,14 +1137,43 @@
                                             Location endbit = null;
                                             //foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(xx => xx.Key))
                                             RowLock inlock = null;
+                                            List<RowLock> inlockLis = new List<RowLock>();
                                             bool isCd = false;
                                             if (CDlist.Contains(EdnRarea))
                                             {
                                                 isCd = true;
-                                                inlock = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).FirstOrDefault();
+                                                inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).ToList();
+                                                inlock = inlockLis.FirstOrDefault();
                                                 if (inlock != null)
                                                 {
-                                                    arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList();
+                                                    //褰撳叆搴撶殑浠诲姟鑳芥斁婊′竴鎺掑苟涓旇繕鏈変綑鐨勬椂鍊�寮�浜屾帓
+                                                    //鍏堝垽鏂捣鐐规湁澶氬皯鐩稿悓鐨�鑳藉叆鐨勭墿鏂�+                                                    if (_cl.S_AREA_CODE == "YWLRGDD")//鍒ゆ柇璧风偣鏄惁鏄汉宸ュ爢鍙犲尯
+                                                    {
+                                                        //鐒跺悗鍒ゆ柇浜哄伐鍫嗗彔鍖洪渶瑕佸叆搴撳灏戞墭鍚屽搧绉嶇墿鏂�startMum
+                                                        //璐т綅 鎵樼洏 鐗╂枡琛ㄨ仈鏌�+                                                        LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 寮�");
+                                                        var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
+                                                        ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE);
+                                                        var lstCanOutL = dbll.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).InnerJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).Includes(e => e.LocCntrRel, p => p.CntrItemRel).ToList();
+                                                        LogHelper.Info($"璧风偣瑕佸叆CD鐨勬湁澶氬皯鎵樼洏鏁伴噺涓簕lstCanOutL.Count()}");
+                                                        //鍒ゆ柇缁堢偣鎺掕兘鍏ュ灏� 灏戜簬鍏ュ簱鎵樼洏鏁板垯澶氬紑涓�帓 EndMum 
+                                                        var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
+                                                        if (lstCanOutL.Count <= EndMum.Count())
+                                                        {
+                                                            arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
+                                                        }
+                                                        else
+                                                        {
+                                                            arloclist = arloclist.FindAll(x => !inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
+                                                            inlock = null;
+                                                        }
+                                                        LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 缁撴潫");
+                                                    }
+                                                    else
+                                                    {
+                                                        arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList();
+                                                    }
                                                 }
                                             }
                                             foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key))
@@ -3587,7 +3617,6 @@
         /// </summary>
         public static void AutoRun13TSJ()
         {
-
             Action<YWLWorkOrder> _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ = (od) =>
             {
                 LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瀵瑰簲宸ュ崟鐨剓od.S_ROW} 鐗╂枡鏁伴噺涓嶈冻銆傝Е鍙戣浆杩愩�");
@@ -4029,7 +4058,7 @@
                     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($"YWL_ZX_Turn 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);
@@ -4046,12 +4075,12 @@
                             var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault();
                             if (lastful != null)
                             {
-                                LogHelper.Info($"YWL_ZX_Turn 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($"YWL_ZX_Turn 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))

--
Gitblit v1.9.1