From 54d426984b28d11f1e7b7c815cc4ded5ae90a9e9 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 16 Apr 2026 13:54:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E7=89=A9=E6=96=99=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsMaterialCoilService 中新增 getStatistics 方法用于汇总统计 - 在 WmsMaterialCoilController 中添加 /statisticsList 接口 - 在 WmsMaterialCoilMapper 中新增 selectStatistics 查询方法 - 在 WmsMaterialCoilMapper.xml 中实现统计 SQL 查询 - 在 WmsMaterialCoilServiceImpl 中实现统计业务逻辑 - 支持按筛选条件统计总毛重、总净重和总数 - 采用高性能查询方式只查询 sum/count 聚合数据 - 独立统计接口不影响原有分页查询功能 --- .../controller/WmsMaterialCoilController.java | 9 +++++ .../com/klp/mapper/WmsMaterialCoilMapper.java | 7 ++++ .../klp/service/IWmsMaterialCoilService.java | 6 ++++ .../impl/WmsMaterialCoilServiceImpl.java | 34 +++++++++++++++++++ .../mapper/klp/WmsMaterialCoilMapper.xml | 22 ++++++++++++ 5 files changed, 78 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index ede74568..6e03b501 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -68,6 +68,15 @@ public class WmsMaterialCoilController extends BaseController { return iWmsMaterialCoilService.queryPageListWithBindInfo(bo, pageQuery); } + /** + * 统计筛选条件下的全量汇总数据 + * 独立的统计接口,使用与分页列表相同的查询条件 + */ + @GetMapping("/statisticsList") + public R> getStatistics(WmsMaterialCoilBo bo) { + return R.ok(iWmsMaterialCoilService.getStatistics(bo)); + } + /** * 原料钢卷库位分布查询(先库位,再钢卷映射) */ diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java index f2e71842..674a3bd5 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsMaterialCoilMapper.java @@ -97,5 +97,12 @@ List selectDeliveryExportListByCoilIds(@Param(" * @return 不匹配的钢卷列表 */ List selectMismatchedItemCoils(); + + /** + * 统计筛选条件下的全量汇总数据(高性能:只查sum/count) + * @param qw 查询条件(只使用WHERE和JOIN部分) + * @return 统计结果(Map包含totalGrossWeight, totalNetWeight) + */ + Map selectStatistics(@Param("ew") QueryWrapper qw); } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java index eba199e5..7e2131c6 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -42,6 +42,12 @@ public interface IWmsMaterialCoilService { */ List queryList(WmsMaterialCoilBo bo); + /** + * 统计筛选条件下的全量汇总数据(高性能:只查sum/count) + * 独立的统计接口,不影响分页查询 + */ + Map getStatistics(WmsMaterialCoilBo bo); + /** * 新增钢卷物料表 */ diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index c45bd77a..4684eaf3 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -342,6 +342,16 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { return TableDataInfo.build(bindResult); } + /** + * 统计筛选条件下的全量汇总数据(高性能:只查sum/count) + * 独立的统计接口,不影响分页查询 + */ + @Override + public Map getStatistics(WmsMaterialCoilBo bo) { + QueryWrapper qw = buildQueryWrapperPlus(bo); + return selectMaterialCoilStatistics(qw); + } + private Page queryMaterialCoilPage(WmsMaterialCoilBo bo, PageQuery pageQuery) { QueryWrapper qw = buildQueryWrapperPlus(bo); Page result; @@ -380,6 +390,30 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } } + /** + * 统计筛选条件下的全量汇总数据(高性能:只查sum/count) + */ + private Map selectMaterialCoilStatistics(QueryWrapper qw) { + Map result = new HashMap<>(); + result.put("total_gross_weight", BigDecimal.ZERO); + result.put("total_net_weight", BigDecimal.ZERO); + result.put("total_count", BigDecimal.ZERO); + + try { + Map stats = baseMapper.selectStatistics(qw); + if (stats != null) { + Object grossWeight = stats.get("total_gross_weight"); + Object netWeight = stats.get("total_net_weight"); + result.put("total_gross_weight", grossWeight != null ? new BigDecimal(grossWeight.toString()) : BigDecimal.ZERO); + result.put("total_net_weight", netWeight != null ? new BigDecimal(netWeight.toString()) : BigDecimal.ZERO); + } + } catch (Exception e) { + log.warn("统计查询失败: {}", e.getMessage()); + } + + return result; + } + private void fillBindInfoForPage(List records) { // 绑定信息仅用于专用接口,避免污染通用分页结构 try { diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 7f393e5f..e2d9292d 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -902,5 +902,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + +