Explorar o código

fix: 子集包层级

shc hai 7 meses
pai
achega
27fd3efa72

+ 50 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmReportServiceImpl.java

@@ -14,11 +14,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
+import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysCheckChainNodeCheckHistoryDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDeptTaskTypeConfig;
@@ -66,6 +69,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
@@ -83,6 +87,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -1080,7 +1085,51 @@ public class WmReportServiceImpl extends ServiceImpl<WmReportMapper, WmReport> i
         }
 
         // 获取当前积分包的所有任务数
-        List<String> pIds = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, scorePackage.getId())).stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
+        List<String> pIds = new LinkedList<>();
+        String typeid = scorePackage.getTypeid();
+
+        if (UpmsType.PackageType.TYPE_3.getType().equals(typeid)) {
+            pIds.add(scorePackage.getId());
+        } else {
+
+            List<WmScorePackage> packages = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, scorePackage.getId()));
+
+            if (CollUtil.isNotEmpty(packages)) {
+
+                while (true) {
+                    // 获取子集
+                    List<String> ppIds = packages.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
+                    Map<Boolean, List<WmScorePackage>> coll = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().in(WmScorePackage::getId, ppIds))
+                            .stream().collect(Collectors.partitioningBy(p -> UpmsType.PackageType.TYPE_3.getType().equals(p.getTypeid())));
+
+
+                    List<WmScorePackage> type3Pkg = coll.get(Boolean.TRUE);
+
+                    if (CollUtil.isNotEmpty(type3Pkg)) {
+                        List<String> collect1 = type3Pkg.stream().map(WmScorePackage::getId).collect(Collectors.toList());
+                        pIds.addAll(collect1);
+                    }
+
+                    // 还存在下级的可能行
+                    List<WmScorePackage> neType3Pkg = coll.get(Boolean.FALSE);
+                    if (CollUtil.isNotEmpty(neType3Pkg)) {
+                        List<String> coll2 = neType3Pkg.stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
+                        packages = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().in(WmScorePackage::getRelationScoreId, coll2));
+                    } else {
+                        break;
+                    }
+
+                }
+            }
+
+        }
+
+        if (CollUtil.isEmpty(pIds)){
+            throw new BizException("不存在C端包,无法获取实际服务详情");
+        }
+
+
+        // List<String> pIds = wmScorePackageService.list(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getRelationScoreId, scorePackage.getId())).stream().map(WmScorePackage::getId).distinct().sorted().collect(Collectors.toList());
 
         List<Integer> tids = wmTaskService.list(Wrappers.<WmTask>lambdaQuery()
                         // .eq(WmTask::getTaskStatus, "3")