From 28cec6f80f1cf5c85ebafd2712b73761d92c2079 Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期四, 24 七月 2025 17:38:53 +0800 Subject: [PATCH] 1 --- HH.WCS.QingXiNongfu/core/Monitor.cs | 497 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 284 insertions(+), 213 deletions(-) diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs index 29f31af..76404af 100644 --- a/HH.WCS.QingXiNongfu/core/Monitor.cs +++ b/HH.WCS.QingXiNongfu/core/Monitor.cs @@ -1049,7 +1049,6 @@ { 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).ToList(); Dictionary<string, List<Location>> dsll = new Dictionary<string, List<Location>>(); @@ -1120,25 +1119,38 @@ //鏌ヨ浠诲姟鏁� 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() >= 3) - //{ - // LogHelper.Info($"CreateTransport- CreateTask Error" + $"缁堢偣搴撳尯涓篩WLRGDD鎴栬�YWLWJJB 鍒欐渶澶氬彧鑳界敓鎴愪袱涓换鍔�); - // continue; - //} - } - string Last = string.Join(",", ccr.Skip(1)); - - if (ABlist.Contains(EdnRarea)) - { - var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿� || x.S_LOCK_STATE == "鍑哄簱閿�)); - //var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿�)); - if (ls.Count() > 1) + var list = db.Queryable<Location>().Where(a => AreaLi.Contains(a.S_AREA_CODE) && a.S_LOCK_STATE == "鍏ュ簱閿�).ToList(); + if (list.Count() >= 2) { - LogHelper.Info($"{EdnRarea}浠诲姟鏁�绠″埗2"); + LogHelper.Info($"CreateTransport- CreateTask Error" + $"缁堢偣搴撳尯涓篩WLRGDD鎴栬�YWLWJJB 鍒欐渶澶氬彧鑳界敓鎴愪袱涓换鍔�); continue; } } + + if (EdnRarea == "YWLRGDD") + { + //鏌ヨ浠诲姟鏁� + List<string> AreaLi = new List<string>() { "YWLRGDD" }; + 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 鍒欐渶澶氬彧鑳界敓鎴愪笁涓换鍔�); + continue; + } + } + string Last = string.Join(",", ccr.Skip(1)); + + //if (ABlist.Contains(EdnRarea)) + //{ + // var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿� || x.S_LOCK_STATE == "鍑哄簱閿�)); + // //var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && (x.S_LOCK_STATE == "鍏ュ簱閿�)); + // if (ls.Count() > 1) + // { + // LogHelper.Info($"{EdnRarea}浠诲姟鏁�绠″埗2"); + // continue; + // } + //} if (CDlist.Contains(EdnRarea)) { var ls = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_STATE == "鍏ュ簱閿�); @@ -1190,7 +1202,6 @@ else InworkLock = false; 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; @@ -1231,31 +1242,46 @@ } } } - foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key)) + if (area == "YWLTKKTQ") { - rowlist = rss.OrderBy(x => x.N_COL).ToList(); - //if (rowlist.FindAll((Location x) => x.S_LOCK_STATE.Trim() == "绌洪棿閿�).Count > 0) { continue; } - //if (rowlist.FindAll((Location x) => x.S_LOCK_STATE.Trim() != "鏃� && x.S_LOCK_STATE.Trim() != "鎶ュ簾").Count > 0) - //{ - // continue; - //} - var _cl2 = rowlist.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); - endbit = rowlist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); - if (endbit == null) continue; - - if (_cl2 != null && (EdnRarea == "YWLYLTKQ" || EdnRarea == "YWLKTDDQ")) //閫�簱鍖鸿繘琛屽爢鍙�+ foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenByDescending(x => x.Key)) { - Last = ""; - var rr_clrel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); - var s_clrel0 = rr_clrel.OrderByDescending(xx => xx.T_CREATE).FirstOrDefault(); - if (s_clrel0 != null && string.IsNullOrEmpty(s_clrel0.S_TYPE)) + rowlist = rss.OrderBy(x => x.N_COL).ToList(); + var _cl2 = rowlist.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); + endbit = rowlist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); + if (endbit == null) continue; + + if (_cl2 != null && (EdnRarea == "YWLYLTKQ" || EdnRarea == "YWLKTDDQ")) //閫�簱鍖鸿繘琛屽爢鍙� { - var cntrrel = ContainerHelper.GetCntrItemRel(rr_clrel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); + Last = ""; + var rr_clrel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); + var s_clrel0 = rr_clrel.OrderByDescending(xx => xx.T_CREATE).FirstOrDefault(); + if (s_clrel0 != null && string.IsNullOrEmpty(s_clrel0.S_TYPE)) + { + var cntrrel = ContainerHelper.GetCntrItemRel(rr_clrel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); + if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) + { + if (_cl2.N_CURRENT_NUM < _cl2.N_CAPACITY) + endbit = _cl2; + else LogHelper.Info($"{EdnRarea}閫�簱銆嬩娇鐢▄endbit.S_LOC_CODE}"); + } + else + { + endbit = null; + continue; + } + } + } + + else if (_cl2 != null) // 娴佽浆锛屽尮閰嶅悓鎺掞紝涓嶅爢鍙�+ { + var rel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); + var cntrrel = ContainerHelper.GetCntrItemRel(rel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); + if (cntrrel == null) + continue; if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) { - if (_cl2.N_CURRENT_NUM < _cl2.N_CAPACITY) - endbit = _cl2; - else LogHelper.Info($"{EdnRarea}閫�簱銆嬩娇鐢▄endbit.S_LOC_CODE}"); + LogHelper.Info($"鍏ュ簱搴撱�浣跨敤{endbit.S_LOC_CODE}"); } else { @@ -1263,55 +1289,65 @@ continue; } } + if (endbit != null) break; } - - else if (_cl2 != null) // 娴佽浆锛屽尮閰嶅悓鎺掞紝涓嶅爢鍙�- { - var rel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); - var cntrrel = ContainerHelper.GetCntrItemRel(rel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); - if (cntrrel == null) - continue; - if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) - { - LogHelper.Info($"鍏ュ簱搴撱�浣跨敤{endbit.S_LOC_CODE}"); - } - else - { - endbit = null; - continue; - } - //} - //else - //{ - // endbit = null; - // continue; - //} - } - if (endbit != null) break; } + else + { + foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key)) + { + rowlist = rss.OrderBy(x => x.N_COL).ToList(); + var _cl2 = rowlist.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); + endbit = rowlist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); + if (endbit == null) continue; + + if (_cl2 != null && (EdnRarea == "YWLYLTKQ" || EdnRarea == "YWLKTDDQ")) //閫�簱鍖鸿繘琛屽爢鍙�+ { + Last = ""; + var rr_clrel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); + var s_clrel0 = rr_clrel.OrderByDescending(xx => xx.T_CREATE).FirstOrDefault(); + if (s_clrel0 != null && string.IsNullOrEmpty(s_clrel0.S_TYPE)) + { + var cntrrel = ContainerHelper.GetCntrItemRel(rr_clrel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); + if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) + { + if (_cl2.N_CURRENT_NUM < _cl2.N_CAPACITY) + endbit = _cl2; + else LogHelper.Info($"{EdnRarea}閫�簱銆嬩娇鐢▄endbit.S_LOC_CODE}"); + } + else + { + endbit = null; + continue; + } + } + } + + else if (_cl2 != null) // 娴佽浆锛屽尮閰嶅悓鎺掞紝涓嶅爢鍙�+ { + var rel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); + var cntrrel = ContainerHelper.GetCntrItemRel(rel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); + if (cntrrel == null) + continue; + if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) + { + LogHelper.Info($"鍏ュ簱搴撱�浣跨敤{endbit.S_LOC_CODE}"); + } + else + { + endbit = null; + continue; + } + } + if (endbit != null) break; + } + } + if (endbit != null) { 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 (CDlist.Contains(endbit.S_AREA_CODE) && res) - //{ - // 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; } @@ -1470,11 +1506,10 @@ { // 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).OrderBy(x => x.TagOverTime).ToList(); - if (LocLock(WJ_BQ.RK_BBHJQ)) - { - //鏍囩鍏ュ簱 - YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ); - } + + //鏍囩鍏ュ簱 + YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ); + if (yuworders.Any()) { LogHelper.Info($" 鏃犺弻鍑哄簱 宸ュ崟寮�惎涓�"); @@ -1494,11 +1529,10 @@ { // 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).OrderBy(x => x.TagOverTime).ToList(); - if (LocLock(SX_BQ.RK_BBHJQ)) - { - //姘存爣鍏ュ簱 - YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); - } + + //姘存爣鍏ュ簱 + YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); + if (yuworders.Any()) { LogHelper.Info($" 鏃犺弻鍑哄簱 宸ュ崟寮�惎涓�"); @@ -1713,13 +1747,13 @@ } if (order != null) { - var Porder = WCSHelper.GetWorkOrder(order.SQL_LinkLineNO); - if (Porder == null) - { - LogHelper.CErrorLog("灏忔按鍑哄簱锛� + (order.SQL_LinkLineNO) + "娌℃湁銆愭墽琛屼腑銆戠殑宸ュ崟"); - yuworders.Remove(order); - goto retuse; - } + // var Porder = WCSHelper.GetWorkOrder(order.SQL_LinkLineNO); + //if (Porder == null) + //{ + // LogHelper.CErrorLog("灏忔按鍑哄簱锛� + (order.SQL_LinkLineNO) + "娌℃湁銆愭墽琛屼腑銆戠殑宸ュ崟"); + // yuworders.Remove(order); + // goto retuse; + //} var oto = new List<string>(); //if (!string.IsNullOrEmpty(order.TagOver)) // oto = order.TagOver.Split(',').ToList(); @@ -2001,18 +2035,26 @@ var cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault(); if (CNTR.FirstOrDefault().S_TYPE == BQ_PRA.B) { - 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*/) - //{ - var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); - var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3); - Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).OrderBy(x => x.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault(); - if (Endbit != null) + if (cirs.FirstOrDefault().S_ITEM_NAME.Contains("绌烘"))//绌烘 閫�埌绌烘缂撳瓨鍖� { - 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 hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); } + else + { + 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*/) + //{ + var hjs = LocationHelper.GetAreaNormalLocList(WJ_BQ.RK_BBHJQ, false, false); + var Type = s_type == .5 ? 1 : (s_type == .75 ? 2 : 3); + Endbit = hjs.FindAll(x => x.N_CURRENT_NUM == 0 && x.N_LAYER == Type).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}"); + } + } + // } //else @@ -2052,7 +2094,6 @@ //鎵ц閫�簱銆傘�銆� // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 闇�閫�簱-- 鑷姩閫�簱-鏈疄鐜�); } - } private static void YwlPETKOutOrder(string v, string v1, string v2, int v3 = 3) @@ -4511,96 +4552,121 @@ } } + + /// <summary> + /// 鍦板爢鍑哄簱绠楁硶 + /// </summary> + /// <param name="AreaCode"></param> + /// <param name="Row"></param> + /// <param name="InOutLock"></param> + /// <param name="ItemCode"></param> + /// <returns></returns> + public static List<Location> GetOutWorkZx(string AreaCode, bool InOutLock = true, string ItemCode = "") + { + var lstCanOutL = new List<Location>(); + try + { + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); + var ca = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); + if (string.IsNullOrEmpty(ItemCode))//绠楃┖鎵� + { + ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && string.IsNullOrEmpty(t.S_ITEM_CODE) && o.S_AREA_CODE == AreaCode); + lstCanOutL = newDb.Queryable<Location>().InnerJoin<LocCntrRel>((o, p) => o.S_LOC_CODE == p.S_LOC_CODE).LeftJoin<CntrItemRel>((o, p, t) => p.S_CNTR_CODE == t.S_CNTR_CODE).Where(ca.ToExpression()).ToList(); + } + else//绠楁弧鎵�+ { + ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && t.S_ITEM_CODE == ItemCode && o.S_AREA_CODE == AreaCode); + 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(ca.ToExpression()).ToList(); + } + //鍦板爢涓撻棬绠楁硶杩囨护 + if (lstCanOutL.Count() > 0) + { + var Inloca = Expressionable.Create<Location>(); + Inloca.And(it => it.S_AREA_CODE == AreaCode); + var locationInLock = newDb.Queryable<Location>().Where(Inloca.ToExpression()).ToList(); + //绌洪棿閿�鎺掗櫎涓�暣鎺�+ var KjLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "绌洪棿閿�).ToList(); + if (KjLick.Count() > 0) + { + foreach (var item in KjLick) + { + lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW); + } + } + if (InOutLock) + { + var CkLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "鍑哄簱閿�).ToList(); + if (CkLick.Count() > 0) + { + foreach (var item in CkLick) + { + lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW); + } + } + var OutLick = locationInLock.FindAll(e => e.S_LOCK_STATE == "鍏ュ簱閿�).ToList(); + if (OutLick.Count() > 0) + { + foreach (var item in OutLick) + { + lstCanOutL.RemoveAll(e => e.S_AREA_CODE == item.S_AREA_CODE && e.N_ROW == item.N_ROW); + } + } + } + + + } + return lstCanOutL; + } + catch (Exception ex) + { + LogHelper.Info("T2绾哥鍑哄簱绠楁硶" + $" 鎶ラ敊: {ex.Message}"); + return lstCanOutL; + } + } /// <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; if (PLC.deviceName.Contains("T2")) pline = "T2鎻愬崌鏈�绾哥"; - var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�); - bool can = false; + var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).ToList(); + if (orkOrd.Count == 0) + { + continue; + } + bool can = true; if (orkOrd.Any()) { + // can = true; string areaaaaa = PLC.areaPriy[0]; var locs = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == areaaaaa && x.S_LOCK_STATE != "鎶ュ簾"); if (locs.Find(x => x.S_LOCK_STATE != "鏃�) != null)//鏌村灈鏈夐攣 涓嶅垽鏂� continue; if (locs.Find(x => x.N_CURRENT_NUM > 0) != null) //鎷嗗灈鏈夎揣 涓嶅垽鏂� continue; - can = true; } - - orkOrd = orkOrd.FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10); + orkOrd = orkOrd.FindAll(x => x.OutNum > 0).ToList(); ReadCCK = can; if (orkOrd.Any()) - foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum)) - //foreach (var od in od2.ToList()) + foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ToList()) { + LogHelper.Info($"AutoRun13TSJ 姝e湪鎵ц鐨勭焊绠卞嚭搴撳伐鍗曚负:{JsonConvert.SerializeObject(od)}"); var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" }; + if (od.SQL_PLineNo.Contains("T2")) + { + l2 = new List<string>() { "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(); var odsr = new List<string> { od.S_ROW }.Concat(l2).Distinct().ToList(); - ///姹囨�浠撳簱閲屾渶澶у眰鏄嚑灞傘� Dictitems Lart = null; - foreach (var area in odsr)//od.S_ROW.Split('$')) + foreach (var area in odsr) { if (string.IsNullOrEmpty(area)) { @@ -4610,12 +4676,17 @@ { foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName)) { + if (Lart == null) + { Lart = d; + } else { if (Lart.ItemLayer < d.ItemLayer) + { Lart = d; + } } } } @@ -4631,16 +4702,13 @@ var v = new List<string>() { Lart.area }; Location StartBit = null; List<LocCntrRel> _clrel = new List<LocCntrRel>(); - - foreach (var area in v) //.Concat(od.S_ROW.Split('$')).Distinct()) + foreach (var area in odsr) { if (ABlist.Contains(area)) { - //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")); + ca.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "鏃� && od.OutNum >= o.N_CURRENT_NUM && 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) { @@ -4657,49 +4725,52 @@ { 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)) + { //T2鎻愬崌鏈轰笂绾哥 2025骞�鏈�4鏃� 閲嶅啓绠楁硶 + var StaLoc = GetOutWorkZx(area, true, od.SQL_ItemCode);//鑾峰彇鍙嚭搴撶殑璐т綅淇℃伅 + if (StaLoc.Count() > 0) { - 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) + var Fuff = StaLoc.OrderBy(e => e.T_FULL_TIME).ToList();//鎺掑簭 鏍规嵁鏈�棭缃弧鏃堕棿鎺掑簭 + var GrRow = Fuff.Select(e => e.N_ROW).Distinct().ToList();//榛樿鍙栬兘鍙栧埌鐨勬帓 + foreach (var item in GrRow) { - 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) + var ZzStaLoc = StaLoc.FindAll(e => e.N_ROW == item).OrderByDescending(e => e.N_COL).ToList(); + if (ZzStaLoc.Count() > 0) { - StartBit = rl; + //榛樿鍙栨渶澶栦晶鐨勮揣浣�+ StartBit = ZzStaLoc.FirstOrDefault(); + } + if (StartBit != null) + { break; } } } + + //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) { @@ -4778,11 +4849,11 @@ var db = new SqlHelper<object>().GetInstance(); od.TagOverTime = DateTime.Now; od.TagOver = StartBit.S_AREA_CODE; - if (od.OutNum >= StartBit.N_CURRENT_NUM) - { - od.OutNum = od.OutNum - StartBit.N_CURRENT_NUM; - } - var ggf = db.Updateable(od).UpdateColumns(it => new { it.TagOverTime, it.TagOver, it.OutNum }).ExecuteCommand(); + //if (od.OutNum >= StartBit.N_CURRENT_NUM) + //{ + // od.OutNum = od.OutNum - StartBit.N_CURRENT_NUM; + //} + 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 }; -- Gitblit v1.9.1