| | |
| | | if (CDlist.Contains(EdnRarea)) |
| | | { |
| | | isCd = true; |
| | | //inlockLis = LocationHelper.GetList<RowLock>(x => x.S_AREA_CODE == EdnRarea && x.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME && x.S_LOCK_STATE == "入库锁").ToList(); |
| | | //if (inlockLis.Count() > 0) |
| | | //{ |
| | | // inlock = inlockLis.FirstOrDefault(); |
| | | //} |
| | | inlock = RGRow.FirstOrDefault(); |
| | | if (inlock != null) |
| | | { |
| | | //当入库的任务能放满一排并且还有余的时候 开第二排 |
| | | //先判断起点有多少相同的 能入的物料 |
| | | if (_cl.S_AREA_CODE == "YWLRGDD")//判断起点是否是人工堆叠区 |
| | | { |
| | | inlockLis = RGRow.FindAll(e => e.S_AREA_CODE == EdnRarea && e.S_LOCK_SRC == cir1.S_ITEM_CODE + cir1.S_ITEM_NAME + cir1.S_CJ_NAME).ToList(); |
| | | //然后判断人工堆叠区需要入库多少托同品种物料 startMum |
| | | //货位 托盘 物料表联查 |
| | | LogHelper.Info($"查起点有多少同品种的物料 开始"); |
| | | 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 == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == _clrel0.S_TYPE); |
| | | var lstCanOutL = dbll.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(); |
| | | LogHelper.Info($"起点要入CD的有多少托盘数量为{lstCanOutL.Count()}"); |
| | | //判断终点排能入多少 少于入库托盘数则多开一排 EndMum |
| | | var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && inlockLis.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); |
| | | LogHelper.Info($"终点CD排有多少空托能入{lstCanOutL.Count()}"); |
| | | if (lstCanOutL.Count <= EndMum.Count()) |
| | | { |
| | | arloclist = arloclist.FindAll(x => inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); |
| | | } |
| | | else |
| | | { |
| | | arloclist = arloclist.FindAll(x => !inlockLis.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); |
| | | inlock = null; |
| | | } |
| | | LogHelper.Info($"查起点有多少同品种的物料 结束"); |
| | | } |
| | | else |
| | | { |
| | | arloclist = arloclist.FindAll(x => x.N_ROW == inlock.N_ROW).ToList(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (_cl.S_AREA_CODE == "YWLRGDD") |
| | | { |
| | | //查询是否有已经入了的排 |
| | | 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 == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea); |
| | | var lstCanOutL = dbll.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(); |
| | | LogHelper.Info($"终点有相同的物料的货位有{lstCanOutL.Count()}"); |
| | | |
| | | var ca1 = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); |
| | | ca1.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == EdnRarea); |
| | | var lstCanOutLSta = dbll.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(ca1.ToExpression()).ToList(); |
| | | if (lstCanOutL.Count() > 0) |
| | | if (_cl.S_AREA_CODE == "YWLRGDD") |
| | | { |
| | | //查询是否有已经入了的排 |
| | | 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 == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == EdnRarea); |
| | | var lstCanOutL = dbll.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(); |
| | | LogHelper.Info($"终点有相同的物料的货位有{lstCanOutL.Count()}"); |
| | | |
| | | var ca1 = Expressionable.Create<Location, LocCntrRel, CntrItemRel>(); |
| | | ca1.And((o, p, t) => o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == cir1.S_ITEM_CODE && t.S_ITEM_NAME == cir1.S_ITEM_NAME && t.S_CJ_NAME == cir1.S_CJ_NAME && o.S_AREA_CODE == "YWLRGDD" && p.S_TYPE == EdnRarea); |
| | | var lstCanOutLSta = dbll.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(ca1.ToExpression()).ToList(); |
| | | if (lstCanOutL.Count() > 0) |
| | | { |
| | | var ProRow = lstCanOutLSta.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList(); |
| | | //这些排能入的货位数 |
| | | var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); |
| | | |
| | | //查询每一排最大的列 小于这些列的 不允许入 |
| | | foreach (var item in ProRow) |
| | | { |
| | | var EndMum = dbll.Queryable<Location>().Where(l => l.S_AREA_CODE == EdnRarea && l.N_CURRENT_NUM == 0 && l.S_LOCK_STATE == "无" && lstCanOutL.Select(e => e.N_ROW).ToList().Contains(l.N_ROW)).ToList(); |
| | | if (EndMum.Count() > 0) |
| | | var MaxCol = lstCanOutLSta.FindAll(d => d.N_ROW == item.N_ROW).OrderByDescending(f => f.N_COL).First(); |
| | | EndMum.RemoveAll(f => f.N_ROW == item.N_ROW && f.N_COL < MaxCol.N_COL); |
| | | } |
| | | if (EndMum.Count() > 0) |
| | | { |
| | | if (lstCanOutL.Count() <= EndMum.Count()) |
| | | { |
| | | if (lstCanOutL.Count() <= EndMum.Count()) |
| | | { |
| | | arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.N_ROW)).ToList(); |
| | | } |
| | | arloclist = arloclist.FindAll(x => lstCanOutL.Select(e => e.N_ROW).ToList().Contains(x.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)) |
| | |
| | | } |
| | | } |
| | | var locsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_TYPE == WJ_BQ.RK_BBHJQ); |
| | | var SblocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_NOTE.Contains("水") && x.S_TYPE == WJ_BQ.RK_BBHJQ); |
| | | var SlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("标签-") && x.S_TYPE == SX_BQ.RK_BBHJQ); |
| | | var TKlocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("提扣-")); |
| | | var PElocsFirst = locsFirstA.FindAll(x => x.S_NOTE.Contains("收缩膜-")); |
| | |
| | | // 标签出库。货架直接出到线边 |
| | | YwlBQ_CreWJOutOrder(); |
| | | } |
| | | |
| | | // 标签无菌退库。 |
| | | YwlBQ_CreWJTK(); |
| | | } |
| | |
| | | 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(locsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); |
| | | //水标入库 |
| | | YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); |
| | | } |
| | | if (yuworders.Any()) |
| | | { |
| | |
| | | if (LocLock(SX_BQ.RK_BBHJQ)) |
| | | { |
| | | //水线标签入库 |
| | | YwlBQ_CreInwork(SlocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); |
| | | YwlBQ_CreInwork(SblocsFirst, SX_BQ.RK_BQDDQ, SX_BQ.RK_BBHJQ); |
| | | } |
| | | if (tklist.Count() > 0) |
| | | { |
| | |
| | | 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) |
| | | 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)}"); |
| | | if (cir.S_ITEM_CODE == order.SQL_ItemCode && cir.S_ITEM_NAME == order.SQL_ItemName) |
| | | { |
| | | //plg 2025年6月13日 09:08:10 |
| | | Temp = new locCntItem |
| | |
| | | { |
| | | 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) |
| | | { |
| | | 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(); |
| | | } |
| | | } |
| | | //if (re) |
| | | //{ |
| | | // 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(); |
| | | // } |
| | | //} |
| | | } |
| | | } |
| | | } |