| src/main/java/com/ruoyi/production/bean/vo/ProcessRouteStatusVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/bean/vo/ProductionOrderProcessTaskVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/mapper/ProductionOperationTaskMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/production/ProductionOperationTaskMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/production/bean/vo/ProcessRouteStatusVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.ruoyi.production.bean.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; @Data @Schema(name = "ProcessRouteStatusVo", description = "å·¥åºç产è¿åº¦é¡¹") public class ProcessRouteStatusVo { @Schema(description = "å·¥åºåç§°") private String name; @Schema(description = "宿è¿åº¦ç¾åæ¯") private BigDecimal percentage; } src/main/java/com/ruoyi/production/bean/vo/ProductionOrderProcessTaskVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.production.bean.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; @Data @Schema(name = "ProductionOrderProcessTaskVo", description = "ç产订åå·¥åºä»»å¡è¿åº¦") public class ProductionOrderProcessTaskVo { @Schema(description = "ç产订åID") private Long productionOrderId; @Schema(description = "å·¥åºåç§°") private String operationName; @Schema(description = "宿è¿åº¦") private BigDecimal completionStatus; } src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java
@@ -44,4 +44,7 @@ @Schema(description = "æ¯å¦å·²éæ") private Boolean returned; @Schema(description = "å·¥åºç产è¿åº¦") private List<ProcessRouteStatusVo> processRouteStatus; } src/main/java/com/ruoyi/production/mapper/ProductionOperationTaskMapper.java
@@ -7,6 +7,7 @@ import com.ruoyi.home.dto.processDataProductionStatisticsDto; import com.ruoyi.production.bean.dto.ProductionOperationTaskDto; import com.ruoyi.production.bean.vo.ProductionOperationTaskVo; import com.ruoyi.production.bean.vo.ProductionOrderProcessTaskVo; import com.ruoyi.production.pojo.ProductionOperationTask; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -43,4 +44,6 @@ ProductionOperationTaskDto getProductWorkOrderFlowCard(@Param("id") Long id); List<ProductionOperationTaskVo> getOperation(@Param("c") ProductionOperationTaskDto dto); List<ProductionOrderProcessTaskVo> listProcessStatusByOrderIds(@Param("orderIds") List<Long> orderIds); } src/main/java/com/ruoyi/production/service/impl/ProductionOrderServiceImpl.java
@@ -22,6 +22,8 @@ import com.ruoyi.production.bean.vo.ProductionOrderVo; import com.ruoyi.production.bean.vo.ProductionPlanVo; import com.ruoyi.production.bean.vo.ProductionOrderWorkOrderDetailVo; import com.ruoyi.production.bean.vo.ProcessRouteStatusVo; import com.ruoyi.production.bean.vo.ProductionOrderProcessTaskVo; import com.ruoyi.production.enums.ProductOrderStatusEnum; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; @@ -86,6 +88,7 @@ // å页æ¥è¯¢ç产订å Page<ProductionOrderVo> result = (Page<ProductionOrderVo>) baseMapper.pageProductionOrder(page, dto); fillProductImages(result.getRecords()); fillProcessRouteStatus(result.getRecords()); return result; } @@ -94,6 +97,7 @@ // æ¥è¯¢ç产订åå表 List<ProductionOrderVo> records = baseMapper.listProductionOrder(dto); fillProductImages(records); fillProcessRouteStatus(records); return records; } @@ -812,6 +816,46 @@ } } private void fillProcessRouteStatus(List<ProductionOrderVo> records) { if (records == null || records.isEmpty()) { return; } List<Long> orderIds = records.stream() .map(ProductionOrderVo::getId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); if (orderIds.isEmpty()) { return; } List<ProductionOrderProcessTaskVo> tasks = productionOperationTaskMapper.listProcessStatusByOrderIds(orderIds); Map<Long, List<ProcessRouteStatusVo>> statusMap = new LinkedHashMap<>(); if (tasks != null) { for (ProductionOrderProcessTaskVo task : tasks) { if (task == null || task.getProductionOrderId() == null) { continue; } ProcessRouteStatusVo status = new ProcessRouteStatusVo(); status.setName(task.getOperationName() != null && !task.getOperationName().isBlank() ? task.getOperationName() : "æªç¥å·¥åº"); BigDecimal percentage = task.getCompletionStatus() == null ? BigDecimal.ZERO : task.getCompletionStatus(); if (percentage.compareTo(new BigDecimal("100")) > 0) { percentage = new BigDecimal("100"); } status.setPercentage(percentage); statusMap.computeIfAbsent(task.getProductionOrderId(), key -> new ArrayList<>()).add(status); } } for (ProductionOrderVo record : records) { record.setProcessRouteStatus(statusMap.getOrDefault(record.getId(), Collections.emptyList())); } } private StorageBlobVO toStorageBlobVO(StorageBlob blob) { // å°åå¨æä»¶å¯¹è±¡è½¬æ¢ä¸ºVO StorageBlobVO vo = BeanUtil.copyProperties(blob, StorageBlobVO.class); src/main/resources/mapper/production/ProductionOperationTaskMapper.xml
@@ -215,4 +215,18 @@ order by min(poro.drag_sort), poro.operation_name </select> <select id="listProcessStatusByOrderIds" resultType="com.ruoyi.production.bean.vo.ProductionOrderProcessTaskVo"> select pot.production_order_id as productionOrderId, poro.operation_name as operationName, ROUND(IFNULL(pot.complete_quantity, 0) / NULLIF(pot.plan_quantity, 0) * 100, 2) AS completionStatus from production_operation_task pot left join production_order_routing_operation poro on pot.production_order_routing_operation_id = poro.id where pot.production_order_id in <foreach collection="orderIds" item="orderId" open="(" separator="," close=")"> #{orderId} </foreach> order by pot.production_order_id, poro.drag_sort asc, pot.id asc </select> </mapper>