From 41138d194d0257fc5a4f549156287a5d2b4e9682 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 15 Dec 2025 09:21:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E6=96=99=E8=A7=84=E6=A0=BC=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WmsMaterialCoilBo中新增itemSpecification字段 - 修改筛选逻辑以支持按规格筛选 - 实现规格字段的模糊匹配及多规格查询支持 - 更新查询构造器以兼容新字段的条件拼接 - 支持逗号分隔的多个规格同时查询 - 优化查询逻辑确保规格筛选与其他字段协同工作 --- .../com/klp/domain/bo/WmsMaterialCoilBo.java | 3 ++ .../impl/WmsMaterialCoilServiceImpl.java | 39 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java index b15b5454..86ea469a 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java @@ -179,6 +179,9 @@ public class WmsMaterialCoilBo extends BaseEntity { // 锌层厚度(两表通用字段名:zinc_layer) private String itemZincLayer; + //规格 + private String itemSpecification; + private Boolean onlyUnshippedAndUnplanned; } 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 0ed219b3..9e0e4f2c 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 @@ -338,14 +338,15 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { qw.eq(bo.getActualWarehouseId() != null, "mc.actual_warehouse_id", bo.getActualWarehouseId()); qw.eq(StringUtils.isNotBlank(bo.getItemType()), "mc.item_type", bo.getItemType()); - // 按 itemType + 细粒度字段筛选(若对应字段非空则拼接条件;为空则不拼) + // 按 selectType + 细粒度字段筛选(若对应字段非空则拼接条件;为空则不拼) if (StringUtils.isNotBlank(bo.getSelectType())) { List matchedItemIds = new ArrayList<>(); boolean hasAnyItemFilter = StringUtils.isNotBlank(bo.getItemMaterial()) || StringUtils.isNotBlank(bo.getItemManufacturer()) || StringUtils.isNotBlank(bo.getItemSurfaceTreatmentDesc()) || StringUtils.isNotBlank(bo.getItemZincLayer()) - || StringUtils.isNotBlank(bo.getItemName()); // 兼容性关键字 + || StringUtils.isNotBlank(bo.getItemName()) // 兼容性关键字 + || StringUtils.isNotBlank(bo.getItemSpecification()); // 添加规格筛选条件 if (hasAnyItemFilter) { try { @@ -367,6 +368,23 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (StringUtils.isNotBlank(bo.getItemZincLayer())) { pq.like("zinc_layer", bo.getItemZincLayer()); } + // 添加规格筛选条件,支持逗号分隔的多个规格 + if (StringUtils.isNotBlank(bo.getItemSpecification())) { + String[] specs = bo.getItemSpecification().split(","); + if (specs.length == 1) { + pq.like("specification", specs[0].trim()); + } else { + pq.and(wrapper -> { + for (int i = 0; i < specs.length; i++) { + if (i == 0) { + wrapper.like("specification", specs[i].trim()); + } else { + wrapper.or().like("specification", specs[i].trim()); + } + } + }); + } + } // MyBatis selectList默认返回空列表,无需判null,直接流式提取ID matchedItemIds = productMapper.selectList(pq).stream() .map(WmsProduct::getProductId) @@ -390,6 +408,23 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (StringUtils.isNotBlank(bo.getItemZincLayer())) { rq.like("zinc_layer", bo.getItemZincLayer()); } + // 添加规格筛选条件,支持逗号分隔的多个规格 + if (StringUtils.isNotBlank(bo.getItemSpecification())) { + String[] specs = bo.getItemSpecification().split(","); + if (specs.length == 1) { + rq.like("specification", specs[0].trim()); + } else { + rq.and(wrapper -> { + for (int i = 0; i < specs.length; i++) { + if (i == 0) { + wrapper.like("specification", specs[i].trim()); + } else { + wrapper.or().like("specification", specs[i].trim()); + } + } + }); + } + } // 流式提取rawMaterialId,过滤null matchedItemIds = rawMaterialMapper.selectList(rq).stream() .map(WmsRawMaterial::getRawMaterialId)