瀏覽代碼

首件、资料查询相关bug

liuyc 2 年之前
父節點
當前提交
36a93b415a

+ 0 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/InformationQueryClient.java

@@ -51,5 +51,4 @@ public interface InformationQueryClient {
 
     @PostMapping(API_PREFIX + "/updateInformationQuery")
     void updateInformationQuery(@RequestParam String link, @RequestParam String classify, @RequestParam String nodeId, @RequestParam String contractId);
-
 }

+ 0 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java

@@ -145,5 +145,4 @@ public interface WbsTreeContractClient {
 
     @PostMapping(API_PREFIX + "/diySort")
     boolean diySort(@RequestBody List<String> sortLists);
-
 }

+ 16 - 11
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1400,14 +1400,14 @@ public class InformationWriteQueryController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
     })
     public R<List<WbsTreeContractTreeVOS>> queryMappingStructureTree(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
-        List<WbsTreeContractTreeVOS> result = this.queryContractTree(parentId, contractId, contractIdRelation);
+        List<WbsTreeContractTreeVOS> result = this.queryContractTree(parentId, contractId, contractIdRelation,null);
         if (result.size() == 1) {
             //只有一个子节点,继续向下
             int size;
             WbsTreeContractTreeVOS vos = result.get(0);
             do {
                 try {
-                    List<WbsTreeContractTreeVOS> childResult = this.queryContractTree(vos.getId().toString(), contractId, vos.getContractIdRelation());
+                    List<WbsTreeContractTreeVOS> childResult = this.queryContractTree(vos.getId().toString(), contractId, vos.getContractIdRelation(),null);
 
                     vos.setChildren(childResult);
                     size = childResult.size();
@@ -2030,7 +2030,7 @@ public class InformationWriteQueryController extends BladeController {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             parentId = primaryKeyId;
         }
-        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation);
+        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation,null);
         rootTreeNode.removeIf(vos -> (vos.getNodeType() != null && vos.getNodeType() == 111));
 
         return R.data(rootTreeNode);
@@ -2046,13 +2046,18 @@ public class InformationWriteQueryController extends BladeController {
     @ApiOperation(value = "获取当前合同段的划分树")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "parentId", value = "父节点,为空则查询第一级节点"),
-            @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
+            @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true),
+            @ApiImplicitParam(name = "classifyType", value = "所属方,监理、总监办的资料查询使用,=1施工数据(默认),=2监理数据")
     })
-    public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByContractIdAndType(@RequestParam String primaryKeyId, @RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
+    public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByContractIdAndType(@RequestParam String primaryKeyId,
+                                                                                   @RequestParam String parentId,
+                                                                                   @RequestParam String contractId,
+                                                                                   @RequestParam String contractIdRelation,
+                                                                                   String classifyType) {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             parentId = primaryKeyId;
         }
-        return R.data(this.queryContractTree(parentId, contractId, contractIdRelation));
+        return R.data(this.queryContractTree(parentId, contractId, contractIdRelation,classifyType));
     }
 
     /**
@@ -2097,7 +2102,7 @@ public class InformationWriteQueryController extends BladeController {
             @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
     })
     public R<List<WbsTreeContractTreeVOS>> queryContractWbsTreeByFirstInfo(@RequestParam String parentId, @RequestParam String contractId, @RequestParam String contractIdRelation) {
-        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation);
+        List<WbsTreeContractTreeVOS> rootTreeNode = this.queryContractTree(parentId, contractId, contractIdRelation,null);
         //查询被标记为首件的数据
         rootTreeNode = rootTreeNode.stream().filter(WbsTreeContractTreeVOS::getIsFirst).collect(Collectors.toList());
 
@@ -2107,7 +2112,7 @@ public class InformationWriteQueryController extends BladeController {
     /**
      * 查询合同段划分树公共代码
      */
-    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation) {
+    private List<WbsTreeContractTreeVOS> queryContractTree(String parentId, String contractId, String contractIdRelation,String classifyType) {
         List<WbsTreeContractTreeVOS> rootTreeNode;
 
         //获取合同段,检查是否是监理合同段
@@ -2124,14 +2129,14 @@ public class InformationWriteQueryController extends BladeController {
                 //原始classify=2时查不出数量统计,所以改成传1
                 if (StringUtils.isNotEmpty(parentId)) {
                     //子节点
-                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, parentId, 1);
+                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, parentId, Integer.parseInt(classifyType));
                 } else {
                     //根节点
-                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, "0", 1);
+                    rootTreeNode = this.informationQueryService.queryContractTreeSupervision(contractIds, "0", Integer.parseInt(classifyType));
 
                     //设置根节点数量统计
                     for (WbsTreeContractTreeVOS root : rootTreeNode) {
-                        List<WbsTreeContractTreeVOS> rootZi = this.informationQueryService.queryContractTreeSupervision(Func.toStrList(root.getContractIdRelation()), root.getId().toString(), 1);
+                        List<WbsTreeContractTreeVOS> rootZi = this.informationQueryService.queryContractTreeSupervision(Func.toStrList(root.getContractIdRelation()), root.getId().toString(), Integer.parseInt(classifyType));
                         List<Long> collect = rootZi.stream().map(WbsTreeContractTreeVOS::getSubmitCounts).collect(Collectors.toList());
                         Long reduce = collect.stream().reduce(0L, Long::sum);
                         root.setSubmitCounts(reduce);

+ 1 - 2
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/InformationQueryClientImpl.java

@@ -46,7 +46,7 @@ public class InformationQueryClientImpl implements InformationQueryClient {
     }
 
     @Override
-    public void saveData(String id, String projectId, String contractId, String classify, String link,String trialProjectName) {
+    public void saveData(String id, String projectId, String contractId, String classify, String link, String trialProjectName) {
         InformationQuery obj = new InformationQuery();
         obj.setId(SnowFlakeUtil.getId());
         obj.setWbsId(Long.valueOf(id));
@@ -68,5 +68,4 @@ public class InformationQueryClientImpl implements InformationQueryClient {
         updateWrapper.eq(InformationQuery::getContractId, contractId);
         iInformationQueryService.update(null, updateWrapper);
     }
-
 }

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

@@ -149,7 +149,6 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                 //获取pdfUrl
                 List<String> pdfUrls = linkList.stream().map(query -> StringUtils.isNotEmpty(query.getEVisaPdfUrl()) ? query.getEVisaPdfUrl() : query.getPdfUrl()).distinct().collect(Collectors.toList());
 
-
                 String mergeFileName = SnowFlakeUtil.getId() + ".pdf", margePdfPath = file_path + "/pdf//" + mergeFileName;
                 //合并
                 FileUtils.mergePdfPublicMethods(pdfUrls, margePdfPath);

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -20,7 +20,6 @@ import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.feign.ISysClient;
-import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.*;

+ 45 - 27
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -627,7 +627,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         }
 
                         //获取文件题名
-                        String fileTitleNames = this.getFileTitleNames(firstNodeId);
+                        String fileTitleNames = this.getFileTitleNames(linkProcessList);
 
                         try {
                             //新增或修改首件记录
@@ -643,45 +643,63 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     }
 
     //首件文件题名
-    private String getFileTitleNames(String firstNodeId) {
-        WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, Long.parseLong(firstNodeId)));
-        //获取到该项目的首件节点以及上级的单位工程节点、分项工程节点
-        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateService.getBaseMapper().selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                .eq(WbsTreePrivate::getProjectId, wbsTreeContract.getProjectId())
-                .eq(WbsTreePrivate::getWbsId, wbsTreeContract.getWbsId())
-                .eq(WbsTreePrivate::getType, 1)
-                .and(f -> f.eq(WbsTreePrivate::getNodeType, 111).or().eq(WbsTreePrivate::getNodeType, 1).or().eq(WbsTreePrivate::getNodeType, 4))
+    private String getFileTitleNames(List<JSONObject> linkProcessList) {
+        //关联的工序资料ids
+        List<String> linkIds = linkProcessList.stream().map(json -> json.getString("id")).distinct().collect(Collectors.toList());
+        String sql = "select wbs_id from u_information_query where id in(" + StringUtils.join(linkIds, ",") + ")";
+        List<InformationQuery> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(InformationQuery.class));
+
+        //合同段树节点ids
+        List<Long> contractNodePkeyIds = query.stream().map(InformationQuery::getWbsId).collect(Collectors.toList());
+        //选择关联的工序节点信息
+        List<WbsTreeContract> wbsTreeContractNodeRecord = new ArrayList<>(wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>lambdaQuery().in(WbsTreeContract::getPKeyId, contractNodePkeyIds)));
+        WbsTreeContract wbsTreeContractOne = wbsTreeContractNodeRecord.stream().findAny().orElse(null);
+        assert wbsTreeContractOne != null;
+        //单位工程、分项工程、首件节点信息
+        List<WbsTreeContract> wbsTreeContractDWFXSJList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                .eq(WbsTreeContract::getProjectId, wbsTreeContractOne.getProjectId())
+                .eq(WbsTreeContract::getContractId, wbsTreeContractOne.getContractId())
+                .eq(WbsTreeContract::getWbsId, wbsTreeContractOne.getWbsId())
+                .eq(WbsTreeContract::getType, 1)
+                .and(obj -> obj.eq(WbsTreeContract::getNodeType, 1).or().eq(WbsTreeContract::getNodeType, 4).or().eq(WbsTreeContract::getNodeType, 111))
         );
 
-        WbsTreePrivate firstNode = wbsTreePrivates.stream().filter(f -> f.getNodeType().equals(111)).findAny().orElse(null);
+        List<WbsTreeContract> dwList = wbsTreeContractDWFXSJList.stream().filter(f -> f.getNodeType().equals(1) && f.getParentId() != 0L).collect(Collectors.toList());
 
-        List<WbsTreePrivate> collect1 = wbsTreePrivates.stream().filter(f -> f.getNodeType().equals(1) && f.getParentId() != 0L).collect(Collectors.toList());
+        List<WbsTreeContract> fxList = wbsTreeContractDWFXSJList.stream().filter(f -> f.getNodeType().equals(4)).collect(Collectors.toList());
 
-        List<WbsTreePrivate> collect4 = wbsTreePrivates.stream().filter(f -> f.getNodeType().equals(4)).collect(Collectors.toList());
+        WbsTreeContract sjObj = wbsTreeContractDWFXSJList.stream().filter(f -> f.getNodeType().equals(111)).findAny().orElse(null);
 
-        StringBuilder fileTitleNames = new StringBuilder();
+        List<String> ancestors = wbsTreeContractNodeRecord.stream().map(WbsTreeContract::getAncestors).collect(Collectors.toList());
 
-        if (ObjectUtil.isNotEmpty(firstNode)) {
-            for (WbsTreePrivate obj1 : collect1) {
-                assert firstNode != null;
-                if (firstNode.getAncestors().contains(obj1.getId().toString())) {
-                    fileTitleNames.append(obj1.getNodeName());
+        if (ObjectUtil.isNotEmpty(sjObj)) {
+
+            List<String> dwTitleList = new ArrayList<>();
+            for (WbsTreeContract dw : dwList) {
+                for (String ancestorId : ancestors) {
+                    if (ancestorId.contains(dw.getId().toString())) {
+                        dwTitleList.add(dw.getNodeName());
+                    }
                 }
             }
+            String dwNames = StringUtils.join(dwTitleList.stream().distinct().collect(Collectors.toList()), "");
 
-            for (WbsTreePrivate obj4 : collect4) {
-                assert firstNode != null;
-                if (firstNode.getAncestors().contains(obj4.getId().toString())) {
-                    fileTitleNames.append(obj4.getNodeName());
-                    break;
+            List<String> fxTitleList = new ArrayList<>();
+            for (WbsTreeContract fx : fxList) {
+                for (String ancestorId : ancestors) {
+                    if (ancestorId.contains(fx.getId().toString())) {
+                        fxTitleList.add(fx.getNodeName());
+                    }
                 }
             }
+            String fxNames = StringUtils.join(fxTitleList.stream().distinct().collect(Collectors.toList()), "、");
 
-            assert firstNode != null;
-            return fileTitleNames.append(firstNode.getNodeName()).toString();
-        }
+            assert sjObj != null;
+            return dwNames + fxNames + sjObj.getNodeName();
 
-        return "";
+        } else {
+            return "";
+        }
     }