| | |
| | | .max(Comparator.comparing(MesProRouteProcessDO::getSort)).orElseThrow(); |
| | | for (MesProRouteProcessDO process : processList) { |
| | | Set<Long> outputIds = parseOutputItemIds(process.getOutputItemId()); |
| | | boolean last = process.getId().equals(lastProcess.getId()); |
| | | if (CollUtil.isEmpty(outputIds)) { |
| | | throw exception(PRO_ROUTE_PROCESS_OUTPUT_REQUIRED, process.getProcessId()); |
| | | // 中间工序不一定形成可入库的独立半成品,允许不配置产出;末道工序必须产出成品。 |
| | | if (last) { |
| | | throw exception(PRO_ROUTE_LAST_OUTPUT_INVALID, process.getProcessId()); |
| | | } |
| | | continue; |
| | | } |
| | | for (Long outputId : outputIds) { |
| | | if (!boundItemIds.contains(outputId)) { |
| | |
| | | throw exception(PRO_ROUTE_PROCESS_OUTPUT_NOT_BOUND, item.getName()); |
| | | } |
| | | } |
| | | if (process.getId().equals(lastProcess.getId())) { |
| | | if (last) { |
| | | if (finishedItemIds.isEmpty() || !outputIds.equals(finishedItemIds)) { |
| | | throw exception(PRO_ROUTE_LAST_OUTPUT_INVALID, process.getProcessId()); |
| | | } |