From ad16b86caafd1dd1b1603a10721a955d15cc823b Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Thu, 25 Sep 2025 14:55:41 +0800 Subject: [PATCH] =?UTF-8?q?change(mes):=E4=BC=98=E5=8C=96=E5=9C=A8?= =?UTF-8?q?=E5=88=B6=E5=93=81=E8=B7=9F=E8=B8=AA=E6=8A=A5=E8=A1=A8=E5=8F=8A?= =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E8=BF=9B=E5=BA=A6=E6=9F=A5=E8=AF=A2=E6=80=A7?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -优化 `ProcessProgressVo`,新增产品订单ID、工序进度相关字段(计划数量、完成数量、进度百分比等), 并细化状态描述与时间字段支持。 - 为 `ProdReportMapper` 添加批量获取订单工序进度的方法,避免N+1问题,提升查询效率。 - 重写在制品跟踪报表SQL逻辑,使用CTE优化订单筛选与工序统计,避免全表扫描,提高报表导出性能。 - 报表导出方法更新为使用专用导出VO,确保导出数据格式一致性。 - 更新XML中部分注释和逻辑,增强可读性与维护性。 --- .../mes/controller/ProdReportController.java | 10 +- .../mes/domain/vo/ProcessProgressVo.java | 60 +++- .../mes/domain/vo/WipTrackingReportVo.java | 5 + .../dromara/mes/mapper/ProdReportMapper.java | 11 +- .../resources/mapper/mes/ProdReportMapper.xml | 266 ++++++++++++++---- 5 files changed, 296 insertions(+), 56 deletions(-) diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdReportController.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdReportController.java index d0eb5fef..3c2cfa38 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdReportController.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/controller/ProdReportController.java @@ -167,12 +167,18 @@ public class ProdReportController extends BaseController { } /** - * 在制品跟踪报表导出 + * 在制品跟踪报表导出 - 优化版本 */ @RepeatSubmit() @PostMapping("/wipTrackingReport/export") public void wipTrackingReportExport(@RequestParam(required = false) Map hashMap, HttpServletResponse response) { + // 获取报表数据 List list = prodReportService.wipTrackingReportList(hashMap); - ExcelUtil.exportExcel(list, "在制品跟踪报表", WipTrackingReportVo.class, response); + + // 转换为导出专用VO + List exportList = prodReportService.convertToExportVo(list); + + // 使用EasyExcel导出,保持与页面相同的样式和数据 + ExcelUtil.exportExcel(exportList, "在制品跟踪报表", WipTrackingReportExportVo.class, response); } } diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProcessProgressVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProcessProgressVo.java index 154bfd84..832e24b5 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProcessProgressVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/ProcessProgressVo.java @@ -4,9 +4,11 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; /** - * 工序进度VO + * 工序进度VO - 优化版本 * * @author Yinq * @date 2025-01-25 @@ -17,6 +19,11 @@ public class ProcessProgressVo implements Serializable { @Serial private static final long serialVersionUID = 1L; + /** + * 产品订单ID(用于批量查询结果分组) + */ + private Long productOrderId; + /** * 工序ID */ @@ -33,7 +40,7 @@ public class ProcessProgressVo implements Serializable { private Integer processOrder; /** - * 工序状态:0未派工 1已派工 2已开始 3已完成 + * 工序状态:0未派工 1已派工 2进行中 3已完成 */ private String planStatus; @@ -43,7 +50,52 @@ public class ProcessProgressVo implements Serializable { private String statusDesc; /** - * 是否已完成 + * 是否已完成(1是 0否) */ - private Boolean isCompleted; + private Integer isCompleted; + + /** + * 是否进行中(1是 0否) + */ + private Integer isInProgress; + + /** + * 计划数量 + */ + private BigDecimal planAmount; + + /** + * 完成数量 + */ + private BigDecimal completeAmount; + + /** + * 剩余数量 + */ + private BigDecimal remainingAmount; + + /** + * 工序进度百分比 + */ + private BigDecimal processProgress; + + /** + * 计划开始时间 + */ + private LocalDateTime planBeginTime; + + /** + * 计划结束时间 + */ + private LocalDateTime planEndTime; + + /** + * 实际开始时间 + */ + private LocalDateTime realBeginTime; + + /** + * 实际结束时间 + */ + private LocalDateTime realEndTime; } \ No newline at end of file diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/WipTrackingReportVo.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/WipTrackingReportVo.java index be556ffc..f1ef39e7 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/WipTrackingReportVo.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/domain/vo/WipTrackingReportVo.java @@ -29,6 +29,11 @@ public class WipTrackingReportVo implements Serializable { */ private Long productOrderId; + /** + * 租户ID(用于批量查询工序进度的租户过滤) + */ + private Long tenantId; + /** * 生产订单号 */ diff --git a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdReportMapper.java b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdReportMapper.java index 61c2c762..1461383b 100644 --- a/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdReportMapper.java +++ b/ruoyi-modules/hwmom-mes/src/main/java/org/dromara/mes/mapper/ProdReportMapper.java @@ -119,7 +119,16 @@ public interface ProdReportMapper { List wipTrackingReportList(@Param("map") Map hashMap); /** - * 获取订单的工序进度详情 + * 获取订单的工序进度详情(单订单) */ List getOrderProcessProgress(@Param("productOrderId") Long productOrderId, @Param("planTableName") String planTableName); + + /** + * 批量获取订单的工序进度详情(避免N+1,一次查询一个工序表) + * @param productOrderIds 订单ID列表 + * @param planTableName 工序表名(prod_plan_info_2/_3/_4) + * @return 工序进度明细 + */ + List getOrdersProcessProgressBatch(@Param("productOrderIds") List productOrderIds, + @Param("planTableName") String planTableName); } diff --git a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdReportMapper.xml b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdReportMapper.xml index 0eb9094a..9e4c199e 100644 --- a/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdReportMapper.xml +++ b/ruoyi-modules/hwmom-mes/src/main/resources/mapper/mes/ProdReportMapper.xml @@ -216,8 +216,8 @@ FORMAT(ppd.create_time, 'yyyy-MM-dd') BETWEEN #{map.beginDate} AND #{map.endDate} - - + AND ppi.release_id = #{map.machineId} @@ -296,48 +296,18 @@ ORDER BY ppd.real_begin_time DESC, ppi.plan_id DESC - + - + + + + + + +