From eb429ad7f140285e0fc6a854b0bccb00810a04f1 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 17 Dec 2025 17:14:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor(stock):=20=E4=BC=98=E5=8C=96=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=E5=B9=B6=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=88=86=E7=BB=84=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 XML 中的查询语句,将 CASE 表达式包裹在 MIN 函数内以适配 GROUP BY - 显式添加 GROUP BY 子句到 SQL 查询中 - 在 Java 代码中将模糊查询优化为前缀匹配,提高索引使用效率 - 移除 QueryWrapper 中冗余的 groupBy 字段,改由 SQL 层统一控制分组逻辑 - 简化 Java 层动态条件构造,提升可读性和维护性 --- .../klp/service/impl/WmsStockServiceImpl.java | 19 +---- .../resources/mapper/klp/WmsStockMapper.xml | 79 ++++++++----------- 2 files changed, 36 insertions(+), 62 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java index 0d65da34..81b80595 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsStockServiceImpl.java @@ -81,23 +81,10 @@ public class WmsStockServiceImpl implements IWmsStockService { } qw.eq(StringUtils.isNotBlank(bo.getItemType()), "mc.item_type", bo.getItemType()); qw.eq(bo.getItemId() != null, "mc.item_id", bo.getItemId()); - qw.like(StringUtils.isNotBlank(bo.getBatchNo()), "mc.enter_coil_no", bo.getBatchNo()); + // 优化模糊查询为前缀匹配,便于走索引(若有) + qw.likeRight(StringUtils.isNotBlank(bo.getBatchNo()), "mc.enter_coil_no", bo.getBatchNo()); - - // 使用 groupBy 进行分组 - qw.groupBy( - "mc.actual_warehouse_id", - "mc.item_type", - "mc.item_id", - "w.actual_warehouse_name", - "CASE WHEN mc.item_type = 'product' THEN p.product_name WHEN mc.item_type = 'raw_material' THEN r.raw_material_name ELSE NULL END", - "CASE WHEN mc.item_type = 'product' THEN p.product_code WHEN mc.item_type = 'raw_material' THEN r.raw_material_code ELSE NULL END", - "CASE WHEN mc.item_type = 'product' THEN p.specification WHEN mc.item_type = 'raw_material' THEN r.specification ELSE NULL END", - "CASE WHEN mc.item_type = 'product' THEN p.material WHEN mc.item_type = 'raw_material' THEN r.material ELSE NULL END", - "CASE WHEN mc.item_type = 'product' THEN p.surface_treatment_desc WHEN mc.item_type = 'raw_material' THEN r.surface_treatment_desc ELSE NULL END", - "CASE WHEN mc.item_type = 'product' THEN p.zinc_layer WHEN mc.item_type = 'raw_material' THEN r.zinc_layer ELSE NULL END", - "CASE WHEN mc.item_type = 'product' THEN p.manufacturer WHEN mc.item_type = 'raw_material' THEN r.manufacturer ELSE NULL END" - ); + // 分组改由 SQL 中显式控制,避免在 Wrapper 中拼装大量分组字段 return qw; } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml index d240e414..869610bd 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsStockMapper.xml @@ -91,53 +91,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY totalQuantity DESC