From 79d3258dd565313603cb7ad36db746d1c9cc5c6e Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期二, 24 六月 2025 17:36:36 +0800
Subject: [PATCH] 1

---
 HH.WCS.QingXiNongfu/core/Monitor.cs |  324 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 224 insertions(+), 100 deletions(-)

diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs
index 8399a13..84b0878 100644
--- a/HH.WCS.QingXiNongfu/core/Monitor.cs
+++ b/HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -1074,6 +1074,7 @@
                         }
                     }
                     if (dsll.Any())
+                    {
                         foreach (var r in dsll)
                         {
                             foreach (var rows in r.Value.GroupBy(x => x.N_ROW).OrderBy(x => x.Key))
@@ -1104,6 +1105,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))
@@ -1135,9 +1149,9 @@
                                         if (arloclist.Any())
                                         {
                                             if (EdnRarea == "YWLWJJB")//绾哥鏃犺弻鎺ラ┏鍖�-                                            //    InworkLock = true;
-                                            //else InworkLock = false;
-                                            //if (od.S_ZZ_AREA == "YWLWJJB")
+                                                                      //    InworkLock = true;
+                                                                      //else InworkLock = false;
+                                                                      //if (od.S_ZZ_AREA == "YWLWJJB")
                                             {
                                                 if (InworkLock)
                                                     continue;
@@ -1154,7 +1168,10 @@
                                             {
                                                 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();
-                                                inlock = inlockLis.FirstOrDefault();
+                                                if (inlockLis.Count() > 0)
+                                                {
+                                                    inlock = inlockLis.FirstOrDefault();
+                                                }
                                                 if (inlock != null)
                                                 {
                                                     //褰撳叆搴撶殑浠诲姟鑳芥斁婊′竴鎺掑苟涓旇繕鏈変綑鐨勬椂鍊�寮�浜屾帓
@@ -1166,7 +1183,7 @@
                                                         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();
+                                                        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($"璧风偣瑕佸叆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();
@@ -1253,6 +1270,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;
@@ -1264,7 +1282,11 @@
                                 }
                             }
                         }
-                    else if (InworkLock) InworkLock = false;
+                    }
+                    else if (InworkLock)
+                    {
+                        InworkLock = false;
+                    }
                 }
                 catch (Exception ex)
                 {
@@ -3623,65 +3645,171 @@
             public int Row { get; set; }
 
         }
+
         /// <summary>
-        /// 鍘熺墿鏂欑焊绠卞嚭搴�+        /// AB鍖虹墿鏂欎笉瓒宠嚜鍔ㄨ浆杩�         /// </summary>
-        public static void AutoRun13TSJ()
+        public static void ZdzyABArea()
         {
-            Action<YWLWorkOrder> _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ = (od) =>
+            try
             {
-                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)
-                {  //鏈夊埌璇ュ簱鍖虹殑 鐗╂枡杞繍浠诲姟浜嗐� 涓嶉渶瑕佺户缁簡 銆�-
-                    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}宸茬粡瀛樺湪杞繍浜嗘棤闇�Е鍙戣浆杩愩�");
-                    return;
-                }
-                //浜哄伐杞繍娌℃寚瀹氱墿鏂欙紝鎴戜細鑷姩鍐欏洖杞繍鍗�鐗╂枡鏁版嵁銆�-
-                //鎵綜D 鍖�鍝噷鏈夎繖涓墿鏂欍� 
-                Dictitems TrunStart = null;
-                foreach (var area in CDlist)
+                var chi = new SqlHelper<object>().GetInstance();
+                var newDb = chi.CopyNew();
+                foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1))
                 {
-                    if (dsi.TryGetValue(area, out var dictitems1))
+                    string pline = PLC.deviceName;
+                    if (PLC.deviceName.Contains("T2"))
+                        pline = "T2鎻愬崌鏈�绾哥";
+
+                    var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�);
+                    if (orkOrd.Any())
                     {
-                        var arearowsloc = LocationHelper.GetAreaNormalLocList(area);
-                        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 od in orkOrd)
                         {
-                            if (arearowsloc.Exists(x => x.N_ROW == d.Row))
+                            var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW);
+                            //鏌ヨ鍙敤璐т綅鏈夊灏�+                            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);
+                            LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7");
+                            if (count <= loclistK - 7)
                             {
-                                TrunStart = d;
-                                break;
+                                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)
+                                {  //鏈夊埌璇ュ簱鍖虹殑 鐗╂枡杞繍浠诲姟浜嗐� 涓嶉渶瑕佺户缁簡 銆�+
+                                    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}宸茬粡瀛樺湪杞繍浜嗘棤闇�Е鍙戣浆杩愩�");
+                                    return;
+                                }
+                                //浜哄伐杞繍娌℃寚瀹氱墿鏂欙紝鎴戜細鑷姩鍐欏洖杞繍鍗�鐗╂枡鏁版嵁銆�+
+                                //鎵綜D 鍖�鍝噷鏈夎繖涓墿鏂欍� 
+                                Dictitems TrunStart = new Dictitems();
+                                foreach (var area in CDlist)
+                                {
+                                    //var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>();
+
+                                    //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)
+                                    {
+                                        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);
+                                        TrunStart.area = area;
+                                        TrunStart.Row = loc.N_ROW;
+                                    }
+                                    //if (dsi.TryGetValue(area, out var dictitems1))
+                                    //{
+
+                                    //    var arearowsloc = LocationHelper.GetAreaNormalLocList(area);
+                                    //    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))
+                                    //    {
+                                    //        if (arearowsloc.Exists(x => x.N_ROW == d.Row))
+                                    //        {
+                                    //            TrunStart = d;
+                                    //            break;
+                                    //        }
+                                    //    }
+                                    //}
+                                }
+                                LogHelper.Info($"ZdzyABArea{od.SQL_WorkNo}瑙﹀彂杞繍銆傝浆杩愭潵婧愭槸{JsonConvert.SerializeObject(TrunStart)}");
+                                if (TrunStart?.area != null)
+                                    WCSHelper.Do(db =>
+                                    {
+                                        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();
+                                    });
+
                             }
                         }
                     }
                 }
 
-                LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瑙﹀彂杞繍銆傝浆杩愭潵婧愭槸{JsonConvert.SerializeObject(TrunStart)}");
-                if (TrunStart != null)
-                    WCSHelper.Do(db =>
-                    {
-                        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();
-                    });
-            };
 
-            //var TaskSiggg = Settings.GetTimeStamp();
-            //var list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" };
-            //var WorkOrder = new List<YWLWorkOrder>();
+            }
+            catch (Exception ex)
+            {
+
+                LogHelper.Info($"ZdzyABArea 瑙﹀彂杞繍 鎶ラ敊:{ex.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 鍘熺墿鏂欑焊绠卞嚭搴�+        /// </summary>
+        public static void AutoRun13TSJ()
+        {
+            //Action<YWLWorkOrder> _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ = (od) =>
+            //{
+            //    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)
+            //    {  //鏈夊埌璇ュ簱鍖虹殑 鐗╂枡杞繍浠诲姟浜嗐� 涓嶉渶瑕佺户缁簡 銆�+
+            //        LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}宸茬粡瀛樺湪杞繍浜嗘棤闇�Е鍙戣浆杩愩�");
+            //        return;
+            //    }
+            //    //浜哄伐杞繍娌℃寚瀹氱墿鏂欙紝鎴戜細鑷姩鍐欏洖杞繍鍗�鐗╂枡鏁版嵁銆�+
+            //    //鎵綜D 鍖�鍝噷鏈夎繖涓墿鏂欍� 
+            //    Dictitems TrunStart = null;
+            //    foreach (var area in CDlist)
+            //    {
+            //        if (dsi.TryGetValue(area, out var dictitems1))
+            //        {
+            //            var arearowsloc = LocationHelper.GetAreaNormalLocList(area);
+            //            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))
+            //            {
+            //                if (arearowsloc.Exists(x => x.N_ROW == d.Row))
+            //                {
+            //                    TrunStart = d;
+            //                    break;
+            //                }
+            //            }
+            //        }
+            //    }
+
+            //    LogHelper.Info($"AutoRun13TSJ{od.SQL_WorkNo}瑙﹀彂杞繍銆傝浆杩愭潵婧愭槸{JsonConvert.SerializeObject(TrunStart)}");
+            //    if (TrunStart != null)
+            //        WCSHelper.Do(db =>
+            //        {
+            //            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();
+            //        });
+            //};
             foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1))
             {
                 string pline = PLC.deviceName;
@@ -3699,34 +3827,6 @@
                     if (locs.Find(x => x.N_CURRENT_NUM > 0) != null) //鎷嗗灈鏈夎揣 涓嶅垽鏂�                         continue;
                     can = true;
-
-                    //var source1 = orkOrd.FirstOrDefault();
-                    //foreach (var item in list)
-                    //{
-                    //    YWLWorkOrder source = new YWLWorkOrder();
-                    //    source.SQL_PLineNo = source1.SQL_PLineNo;
-                    //    source.FuLe_PLine_No = source1.FuLe_PLine_No;
-                    //    source.SQL_LinkLineNO = source1.SQL_LinkLineNO;
-                    //    source.SQL_Area = item;
-                    //    source.SQL_UsingNow = source1.SQL_UsingNow;
-                    //    source.SQL_State = source1.SQL_State;
-                    //    source.SQL_WorkNo = source1.SQL_WorkNo;
-                    //    source.SQL_ItemCode = source1.SQL_ItemCode;
-                    //    source.SQL_ItemName = source1.SQL_ItemName;
-                    //    source.SQL_charge = source1.SQL_charge;
-                    //    source.SQL_Total = source1.SQL_Total;
-                    //    source.SQL_PLAN_END = source1.SQL_PLAN_END;
-                    //    source.SQL_Modify_TIme = source1.SQL_Modify_TIme;
-                    //    source.OutNum = source1.OutNum;
-                    //    source.WorkType = source1.WorkType;
-                    //    source.MidArea = source1.MidArea;
-                    //    source.TagOver = source1.TagOver;
-                    //    source.TagOverTime = source1.TagOverTime;
-                    //    source.S_BQ_TRAY_TYPE = source1.S_BQ_TRAY_TYPE;
-                    //    source.S_CJ_NAME = source1.S_CJ_NAME;
-                    //    source.S_ROW = item;
-                    //    WorkOrder.Add(source);
-                    //}
                 }
 
                 orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10);
@@ -3737,15 +3837,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))
@@ -3809,15 +3912,18 @@
                                     //妫�祴鎸囧畾搴撳尯鐨勭墿鏂欐帓鎬绘暟閲�                                     if (dsi.TryGetValue(od.S_ROW, out var dictitems1))
                                     {
-                                        var rows = dictitems1.Select(x => x.Row).Distinct();
-                                        var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW));
-                                        var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "鏃�).Sum(x => x.N_CURRENT_NUM);
-                                        LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 5");
-                                        if (count < 5)
-                                        {
-                                            autoTurn = true;
-                                            _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od);
-                                        }
+                                        //var rows = dictitems1.Select(x => x.Row).Distinct();
+                                        //var loclist = LocationHelper.GetLocList(x => x.S_AREA_CODE == od.S_ROW && rows.Contains(x.N_ROW));
+                                        ////鏌ヨ鍙敤璐т綅鏈夊灏�+                                        //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);
+                                        //LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 鍑哄簱浣欓噺鍒ゆ柇鏄惁闇�杞繍銆�{count}< 鎬诲叡鑳界敤鐨勮揣浣嶆暟{loclistK} -7");
+                                        //if (count < loclistK - 7)
+                                        //{
+                                        //    autoTurn = true;
+                                        //    _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od);
+                                        //}
                                     }
                                 }
                                 Location Endbit = null;
@@ -3861,10 +3967,17 @@
                                         b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, jbbit, "鍘熺墿鏂欐惉杩�绾哥", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri, "", Endbit.S_LOC_CODE);
                                     else
                                         b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, Endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri);
+
                                     if (b)
                                     {
-                                        var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
                                         var db = new SqlHelper<object>().GetInstance();
+                                        od.TagOverTime = DateTime.Now;
+                                        od.TagOver = StartBit.S_AREA_CODE;
+                                        var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand();
+                                        LogHelper.Info($"涓婃彁鍗囨満浠诲姟 鏇存柊宸ュ崟鐨勬椂闂村奖鍝嶈鏁� {ggf}");
+
+                                        var r = new RowLock { S_LOCK_SRC = od.SQL_ItemCode, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "鍑哄簱閿�, S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW };
+
                                         //缁欑粓鐐归攣瀹氫綇
                                         if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ")
                                         {
@@ -3885,9 +3998,7 @@
                                         //    }
                                         //}
                                         //else db.Insertable(r).ExecuteCommand();
-                                        od.TagOverTime = DateTime.Now;
-                                        od.TagOver = StartBit.S_AREA_CODE;
-                                        db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver }).ExecuteCommand();
+
                                         //break;
                                     }
                                 }
@@ -3898,10 +4009,10 @@
                                 }
                             }
                         }
-                        else
-                        {
-                            _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od);
-                        }
+                        //else
+                        //{
+                        //    _sAB娌$墿鏂欐垨鑰呬綑閲忎笉瓒冲紑濮嬭Е鍙戣窡鏍规嵁鑷姩杞繍_鍚嶅瓧瓒婇暱瓒婂ソ(od);
+                        //}
                     }
             }
         }
@@ -4066,6 +4177,19 @@
                 var locS = LocationHelper.GetAreaNormalLocList(ODs.Key);
                 foreach (var od in ODs)
                 {
+                    if (od.S_END_AREA == "YWLBQWJ" || od.S_END_AREA == "YWLAQWJ")//鍒癇鍖虹殑绉诲簱宸ュ崟鏈�鍙兘鐢熸垚涓ゆ潯浠诲姟
+                    {
+
+                        //鏌ヨ浠诲姟鏁�
+                        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))
                     {

--
Gitblit v1.9.1