liuyc il y a 2 ans
Parent
commit
d70cbe5512

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/TrialDetectionController.java

@@ -300,7 +300,7 @@ public class TrialDetectionController extends BladeController {
                 if (trialPdf2.exists()) {
                     trialPdf2.delete();
                 }
-                if (pdfList.size() > 0){
+                if (pdfList.size() > 0) {
                     //合并当前所有选择的试验pdf
                     FileUtils.mergePdfPublicMethods(pdfList, trialPdf);
                     BladeFile bladeFile = this.newIOSSClient.uploadFile(id + ".pdf", trialPdf);
@@ -326,7 +326,7 @@ public class TrialDetectionController extends BladeController {
     @GetMapping("/self/raw-material/list")
     @ApiOperationSupport(order = 20)
     @ApiOperation(value = "获取原材料节点下的记录信息", notes = "传入节点nodeId、合同段contractId、当前试验记录id")
-    public R<List<TrialSelfInspectionRecordVO2>> getRawMaterialInfo(@RequestParam String nodeId, @RequestParam String contractId, @RequestParam String id) {
+    public R<List<TrialSelfInspectionRecordVO2>> getRawMaterialInfo(@RequestParam String nodeId, @RequestParam String contractId, String id) {
         List<TrialSelfInspectionRecordVO2> recordVO2s = iTrialSelfInspectionRecordService.getRawMaterialInfo(nodeId, contractId, id);
         return R.data(recordVO2s);
     }

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialSelfInspectionRecordServiceImpl.java

@@ -1159,7 +1159,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
                 int year = LocalDateTimeUtil.now().getYear();
                 if (wbsTreePrivate == null || contract == null) {
                     throw new ServiceException("未找到当前项目合同段的节点信息,操作失败!");
-                }  else {
+                } else {
                     //记录表
                     String str1 = "JL" +
                             "-" + contract.getContractNumber() +

+ 38 - 28
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1501,36 +1501,28 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     public List<WbsTreePrivateVO> getMixRatioTestTree(String pKeyId) {
         WbsTreePrivate wbsTreePrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, pKeyId));
         if (wbsTreePrivate != null && StringUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds())) {
-            Set<String> idsSet = new HashSet<>();
-            List<String> ancestorsIds = Func.toStrList(wbsTreePrivate.getAncestors());
             List<String> mixRatioTestIds = Func.toStrList(wbsTreePrivate.getMixRatioTestIds());
-            idsSet.addAll(ancestorsIds);
-            idsSet.addAll(mixRatioTestIds);
-
-            if (idsSet.size() > 0) {
-                //删除值为0根节点的元素
-                idsSet.removeIf("0"::equals);
-                List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                        .in(WbsTreePrivate::getId, idsSet)
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                        .eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType())
-                        .eq(WbsTreePrivate::getStatus, 1));
-
-                WbsTreePrivate root = wbsTreePrivates.stream().filter(f -> f.getParentId() == 0L).findAny().orElse(null);
-                if (root == null) {
-                    WbsTreePrivate rootNode = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
-                            .eq(WbsTreePrivate::getParentId, 0L)
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType())
-                            .eq(WbsTreePrivate::getStatus, 1));
-                    if (rootNode != null) {
-                        wbsTreePrivates.add(rootNode);
-                    }
-                }
 
-                List<WbsTreePrivateVO> wbsTreePrivateVOS = BeanUtil.copyProperties(wbsTreePrivates, WbsTreePrivateVO.class);
+            List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .in(WbsTreePrivate::getId, mixRatioTestIds)
+                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                    .eq(WbsTreePrivate::getWbsType, wbsTreePrivate.getWbsType())
+                    .eq(WbsTreePrivate::getStatus, 1));
+
+            //所有父级节点
+            Set<WbsTreePrivate> resultNode = new HashSet<>();
+            this.fxSelectParentNode(wbsTreePrivates, resultNode, wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getWbsType());
+
+            //本身节点
+            resultNode.addAll(wbsTreePrivates);
+
+            //排序
+            List<WbsTreePrivate> resultNodeRe = resultNode.stream().sorted(Comparator.comparing(WbsTreePrivate::getPKeyId).thenComparing(WbsTreePrivate::getNodeName)).collect(Collectors.toList());
+
+            //构造返回
+            if (resultNodeRe.size() > 0) {
+                List<WbsTreePrivateVO> wbsTreePrivateVOS = BeanUtil.copyProperties(resultNodeRe, WbsTreePrivateVO.class);
                 return this.buildWbsTreeByStream(wbsTreePrivateVOS);
             }
             return null;
@@ -1539,6 +1531,24 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         }
     }
 
+    //反向递归查询父级节点
+    private void fxSelectParentNode(List<WbsTreePrivate> wbsTreePrivates, Set<WbsTreePrivate> resultNode, String projectId, String wbsId, String wbsType) {
+        List<Long> fuIds = wbsTreePrivates.stream().map(WbsTreePrivate::getParentId).distinct().collect(Collectors.toList());
+        if (fuIds.size() > 0 && fuIds.get(0) != 0L) {
+            List<WbsTreePrivate> fuNodes = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .in(WbsTreePrivate::getId, fuIds)
+                    .eq(WbsTreePrivate::getProjectId, projectId)
+                    .eq(WbsTreePrivate::getWbsId, wbsId)
+                    .eq(WbsTreePrivate::getWbsType, wbsType)
+                    .eq(WbsTreePrivate::getStatus, 1));
+
+            if (fuNodes.size() > 0) {
+                resultNode.addAll(fuNodes);
+                this.fxSelectParentNode(fuNodes, resultNode, projectId, wbsId, wbsType);
+            }
+        }
+    }
+
     @Override
     public Map<String, List<Object>> treeRecordTrial(String wbsId, String projectId, String pKeyId) {
         WbsInfo wbsInfo = wbsInfoMapper.selectOne(Wrappers.<WbsInfo>query().lambda().select(WbsInfo::getWbsType).eq(WbsInfo::getId, wbsId));