| | |
| | | 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 (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 }; |
| | |
| | | { |
| | | // 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($" 无菌出库 工单开启中 "); |
| | |
| | | } |
| | | //}); |
| | | |
| | | var task11 = Task.Run(() => |
| | | try |
| | | { |
| | | 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).OrderBy(x => x.TagOverTime).ToList(); |
| | | |
| | | //水标入库 |
| | | YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); |
| | | |
| | | if (yuworders.Any()) |
| | | { |
| | | // 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); |
| | | } |
| | | if (yuworders.Any()) |
| | | { |
| | | LogHelper.Info($" 无菌出库 工单开启中 "); |
| | | // 中水标签退库。货架直接出到线边 |
| | | ZsBQ_CreWJOutOrder(); |
| | | } |
| | | // 中水标签退库。 |
| | | ZsBQ_CreWJTK(); |
| | | LogHelper.Info($" 无菌出库 工单开启中 "); |
| | | // 中水标签退库。货架直接出到线边 |
| | | ZsBQ_CreWJOutOrder(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message, ex); |
| | | } |
| | | }); |
| | | // 中水标签退库。 |
| | | ZsBQ_CreWJTK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message, ex); |
| | | } |
| | | |
| | | |
| | | var plc = Settings.GetDeviceInfoList().Where(a => a.deviceName == "T2提升机").FirstOrDefault(); |
| | | var task2 = Task.Run(() => |
| | |
| | | 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, 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) |
| | | 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 |
| | |
| | | if (PLC.deviceName.Contains("T2")) |
| | | pline = "T2提升机-纸箱"; |
| | | |
| | | var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "执行中"); |
| | | var orkOrd = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 6 && x.SQL_State == "执行中").ToList(); |
| | | bool can = false; |
| | | if (orkOrd.Any()) |
| | | { |
| | |
| | | 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 && DateTime.Now.Subtract(x.SQL_Modify_TIme ?? DateTime.Now).TotalSeconds > 10).ToList(); |
| | | ReadCCK = can; |
| | | if (orkOrd.Any()) |
| | | foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum)) |
| | | foreach (var od in orkOrd.OrderBy(x => x.TagOverTime).ThenBy(x => x.OutNum).ToList()) |
| | | //foreach (var od in od2.ToList()) |
| | | { |
| | | var l2 = new List<string>() { "YWLAQWJ", "YWLBQWJ" };//, "YWLCQSX", "YWLDQWJ" }; |
| | |
| | | else |
| | | { |
| | | //检测指定库区的物料排总数量 |
| | | 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)); |
| | | ////查询可用货位有多少 |
| | | //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); |
| | | //} |
| | | } |
| | | //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)); |
| | | // ////查询可用货位有多少 |
| | | // //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; |
| | | |
| | |
| | | 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 }; |
| | | // 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") |