| | |
| | | { |
| | | if (item.SQL_State != "完成") |
| | | { |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); |
| | | WCSHelper.Do(db => |
| | | { |
| | | LogHelper.Info("移库工单数量完成" + item.SQL_WorkNo); |
| | |
| | | { |
| | | LogHelper.Info($"{item.Turn_Type}工单{item.SQL_WorkNo} 手动完成,处理解锁,"); |
| | | |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); |
| | | WCSHelper.Do(db => |
| | | { |
| | | if (item.Turn_Type == "自动移库") |
| | |
| | | { |
| | | //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0); |
| | | //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); |
| | | |
| | | LogHelper.Info($"{item.Turn_Type}工单,完成" + item.SQL_WorkNo + "起排无货 或 终排已满 无法移库"); |
| | | item.SQL_State = "完成"; |
| | |
| | | { |
| | | //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0); |
| | | //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); |
| | | LogHelper.Info($"{item.Turn_Type}工单,完成" + item.SQL_WorkNo + "起点已经没有货了,移库完成"); |
| | | item.SQL_State = "完成"; |
| | | item.Note = "起点已经没有货了,移库完成"; |
| | |
| | | { |
| | | //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0); |
| | | //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO)); |
| | | ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo); |
| | | LogHelper.Info($"{item.Turn_Type}工单,完成" + item.SQL_WorkNo + "终点满了,移库完成"); |
| | | item.SQL_State = "完成"; |
| | | item.Note = "终点满了,移库完成"; |
| | |
| | | } |
| | | } |
| | | |
| | | static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true) |
| | | static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true, string WorkNo = "") |
| | | { |
| | | LogHelper.Info("dooooooooooooooooooooooooooooooooooooooooooooo" + msg + "---" + sign); |
| | | LogHelper.Info(JsonConvert.SerializeObject(startBit)); |
| | | LogHelper.Info(JsonConvert.SerializeObject(EndBit)); |
| | | bool j解锁起点库区排 = true; |
| | | if (!string.IsNullOrEmpty(WorkNo) && sign == 0) |
| | | { |
| | | //解锁时,有工单号。 查查除了这个工单号以外的其他 指定出库排执行 |
| | | var orders = WCSHelper.GetWorkOrder2(); |
| | | var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo); |
| | | if (thisOrder != null) |
| | | { |
| | | var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row); |
| | | if (other != null) |
| | | j解锁起点库区排 = false; |
| | | } |
| | | } |
| | | //if (sign == 1) |
| | | //{ |
| | | // if (LocationHelper.GetRowLock(x => x.S_AREA_CODE == startBit.S_AREA_CODE && x.N_ROW == startBit.N_ROW).Count > 0) |
| | |
| | | // return; |
| | | // } |
| | | //} |
| | | if (j解锁起点库区排) |
| | | LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign); |
| | | LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW, S_LOCK_STATE = msg }, sign); |
| | | //if (EndBit == null || EndBit.S_AREA_CODE.StartsWith("BHQ-")) |
| | |
| | | { |
| | | case 0: |
| | | { |
| | | var lst = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC }; |
| | | if (!j解锁起点库区排) |
| | | lst = new List<string> { EndBit.S_Fule_LOC }; |
| | | var req = JsonConvert.SerializeObject(new |
| | | { |
| | | areaNum = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC }, |
| | | areaNum = lst, |
| | | repoNo = Settings.repoNo, |
| | | areaLock = "2" |
| | | }); |
| | |
| | | var locS = LocationHelper.GetAreaNormalLocList(ODs.Key); |
| | | foreach (var od in ODs) |
| | | { |
| | | LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 开始 》》》"); |
| | | if (string.IsNullOrEmpty(od.S_ZZ_AREA) || string.IsNullOrEmpty(od.S_END_AREA)) |
| | | LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 开始 》》》"); |
| | | if (string.IsNullOrEmpty(od.S_ZZ_AREA) && string.IsNullOrEmpty(od.S_END_AREA)) |
| | | { |
| | | LogHelper.CError($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 数据缺失。无法完成移库。"); |
| | | LogHelper.CError($"YWL_ZX_Turn from{od.S_START_AREA} to{od.S_END_AREA} 数据缺失。无法完成移库。"); |
| | | continue; |
| | | } |
| | | var rows = locS.FindAll(x => x.N_ROW == od.N_START_ROW); |
| | |
| | | var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); |
| | | if (lastful != null) |
| | | { |
| | | LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。"); |
| | | LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。"); |
| | | var crs = LocationHelper.GetLocCntrRel(lastful.S_LOC_CODE); |
| | | var cntritems = ContainerHelper.GetCntrItemRel(crs.FirstOrDefault()?.S_CNTR_CODE); |
| | | if (!cntritems.Any()) |
| | | continue; |
| | | LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。接驳是否被锁?:{InworkLock}"); |
| | | LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。接驳是否被锁?:{InworkLock}"); |
| | | var cir1 = cntritems.First(); |
| | | |
| | | if (!string.IsNullOrEmpty(od.S_ITEM_CODE)) |
| | | { |
| | | ///给移库单 写上转运的物料数据。 |
| | | od.S_ITEM_CODE = cir1.S_ITEM_CODE; |
| | | od.S_ITEM_NAME = cir1.S_ITEM_NAME; |
| | | od.S_CJ_NAME = cir1.S_CJ_NAME; |
| | | WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand()); |
| | | } |
| | | |
| | | if (od.S_ZZ_AREA == "YWLWJJB") |
| | | { |
| | | if (InworkLock) |
| | |
| | | Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); |
| | | if (Endbit != null) |
| | | { |
| | | LogHelper.Info($"入中转区{od.S_ZZ_AREA}使用{Endbit.S_LOC_CODE}"); |
| | | LogHelper.Info($"入中转区{nextarea}使用{Endbit.S_LOC_CODE}"); |
| | | break; |
| | | } |
| | | } |
| | | LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库终点》{Endbit?.S_LOC_CODE}"); |
| | | LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库终点》{Endbit?.S_LOC_CODE}"); |
| | | if (Endbit != null) |
| | | { |
| | | //生成接驳区任务,标记为终点库区。 |
| | | 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, nextarea == od.S_END_AREA ? "" : od.S_END_AREA); |
| | | if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; |
| | | if (!string.IsNullOrEmpty(od.S_ITEM_CODE)) |
| | | { |
| | | ///给移库单 写上转运的物料数据。 |
| | | od.S_ITEM_CODE = cir1.S_ITEM_CODE; |
| | | od.S_ITEM_NAME = cir1.S_ITEM_NAME; |
| | | od.S_CJ_NAME = cir1.S_CJ_NAME; |
| | | WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand()); |
| | | } |
| | | break; |
| | | } |
| | | else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false; |