| | |
| | | { |
| | | try |
| | | { |
| | | LogHelper.Info($" 无菌出库 查工单"); |
| | | 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 => !string.IsNullOrEmpty(x.TagOver) ? 1 : 2).ThenBy(x => x.TagOverTime).ToList(); |
| | | var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && 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(); |
| | | if (!yuworders.Any()) |
| | | { |
| | | YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ); |
| | |
| | | try |
| | | { |
| | | string pline = "T2提升机-标签"; |
| | | 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(); |
| | | var Syuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && 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(); |
| | | //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 tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == pline && x.WorkType == 1 && x.SQL_State == "执行中"); |
| | |
| | | } |
| | | else if (Syuworders.Any()) |
| | | { |
| | | YwlBQ_CreSXOutOrder(plc, Syuworders); |
| | | YwlBQ_CreSXOutOrder(plc, Syuworders.FindAll(x => x.OutNum > 0)); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | YwlPETK_CreInwork(TKlocsFirst, "YWLTKMKQ", "收缩膜叉运", 1); // PE入库 --提扣 |
| | | //YwlPETKtkOrder("YWLZSXBKQ", "YWLTKMKQ", "收缩膜叉运"); |
| | | //YwlPETKOutOrder("YWLTKMKQ", "YWLZSXBKQ", "收缩膜叉运");// PE中出库 |
| | | |
| | | var tklist = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2提升机-收缩膜" && x.WorkType == 1 && x.SQL_State == "执行中"); |
| | | if (tklist.Count() > 0) |
| | | { |
| | | LogHelper.Info("-收缩膜 退库!"); |
| | | var tk = tklist.FirstOrDefault(); |
| | | |
| | | |
| | | var loc = LocationHelper.GetLoc(plc.location[0]); |
| | | if (loc.N_CURRENT_NUM > 0 && loc.S_LOCK_STATE == "无") |
| | |
| | | else |
| | | //YwlPETKOutOrder("YWLTKMKQ", "", "PE叉运");// PE小出库 |
| | | { |
| | | LogHelper.Info("-收缩膜 出库!"); |
| | | var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "T2提升机-收缩膜" && 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(); |
| | | if (!yuworders.Any()) return; |
| | | if (!yuworders.Any()) |
| | | { |
| | | LogHelper.Info("-收缩膜 出库!没有出库单。"); |
| | | return; |
| | | } |
| | | var ploc = plc.location[0]; |
| | | retuse: |
| | | var order = yuworders.FirstOrDefault(); |
| | |
| | | LogHelper.CErrorLog("小水出库:" + (order.SQL_WorkNo) + "没有【指定物料;"); |
| | | goto retuse; |
| | | } |
| | | LogHelper.Info("-收缩膜 出库!" + oic + oin); |
| | | |
| | | string v = "YWLTKMKQ"; |
| | | int ord = -1; |
| | |
| | | var cirs = ContainerHelper.GetCntrItemRel(CNTR.FirstOrDefault().S_CNTR_CODE); |
| | | if (!cirs.Any()) continue; |
| | | cir = cirs.OrderByDescending(x => x.T_CREATE).FirstOrDefault(); |
| | | LogHelper.Info($"收缩膜 出库!{item.Key}排 [{cir.S_ITEM_CODE}-{order.SQL_ItemCode}] [{cir.S_ITEM_NAME}-{order.SQL_ItemName}] [{cir.S_CJ_NAME}-{order.S_CJ_NAME}] {(cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName && cir.S_CJ_NAME == order.S_CJ_NAME)}"); |
| | | if (cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName && cir.S_CJ_NAME == order.S_CJ_NAME) |
| | | { |
| | | |
| | | //plg 2025年6月13日 09:08:10 |
| | | Temp = new locCntItem |
| | | { |
| | |
| | | if (StartBit != null) |
| | | { |
| | | var tagLoc = StartBit; |
| | | if (tagLoc.N_LAYER == 1 || tagLoc.N_CURRENT_NUM == 1) |
| | | { |
| | | // 直接出提升机位 |
| | | //var pc = Settings.GetDeviceInfoList().Where(a => a.deviceName == "水线标签提升机").FirstOrDefault(); |
| | | // 直接出提升机位 |
| | | |
| | | if (!string.IsNullOrEmpty(ploc) && plc != null && DeviceProcess.doorStatus[ploc]?.info == "1") |
| | | LogHelper.Info(order.SQL_PLineNo + $"-收缩膜出库!终点{ploc}-{DeviceProcess.doorStatus[ploc]?.info}"); |
| | | if (!string.IsNullOrEmpty(ploc) && plc != null && DeviceProcess.doorStatus[ploc]?.info == "1") |
| | | { |
| | | var loc = LocationHelper.GetLoc(ploc); |
| | | LogHelper.Info(order.SQL_PLineNo + $"-收缩膜出库!终点{loc.N_CURRENT_NUM}-{loc.S_LOCK_STATE}"); |
| | | if (loc.N_CURRENT_NUM == 0 && loc.S_LOCK_STATE == "无") |
| | | { |
| | | var loc = LocationHelper.GetLoc(ploc); |
| | | if (loc.N_CURRENT_NUM == 0 && loc.S_LOCK_STATE == "无") |
| | | var re = TaskProcess.CreateTransport("", tagLoc.S_LOC_CODE.Trim(), loc.S_LOC_CODE, "收缩膜叉运-货架出提升机", new List<string> { tagLoc.S_CNTR_CODE }, StartBit.N_CURRENT_NUM, 1, 1, 62); |
| | | LogHelper.CSucessLog($"from {tagLoc.S_LOC_CODE} to {loc.S_LOC_CODE} 收缩膜叉运-货架出提升机 ,创建{re} "); |
| | | if (re) |
| | | { |
| | | var re = TaskProcess.CreateTransport("", tagLoc.S_LOC_CODE.Trim(), loc.S_LOC_CODE, "收缩膜叉运-货架出提升机", new List<string> { tagLoc.S_CNTR_CODE }, StartBit.N_CURRENT_NUM, 1, 1, 62); |
| | | LogHelper.CSucessLog($"from {tagLoc.S_LOC_CODE} to {loc.S_LOC_CODE} 收缩膜叉运-货架出提升机 ,创建{re} "); |
| | | if (re) |
| | | oto.Add(oic); |
| | | if (outlock == null) |
| | | { |
| | | oto.Add(oic); |
| | | if (outlock == null) |
| | | { |
| | | var r = new RowLock { S_LOCK_SRC = (StartBit.S_NOTE /*+ StartBit.HalfOrFull*/), T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; |
| | | db.Insertable(r).ExecuteCommand(); |
| | | } |
| | | var r = new RowLock { S_LOCK_SRC = (StartBit.S_NOTE /*+ StartBit.HalfOrFull*/), T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "出库锁", S_AREA_CODE = StartBit.S_AREA_CODE, N_ROW = StartBit.N_ROW }; |
| | | db.Insertable(r).ExecuteCommand(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info(order.SQL_PLineNo + "-收缩膜 出库! 没有可用物料"); |
| | | } |
| | | |
| | | var set1 = new HashSet<string>(oto); |
| | |
| | | return; |
| | | //1 半托直接上货架一层。 |
| | | lgrx = locsFirst.GroupBy(X => X.N_ROW).Select(x => |
| | | { |
| | | var y11 = x.OrderBy(y => y.N_COL).ToList(); |
| | | var y1 = y11.FindAll(z => z.N_CURRENT_NUM > 0).LastOrDefault(); |
| | | return y1; |
| | | }).ToList(); |
| | | { |
| | | var y11 = x.OrderBy(y => y.N_COL).ToList(); |
| | | var y1 = y11.FindAll(z => z.N_CURRENT_NUM > 0).LastOrDefault(); |
| | | return y1; |
| | | }).ToList(); |
| | | foreach (var lastfull in lgrx.FindAll(x => x.HalfOrFull == 2).OrderBy(x => x.HalfOrFull).ThenBy(x => x.N_ROW)) |
| | | { |
| | | //var y = item.OrderBy(x => x.N_COL).ToList(); |
| | |
| | | } |
| | | } |
| | | ///第一段:出库 -到拆垛或者 接驳。 |
| | | var yuworders = LocationHelper.GetList<YWLWorkOrder>(x => x.SQL_PLineNo == "无菌标签出库" && 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 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 => !string.IsNullOrEmpty(x.TagOver) ? 1 : 2).ThenBy(x => x.TagOverTime).ToList(); |
| | | |
| | | //foreach (var order in yuworders) |
| | | retuse: |
| | |
| | | } |
| | | else |
| | | WCSHelper.Do(db => |
| | | { |
| | | //var LCRLIST = db.Queryable<LocCntrRel>().Includes(x => x.CntrItemRel).Where(x => x.S_LOC_CODE.StartsWith("QX-") && (x.CntrItemRel.S_ITEM_CODE == outOer.S_ITEM_CODE || x.CntrItemRel.S_ITEM_CODE == outOer.S_ITEM_NAME)).ToList(); |
| | | List = db.Queryable<LocCntrRel>() |
| | | .LeftJoin<CntrItemRel>((lcr, cir) => lcr.S_CNTR_CODE == cir.S_CNTR_CODE) |
| | | .LeftJoin<Location>((lcr, cir, lo) => lcr.S_LOC_CODE == lo.S_LOC_CODE) |
| | | .Where((lcr, cir) => lcr.S_LOC_CODE.StartsWith("QX-") && (cir.S_ITEM_CODE == outOer.S_ITEM_CODE || cir.S_ITEM_CODE == outOer.S_ITEM_NAME)) |
| | | .Select((lcr, cir, lo) => new Location |
| | | { |
| | | S_AREA_CODE = lo.S_AREA_CODE, |
| | | S_WH_CODE = lcr.S_TYPE, |
| | | T_CREATE = lcr.T_CREATE, |
| | | N_ROW = lo.N_ROW, |
| | | N_COL = lcr.S_CNTR_CODE.StartsWith("TP") ? 0 : 1 |
| | | }).ToList(); |
| | | //var LCRLIST = db.Queryable<LocCntrRel>().Includes(x => x.CntrItemRel).Where(x => x.S_LOC_CODE.StartsWith("QX-") && (x.CntrItemRel.S_ITEM_CODE == outOer.S_ITEM_CODE || x.CntrItemRel.S_ITEM_CODE == outOer.S_ITEM_NAME)).ToList(); |
| | | List = db.Queryable<LocCntrRel>() |
| | | .LeftJoin<CntrItemRel>((lcr, cir) => lcr.S_CNTR_CODE == cir.S_CNTR_CODE) |
| | | .LeftJoin<Location>((lcr, cir, lo) => lcr.S_LOC_CODE == lo.S_LOC_CODE) |
| | | .Where((lcr, cir) => lcr.S_LOC_CODE.StartsWith("QX-") && (cir.S_ITEM_CODE == outOer.S_ITEM_CODE || cir.S_ITEM_CODE == outOer.S_ITEM_NAME)) |
| | | .Select((lcr, cir, lo) => new Location |
| | | { |
| | | S_AREA_CODE = lo.S_AREA_CODE, |
| | | S_WH_CODE = lcr.S_TYPE, |
| | | T_CREATE = lcr.T_CREATE, |
| | | N_ROW = lo.N_ROW, |
| | | N_COL = lcr.S_CNTR_CODE.StartsWith("TP") ? 0 : 1 |
| | | }).ToList(); |
| | | |
| | | }); |
| | | }); |
| | | if (!List.Any()) |
| | | { |
| | | LogHelper.Info($"备货单:{outOer.S_Work_NO} 库区中没有找到可用物料。"); |