From 4e2242741688e1da1399166b1ada9874f472b819 Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期三, 11 六月 2025 17:54:59 +0800 Subject: [PATCH] 1 --- HH.WCS.QingXiNongfu/core/Monitor.cs | 134 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 106 insertions(+), 28 deletions(-) diff --git a/HH.WCS.QingXiNongfu/core/Monitor.cs b/HH.WCS.QingXiNongfu/core/Monitor.cs index 815bcb1..cc5e417 100644 --- a/HH.WCS.QingXiNongfu/core/Monitor.cs +++ b/HH.WCS.QingXiNongfu/core/Monitor.cs @@ -5,16 +5,9 @@ using SqlSugar; using System; using System.Collections.Generic; -using System.Globalization; using System.Linq; -using System.Runtime.ConstrainedExecution; -using System.Security.Cryptography; -using System.Security.Cryptography.X509Certificates; -using System.Security.Policy; using System.Threading; using System.Threading.Tasks; -using Topshelf.Runtime.Windows; -using static HH.WCS.QingXigongchang.dispatch.NDC; namespace HH.WCS.QingXigongchang.core { @@ -1059,7 +1052,6 @@ dsll.Add(cir1.S_ITEM_CODE, rowlist); } } - if (dsll.Any()) foreach (var r in dsll) { @@ -1130,7 +1122,9 @@ isCd = true; inlock = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME && x.S_LOCK_STATE == "鍏ュ簱閿�).FirstOrDefault(); if (inlock != null) - arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW); + { + arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList(); + } } foreach (var rss in arloclist.GroupBy(x => x.N_ROW).OrderByDescending(x => x.Count(y => y.N_CURRENT_NUM > 0)).ThenBy(x => x.Key)) { @@ -1209,7 +1203,7 @@ } } } - else if(InworkLock) InworkLock = false; + else if (InworkLock) InworkLock = false; } catch (Exception ex) { @@ -1329,12 +1323,20 @@ var Syuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => x.OutNum > 0 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => !string.IsNullOrEmpty(x.TagOver) ? 1 : 2).ThenBy(x => x.TagOverTime).ToList(); //yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == plc.deviceName && x.WorkType == 6 && x.SQL_State == "鎵ц涓�).FindAll(x => DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).OrderBy(x => !string.IsNullOrEmpty(x.TagOver) ? 1 : 2).ThenBy(x => x.TagOverTime).ToList(); - var tk = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 1 && x.SQL_State == "鎵ц涓�).FirstOrDefault(); - + 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 (tk != null) { + YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); + } + if (tklist.Count() > 0) + { + var tk = tklist.FirstOrDefault(); + var Cjsj = LocationHelper.GetList<CjTimeOrder>(x => tklist.Select(c => c.S_CJ_NAME).ToList().Contains(x.S_CJ_NAME) && tklist.Select(c => c.SQL_ItemCode).ToList().Contains(x.S_ITEM_CODE)); + if (Cjsj.Count() > 0) + { + var Cj = Cjsj.OrderBy(e => e.T_CJ_TIME).ToList().FirstOrDefault(); + tk = tklist.Find(e => e.S_CJ_NAME == Cj.S_CJ_NAME && e.SQL_ItemCode == Cj.S_ITEM_CODE); + } var loc = LocationHelper.GetLoc(plc.location[0]); if (loc.N_CURRENT_NUM > 0 && loc.S_LOCK_STATE == "鏃�) { @@ -1392,9 +1394,17 @@ YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "鏀剁缉鑶滃弶杩�); // PE鍏ュ簱 //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "鏀剁缉鑶滃弶杩�); //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "鏀剁缉鑶滃弶杩�);// PE涓嚭搴�- var tk = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2鎻愬崌鏈�鏀剁缉鑶� && x.WorkType == 1 && x.SQL_State == "鎵ц涓�).FirstOrDefault(); - if (tk != null) + var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2鎻愬崌鏈�鏀剁缉鑶� && x.WorkType == 1 && x.SQL_State == "鎵ц涓�); + if (tklist.Count() > 0) { + var tk = tklist.FirstOrDefault(); + var Cjsj = LocationHelper.GetList<CjTimeOrder>(x => tklist.Select(c => c.S_CJ_NAME).ToList().Contains(x.S_CJ_NAME) && tklist.Select(c => c.SQL_ItemCode).ToList().Contains(x.S_ITEM_CODE)); + if (Cjsj.Count() > 0) + { + var Cj = Cjsj.OrderBy(e => e.T_CJ_TIME).ToList().FirstOrDefault(); + tk = tklist.Find(e => e.S_CJ_NAME == Cj.S_CJ_NAME && e.SQL_ItemCode == Cj.S_ITEM_CODE); + } + var loc = LocationHelper.GetLoc(plc.location[0]); if (loc.N_CURRENT_NUM > 0 && loc.S_LOCK_STATE == "鏃�) { @@ -1477,6 +1487,15 @@ var ploc = plc.location[0]; retuse: var order = yuworders.FirstOrDefault(); + if (yuworders.Count() > 0) + { + var Cjsj = LocationHelper.GetList<CjTimeOrder>(x => yuworders.Select(c => c.S_CJ_NAME).ToList().Contains(x.S_CJ_NAME) && yuworders.Select(c => c.SQL_ItemCode).ToList().Contains(x.S_ITEM_CODE)); + if (Cjsj.Count() > 0) + { + var Cj = Cjsj.OrderBy(e => e.T_CJ_TIME).ToList().FirstOrDefault(); + order = yuworders.Find(e => e.S_CJ_NAME == Cj.S_CJ_NAME && e.SQL_ItemCode == Cj.S_ITEM_CODE); + } + } if (order != null) { var Porder = WCSHelper.GetWorkOrder(order.SQL_LinkLineNO); @@ -1728,7 +1747,7 @@ if (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(); + 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); @@ -1770,7 +1789,7 @@ } //鎵ц閫�簱銆傘�銆� - // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 闇�閫�簱-- 鑷姩閫�簱-鏈疄鐜�); + // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 闇�閫�簱-- 鑷姩閫�簱-鏈疄鐜�); } } @@ -3494,6 +3513,8 @@ } public static void AutoRun13TSJ() { + var list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" }; + var WorkOrder = new List<YWLWorkOrder>(); foreach (var PLC in Settings.GetDeviceInfoList().FindAll(X => X.deviceType == 13 && X.enable == 1)) { string pline = PLC.deviceName; @@ -3512,10 +3533,39 @@ if (locs.Find(x => x.N_CURRENT_NUM > 0) != null) //鎷嗗灈鏈夎揣 涓嶅垽鏂� continue; can = true; + + foreach (var item in list) + { + YWLWorkOrder source = new YWLWorkOrder(); + var source1 = orkOrd.FirstOrDefault(); + source.SQL_PLineNo = source1.SQL_PLineNo; + source.FuLe_PLine_No = source1.FuLe_PLine_No; + source.SQL_LinkLineNO = source1.SQL_LinkLineNO; + source.SQL_Area = source1.SQL_Area; + 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); + } } ReadCCK = can; if (orkOrd.Any()) - foreach (var od in orkOrd.OrderByDescending(x => x.OutNum)) + // foreach (var od in orkOrd.OrderByDescending(x => x.OutNum)) + foreach (var od in WorkOrder) { ///姹囨�浠撳簱閲屾渶澶у眰鏄嚑灞傘� Dictitems Lart = null; @@ -3553,12 +3603,15 @@ _clrel = LocationHelper.GetLocCntrRel(rl.S_LOC_CODE); //鏉垮瀷鐩稿悓 var _clrel0 = _clrel.OrderByDescending(xx => xx.T_CREATE).First(); - LogHelper.Info(rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆�); + LogHelper.Info(rl.S_LOC_CODE + "璇嗗埆鎵樼洏绫诲瀷銆� + JsonConvert.SerializeObject(_clrel0)); var _clcntitem = ContainerHelper.GetCntrItemRel(_clrel0.S_CNTR_CODE.Trim()).FirstOrDefault(); + LogHelper.Info(rl.S_LOC_CODE + "璇嗗埆鎵樼洏涓婄殑鐗╂枡淇℃伅銆� + JsonConvert.SerializeObject(_clcntitem)); if (_clcntitem != null) { + LogHelper.Info("鐩镐簰鏄惁鍖归厤 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName); if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName) { + StartBit = rl; break; } @@ -3586,11 +3639,31 @@ if (StartBit != null && Endbit != null) { var crs = _clrel.Select(x => x.S_CNTR_CODE).ToList(); - var 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); + var EndBit = Endbit.S_LOC_CODE; + if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ") + { + var locs1 = LocationHelper.GetList<Location>(x => x.S_AREA_CODE == "YWLWJJB" && x.S_LOCK_STATE != "鎶ュ簾" && x.S_LOCK_STATE == "鏃� && x.N_CURRENT_NUM == 0).ToList(); + if (locs1.Count() > 0) + { + EndBit = locs1.FirstOrDefault().S_LOC_CODE; + } + } + var b = TaskProcess.CreateTransport(od.SQL_WorkNo, StartBit.S_LOC_CODE, EndBit, "鍘熺墿鏂欐惉杩�绾哥", crs, StartBit.N_CURRENT_NUM - crs.Count + 1, 1, crs.Count, PLC.taskPri, Endbit.S_LOC_CODE); 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(); + //缁欑粓鐐归攣瀹氫綇 + if (od.S_ROW == "YWLCQSX" || od.S_ROW == "YWLDQWJ") + { + var model = db.Queryable<Location>().Where(a => a.S_LOC_CODE == Endbit.S_LOC_CODE).First(); + + model.S_LOCK_STATE = "鍏ュ簱閿�; + var res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0; + LogHelper.Info(Endbit.S_LOC_CODE + "LockLoc:閿佺粨鏋� + res); + } + //鎺掗攣 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) { @@ -3623,10 +3696,14 @@ pline = "T2鎻愬崌鏈�绾哥"; var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "鎵ц涓�); if (orkOrd.Any()) - foreach (var ork in orkOrd) - { - list = list.Concat(ork.S_ROW.Split('$')).ToList(); - } + { + list = new List<string>() { "YWLAQWJ", "YWLBQWJ", "YWLCQSX", "YWLDQWJ" }; + //foreach (var ork in orkOrd) + //{ + // list = list.Concat(ork.S_ROW.Split('$')).ToList(); + //} + } + } foreach (var area in list.Distinct()) { @@ -3786,7 +3863,7 @@ else InworkLock = true; } else InworkLock = false; - var zzlocs = LocationHelper.GetAreaNormalLocList(od.S_ZZ_AREA); + var zzlocs = LocationHelper.GetAreaNormalLocList(od.S_ZZ_AREA); Location Endbit = null; foreach (var zzrs in zzlocs.GroupBy(x => x.N_ROW).OrderBy(x => x.Key)) { @@ -3816,8 +3893,9 @@ //鐢熸垚鎺ラ┏鍖轰换鍔★紝鏍囪涓虹粓鐐瑰簱鍖恒� var b = TaskProcess.CreateTransport(od.S_ID, lastful.S_LOC_CODE, Endbit.S_LOC_CODE, "鍘熺墿鏂欐惉杩�绾哥", crs.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, crs.Count, 50, od.S_END_AREA); if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; - break; - }else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; + break; + } + else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; } } } -- Gitblit v1.9.1