From 7c9cc313ed6561130b4cd3c40f9df52b1b972158 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期一, 23 六月 2025 18:36:06 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |  162 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 127 insertions(+), 35 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 28e067a..0327980 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
 {
@@ -96,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);
@@ -119,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 == "鑷姩绉诲簱")
@@ -179,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 = "瀹屾垚";
@@ -303,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 = "璧风偣宸茬粡娌℃湁璐т簡锛岀Щ搴撳畬鎴�;
@@ -322,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 = "缁堢偣婊′簡锛岀Щ搴撳畬鎴�;
@@ -419,11 +418,26 @@
             }
         }
 
-        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("绉诲簱瑙i攣 doo" + msg + "---" + sign + "--" + WorkNo);
             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);
+                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;
+                }
+            }
             //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 +445,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 +455,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"
                             });
@@ -1010,7 +1028,7 @@
         static bool InworkLock = false;
         /// <summary>
         /// 鍘熸潗鏂�妫�祴鍚勬祦杞綅缃�  鍐欏叆鎵樼洏璐т綅s_type 涓�涓嬩竴涓洰鐨勫湴銆傚氨寮�涓浆銆�-        /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�+        /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�YWLRGDD--浜哄伐鍫嗗彔鍖�         /// </summary>
         internal static void BottTask()
         {
@@ -1018,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
@@ -1086,6 +1104,19 @@
                                         //else
                                         var ccr = _clrel0.S_TYPE.Split(',');
                                         string EdnRarea = ccr.First();
+
+                                        if (EdnRarea == "YWLBQWJ" || EdnRarea == "YWLWJJB")//鍒癇鍖虹殑绉诲簱宸ュ崟鏈�鍙兘鐢熸垚涓ゆ潯浠诲姟
+                                        {
+                                            //鏌ヨ浠诲姟鏁�
+                                            List<string> AreaLi = new List<string>() { "YWLBQWJ", "YWLWJJB" };
+                                            var db = new SqlHelper<object>().GetInstance();
+                                            var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "鍏ュ簱閿�).ToList();
+                                            if (list.Count() >= 2)
+                                            {
+                                                LogHelper.Info($"CreateTransport-  CreateTask Error" + $"缁堢偣搴撳尯涓篩WLRGDD鎴栬�YWLWJJB 鍒欐渶澶氬彧鑳界敓鎴愪袱涓换鍔�);
+                                                continue;
+                                            }
+                                        }
                                         string Last = string.Join(",", ccr.Skip(1));
 
                                         if (ABlist.Contains(EdnRarea))
@@ -1103,9 +1134,20 @@
                                         var cir1 = cntritems.First();
 
                                         var arloclist = LocationHelper.GetAreaNormalLocList(EdnRarea);// LocationHelper.GetList<Location>(x => x.S_AREA_CODE == _clrel0.S_TYPE && x.S_LOCK_STATE != "鎶ュ簾");
+
+                                        //鏈夌Щ搴撳伐鍗�鎺掗櫎绉诲簱宸ュ崟涓婃墍瀵瑰簲鐨勬帓
+                                        var order = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "鎵ц").ToList();
+                                        if (order.Count() > 0)
+                                        {
+                                            foreach (var item in order)
+                                            {
+                                                LogHelper.Info($"鏈夌Щ搴撳伐鍗曟帓闄ゅ搴旂殑搴撳尯{item.S_START_AREA} 鎺抺item.N_START_ROW}");
+                                                arloclist.RemoveAll(e => e.S_AREA_CODE == item.S_START_AREA && e.N_ROW == item.N_START_ROW);
+                                            }
+                                        }
                                         if (arloclist.Any())
                                         {
-                                            if (EdnRarea == "YWLWJJB")
+                                            if (EdnRarea == "YWLWJJB")//绾哥鏃犺弻鎺ラ┏鍖�                                             //    InworkLock = true;
                                             //else InworkLock = false;
                                             //if (od.S_ZZ_AREA == "YWLWJJB")
@@ -1119,14 +1161,46 @@
                                             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();
+                                                if (inlockLis.Count() > 0)
+                                                {
+                                                    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))
@@ -1195,6 +1269,7 @@
                                                 if (res && inlock == null && isCd)
                                                 {
                                                     var rrrr = new RowLock { S_LOCK_SRC = cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = endbit.S_AREA_CODE, N_ROW = endbit.N_ROW };
+                                                    LogHelper.Info($"鍘熺墿鏂欏叆搴�娣诲姞鎺掗攣淇℃伅{JsonConvert.SerializeObject(rrrr)} ");
                                                     WCSHelper.Do(db => db.Insertable(rrrr).ExecuteCommand());
                                                 }
                                                 if (EdnRarea == "YWLWJJB") InworkLock = false;
@@ -3570,7 +3645,6 @@
         /// </summary>
         public static void AutoRun13TSJ()
         {
-
             Action<YWLWorkOrder> _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ = (od) =>
             {
                 LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瀵瑰簲宸ュ崟鐨剓od.S_ROW} 鐗╂枡鏁伴噺涓嶈冻銆傝Е鍙戣浆杩愩�");
@@ -3680,15 +3754,18 @@
                     {
                         var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" };
                         l2.Remove(od.S_ROW);
-                        l2.Remove(od.TagOver);
-                        var odsr = new List<string> { od.TagOver, od.S_ROW }.Concat(l2).Distinct().ToList();
+                        //l2.Remove(od.TagOver);
+                        //var odsr = new List<string> { od.TagOver, od.S_ROW }.Concat(l2).Distinct().ToList();
+                        var odsr = new List<string> { od.S_ROW }.Concat(l2).Distinct().ToList();
 
                         ///姹囨�浠撳簱閲屾渶澶у眰鏄嚑灞傘�
                         Dictitems Lart = null;
                         foreach (var area in odsr)//od.S_ROW.Split('$'))
                         {
-                            if (string.IsNullOrEmpty(area)) continue;
-
+                            if (string.IsNullOrEmpty(area))
+                            {
+                                continue;
+                            }
                             if (dsi.TryGetValue(area, out var dictitems1))
                             {
                                 foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME))
@@ -4009,10 +4086,23 @@
                 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))
+                    if (od.S_END_AREA == "YWLBQWJ" || od.S_END_AREA == "YWLAQWJ")//鍒癇鍖虹殑绉诲簱宸ュ崟鏈�鍙兘鐢熸垚涓ゆ潯浠诲姟
                     {
-                        LogHelper.CError($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�");
+
+                        //鏌ヨ浠诲姟鏁�
+                        List<string> AreaLi = new List<string>() { "YWLBQWJ", "YWLWJJB" };
+                        var db = new SqlHelper<object>().GetInstance();
+                        var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "鍏ュ簱閿�).ToList();
+                        if (list.Count() >= 2)
+                        {
+                            LogHelper.Info($"CreateTransport-  CreateTask Error" + $"缁堢偣搴撳尯涓篩WLRGDD鎴栬�YWLWJJB 鍒欐渶澶氬彧鑳界敓鎴愪袱涓换鍔�);
+                            continue;
+                        }
+                    }
+                    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} to{od.S_END_AREA} 鏁版嵁缂哄け銆傛棤娉曞畬鎴愮Щ搴撱�");
                         continue;
                     }
                     var rows = locS.FindAll(x => x.N_ROW == od.N_START_ROW);
@@ -4029,13 +4119,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)
@@ -4065,24 +4165,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