| | |
| | | Map<Long, Long> mainIdToTaskIdMap = mainList.stream() |
| | | .filter(Objects::nonNull) |
| | | .filter(item -> item.getId() != null) |
| | | // 历史报工可能没挂工单,toMap 不允许 null 值,缺工单的直接跳过 |
| | | .filter(item -> item.getProductionOperationTaskId() != null) |
| | | .collect(Collectors.toMap(ProductionProductMain::getId, |
| | | ProductionProductMain::getProductionOperationTaskId, (left, right) -> left)); |
| | | Set<Long> taskIdSet = mainIdToTaskIdMap.values().stream() |
| | |
| | | Map<Long, Long> taskIdToRoutingOperationIdMap = taskList.stream() |
| | | .filter(Objects::nonNull) |
| | | .filter(item -> item.getId() != null) |
| | | // 同上:工单没关联订单工序时跳过,避免 toMap 空值 NPE |
| | | .filter(item -> item.getProductionOrderRoutingOperationId() != null) |
| | | .collect(Collectors.toMap(ProductionOperationTask::getId, |
| | | ProductionOperationTask::getProductionOrderRoutingOperationId, (left, right) -> left)); |
| | | Set<Long> routingOperationIdSet = taskIdToRoutingOperationIdMap.values().stream() |
| | |
| | | if (ObjectUtils.isNull(productionOrder.getStartTime())) { |
| | | productionOrder.setStartTime(LocalDateTime.now()); |
| | | } |
| | | // 订单状态由最后一道工序的合格产出推动,避免中间工序提前完工。 |
| | | productionOrder.setStatus(ProductOrderStatusEnum.RUNNING.getCode()); |
| | | // 仅待开始状态才推进到进行中,避免非末道工序报工时覆盖已完成状态。 |
| | | if (ProductOrderStatusEnum.WAIT.getCode().equals(productionOrder.getStatus())) { |
| | | productionOrder.setStatus(ProductOrderStatusEnum.RUNNING.getCode()); |
| | | } |
| | | if (isLastOperation) { |
| | | productionOrder.setCompleteQuantity(defaultDecimal(productionOrder.getCompleteQuantity()).add(productQty)); |
| | | if (productionOrder.getQuantity() != null |
| | |
| | | productionAccount.setSchedulingUserId(user == null ? null : user.getUserId()); |
| | | productionAccount.setSchedulingUserName(user == null ? dto.getUserName() : user.getNickName()); |
| | | productionAccount.setFinishedNum(productQty); |
| | | productionAccount.setWorkHours(workHours); |
| | | productionAccount.setWorkHours(technologyOperation != null ? technologyOperation.getSalaryQuota() : null); |
| | | productionAccount.setTechnologyOperationName(technologyOperation == null ? null : technologyOperation.getName()); |
| | | productionAccount.setSchedulingDate(LocalDateTime.now()); |
| | | productionAccountMapper.insert(productionAccount); |