| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderProcessDO; |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderProductionStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService; |
| | |
| | | vo.setCompletionProgress(produced.compareTo(BigDecimal.ZERO) > 0 ? new BigDecimal("100.00") : BigDecimal.ZERO); |
| | | } |
| | | |
| | | // 计算进度和状态 |
| | | // 计算工序进度 |
| | | List<MesProWorkOrderProcessDO> processes = woProcessMap.getOrDefault(vo.getId(), Collections.emptyList()); |
| | | List<MesProTaskDO> tasks = woTaskMap.getOrDefault(vo.getId(), Collections.emptyList()); |
| | | |
| | | List<MesProWorkOrderProcessProgressVO> progressList = new ArrayList<>(); |
| | | boolean allCompleted = !processes.isEmpty(); |
| | | boolean anyStarted = false; |
| | | |
| | | Map<Long, List<MesProTaskDO>> processTaskMap = convertMultiMap(tasks, MesProTaskDO::getProcessId); |
| | | |
| | |
| | | progressVO.setProgress(totalProduced.compareTo(BigDecimal.ZERO) > 0 ? new BigDecimal("100.00") : BigDecimal.ZERO); |
| | | } |
| | | progressList.add(progressVO); |
| | | |
| | | if (totalProduced.compareTo(BigDecimal.ZERO) > 0) { |
| | | anyStarted = true; |
| | | } |
| | | if (totalQty.compareTo(BigDecimal.ZERO) == 0 || totalProduced.compareTo(totalQty) < 0) { |
| | | allCompleted = false; |
| | | } |
| | | } |
| | | |
| | | vo.setProcessProgressList(progressList); |
| | | if (processes.isEmpty()) { |
| | | vo.setProductionStatus(MesProWorkOrderProductionStatusEnum.WAITING.getStatus()); // 待生产 |
| | | } else if (allCompleted) { |
| | | vo.setProductionStatus(MesProWorkOrderProductionStatusEnum.FINISHED.getStatus()); // 生产完成 |
| | | } else if (anyStarted) { |
| | | vo.setProductionStatus(MesProWorkOrderProductionStatusEnum.PRODUCING.getStatus()); // 生产中 |
| | | } else { |
| | | vo.setProductionStatus(MesProWorkOrderProductionStatusEnum.WAITING.getStatus()); // 待生产 |
| | | } |
| | | }); |
| | | } |
| | | |