| | |
| | | return false; |
| | | } |
| | | |
| | | if (!allowBatchOutboundExecute(wrkMast)) { |
| | | if (!allowBatchOutboundExecute(wrkMast, true)) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | return false; |
| | | } |
| | | |
| | | private boolean allowBatchOutboundExecute(WrkMast wrkMast) { |
| | | public boolean canOutboundTaskExecuteInCurrentBatchWindow(WrkMast wrkMast) { |
| | | return allowBatchOutboundExecute(wrkMast, false); |
| | | } |
| | | |
| | | private boolean allowBatchOutboundExecute(WrkMast wrkMast, boolean logBlockedReason) { |
| | | if (wrkMast == null || Cools.isEmpty(wrkMast.getBatch())) { |
| | | return true; |
| | | } |
| | | |
| | | if (Cools.isEmpty(wrkMast.getBatchSeq())) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 缺少批次序号,暂不允许堆垛机出库", wrkMast.getBatch()); |
| | | if (logBlockedReason) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 缺少批次序号,暂不允许堆垛机出库", wrkMast.getBatch()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | if (Cools.isEmpty(firstBatchWrkMast.getBatchSeq())) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 存在未配置批次序号的任务,暂不允许堆垛机出库", wrkMast.getBatch()); |
| | | if (logBlockedReason) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 存在未配置批次序号的任务,暂不允许堆垛机出库", wrkMast.getBatch()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | boolean firstBatchTaskExecuted = firstBatchWrkMast.getWrkSts() != null |
| | | && !firstBatchWrkMast.getWrkSts().equals(WrkStsType.NEW_OUTBOUND.sts); |
| | | if (!currentIsFirstBatchTask && !firstBatchTaskExecuted) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 首个序号任务:{} 尚未执行,当前任务暂不允许出库", wrkMast.getBatch(), firstBatchWrkMast.getWrkNo()); |
| | | if (logBlockedReason) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 首个序号任务:{} 尚未执行,当前任务暂不允许出库", wrkMast.getBatch(), firstBatchWrkMast.getWrkNo()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | |
| | | List<WrkMast> unfinishedBatchWrkMasts = listUnfinishedBatchWrkMasts(wrkMast.getBatch()); |
| | | if (hasMissingBatchSeq(unfinishedBatchWrkMasts)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 存在未配置批次序号的未完成任务,暂不允许堆垛机出库", wrkMast.getBatch()); |
| | | if (logBlockedReason) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 存在未配置批次序号的未完成任务,暂不允许堆垛机出库", wrkMast.getBatch()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | if (!isWithinBatchExecuteWindow(wrkMast, unfinishedBatchWrkMasts, batchRunningLimit)) { |
| | | Integer windowStartSeq = unfinishedBatchWrkMasts.get(0).getBatchSeq(); |
| | | Integer windowEndSeq = unfinishedBatchWrkMasts.get(Math.min(batchRunningLimit, unfinishedBatchWrkMasts.size()) - 1).getBatchSeq(); |
| | | News.taskInfo(wrkMast.getWrkNo(), |
| | | "批次:{} 当前严格执行窗口序号为[{}-{}],当前序号={},暂不允许堆垛机出库", |
| | | wrkMast.getBatch(), |
| | | windowStartSeq, |
| | | windowEndSeq, |
| | | wrkMast.getBatchSeq()); |
| | | if (logBlockedReason) { |
| | | List<Integer> windowBatchSeqList = unfinishedBatchWrkMasts.stream() |
| | | .limit(Math.min(batchRunningLimit, unfinishedBatchWrkMasts.size())) |
| | | .map(WrkMast::getBatchSeq) |
| | | .collect(java.util.stream.Collectors.toList()); |
| | | News.taskInfo(wrkMast.getWrkNo(), |
| | | "批次:{} 当前严格执行窗口序号列表为{},当前序号={},暂不允许堆垛机出库", |
| | | wrkMast.getBatch(), |
| | | windowBatchSeqList, |
| | | wrkMast.getBatchSeq()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | WrkStsType.COMPLETE_OUTBOUND.sts, |
| | | WrkStsType.SETTLE_OUTBOUND.sts)); |
| | | if (batchRunningCount >= batchRunningLimit) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 执行中任务数达到上限,当前={},上限={}", wrkMast.getBatch(), batchRunningCount, batchRunningLimit); |
| | | if (logBlockedReason) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "批次:{} 执行中任务数达到上限,当前={},上限={}", wrkMast.getBatch(), batchRunningCount, batchRunningLimit); |
| | | } |
| | | return false; |
| | | } |
| | | |