Commit a4cba300b255bb53c6404882402eaa6e1252a14a

Authored by YunaiV
1 parent bab71fce

✨ feat(mes): 更新操作按钮,移除完成功能

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java
@@ -15,11 +15,9 @@ import org.apache.ibatis.annotations.Mapper; @@ -15,11 +15,9 @@ import org.apache.ibatis.annotations.Mapper;
15 @Mapper 15 @Mapper
16 public interface MesWmPackageLineMapper extends BaseMapperX<MesWmPackageLineDO> { 16 public interface MesWmPackageLineMapper extends BaseMapperX<MesWmPackageLineDO> {
17 17
18 - default PageResult<MesWmPackageLineDO> selectPage(MesWmPackageLinePageReqVO reqVO) {  
19 - // TODO @芋艿:需确认“父箱详情 -> 装箱清单”是否需要汇总当前箱及其所有子孙箱的明细;  
20 - // TODO @芋艿:对齐,当前通过 SQL + ancestors 实现聚合查询,这里现在仅按 packageId 精确查询。 18 + default PageResult<MesWmPackageLineDO> selectPage(MesWmPackageLinePageReqVO reqVO, java.util.Collection<Long> packageIds) {
21 return selectPage(reqVO, new LambdaQueryWrapperX<MesWmPackageLineDO>() 19 return selectPage(reqVO, new LambdaQueryWrapperX<MesWmPackageLineDO>()
22 - .eqIfPresent(MesWmPackageLineDO::getPackageId, reqVO.getPackageId()) 20 + .inIfPresent(MesWmPackageLineDO::getPackageId, packageIds)
23 .orderByDesc(MesWmPackageLineDO::getId)); 21 .orderByDesc(MesWmPackageLineDO::getId));
24 } 22 }
25 23
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java
@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO;
8 import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum; 8 import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum;
9 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
10 10
  11 +import java.util.Collection;
11 import java.util.List; 12 import java.util.List;
12 13
13 /** 14 /**
@@ -36,6 +37,11 @@ public interface MesWmPackageMapper extends BaseMapperX&lt;MesWmPackageDO&gt; { @@ -36,6 +37,11 @@ public interface MesWmPackageMapper extends BaseMapperX&lt;MesWmPackageDO&gt; {
36 return selectList(MesWmPackageDO::getParentId, parentId); 37 return selectList(MesWmPackageDO::getParentId, parentId);
37 } 38 }
38 39
  40 + default List<MesWmPackageDO> selectListByParentIds(Collection<Long> parentIds) {
  41 + return selectList(new LambdaQueryWrapperX<MesWmPackageDO>()
  42 + .in(MesWmPackageDO::getParentId, parentIds));
  43 + }
  44 +
39 default List<MesWmPackageDO> selectChildableList() { 45 default List<MesWmPackageDO> selectChildableList() {
40 return selectList(new LambdaQueryWrapperX<MesWmPackageDO>() 46 return selectList(new LambdaQueryWrapperX<MesWmPackageDO>()
41 .eq(MesWmPackageDO::getParentId, MesWmPackageDO.PARENT_ID_ROOT) 47 .eq(MesWmPackageDO::getParentId, MesWmPackageDO.PARENT_ID_ROOT)
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java
@@ -12,6 +12,8 @@ import org.springframework.context.annotation.Lazy; @@ -12,6 +12,8 @@ import org.springframework.context.annotation.Lazy;
12 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
13 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
14 14
  15 +import java.util.List;
  16 +
15 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
16 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PACKAGE_LINE_NOT_EXISTS; 18 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PACKAGE_LINE_NOT_EXISTS;
17 19
@@ -77,7 +79,11 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { @@ -77,7 +79,11 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService {
77 79
78 @Override 80 @Override
79 public PageResult<MesWmPackageLineDO> getPackageLinePage(MesWmPackageLinePageReqVO pageReqVO) { 81 public PageResult<MesWmPackageLineDO> getPackageLinePage(MesWmPackageLinePageReqVO pageReqVO) {
80 - return packageLineMapper.selectPage(pageReqVO); 82 + if (pageReqVO.getPackageId() == null) {
  83 + return PageResult.empty();
  84 + }
  85 + List<Long> packageIds = packageService.getPackageAndDescendantIds(pageReqVO.getPackageId());
  86 + return packageLineMapper.selectPage(pageReqVO, packageIds);
81 } 87 }
82 88
83 @Override 89 @Override
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java
@@ -89,4 +89,12 @@ public interface MesWmPackageService { @@ -89,4 +89,12 @@ public interface MesWmPackageService {
89 */ 89 */
90 List<MesWmPackageDO> getChildablePackageList(); 90 List<MesWmPackageDO> getChildablePackageList();
91 91
  92 + /**
  93 + * 获取指定装箱单及其所有子孙箱的 ID 列表
  94 + *
  95 + * @param packageId 装箱单 ID
  96 + * @return 装箱单及其所有子孙箱的 ID 集合
  97 + */
  98 + List<Long> getPackageAndDescendantIds(Long packageId);
  99 +
92 } 100 }
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java
@@ -20,6 +20,7 @@ import java.util.List; @@ -20,6 +20,7 @@ import java.util.List;
20 import java.util.Objects; 20 import java.util.Objects;
21 21
22 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 22 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  23 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
23 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; 24 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
24 25
25 /** 26 /**
@@ -141,6 +142,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { @@ -141,6 +142,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService {
141 return packageMapper.selectChildableList(); 142 return packageMapper.selectChildableList();
142 } 143 }
143 144
  145 + @Override
  146 + public List<Long> getPackageAndDescendantIds(Long packageId) {
  147 + List<Long> result = CollUtil.newArrayList(packageId);
  148 + // 使用广度优先搜索 (BFS) 按层批量查询所有子孙箱 ID
  149 + List<Long> currentLevelIds = CollUtil.newArrayList(packageId);
  150 + for (int i = 0; i < Short.MAX_VALUE && CollUtil.isNotEmpty(currentLevelIds); i++) {
  151 + List<MesWmPackageDO> children = packageMapper.selectListByParentIds(currentLevelIds);
  152 + if (CollUtil.isEmpty(children)) {
  153 + break;
  154 + }
  155 + currentLevelIds = convertList(children, MesWmPackageDO::getId);
  156 + result.addAll(currentLevelIds);
  157 + }
  158 + return result;
  159 + }
  160 +
144 // ========== 校验方法 ========== 161 // ========== 校验方法 ==========
145 162
146 private MesWmPackageDO validatePackageExists(Long id) { 163 private MesWmPackageDO validatePackageExists(Long id) {