| | |
| | | var orders = WCSHelper.GetWorkOrder2(); |
| | | var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo); |
| | | LogHelper.Info("移库解锁 --当前工单 sid:" + thisOrder?.S_ID); |
| | | if (thisOrder != null) |
| | | { |
| | | var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row); |
| | | LogHelper.Info($"移库解锁 --其他工单 x.start_area == {thisOrder.start_area} start_row == {thisOrder.start_row} SID:" + other?.S_ID); |
| | | if (other != null) |
| | | j解锁起点库区排 = false; |
| | | } |
| | | var allarea_rows = orders.FindAll(x => x.S_ID != thisOrder.S_ID && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row); |
| | | LogHelper.Info("移库解锁 --当前工单 的同库区排 其他工单:" + JsonConvert.SerializeObject(allarea_rows)); |
| | | if (allarea_rows.Any()) |
| | | j解锁起点库区排 = false; |
| | | //if (thisOrder != null) |
| | | //{ |
| | | // var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row); |
| | | // LogHelper.Info($"移库解锁 --其他工单 x.start_area == {thisOrder.start_area} start_row == {thisOrder.start_row} SID:" + other?.S_ID); |
| | | // if (other != null) |
| | | // j解锁起点库区排 = false; |
| | | //} |
| | | } |
| | | //if (sign == 1) |
| | | //{ |
| | |
| | | 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 && 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 (!yuworders.Any()) |
| | | { |
| | | YwlBQ_CreInwork(locsFirst, WJ_BQ.RK_BQDDQ, WJ_BQ.RK_BBHJQ); |
| | |
| | | if (order != null) |
| | | { |
| | | var Porder = WCSHelper.GetWorkOrder(order.SQL_LinkLineNO); |
| | | if (Porder == null) |
| | | { |
| | | LogHelper.CErrorLog("SX标签出库:" + (order.SQL_LinkLineNO) + "没有【执行中】的工单"); |
| | | yuworders.Remove(order); |
| | | goto retuse; |
| | | } |
| | | //if (Porder == null) |
| | | //{ |
| | | // LogHelper.CErrorLog("SX标签出库:" + (order.SQL_LinkLineNO) + "没有【执行中】的工单"); |
| | | // yuworders.Remove(order); |
| | | // goto retuse; |
| | | //} |
| | | var oto = new List<string>(); |
| | | //if (!string.IsNullOrEmpty(order.TagOver)) |
| | | // oto = order.TagOver.Split(',').ToList(); |
| | |
| | | if (order != null) |
| | | { |
| | | var Porder = WCSHelper.GetWorkOrder(order.SQL_LinkLineNO); |
| | | if (Porder == null) |
| | | { |
| | | LogHelper.CErrorLog("无菌标签出库:" + (order.SQL_LinkLineNO) + "没有【执行中】的工单"); |
| | | yuworders.Remove(order); |
| | | goto retuse; |
| | | } |
| | | //if (Porder == null) |
| | | //{ |
| | | // LogHelper.CErrorLog("无菌标签出库:" + (order.SQL_LinkLineNO) + "没有【执行中】的工单"); |
| | | // yuworders.Remove(order); |
| | | // goto retuse; |
| | | //} |
| | | |
| | | var oto = new List<string>(); |
| | | //if (!string.IsNullOrEmpty(order.TagOver)) |
| | |
| | | /// </summary> |
| | | internal static void YWL_ZX_Turn() |
| | | { |
| | | var dbcd = new SqlHelper<object>().GetInstance(); |
| | | |
| | | foreach (var ODs in LocationHelper.GetList<YWLZXtake>(X => X.S_ZX_STATE == "执行").GroupBy(x => x.S_START_AREA)) |
| | | { |
| | | var locS = LocationHelper.GetAreaNormalLocList(ODs.Key); |
| | |
| | | } |
| | | else |
| | | { |
| | | if (od.N_END_ROW > 0) |
| | | { |
| | | var EndRow = dbcd.Queryable<Location>().Where(l => l.S_AREA_CODE == od.S_END_AREA && l.N_ROW == od.N_END_ROW && l.N_CURRENT_NUM == 0).ToList(); |
| | | if (EndRow.Count() == 0) |
| | | { |
| | | //置为完成。 |
| | | od.S_ZX_STATE = "完成"; |
| | | WCSHelper.Do(db => db.Updateable(od).UpdateColumns(x => new { x.S_ZX_STATE }).ExecuteCommand()); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var EndRow = dbcd.Queryable<Location>().Where(l => l.S_AREA_CODE == od.S_END_AREA && l.N_CURRENT_NUM == 0).ToList(); |
| | | if (EndRow.Count() == 0) |
| | | { |
| | | //置为完成。 |
| | | od.S_ZX_STATE = "完成"; |
| | | WCSHelper.Do(db => db.Updateable(od).UpdateColumns(x => new { x.S_ZX_STATE }).ExecuteCommand()); |
| | | } |
| | | } |
| | | var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); |
| | | if (lastful != null) |
| | | { |
| | |
| | | string nextarea = !string.IsNullOrEmpty(od.S_ZZ_AREA) ? od.S_ZZ_AREA : od.S_END_AREA; |
| | | var zzlocs = LocationHelper.GetAreaNormalLocList(nextarea); |
| | | Location Endbit = null; |
| | | foreach (var zzrs in zzlocs.GroupBy(x => x.N_ROW).OrderBy(x => x.Key)) |
| | | if (od.N_END_ROW == 0 && zzlocs.Any()) |
| | | { |
| | | var zzrloclist = zzrs.ToList(); |
| | | var _cl2 = zzrloclist.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); |
| | | if (_cl2 != null) |
| | | foreach (var zzrs in zzlocs.GroupBy(x => x.N_ROW).OrderBy(x => x.Key)) |
| | | { |
| | | var rel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); |
| | | var cntrrel = ContainerHelper.GetCntrItemRel(rel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); |
| | | if (cntrrel == null) |
| | | continue; |
| | | if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) |
| | | var zzrloclist = zzrs.ToList(); |
| | | var _cl2 = zzrloclist.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault(); |
| | | if (_cl2 != null) |
| | | { |
| | | var rel = LocationHelper.GetLocCntrRel(_cl2.S_LOC_CODE); |
| | | var cntrrel = ContainerHelper.GetCntrItemRel(rel.FirstOrDefault()?.S_CNTR_CODE).FirstOrDefault(); |
| | | if (cntrrel == null) |
| | | continue; |
| | | if (cntrrel.S_ITEM_CODE == cir1.S_ITEM_CODE && cntrrel.S_ITEM_NAME == cir1.S_ITEM_NAME && cntrrel.S_CJ_NAME == cir1.S_CJ_NAME) |
| | | { |
| | | Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); |
| | | } |
| | | } |
| | | else |
| | | Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); |
| | | if (Endbit != null) |
| | | { |
| | | LogHelper.Info($"入中转区{nextarea}使用{Endbit.S_LOC_CODE}"); |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0)); |
| | | if (Endbit != null) |
| | | } |
| | | else |
| | | { |
| | | if (zzlocs.Any() && od.N_END_ROW > 0)//用于库内 比如A库某排移到A库的另一排 |
| | | { |
| | | LogHelper.Info($"入中转区{nextarea}使用{Endbit.S_LOC_CODE}"); |
| | | break; |
| | | zzlocs = zzlocs.FindAll(e => e.N_ROW == od.N_END_ROW); |
| | | // |
| | | var EndMt = dbcd.Queryable<Location>().Where(l => l.S_AREA_CODE == od.S_END_AREA && l.N_ROW == od.N_END_ROW && l.N_CURRENT_NUM > 0).ToList(); |
| | | if (EndMt.Any()) |
| | | { |
| | | var ggh = EndMt.OrderByDescending(e => e.N_COL).FirstOrDefault(); |
| | | zzlocs = zzlocs.FindAll(e => e.N_COL > ggh.N_COL).ToList(); |
| | | } |
| | | if (zzlocs.Any()) |
| | | { |
| | | Endbit = zzlocs.OrderBy(e => e.N_COL).FirstOrDefault(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库终点》{Endbit?.S_LOC_CODE}"); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |