Commit a4cba300b255bb53c6404882402eaa6e1252a14a
1 parent
bab71fce
✨ feat(mes): 更新操作按钮,移除完成功能
Showing
5 changed files
with
40 additions
and
5 deletions
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 | 15 | @Mapper |
| 16 | 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 | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<MesWmPackageLineDO>() |
| 22 | - .eqIfPresent(MesWmPackageLineDO::getPackageId, reqVO.getPackageId()) | |
| 20 | + .inIfPresent(MesWmPackageLineDO::getPackageId, packageIds) | |
| 23 | 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 | 8 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum; |
| 9 | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 10 | |
| 11 | +import java.util.Collection; | |
| 11 | 12 | import java.util.List; |
| 12 | 13 | |
| 13 | 14 | /** |
| ... | ... | @@ -36,6 +37,11 @@ public interface MesWmPackageMapper extends BaseMapperX<MesWmPackageDO> { |
| 36 | 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 | 45 | default List<MesWmPackageDO> selectChildableList() { |
| 40 | 46 | return selectList(new LambdaQueryWrapperX<MesWmPackageDO>() |
| 41 | 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 | 12 | import org.springframework.stereotype.Service; |
| 13 | 13 | import org.springframework.validation.annotation.Validated; |
| 14 | 14 | |
| 15 | +import java.util.List; | |
| 16 | + | |
| 15 | 17 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 16 | 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 | 79 | |
| 78 | 80 | @Override |
| 79 | 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 | 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 | 89 | */ |
| 90 | 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 | 20 | import java.util.Objects; |
| 21 | 21 | |
| 22 | 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 | 24 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; |
| 24 | 25 | |
| 25 | 26 | /** |
| ... | ... | @@ -141,6 +142,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { |
| 141 | 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 | 163 | private MesWmPackageDO validatePackageExists(Long id) { | ... | ... |