| | |
| | | // 遍历处理数据并组装结果 |
| | | : workOrderPage.getRecords().stream() |
| | | .filter(Objects::nonNull) |
| | | .sorted(Comparator.comparing(ProductionOperationTaskVo::getId, Comparator.nullsLast(Comparator.naturalOrder()))) |
| | | .toList(); |
| | | if (!workOrderList.isEmpty()) { |
| | | // 工序进度需要按工艺路线工序顺序(drag_sort 升序)从左到右展示,任务 id 仅作为兜底排序 |
| | | Map<Long, Integer> routingOperationDragSortMap = loadRoutingOperationDragSortMap(workOrderList); |
| | | Comparator<ProductionOperationTaskVo> workOrderComparator = Comparator |
| | | .comparing((ProductionOperationTaskVo task) -> routingOperationDragSortMap.get(task.getProductionOrderRoutingOperationId()), |
| | | Comparator.nullsLast(Comparator.<Integer>naturalOrder())) |
| | | .thenComparing(ProductionOperationTaskVo::getId, |
| | | Comparator.nullsLast(Comparator.<Long>naturalOrder())); |
| | | workOrderList = workOrderList.stream().sorted(workOrderComparator).toList(); |
| | | } |
| | | if (workOrderList.isEmpty()) { |
| | | detailVo.setWorkOrderList(Collections.emptyList()); |
| | | return detailVo; |
| | |
| | | return detailVo; |
| | | } |
| | | |
| | | /** |
| | | * 查询工单对应工艺路线工序的拖动排序,用于按工序先后顺序展示工序进度 |
| | | */ |
| | | private Map<Long, Integer> loadRoutingOperationDragSortMap(List<ProductionOperationTaskVo> workOrderList) { |
| | | Set<Long> routingOperationIds = workOrderList.stream() |
| | | .map(ProductionOperationTaskVo::getProductionOrderRoutingOperationId) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toSet()); |
| | | if (routingOperationIds.isEmpty()) { |
| | | return Collections.emptyMap(); |
| | | } |
| | | return productionOrderRoutingOperationMapper.selectBatchIds(routingOperationIds).stream() |
| | | .filter(Objects::nonNull) |
| | | .filter(operation -> operation.getId() != null && operation.getDragSort() != null) |
| | | .collect(Collectors.toMap(ProductionOrderRoutingOperation::getId, ProductionOrderRoutingOperation::getDragSort, (a, b) -> a)); |
| | | } |
| | | |
| | | private Long resolveProductionOrderId(ProductionOrderDto dto) { |
| | | // 从入参中解析生产订单ID并校验 |
| | | if (dto == null) { |