| | |
| | | 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 |
| | | { |
| | |
| | | dsll.Add(cir1.S_ITEM_CODE, rowlist); |
| | | } |
| | | } |
| | | |
| | | if (dsll.Any()) |
| | | foreach (var r in dsll) |
| | | { |
| | |
| | | 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)) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | else if(InworkLock) InworkLock = false; |
| | | else if (InworkLock) InworkLock = false; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | 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 == "无") |
| | | { |
| | |
| | | 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 == "无") |
| | | { |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | } |
| | | |
| | | //执行退库。。。 |
| | | // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 需要退库-- 自动退库-未实现"); |
| | | // Console.WriteLine($"{v.FirstOrDefault()?.S_LOC_CODE} 需要退库-- 自动退库-未实现"); |
| | | } |
| | | |
| | | } |
| | |
| | | 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") |
| | | { |
| | | EndBit = "YWLWJJB"; |
| | | } |
| | | 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) |
| | | { |
| | |
| | | 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)) |
| | | { |
| | |
| | | //生成接驳区任务,标记为终点库区。 |
| | | 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; |
| | | } |
| | | } |
| | | } |