From 5d4eac555a48a6840cbceee72c8736680bf8487d Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 25 Nov 2025 10:41:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BA=8C=E7=BA=A7=E5=BA=93=E5=8C=BA=E6=A0=91=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsActualWarehouseService 接口中新增 queryTreeExcludeLevelThree 方法 - 在 WmsActualWarehouseController 中添加 /levelTwo 接口用于获取二级库区树 - 实现 queryTreeExcludeLevelThree 方法逻辑,过滤掉三级库位节点 - 构建查询条件时排除 actualWarehouseType 为 3 的记录 - 组装树形结构时只保留两级目录关系 --- .../WmsActualWarehouseController.java | 7 ++++ .../service/IWmsActualWarehouseService.java | 2 ++ .../impl/WmsActualWarehouseServiceImpl.java | 36 +++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java b/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java index bd094009..91b67094 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsActualWarehouseController.java @@ -59,6 +59,13 @@ public class WmsActualWarehouseController extends BaseController { return R.ok(iWmsActualWarehouseService.queryTree(bo)); } + /** + * 获取仅到二级的目录树(不包含三级节点) + */ + @GetMapping("/levelTwo") + public R> treeExcludeLevelThree(WmsActualWarehouseBo bo) { + return R.ok(iWmsActualWarehouseService.queryTreeExcludeLevelThree(bo)); + } /** * 导入实际库区/库位数据 */ diff --git a/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java b/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java index 2921e4bc..6414939b 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsActualWarehouseService.java @@ -57,4 +57,6 @@ public interface IWmsActualWarehouseService { * 校验并批量删除实际库区/库位自关联信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List queryTreeExcludeLevelThree(WmsActualWarehouseBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java index c84a0e8b..f3998a63 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java @@ -80,6 +80,40 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService }); return roots; } + @Override + public List queryTreeExcludeLevelThree(WmsActualWarehouseBo bo) { + if (bo == null) { + bo = new WmsActualWarehouseBo(); + } + // 设置查询条件,排除三级节点(actualWarehouseType=3) + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(StringUtils.isNotBlank(bo.getActualWarehouseCode()), WmsActualWarehouse::getActualWarehouseCode, bo.getActualWarehouseCode()); + wrapper.like(StringUtils.isNotBlank(bo.getActualWarehouseName()), WmsActualWarehouse::getActualWarehouseName, bo.getActualWarehouseName()); + wrapper.eq(bo.getActualWarehouseType() != null, WmsActualWarehouse::getActualWarehouseType, bo.getActualWarehouseType()); + wrapper.eq(bo.getIsEnabled() != null, WmsActualWarehouse::getIsEnabled, bo.getIsEnabled()); + // 排除三级节点(类型为3的节点) + wrapper.ne(WmsActualWarehouse::getActualWarehouseType, 3); + wrapper.orderByAsc(WmsActualWarehouse::getSortNo, WmsActualWarehouse::getActualWarehouseId); + + List flatList = baseMapper.selectVoList(wrapper); + Map nodeMap = new LinkedHashMap<>(); + flatList.forEach(item -> { + WmsActualWarehouseTreeVo node = new WmsActualWarehouseTreeVo(); + BeanUtil.copyProperties(item, node); + nodeMap.put(node.getActualWarehouseId(), node); + }); + + List roots = new ArrayList<>(); + nodeMap.values().forEach(node -> { + Long parentId = Optional.ofNullable(node.getParentId()).orElse(0L); + if (parentId == 0 || !nodeMap.containsKey(parentId)) { + roots.add(node); + } else { + nodeMap.get(parentId).getChildren().add(node); + } + }); + return roots; + } private LambdaQueryWrapper buildQueryWrapper(WmsActualWarehouseBo bo) { Map params = bo.getParams(); @@ -225,4 +259,6 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService } return baseMapper.deleteBatchIds(ids) > 0; } + + }