| | |
| | | S_NOTE = cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim(), |
| | | S_ITEM_CODE = cir.S_ITEM_CODE, |
| | | S_ITEM_NAME = cir.S_ITEM_NAME, |
| | | S_BATCH_NO = cir.S_BATCH_NO, |
| | | S_CJ_NAME = cir.S_CJ_NAME, |
| | | S_CNTR_CODE = cir.S_CNTR_CODE |
| | | }) |
| | | .ToList(); |
| | | /// 人工堆叠区纸箱 和 标签 是按标识+物料筛选进行入库转运。 |
| | | /// 物料名称包含对应种类进行入库。 |
| | | foreach (var item in locsFirstA) |
| | | { |
| | | if (!string.IsNullOrEmpty(item.S_BATCH_NO)) |
| | | { |
| | | item.S_NOTE = item.S_NOTE + "&" + item.S_BATCH_NO; |
| | | } |
| | | } |
| | | var locsFirst = locsFirstA.FindAll(x => 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("提扣-")); |
| | |
| | | string v = "YWLTKMKQ"; |
| | | var rklist = LocationHelper.GetRowLock(v); |
| | | int hof = (s_type == .5 ? 1 : (s_type == .75 ? 2 : 3)); |
| | | |
| | | var inlock = rklist.Find(x => x.S_LOCK_SRC == (cir.S_ITEM_CODE.Trim() + "&" + cir.S_ITEM_NAME.Trim() + hof) && x.S_LOCK_STATE.Contains("入库锁")); |
| | | Location EndBit = null; |
| | | var NormalList = LocationHelper.GetAreaNormalLocList(v); |
| | |
| | | private static void YwlPETK_CreInwork(List<locCntItem> klocsFirst, string v, string v2, int v1 = 3) |
| | | { |
| | | bool ord = v2.Contains("提扣"); |
| | | foreach (var ptR in klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key)) |
| | | var chi = new SqlHelper<object>().GetInstance(); |
| | | var newDb = chi.CopyNew(); |
| | | var yx = klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key).ToList(); |
| | | foreach (var ptR in klocsFirst.GroupBy(x => x.N_ROW).OrderBy(x => x.Key).ToList()) |
| | | { |
| | | Location EndBit = null; |
| | | var rsfull = ptR.OrderBy(X => X.N_COL).ToList().FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault(); |
| | |
| | | } |
| | | else |
| | | { |
| | | var hasNum = NormalList.FindAll(x => x.N_CURRENT_NUM > 0).Select(x => x.N_ROW).Distinct(); |
| | | var hasNum = NormalList.FindAll(x => x.N_CURRENT_NUM > 0).Select(x => x.N_ROW).Distinct().ToList(); |
| | | var EptRowlist = NormalList.FindAll(x => !hasNum.Contains(x.N_ROW)); |
| | | if (EptRowlist.Any()) |
| | | { |
| | | EndBit = EptRowlist.GroupBy(x => x.N_ROW).OrderBy(x => x.Key * (ord ? 1 : -1)).FirstOrDefault().ToList().OrderBy(x => x.N_COL).FirstOrDefault(); |
| | | } |
| | | else |
| | | { |
| | | if (hasNum.Any()) |
| | | { |
| | | //有相同物料 相同标签的继续入 |
| | | List<Location> lstCanOutL = new List<Location>(); |
| | | if (!string.IsNullOrEmpty(rsfull.S_BATCH_NO)) |
| | | { |
| | | lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == v && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && hasNum.Contains(o.N_ROW) && t.S_ITEM_CODE == rsfull.S_ITEM_CODE && t.S_ITEM_NAME == rsfull.S_ITEM_NAME && t.S_BATCH_NO == rsfull.S_BATCH_NO).ToList(); |
| | | |
| | | } |
| | | else |
| | | { |
| | | lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == v && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && hasNum.Contains(o.N_ROW) && t.S_ITEM_CODE == rsfull.S_ITEM_CODE && t.S_ITEM_NAME == rsfull.S_ITEM_NAME && string.IsNullOrEmpty(t.S_BATCH_NO)).ToList(); |
| | | } |
| | | if (lstCanOutL.Any()) |
| | | { |
| | | var loclist1 = NormalList.FindAll(x => lstCanOutL.Select(f => f.N_ROW).Distinct().ToList().Contains(x.N_ROW)); |
| | | foreach (var rs in loclist1.GroupBy(x => x.N_ROW).OrderBy(x => x.Key * (ord ? 1 : -1))) |
| | | { |
| | | var srloclist = rs.OrderBy(x => x.N_COL).ToList(); |
| | | var lastfull = srloclist.FindAll(x => x.N_CURRENT_NUM > 0).LastOrDefault(); |
| | | EndBit = srloclist.Find(x => x.S_LOCK_STATE == "无" && x.N_CURRENT_NUM < Math.Min(x.N_CAPACITY, v1) && x.S_LOCK_STATE != "报废" && x.N_COL >= (lastfull?.N_COL ?? 0)); |
| | | if (EndBit != null) |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (EndBit != null) |
| | |
| | | var res = TaskProcess.CreateTransport("", rsfull.S_LOC_CODE.Trim(), EndBit.S_LOC_CODE, v2 + "-入库", new List<string> { rsfull.S_CNTR_CODE }, rsfull.N_CURRENT_NUM, EndBit.N_CURRENT_NUM + 1, 1, 62); |
| | | LogHelper.CSucessLog($"from {rsfull.S_LOC_CODE} to {EndBit.S_LOC_CODE} {(v2 + "-入库")} ,创建{res} "); |
| | | |
| | | if (res && inlock == null) |
| | | { |
| | | var r = new RowLock { S_LOCK_SRC = rsfull.S_NOTE + rsfull.HalfOrFull, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "入库锁", S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW }; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | db.Insertable(r).ExecuteCommand(); |
| | | //else |
| | | //if (res && inlock == null) |
| | | //{ |
| | | // if (inlock.N_ROW != EndBit.N_ROW) |
| | | // { |
| | | // db.Deleteable(inlock).ExecuteCommand(); |
| | | // 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) |
| | | // { |
| | | // if (row.S_LOCK_SRC != r.S_LOCK_SRC) |
| | | // { |
| | | // db.Deleteable(row).ExecuteCommand(); |
| | | // var r = new RowLock { S_LOCK_SRC = rsfull.S_NOTE + rsfull.HalfOrFull, T_LOCK_TIME = DateTime.Now, S_LOCK_STATE = "入库锁", S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW }; |
| | | // var db = new SqlHelper<object>().GetInstance(); |
| | | // db.Insertable(r).ExecuteCommand(); |
| | | // //else |
| | | // //{ |
| | | // // if (inlock.N_ROW != EndBit.N_ROW) |
| | | // // { |
| | | // // db.Deleteable(inlock).ExecuteCommand(); |
| | | // // 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) |
| | | // // { |
| | | // // if (row.S_LOCK_SRC != r.S_LOCK_SRC) |
| | | // // { |
| | | // // db.Deleteable(row).ExecuteCommand(); |
| | | // // db.Insertable(r).ExecuteCommand(); |
| | | // // } |
| | | // // } |
| | | // // else db.Insertable(r).ExecuteCommand(); |
| | | // // } |
| | | // //} |
| | | // } |
| | | // } |
| | | // else db.Insertable(r).ExecuteCommand(); |
| | | // } |
| | | //} |
| | | } |
| | | } |
| | | Thread.Sleep(1000); |
| | | } |
| | |
| | | //查询可用货位有多少 |
| | | 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); |
| | | var count = loclist.FindAll(x => x.N_CURRENT_NUM > 0 && x.S_LOCK_STATE == "无").Count(); |
| | | LogHelper.Info("AutoRun13TSJ" + $"od.S_ROW 出库余量判断是否需要转运。-{count}< 总共能用的货位数{loclistK} -7"); |
| | | if (count <= loclistK - 7) |
| | | { |
| | |
| | | |
| | | //ca.And((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME); |
| | | var lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName && t.S_CJ_NAME == od.S_CJ_NAME).ToList(); |
| | | if (!lstCanOutL.Any()) |
| | | { |
| | | lstCanOutL = newDb.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((o, p, t) => o.S_AREA_CODE == area && o.N_CURRENT_NUM > 0 && o.S_LOCK_STATE == "无" && t.S_ITEM_CODE == od.SQL_ItemCode && t.S_ITEM_NAME == od.SQL_ItemName).ToList(); |
| | | } |
| | | List<string> CRk = new List<string>() { "出库锁", "入库锁" }; |
| | | var EndMum = newDb.Queryable<Location>().Where(l => l.S_AREA_CODE == area && CRk.Contains(l.S_LOCK_STATE)).ToList(); |
| | | var RowLock = EndMum.GroupBy(e => e.N_ROW).Select(f => f.First()).ToList(); |
| | |
| | | } |
| | | if (dsi.TryGetValue(area, out var dictitems1)) |
| | | { |
| | | foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName && x.S_CJ_NAME == od.S_CJ_NAME)) |
| | | foreach (var d in dictitems1.FindAll(x => x.ItemCode == od.SQL_ItemCode && x.ItemName == od.SQL_ItemName)) |
| | | { |
| | | if (Lart == null) |
| | | Lart = d; |
| | |
| | | if (_clcntitem != null) |
| | | { |
| | | LogHelper.Info("AutoRun13TSJ" + "相互是否匹配 _clcntitem S_ITEM_CODE:" + _clcntitem.S_ITEM_CODE + " od" + od.SQL_ItemCode + " _clcntitem S_ITEM_NAME:" + _clcntitem.S_ITEM_NAME + "od: " + od.SQL_ItemName + " od.S_CJ_NAME:" + od.S_CJ_NAME + "结果:" + (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME)); |
| | | if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName && _clcntitem.S_CJ_NAME == od.S_CJ_NAME) |
| | | if (_clcntitem.S_ITEM_CODE == od.SQL_ItemCode && _clcntitem.S_ITEM_NAME == od.SQL_ItemName) |
| | | { |
| | | StartBit = rl; |
| | | break; |