Procházet zdrojové kódy

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

YunaiV před 2 měsíci
rodič
revize
a4cba300b2

+ 2 - 4
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;
 @Mapper
 public interface MesWmPackageLineMapper extends BaseMapperX<MesWmPackageLineDO> {
 
-    default PageResult<MesWmPackageLineDO> selectPage(MesWmPackageLinePageReqVO reqVO) {
-        // TODO @芋艿:需确认“父箱详情 -> 装箱清单”是否需要汇总当前箱及其所有子孙箱的明细;
-        // TODO @芋艿:对齐,当前通过 SQL + ancestors 实现聚合查询,这里现在仅按 packageId 精确查询。
+    default PageResult<MesWmPackageLineDO> selectPage(MesWmPackageLinePageReqVO reqVO, java.util.Collection<Long> packageIds) {
         return selectPage(reqVO, new LambdaQueryWrapperX<MesWmPackageLineDO>()
-                .eqIfPresent(MesWmPackageLineDO::getPackageId, reqVO.getPackageId())
+                .inIfPresent(MesWmPackageLineDO::getPackageId, packageIds)
                 .orderByDesc(MesWmPackageLineDO::getId));
     }
 

+ 6 - 0
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;
 import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -36,6 +37,11 @@ public interface MesWmPackageMapper extends BaseMapperX<MesWmPackageDO> {
         return selectList(MesWmPackageDO::getParentId, parentId);
     }
 
+    default List<MesWmPackageDO> selectListByParentIds(Collection<Long> parentIds) {
+        return selectList(new LambdaQueryWrapperX<MesWmPackageDO>()
+                .in(MesWmPackageDO::getParentId, parentIds));
+    }
+
     default List<MesWmPackageDO> selectChildableList() {
         return selectList(new LambdaQueryWrapperX<MesWmPackageDO>()
                 .eq(MesWmPackageDO::getParentId, MesWmPackageDO.PARENT_ID_ROOT)

+ 7 - 1
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;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PACKAGE_LINE_NOT_EXISTS;
 
@@ -77,7 +79,11 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService {
 
     @Override
     public PageResult<MesWmPackageLineDO> getPackageLinePage(MesWmPackageLinePageReqVO pageReqVO) {
-        return packageLineMapper.selectPage(pageReqVO);
+        if (pageReqVO.getPackageId() == null) {
+            return PageResult.empty();
+        }
+        List<Long> packageIds = packageService.getPackageAndDescendantIds(pageReqVO.getPackageId());
+        return packageLineMapper.selectPage(pageReqVO, packageIds);
     }
 
     @Override

+ 8 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java

@@ -89,4 +89,12 @@ public interface MesWmPackageService {
      */
     List<MesWmPackageDO> getChildablePackageList();
 
+    /**
+     * 获取指定装箱单及其所有子孙箱的 ID 列表
+     *
+     * @param packageId 装箱单 ID
+     * @return 装箱单及其所有子孙箱的 ID 集合
+     */
+    List<Long> getPackageAndDescendantIds(Long packageId);
+
 }

+ 17 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java

@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
 
 /**
@@ -141,6 +142,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService {
         return packageMapper.selectChildableList();
     }
 
+    @Override
+    public List<Long> getPackageAndDescendantIds(Long packageId) {
+        List<Long> result = CollUtil.newArrayList(packageId);
+        // 使用广度优先搜索 (BFS) 按层批量查询所有子孙箱 ID
+        List<Long> currentLevelIds = CollUtil.newArrayList(packageId);
+        for (int i = 0; i < Short.MAX_VALUE && CollUtil.isNotEmpty(currentLevelIds); i++) {
+            List<MesWmPackageDO> children = packageMapper.selectListByParentIds(currentLevelIds);
+            if (CollUtil.isEmpty(children)) {
+                break;
+            }
+            currentLevelIds = convertList(children, MesWmPackageDO::getId);
+            result.addAll(currentLevelIds);
+        }
+        return result;
+    }
+
     // ========== 校验方法 ==========
 
     private MesWmPackageDO validatePackageExists(Long id) {