| | |
| | | import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderProcessService; |
| | | import cn.iocoder.yudao.module.mes.util.MesOutputItemUtils; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | |
| | | processIds.addAll(nextProcessIds); |
| | | Map<Long, MesProProcessDO> processMap = CollUtil.isNotEmpty(processIds) |
| | | ? processService.getProcessMap(processIds) : Collections.emptyMap(); |
| | | // 获取产出物料(解析逗号分隔的字符串) |
| | | // 获取产出物料(兼容 JSON 归属配置与旧逗号分隔格式) |
| | | Set<Long> allOutputItemIds = new HashSet<>(); |
| | | Map<Long, List<Long>> voOutputItemIdsMap = new HashMap<>(); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | String outputItemIdStr = list.get(i).getOutputItemId(); |
| | | if (outputItemIdStr != null && !outputItemIdStr.isBlank()) { |
| | | List<Long> ids = Arrays.stream(outputItemIdStr.split(",")) |
| | | .map(String::trim).filter(s -> !s.isEmpty()) |
| | | .map(Long::valueOf).collect(Collectors.toList()); |
| | | List<Long> ids = MesOutputItemUtils.parseItemIds(list.get(i).getOutputItemId()); |
| | | if (!ids.isEmpty()) { |
| | | voOutputItemIdsMap.put((long) i, ids); |
| | | allOutputItemIds.addAll(ids); |
| | | } |
| | |
| | | }); |
| | | })); |
| | | |
| | | // 3. 拼接 VO |
| | | List<MesProWorkOrderProcessRespVO> result = BeanUtils.toBean(list, MesProWorkOrderProcessRespVO.class); |
| | | // 3. 拼接 VO(先置空 output_item_id,避免 String 转 Long 异常;产出下面单独填充) |
| | | List<MesProWorkOrderProcessDO> safeList = BeanUtils.toBean(list, MesProWorkOrderProcessDO.class); |
| | | safeList.forEach(row -> row.setOutputItemId(null)); |
| | | List<MesProWorkOrderProcessRespVO> result = BeanUtils.toBean(safeList, MesProWorkOrderProcessRespVO.class); |
| | | for (int i = 0; i < result.size(); i++) { |
| | | MesProWorkOrderProcessRespVO vo = result.get(i); |
| | | MapUtils.findAndThen(processMap, vo.getProcessId(), process -> { |