From f8e049e2a30f711a56b735361a230216d8808f0b Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期一, 30 六月 2025 17:12:30 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |  368 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 275 insertions(+), 93 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 84b0878..c825c89 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1026,6 +1026,8 @@
         static List<string> ABlist = new List<string> { "YWLAQWJ", "YWLBQWJ" };
         static List<string> CDlist = new List<string> { "YWLCQSX", "YWLDQWJ" };
         static bool InworkLock = false;
+        //Dictionary<string, List<RowLock>> RGRowList = new Dictionary<string, List<RowLock>>();
+        public static List<RowLock> RGRow = new List<RowLock>();
         /// <summary>
         /// 鍘熸潗鏂�妫�祴鍚勬祦杞綅缃�  鍐欏叆鎵樼洏璐т綅s_type 涓�涓嬩竴涓洰鐨勫湴銆傚氨寮�涓浆銆�         /// 鍘熺墿鏂欑焊绠憋紝鍏ュ簱鍫嗗彔鍖鸿浆杩�YWLRGDD--浜哄伐鍫嗗彔鍖�@@ -1043,6 +1045,7 @@
             {
                 try
                 {
+
                     var lolist = LocationHelper.GetAreaNormalLocList(area);// LocationHelper.GetList<Location>(x => x.S_AREA_CODE == area && x.S_LOCK_STATE != "鎶ュ簾");
                     var lgrow = lolist.GroupBy(x => x.N_ROW).OrderBy(x => x.Key);
                     Dictionary<string, List<Location>> dsll = new Dictionary<string, List<Location>>();
@@ -1063,6 +1066,8 @@
                             if (!cntritems.Any())
                                 continue;
                             var cir1 = cntritems.First();
+
+
                             //鍙瓫閫夌焊绠辩墿鏂欑殑搴撳尯鏁版嵁銆�                             if (!string.IsNullOrEmpty(cir1.S_ITEM_NAME) && cir1.S_ITEM_NAME.Contains("绾哥-"))
                                 if (dsll.TryGetValue(cir1.S_ITEM_CODE, out List<Location> ll))
@@ -1123,12 +1128,22 @@
                                         if (ABlist.Contains(EdnRarea))
                                         {
                                             var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿� || x.S_LOCK_STATE == "鍑哄簱閿�));
-                                            if (ls.Any())
+                                            //var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿�));
+                                            if (ls.Count() > 1)
                                             {
                                                 LogHelper.Info($"{EdnRarea}浠诲姟鏁�绠″埗2");
                                                 continue;
                                             }
                                         }
+                                        //else if (CDlist.Contains(EdnRarea))
+                                        //{
+                                        //    var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿�)).ToList();
+                                        //    if (ls.Count() > 2)
+                                        //    {
+                                        //        LogHelper.Info($"CD鍖哄叆搴撲换鍔$鍒舵渶澶ф暟3 {EdnRarea}");
+                                        //        continue;
+                                        //    }
+                                        //}
                                         var cntritems = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE);
                                         if (!cntritems.Any())
                                             continue;
@@ -1167,17 +1182,19 @@
                                             if (CDlist.Contains(EdnRarea))
                                             {
                                                 isCd = true;
-                                                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();
-                                                }
+                                                //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();
+                                                //}
+                                                inlock = RGRow.FirstOrDefault();
                                                 if (inlock != null)
                                                 {
                                                     //褰撳叆搴撶殑浠诲姟鑳芥斁婊′竴鎺掑苟涓旇繕鏈変綑鐨勬椂鍊�寮�浜屾帓
                                                     //鍏堝垽鏂捣鐐规湁澶氬皯鐩稿悓鐨�鑳藉叆鐨勭墿鏂�                                                     if (_cl.S_AREA_CODE == "YWLRGDD")//鍒ゆ柇璧风偣鏄惁鏄汉宸ュ爢鍙犲尯
                                                     {
+                                                        inlockLis = RGRow.FindAll(e => e.S_AREA_CODE == EdnRarea && e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME).ToList();
                                                         //鐒跺悗鍒ゆ柇浜哄伐鍫嗗彔鍖洪渶瑕佸叆搴撳灏戞墭鍚屽搧绉嶇墿鏂�startMum
                                                         //璐т綅 鎵樼洏 鐗╂枡琛ㄨ仈鏌�                                                         LogHelper.Info($"鏌ヨ捣鐐规湁澶氬皯鍚屽搧绉嶇殑鐗╂枡 寮�");
@@ -1187,6 +1204,7 @@
                                                         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();
+                                                        LogHelper.Info($"缁堢偣CD鎺掓湁澶氬皯绌烘墭鑳藉叆{lstCanOutL.Count()}");
                                                         if (lstCanOutL.Count <= EndMum.Count())
                                                         {
                                                             arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList();
@@ -1202,6 +1220,26 @@
                                                     {
                                                         arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList();
                                                     }
+                                                }
+                                                else
+                                                {
+                                                    if (_cl.S_AREA_CODE == "YWLRGDD")
+                                                    {
+                                                        //鏌ヨ鏄惁鏈夊凡缁忓叆浜嗙殑鎺�+                                                        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 == EdnRarea);
+                                                        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()).ToList();
+                                                        LogHelper.Info($"缁堢偣鏈夌浉鍚岀殑鐗╂枡鐨勮揣浣嶆湁{lstCanOutL.Count()}");
+                                                        if (lstCanOutL.Count() > 0)
+                                                        {
+                                                            var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "鏃� && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList();
+                                                            if (EndMum.Count() > 0)
+                                                            {
+                                                                arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.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))
@@ -1267,12 +1305,24 @@
                                                 var sign = Settings.GetTimeStamp();
                                                 var res = TaskProcess.CreateTransport(sign, _cl.S_LOC_CODE, endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", _clrel.Select(x => x.S_CNTR_CODE).ToList(), 1, endbit.N_CURRENT_NUM + 1, 1, 50, Last);///, EdnRarea == "YWLYLTKQ" ? _clrel0.S_TYPE : "");
                                                 LogHelper.Info($"{r.Key}鍘熺墿鏂欐惉杩�{sign} 浠诲姟 锛屽垱寤簕res} ");
-                                                if (res && inlock == null && isCd)
+                                                if (CDlist.Contains(endbit.S_AREA_CODE) && res)
                                                 {
-                                                    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());
+                                                    LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣");
+                                                    var ggf = inlockLis.Find(e => e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && e.S_AREA_CODE == endbit.S_AREA_CODE && e.N_ROW == endbit.N_ROW);
+                                                    LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 鏄惁鏌ヨ鍒版暟鎹�{JsonConvert.SerializeObject(ggf)}");
+                                                    if (ggf == null)
+                                                    {
+                                                        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 };
+                                                        inlockLis.Add(rrrr);
+                                                        LogHelper.Info($"娣诲姞鍐呭瓨鎺掗攣 娣诲姞鏁版嵁鍒板唴瀛樻帓閿佷腑:{JsonConvert.SerializeObject(inlockLis)}");
+                                                    }
                                                 }
+                                                //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;
                                                 break;
                                             }
@@ -1367,12 +1417,20 @@
                                            S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim(),
                                            S_ITEM_CODE = cir.S_ITEM_CODE,
                                            S_ITEM_NAME = cir.S_ITEM_NAME,
+                                           S_BATCH_NO = cir.S_BATCH_NO,
                                            S_CJ_NAME = cir.S_CJ_NAME,
                                            S_CNTR_CODE = cir.S_CNTR_CODE
                                        })
                                        .ToList();
             /// 浜哄伐鍫嗗彔鍖虹焊绠�鍜�鏍囩 鏄寜鏍囪瘑+鐗╂枡绛涢�杩涜鍏ュ簱杞繍銆�
             /// 鐗╂枡鍚嶇О鍖呭惈瀵瑰簲绉嶇被杩涜鍏ュ簱銆�+            foreach (var item in locsFirstA)
+            {
+                if (!string.IsNullOrEmpty(item.S_BATCH_NO))
+                {
+                    item.S_NOTE = item.S_NOTE + "&" + item.S_BATCH_NO;
+                }
+            }
             var locsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_TYPE == WJ_BQ.RK_BBHJQ);
             var SlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鏍囩-") && x.S_TYPE == SX_BQ.RK_BBHJQ);
             var TKlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("鎻愭墸-"));
@@ -1389,6 +1447,7 @@
             {
                 try
                 {
+                    // var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList();
                     var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "鏃犺弻鏍囩鍑哄簱" && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => x.TagOverTime).ToList();
                     if (!yuworders.Any())
                     {
@@ -1422,6 +1481,7 @@
                     var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 1 && x.SQL_State == "鎵ц涓�);
                     if (!Syuworders.Any())
                     {
+                        //姘寸嚎鏍囩鍏ュ簱
                         YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ);
                     }
                     if (tklist.Count() > 0)
@@ -1440,6 +1500,8 @@
                                     LogHelper.CErrorLog($"{tk.SQL_WorkNo}-{tk.SQL_PLineNo} 閫�簱宸ュ崟寮�惎锛岀粦瀹氱殑 闆舵暣 鏍囪");
                                 }
                                 Location Endbit = null;
+                                //  var hjs = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == SX_BQ.RK_BBHJQ).FindAll(x => x.S_LOCK_STATE == "鏃� && x.N_CURRENT_NUM == 0);
+                                //  var hjs = db.Queryable<Location>().Where(l => l.S_AREA_CODE == SX_BQ.RK_BBHJQ && l.S_LOCK_STATE.Trim() == "鏃�).ToList();
                                 var hjs = LocationHelper.GetAreaNormalLocList(SX_BQ.RK_BBHJQ, true, false);
                                 Endbit = hjs.FindAll(x => x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
                                 if (Endbit != null)
@@ -1479,10 +1541,10 @@
                 {
                     //return;
                     ///璧风偣鏁版嵁銆� 缁堢偣搴撳尯 鍫嗗彔灞傛暟銆�-                    YwlPETK_CreInwork(PElocsFirst, "YWLTKMKQ", "鎻愭墸鍙夎繍", 3);//鎻愭墸鍏ュ簱--PE鑶�-                    YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "鏀剁缉鑶滃弶杩�, 1); // PE鍏ュ簱 --鎻愭墸
-                    //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "鏀剁缉鑶滃弶杩�);
-                    //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "鏀剁缉鑶滃弶杩�);// PE涓嚭搴�+                    YwlPETK_CreInwork(PElocsFirst, "YWLTKMKQ", "鏀剁缉鑶滃弶杩�, 2);//PE鑶�+                    YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "鎻愭墸鍙夎繍", 1); //鎻愭墸
+                                                                           //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "鏀剁缉鑶滃弶杩�);
+                                                                           //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "鏀剁缉鑶滃弶杩�);// PE涓嚭搴� 
                     var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2鎻愬崌鏈�鏀剁缉鑶� && x.WorkType == 1 && x.SQL_State == "鎵ц涓�);
                     if (tklist.Count() > 0)
@@ -1514,6 +1576,7 @@
                                 string v = "YWLTKMKQ";
                                 var rklist = LocationHelper.GetRowLock(v);
                                 int hof = (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3));
+
                                 var inlock = rklist.Find(x => x.S_LOCK_SRC == (cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim() + hof) && x.S_LOCK_STATE.Contains("鍏ュ簱閿�));
                                 Location EndBit = null;
                                 var NormalList = LocationHelper.GetAreaNormalLocList(v);
@@ -1849,16 +1912,16 @@
                             {
                                 var s_type = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE).FirstOrDefault()?.N_BQ_TRAY_TYPE ?? 0;
                                 Location Endbit = null;
-                                if (area == area/* WJ_BQ.RK_BQJBQ*/)
+                                //if (area == area/* WJ_BQ.RK_BQJBQ*/)
+                                //{
+                                var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, true, false);
+                                Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
+                                if (Endbit != null)
                                 {
-                                    var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, true, false);
-                                    Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3))).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
-                                    if (Endbit != null)
-                                    {
-                                        var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-绾胯竟鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62);
-                                        LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 鏍囩鍙夎繍-鎺ラ┏鏍囩閫�簱 锛屽垱寤簕re}");
-                                    }
+                                    var re = TaskProcess.CreateTransport("", lastfull.S_LOC_CODE.Trim(), Endbit.S_LOC_CODE, "鏍囩鍙夎繍-绾胯竟鏍囩閫�簱", CNTR.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, 1, 62);
+                                    LogHelper.CSucessLog($"from {lastfull.S_LOC_CODE} to {Endbit.S_LOC_CODE} 鏍囩鍙夎繍-鎺ラ┏鏍囩閫�簱 锛屽垱寤簕re}");
                                 }
+                                // }
 
                                 //else
                                 //{
@@ -2076,10 +2139,13 @@
         private static void YwlPETK_CreInwork(List<locCntItem> klocsFirst, string v, string v2, int v1 = 3)
         {
             bool ord = v2.Contains("鎻愭墸");
-            foreach (var ptR in klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key))
+            var chi = new SqlHelper<object>().GetInstance();
+            var newDb = chi.CopyNew();
+            var yx = klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key).ToList();
+            foreach (var ptR in klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key).ToList())
             {
                 Location EndBit = null;
-                var rsfull = ptR.OrderBy(X => X.N_COL).ToList().FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault();
+                var rsfull = ptR.OrderBy(X => X.N_COL).ToList().FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault();//璧风偣
                 if (rsfull != null)
                 {
                     var rklist = LocationHelper.GetRowLock(v);
@@ -2100,11 +2166,40 @@
                     }
                     else
                     {
-                        var hasNum = NormalList.FindAll(x => x.N_CURRENT_NUM > 0).Select(x => x.N_ROW).Distinct();
+                        var hasNum = NormalList.FindAll(x => x.N_CURRENT_NUM > 0).Select(x => x.N_ROW).Distinct().ToList();
                         var EptRowlist = NormalList.FindAll(x => !hasNum.Contains(x.N_ROW));
                         if (EptRowlist.Any())
                         {
                             EndBit = EptRowlist.GroupBy(x => x.N_ROW).OrderBy(x => x.Key * (ord ? 1 : -1)).FirstOrDefault().ToList().OrderBy(x => x.N_COL).FirstOrDefault();
+                        }
+                        else
+                        {
+                            if (hasNum.Any())
+                            {
+                                //鏈夌浉鍚岀墿鏂�鐩稿悓鏍囩鐨勭户缁叆
+                                List<Location> lstCanOutL = new List<Location>();
+                                if (!string.IsNullOrEmpty(rsfull.S_BATCH_NO))
+                                {
+                                    lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == v && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && hasNum.Contains(o.N_ROW) && t.S_ITEM_CODE == rsfull.S_ITEM_CODE && t.S_ITEM_NAME == rsfull.S_ITEM_NAME && t.S_BATCH_NO == rsfull.S_BATCH_NO).ToList();
+
+                                }
+                                else
+                                {
+                                    lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == v && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && hasNum.Contains(o.N_ROW) && t.S_ITEM_CODE == rsfull.S_ITEM_CODE && t.S_ITEM_NAME == rsfull.S_ITEM_NAME && string.IsNullOrEmpty(t.S_BATCH_NO)).ToList();
+                                }
+                                if (lstCanOutL.Any())
+                                {
+                                    var loclist1 = NormalList.FindAll(x => lstCanOutL.Select(f => f.N_ROW).Distinct().ToList().Contains(x.N_ROW));
+                                    foreach (var rs in loclist1.GroupBy(x => x.N_ROW).OrderBy(x => x.Key * (ord ? 1 : -1)))
+                                    {
+                                        var srloclist = rs.OrderBy(x => x.N_COL).ToList();
+                                        var lastfull = srloclist.FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault();
+                                        EndBit = srloclist.Find(x => x.S_LOCK_STATE == "鏃� && x.N_CURRENT_NUM < Math.Min(x.N_CAPACITY, v1) && x.S_LOCK_STATE != "鎶ュ簾" && x.N_COL >= (lastfull?.N_COL ?? 0));
+                                        if (EndBit != null)
+                                            break;
+                                    }
+                                }
+                            }
                         }
                     }
                     if (EndBit != null)
@@ -2112,29 +2207,29 @@
                         var res = TaskProcess.CreateTransport("", rsfull.S_LOC_CODE.Trim(), EndBit.S_LOC_CODE, v2 + "-鍏ュ簱", new List<string> { rsfull.S_CNTR_CODE }, rsfull.N_CURRENT_NUM, EndBit.N_CURRENT_NUM + 1, 1, 62);
                         LogHelper.CSucessLog($"from {rsfull.S_LOC_CODE} to {EndBit.S_LOC_CODE} {(v2 + "-鍏ュ簱")} 锛屽垱寤簕res} ");
 
-                        if (res && inlock == null)
-                        {
-                            var r = new RowLock { S_LOCK_SRC = rsfull.S_NOTE + rsfull.HalfOrFull, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW };
-                            var db = new SqlHelper<object>().GetInstance();
-                            db.Insertable(r).ExecuteCommand();
-                            //else
-                            //{
-                            //    if (inlock.N_ROW != EndBit.N_ROW)
-                            //    {
-                            //        db.Deleteable(inlock).ExecuteCommand();
-                            //        var row = db.Queryable<RowLock>().Where(x => x.S_AREA_CODE == r.S_AREA_CODE && r.N_ROW == x.N_ROW).First();
-                            //        if (row != null)
-                            //        {
-                            //            if (row.S_LOCK_SRC != r.S_LOCK_SRC)
-                            //            {
-                            //                db.Deleteable(row).ExecuteCommand();
-                            //                db.Insertable(r).ExecuteCommand();
-                            //            }
-                            //        }
-                            //        else db.Insertable(r).ExecuteCommand();
-                            //    }
-                            //}
-                        }
+                        //if (res && inlock == null)
+                        //{
+                        //    var r = new RowLock { S_LOCK_SRC = rsfull.S_NOTE + rsfull.HalfOrFull, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍏ュ簱閿�, S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW };
+                        //    var db = new SqlHelper<object>().GetInstance();
+                        //    db.Insertable(r).ExecuteCommand();
+                        //    //else
+                        //    //{
+                        //    //    if (inlock.N_ROW != EndBit.N_ROW)
+                        //    //    {
+                        //    //        db.Deleteable(inlock).ExecuteCommand();
+                        //    //        var row = db.Queryable<RowLock>().Where(x => x.S_AREA_CODE == r.S_AREA_CODE && r.N_ROW == x.N_ROW).First();
+                        //    //        if (row != null)
+                        //    //        {
+                        //    //            if (row.S_LOCK_SRC != r.S_LOCK_SRC)
+                        //    //            {
+                        //    //                db.Deleteable(row).ExecuteCommand();
+                        //    //                db.Insertable(r).ExecuteCommand();
+                        //    //            }
+                        //    //        }
+                        //    //        else db.Insertable(r).ExecuteCommand();
+                        //    //    }
+                        //    //}
+                        //}
                     }
                     Thread.Sleep(1000);
                 }
@@ -3670,22 +3765,28 @@
                             //鏌ヨ鍙敤璐т綅鏈夊灏�                             List<string> Ky = new List<string>() { "鏃�, "鍑哄簱閿�, "鍏ュ簱閿� };
                             var loclistK = loclist.FindAll(x => Ky.Contains(x.S_LOCK_STATE)).Count();
-                            var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Sum(x => x.N_CURRENT_NUM);
+                            var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Count();
                             LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7");
                             if (count <= loclistK - 7)
                             {
                                 LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瀵瑰簲宸ュ崟鐨剓od.S_ROW} 鐗╂枡鏁伴噺涓嶈冻銆傝Е鍙戣浆杩愩�");
                                 // 鍏堢湅鏄惁鏈夊埌璇ュ簱鍖虹殑杞繍浠诲姟銆�
-                                var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "鎵ц" && X.S_END_AREA == od.S_ROW);
-
-                                //1.鏌ョ湅鐗╂枡鏄惁鍖归厤銆�-                                var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME);
-                                if (itemTRUN)
-                                {  //鏈夊埌璇ュ簱鍖虹殑 鐗╂枡杞繍浠诲姟浜嗐� 涓嶉渶瑕佺户缁簡 銆�-
+                                var zxs = LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "鎵ц" && X.S_END_AREA == od.S_ROW).ToList();
+                                //鏌ヨ鏄惁鏈夐噸澶嶇殑宸ュ崟鍦ㄦ墽琛�+                                var ggf = zxs.Find(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName);
+                                if (ggf != null)
+                                {
                                     LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}宸茬粡瀛樺湪杞繍浜嗘棤闇�Е鍙戣浆杩愩�");
-                                    return;
+                                    continue;
                                 }
+                                //1.鏌ョ湅鐗╂枡鏄惁鍖归厤銆�+                                //var itemTRUN = zxs.Any(x => x.S_ITEM_CODE == od.SQL_ItemCode && x.S_ITEM_NAME == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME);
+                                //if (itemTRUN)
+                                //{  //鏈夊埌璇ュ簱鍖虹殑 鐗╂枡杞繍浠诲姟浜嗐� 涓嶉渶瑕佺户缁簡 銆�+
+                                //    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}宸茬粡瀛樺湪杞繍浜嗘棤闇�Е鍙戣浆杩愩�");
+                                //    return;
+                                //}
                                 //浜哄伐杞繍娌℃寚瀹氱墿鏂欙紝鎴戜細鑷姩鍐欏洖杞繍鍗�鐗╂枡鏁版嵁銆� 
                                 //鎵綜D 鍖�鍝噷鏈夎繖涓墿鏂欍� 
@@ -3696,17 +3797,21 @@
 
                                     //ca.And((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME);
                                     var lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME).ToList();
-                                    List<string> CRk = new List<string>() { "鍑哄簱閿�, "鍏ュ簱閿� };
-                                    var EndMum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == area && CRk.Contains(l.S_LOCK_STATE)).ToList();
-                                    var RowLock = EndMum.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
-                                    foreach (var item in RowLock)
+                                    if (!lstCanOutL.Any())
                                     {
-                                        lstCanOutL.RemoveAll(e => e.N_ROW == item.N_ROW);
+                                        lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName).ToList();
                                     }
+                                    //List<string> CRk = new List<string>() { "鍑哄簱閿�, "鍏ュ簱閿� };
+                                    //var EndMum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == area && CRk.Contains(l.S_LOCK_STATE)).ToList();
+                                    //var RowLock = EndMum.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList();
+                                    //foreach (var item in RowLock)
+                                    //{
+                                    //    lstCanOutL.RemoveAll(e => e.N_ROW == item.N_ROW);
+                                    //}
                                     if (lstCanOutL.Count() > 0)
                                     {
-                                        var LstCan = newDb.Queryable<LocCntrRel>().Where(a => lstCanOutL.Select(e => e.S_LOC_CODE).ToList().Contains(a.S_LOC_CODE)).ToList();
-                                        var loc = lstCanOutL.Find(e => e.S_LOC_CODE == LstCan.OrderBy(c => c.T_CREATE).FirstOrDefault().S_LOC_CODE);
+                                        //var LstCan = newDb.Queryable<LocCntrRel>().Where(a => lstCanOutL.Select(e => e.S_LOC_CODE).ToList().Contains(a.S_LOC_CODE)).ToList();
+                                        var loc = lstCanOutL.OrderBy(e => e.T_FULL_TIME).FirstOrDefault();
                                         TrunStart.area = area;
                                         TrunStart.Row = loc.N_ROW;
                                     }
@@ -3726,21 +3831,21 @@
                                 }
                                 LogHelper.Info($"ZdzyABArea{od.SQL_WorkNo}瑙﹀彂杞繍銆傝浆杩愭潵婧愭槸{JsonConvert.SerializeObject(TrunStart)}");
                                 if (TrunStart?.area != null)
-                                    WCSHelper.Do(db =>
+                                {
+                                    var ggft = new YWLZXtake()
                                     {
-                                        db.Insertable(new YWLZXtake
-                                        {
-                                            S_START_AREA = TrunStart.area,
-                                            N_START_ROW = TrunStart.Row,
-                                            S_END_AREA = od.S_ROW,
-                                            S_ZX_STATE = "鎵ц",
-                                            S_ITEM_CODE = od.SQL_ItemCode,
-                                            S_ITEM_NAME = od.SQL_ItemName,
-                                            S_CJ_NAME = od.S_CJ_NAME,
-                                            S_ZZ_AREA = (od.S_ROW == "YWLAQWJ" ? "YWLWJJB" : od.S_ROW)
-                                        }).ExecuteCommand();
-                                    });
-
+                                        SQL_WorkNo = "CKD" + DateTime.Now.Ticks.ToString(),
+                                        S_START_AREA = TrunStart.area,
+                                        N_START_ROW = TrunStart.Row,
+                                        S_END_AREA = od.S_ROW,
+                                        S_ZX_STATE = "鎵ц",
+                                        S_ITEM_CODE = od.SQL_ItemCode,
+                                        S_ITEM_NAME = od.SQL_ItemName,
+                                        S_CJ_NAME = od.S_CJ_NAME,
+                                        S_ZZ_AREA = (od.S_ROW == "YWLAQWJ" ? "YWLWJJB" : od.S_ROW)
+                                    };
+                                    var gf = newDb.Insertable(ggft).ExecuteCommand();
+                                }
                             }
                         }
                     }
@@ -3760,6 +3865,7 @@
         /// </summary>
         public static void AutoRun13TSJ()
         {
+
             //Action<YWLWorkOrder> _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ = (od) =>
             //{
             //    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瀵瑰簲宸ュ崟鐨剓od.S_ROW} 鐗╂枡鏁伴噺涓嶈冻銆傝Е鍙戣浆杩愩�");
@@ -3851,7 +3957,7 @@
                             }
                             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))
+                                foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName))
                                 {
                                     if (Lart == null)
                                         Lart = d;
@@ -3877,29 +3983,77 @@
 
                                 foreach (var area in v) //.Concat(od.S_ROW.Split('$')).Distinct())
                                 {
-                                    var AreaRowlist = LocationHelper.GetAreaNormalLocList(area);
-                                    foreach (var item in AreaRowlist.GroupBy(x => x.N_ROW))
+                                    if (ABlist.Contains(area))
                                     {
-                                        var rl = item.ToList().FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault();
-                                        if (rl == null) continue;
-                                        _clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE);
-                                        //鏉垮瀷鐩稿悓
-                                        var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First();
-                                        LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆� + JsonConvert.SerializeObject(_clrel0));
-                                        var _clcntitem = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE.Trim()).FirstOrDefault();
-                                        LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "璇嗗埆鎵樼洏涓婄殑鐗╂枡淇℃伅銆� + JsonConvert.SerializeObject(_clcntitem));
-                                        if (_clcntitem != null)
+                                        //AreaRowlist = LocationHelper.GetAreaNormalLocList(area);YWLBQWJ
+                                        //  var AreaRowlist = LocationHelper.GetAreaNormalLocList("YWLAQWJ").Union(LocationHelper.GetAreaNormalLocList("YWLBQWJ")).ToList();
+                                        var db = new SqlHelper<object>().GetInstance();
+                                        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 == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && (o.S_AREA_CODE == "YWLAQWJ" || o.S_AREA_CODE == "YWLBQWJ"));
+                                        var lstCanOutL = db.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()).ToList();
+                                        if (lstCanOutL.Count() > 0)
                                         {
-                                            LogHelper.Info("AutoRun13TSJ" + "鐩镐簰鏄惁鍖归厤 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName + " od.S_CJ_NAME:" + od.S_CJ_NAME + "缁撴灉:" + (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME));
-                                            if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME)
+                                            var rl = lstCanOutL.OrderBy(e => e.T_FULL_TIME).FirstOrDefault();
+                                            _clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE);
+                                            //鏉垮瀷鐩稿悓
+                                            var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First();
+                                            if (rl != null)
                                             {
                                                 StartBit = rl;
-                                                break;
+                                            }
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"AutoRun13TSJ 鏈哄彴:{pline} 鐗╂枡缂栫爜:{od.SQL_ItemCode}鐗╂枡鍚嶇О:{od.SQL_ItemName} AB鍖虹己鏂�);
+                                        }
+
+
+                                        //if (rl == null) continue;
+                                        //_clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE);
+                                        ////鏉垮瀷鐩稿悓
+                                        //var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First();
+                                        //LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆� + JsonConvert.SerializeObject(_clrel0));
+                                        //var _clcntitem = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE.Trim()).FirstOrDefault();
+                                        //LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "璇嗗埆鎵樼洏涓婄殑鐗╂枡淇℃伅銆� + JsonConvert.SerializeObject(_clcntitem));
+                                        //if (_clcntitem != null)
+                                        //{
+                                        //    LogHelper.Info("AutoRun13TSJ" + "鐩镐簰鏄惁鍖归厤 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName + " od.S_CJ_NAME:" + od.S_CJ_NAME + "缁撴灉:" + (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME));
+                                        //    if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName)
+                                        //    {
+                                        //        StartBit = rl;
+                                        //        break;
+                                        //    }
+                                        //}
+
+                                    }
+                                    else
+                                    {
+                                        var AreaRowlist = LocationHelper.GetAreaNormalLocList(area);
+                                        foreach (var item in AreaRowlist.GroupBy(x => x.N_ROW))
+                                        {
+                                            var rl = item.ToList().FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault();
+                                            if (rl == null) continue;
+                                            _clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE);
+                                            //鏉垮瀷鐩稿悓
+                                            var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First();
+                                            LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆� + JsonConvert.SerializeObject(_clrel0));
+                                            var _clcntitem = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE.Trim()).FirstOrDefault();
+                                            LogHelper.Info("AutoRun13TSJ" + rl.S_LOC_CODE + "璇嗗埆鎵樼洏涓婄殑鐗╂枡淇℃伅銆� + JsonConvert.SerializeObject(_clcntitem));
+                                            if (_clcntitem != null)
+                                            {
+                                                LogHelper.Info("AutoRun13TSJ" + "鐩镐簰鏄惁鍖归厤 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName + " od.S_CJ_NAME:" + od.S_CJ_NAME + "缁撴灉:" + (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME));
+                                                if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName)
+                                                {
+                                                    StartBit = rl;
+                                                    break;
+                                                }
                                             }
                                         }
                                     }
                                     if (StartBit != null)
+                                    {
                                         break;
+                                    }
                                 }
                                 if (StartBit == null)
                                 {
@@ -4065,6 +4219,11 @@
                         if (dsi.TryGetValue(area, out dictitems))
                         {
                             var ill = dictitems.Find(x => x.Row == rl.N_ROW && x.ItemCode == _clcntitem.S_ITEM_CODE && x.ItemName == _clcntitem.S_ITEM_NAME && _clcntitem.S_CJ_NAME == x.S_CJ_NAME);
+                            if (ill == null)
+                            {
+                                ill = dictitems.Find(x => x.Row == rl.N_ROW && x.ItemCode == _clcntitem.S_ITEM_CODE && x.ItemName == _clcntitem.S_ITEM_NAME);
+                            }
+
                             if (ill != null)
                             {
                                 if (rl.N_CURRENT_NUM > ill.ItemLayer)
@@ -4106,6 +4265,29 @@
             LogHelper.Info($"AutoRunABD abcd鐗╂枡姹囨�瀹屾垚  >>{ReadCCK}|| {dsi.Count}");
         }
 
+        /// <summary>
+        /// 鏍煎紡鍖栧唴瀛樻帓閿�+        /// </summary>
+        public static void Qchc()
+        {
+            try
+            {
+                LogHelper.Info($"鍐呭瓨涓殑鎺掗攣琛ㄤ腑鐨勬暟鎹� + $"{JsonConvert.SerializeObject(RGRow)}");
+                if (RGRow.Count() > 0)
+                {
+                    var locs = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == "YWLRGDD" && x.S_LOCK_STATE == "鍑哄簱閿�).ToList();
+                    if (locs.Count() == 0)
+                    {
+                        RGRow = new List<RowLock>();
+                        LogHelper.Info($"鏍煎紡鍖栧唴瀛樹腑鐨勬帓閿� + $"{JsonConvert.SerializeObject(RGRow)}");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"鏍煎紡鍖栧唴瀛樹腑鐨勬帓閿�澶辫触" + $"{ex.Message}");
+            }
+        }
         public static void chargeCCD()
         {
             var ods = LocationHelper.GetList<YWLWorkOrder>(x => x.WorkType == 2 && x.SQL_State == "鎵ц涓�);

--
Gitblit v1.9.1