Browse Source

Merge branch 'master' of http://121.41.40.202:3000/zhuwei/bladex

huangtf 1 year ago
parent
commit
be2dcf178a

+ 4 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/InspectionRectify.java

@@ -19,9 +19,12 @@ import java.time.LocalDate;
 @EqualsAndHashCode(callSuper = true)
 public class InspectionRectify extends BaseEntity {
 
-    @ApiModelProperty(value = "项目名称")
+    @ApiModelProperty(value = "项目id")
     private Long projectId;
 
+    @ApiModelProperty(value = "合同id")
+    private Long contractId;
+
     @ApiModelProperty(value = "巡检id")
     private Long inspectId;
 

+ 5 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/RoutingInspection.java

@@ -20,16 +20,19 @@ import java.time.LocalDateTime;
 @EqualsAndHashCode(callSuper = true)
 public class RoutingInspection extends BaseEntity {
 
-    @ApiModelProperty(value = "项目名称")
+    @ApiModelProperty(value = "项目id")
     private Long projectId;
 
+    @ApiModelProperty(value = "合同id")
+    private Long contractId;
+
     @ApiModelProperty(value = "检查名称")
     private String inspectName;
 
     @ApiModelProperty(value = "巡检类别 1安全巡检2质量巡检")
     private Integer inspectType;
 
-    @ApiModelProperty(value = "是否需要整改 1需要2不需要")
+    @ApiModelProperty(value = "是否需要整改 1需要2不需要3已整改")
     private Integer isRectify;
 
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/RoutingInspectionVO.java

@@ -25,4 +25,7 @@ public class RoutingInspectionVO extends RoutingInspection {
 
     @ApiModelProperty(value = "是否需要整改名称")
     private String isRectifyName;
+
+    @ApiModelProperty(value = "整改人是否当前用户,0否1是")
+    private Integer isRectifyUser;
 }

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractLazyVO.java

@@ -74,6 +74,9 @@ public class WbsTreeContractLazyVO implements Serializable {
     @ApiModelProperty("是否又混泥土,0否1是")
     private Integer isConcrete;
 
+    @ApiModelProperty("合同段id")
+    private Long contractId;
+
     @ApiModelProperty(value = "子级集合(在构造树形结构时使用)")
     private List<WbsTreeContractLazyVO> children;
 

+ 0 - 10
blade-service/blade-business/src/main/java/org/springblade/business/controller/TaskController.java

@@ -391,16 +391,6 @@ public class TaskController extends BladeController {
                     }
                 }
             }
-
-            //更新redis缓存
-            if (formDataId.length > 0) {
-                List<InformationQuery> dataList = informationQueryService.getBaseMapper().selectBatchIds(Arrays.asList(formDataId));
-                List<Long> contractIds = dataList.stream().map(InformationQuery::getContractId).distinct().collect(Collectors.toList());
-                for (Long contractId : contractIds) {
-                    informationQueryService.delAsyncWbsTree(contractId + "");
-                }
-            }
-
             return R.data(true);
         }
         return R.data(false);

+ 8 - 7
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/InformationQueryServiceImpl.java

@@ -515,13 +515,14 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
         if (result != null && result.size() != 0) {
 
             //属于待审批和已审批状态,查询待办信息
-            Map<Long, Task> taskMaps = new HashMap<>();
+            Map<String, List<Task>> taskMaps = new HashMap<>();
             Map<String, List<TaskParallel>> taskParallelMaps = new HashMap<>();
             List<Long> informationIds = result.stream().filter(f -> f.getStatus().equals(1) || f.getStatus().equals(2)).map(InformationQuery::getId).collect(Collectors.toList());
             String informationIdsStr = informationIds.stream().map(String::valueOf).collect(Collectors.joining(","));
             if (StringUtils.isNotEmpty(informationIdsStr)) {
                 List<Task> query = jdbcTemplate.query("SELECT id,form_data_id,process_instance_id,approval_type,status,batch,project_id,contract_id FROM u_task WHERE form_data_id IN(" + informationIdsStr + ") AND status IN (1, 2, 3) AND is_deleted = 0", new BeanPropertyRowMapper<>(Task.class));
-                taskMaps = query.stream().collect(Collectors.toMap(Task::getId, Function.identity()));
+
+                taskMaps = query.stream().collect(Collectors.groupingBy(Task::getFormDataId));
 
                 Set<String> processInstanceIds = query.stream().map(Task::getProcessInstanceId).map(id -> "'" + id + "'").collect(Collectors.toSet());
                 if (processInstanceIds.size() > 0) {
@@ -545,7 +546,7 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
             List<InformationQueryVO> voResult = JSONArray.parseArray(JSONObject.toJSONString(result), InformationQueryVO.class);
             //处理流程状态
             List<InformationQuery> finalInformationQueries = informationQueries;
-            Map<Long, Task> finalTaskMaps = taskMaps;
+            Map<String, List<Task>> finalTaskMaps = taskMaps;
             Map<String, List<TaskParallel>> finalTaskParallelMaps = taskParallelMaps;
             voResult.forEach(vor -> {
                 if (ObjectUtil.isNotEmpty(vor.getCreateTime())) {
@@ -583,16 +584,16 @@ public class InformationQueryServiceImpl extends BaseServiceImpl<InformationQuer
                         //设置上报批次
                         vor.setReportNumber(String.valueOf(tasks.get(0).getBatch()));
                     }*/
-                    Task task = finalTaskMaps.getOrDefault(vor.getId(), null);
-                    if (task != null) {
+                    List<Task> tasks = finalTaskMaps.getOrDefault(vor.getId().toString(), null);
+                    if (tasks != null && tasks.size() > 0) {
                         //查询当前任务的所有待办人
-                        List<TaskParallel> linkTasks = finalTaskParallelMaps.getOrDefault(task.getProcessInstanceId(), null);
+                        List<TaskParallel> linkTasks = finalTaskParallelMaps.getOrDefault(tasks.get(0).getProcessInstanceId(), null);
                         if (linkTasks != null && linkTasks.size() > 0) {
                             //处理审批状态
                             this.integrationMethod(vor, linkTasks);
                         }
                         //设置上报批次
-                        vor.setReportNumber(String.valueOf(task.getBatch()));
+                        vor.setReportNumber(String.valueOf(tasks.get(0).getBatch()));
                     }
                 }
 

+ 60 - 29
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -597,7 +597,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 }
 
                 Boolean aBoolean = RedisTemplate.hasKey("sign-" + taskApprovalVO.getFormDataId());
-                System.out.println(taskApprovalVO.getFormDataId()+"---"+aBoolean);
+                System.out.println(taskApprovalVO.getFormDataId() + "---" + aBoolean);
                 if (aBoolean) {
                     istrue = false;
                 }
@@ -606,11 +606,14 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     if (wtask >= 200) {
                         break;
                     }
-                    taskBatchService.update(Wrappers.<TaskBatch>update().set("is_deleted",2).eq("id",taskBatchId));
+                    taskBatchService.update(Wrappers.<TaskBatch>update().set("is_deleted", 2).eq("id", taskBatchId));
                     RedisTemplate.opsForValue().set("sign-" + taskApprovalVO.getFormDataId(), "1", 66, TimeUnit.SECONDS);
                     CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
                         try {
+
+                            /*===============执行批量任务===============*/
                             this.checkIsExsitTaskBatch(taskApprovalVO, taskBatchId, userId, nickName);
+
                         } catch (FileNotFoundException e) {
                             e.printStackTrace();
                         }
@@ -631,23 +634,14 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         taskApprovalVO.setUserId(userId);
         taskApprovalVO.setNickName(nickName);
 
+        /*===============执行审批===============*/
         String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
 
         System.out.println("电签操作成功buss-----" + pdfUrlEVisa + "---batchId=" + batchId);
-        //TODO ============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) liuYc 2023-03-16 ==============
-        if ("OK".equals(taskApprovalVO.getFlag()) && StringUtils.isNotEmpty(pdfUrlEVisa)) {
-            //已审批
-            this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatus(pdfUrlEVisa, taskApprovalVO);
-            //executor删除掉对应批次
-            this.taskBatchService.deletedById(batchId);
-        }
 
-        if (!"OK".equals(taskApprovalVO.getFlag())) {
-            //已废除
-            this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatusFC(taskApprovalVO);
-            //executor删除掉对应批次
-            this.taskBatchService.deletedById(batchId);
-        }
+        /*===============试验自检任务相关===============*/
+        this.trialSelfTaskRelated(taskApprovalVO, pdfUrlEVisa, batchId);
+
         RedisTemplate.delete("sign-" + taskApprovalVO.getFormDataId());
     }
 
@@ -684,10 +678,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                         .set(TaskBatch::getIsDeleted, 4)
                         .eq(TaskBatch::getId, taskApprovalVO.getId())
                 );
+
             } else if ("success".equals(eVisaStatus) || eVisaStatus.contains("success")) {
                 //审批通过会返回签章成功的文件,需要设置替换
                 //完成/审批当前分支流程
-            //    this.newFlowClient.completeApprovalTask(taskId, parallelProcessInstanceId, comment).getData();
+                //    this.newFlowClient.completeApprovalTask(taskId, parallelProcessInstanceId, comment).getData();
                 //修改分支状态,改为已完成
                 this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate()
                         .set(TaskParallel::getStatus, 2)
@@ -727,11 +722,19 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     //修改对应的业务数据状态为已审批
                     this.updateBusinessDataByFormDataId(masterTask, 2, finalPdfUrl, taskApprovalVO.getUserId());
                     //  }
+
+                    //return前先删除合同段树redis缓存
+                    informationQueryService.delAsyncWbsTree(masterTask.getContractId());
+
                     //返回电签成功的pdf路径,给试验用
                     return finalPdfUrl;
                 } else {
                     //只更新PDF路径
                     this.updateBusinessDataByFormDataId(masterTask, 1, eVisaStatus.contains("@@@@") ? eVisaStatus.split("@@@@")[1] : null, taskApprovalVO.getUserId());
+
+                    //return前先删除合同段树redis缓存
+                    informationQueryService.delAsyncWbsTree(masterTask.getContractId());
+
                     return eVisaStatus.contains("@@@@") ? eVisaStatus.split("@@@@")[1] : null;
                 }
             } else if ("eVisaError".equals(eVisaStatus) || eVisaStatus.contains("eVisaError")) {
@@ -759,12 +762,16 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 );
                 this.taskBatchService.deletedById(taskApprovalVO.getId());
             }
+
         } else {
             //废除,遵循只要某一个分支流程废除,则主流程废除、其它分支流程均自动结束
             //完成/审批当前分支流程
             this.newFlowClient.completeApprovalTask(taskId, parallelProcessInstanceId, comment).getData();
             //将分支状态更改为已废除
-            this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate().set(TaskParallel::getStatus, 3).set(TaskParallel::getUpdateUser, AuthUtil.getUserId()).set(TaskParallel::getUpdateTime, new Date()).eq(TaskParallel::getParallelProcessInstanceId, parallelProcessInstanceId));
+            this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate().set(TaskParallel::getStatus, 3)
+                    .set(TaskParallel::getUpdateUser, taskApprovalVO.getUserId())
+                    .set(TaskParallel::getUpdateTime, new Date())
+                    .eq(TaskParallel::getParallelProcessInstanceId, parallelProcessInstanceId));
 
             //获取除当前分支外的所有分支
             List<TaskParallel> otherLink = this.taskParallelService.queryOtherLinkList(parallelProcessInstanceId);
@@ -776,7 +783,10 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 for (TaskParallel parallel : otherLink) {
                     if (!new Integer("2").equals(parallel.getStatus())) {
                         //修改所有状态为已废除
-                        this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate().set(TaskParallel::getInitiative, 2).set(TaskParallel::getUpdateUser, AuthUtil.getUserId()).set(TaskParallel::getUpdateTime, new Date()).eq(TaskParallel::getId, parallel.getId()));
+                        this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate().set(TaskParallel::getInitiative, 2)
+                                .set(TaskParallel::getUpdateUser, taskApprovalVO.getUserId())
+                                .set(TaskParallel::getUpdateTime, new Date())
+                                .eq(TaskParallel::getId, parallel.getId()));
 
                         if (new Integer("1").equals(parallel.getStatus())) {
                             //存在未审批的情况,自动执行其分支流程
@@ -806,18 +816,19 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             this.updateBusinessDataByFormDataId(this.getOne(Wrappers.<Task>lambdaQuery().eq(Task::getProcessInstanceId, masterProcessInstanceId)), 3, null, taskApprovalVO.getUserId());
 
             //任务废除通知
-            this.abolishMessage(masterTask, currentLink, comment);
-
-            //删除合同段树redis缓存 TODO 不清楚updateBusinessDataByFormDataId为什么没生效,在外层再次删除
-            informationQueryService.delAsyncWbsTree(masterTask.getContractId());
+            this.abolishMessage(masterTask, currentLink, comment, taskApprovalVO.getNickName());
         }
+
+        //return前先删除合同段树redis缓存
+        informationQueryService.delAsyncWbsTree(masterTask.getContractId());
+
         return "";
     }
 
     /**
      * 任务废除通知
      */
-    private void abolishMessage(Task masterTask, TaskParallel currentLink, String comment) {
+    private void abolishMessage(Task masterTask, TaskParallel currentLink, String comment, String nickName) {
         //查询合同段及项目名称
         ProjectInfo projectInfo = this.projectClient.queryProjectList(Func.toStrList(masterTask.getProjectId())).get(0);
         String projectName = StringUtils.isNotEmpty(projectInfo.getProjectAlias()) ? projectInfo.getProjectAlias() : projectInfo.getProjectName();
@@ -837,7 +848,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                             Long.parseLong(masterTask.getProjectId()),
                             Long.parseLong(masterTask.getContractId()),
                             3,
-                            "【" + projectName + "-" + contractName + "】的用户【" + AuthUtil.getNickName() + "】废除了【" + masterTask.getTaskName() + "】,废除原因为【" + comment + "】,请及时查看",
+                            "【" + projectName + "-" + contractName + "】的用户【" + nickName + "】废除了【" + masterTask.getTaskName() + "】,废除原因为【" + comment + "】,请及时查看",
                             Long.parseLong(parallel.getTaskUser()),
                             0
                     ));
@@ -851,7 +862,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     Long.parseLong(masterTask.getProjectId()),
                     Long.parseLong(masterTask.getContractId()),
                     3,
-                    "【" + projectName + "-" + contractName + "】的用户【" + AuthUtil.getNickName() + "】废除了【" + masterTask.getTaskName() + "】,废除原因为【" + comment + "】,请及时查看",
+                    "【" + projectName + "-" + contractName + "】的用户【" + nickName + "】废除了【" + masterTask.getTaskName() + "】,废除原因为【" + comment + "】,请及时查看",
                     masterTask.getCreateUser(),
                     0
             ));
@@ -878,7 +889,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                                             Long.parseLong(masterTask.getProjectId()),
                                             Long.parseLong(masterTask.getContractId()),
                                             3,
-                                            "【" + projectName + "-" + contractName + "】的用户【" + AuthUtil.getNickName() + "】废除了【" + masterTask.getTaskName() + "】,废除原因为【" + comment + "】,请及时查看",
+                                            "【" + projectName + "-" + contractName + "】的用户【" + nickName + "】废除了【" + masterTask.getTaskName() + "】,废除原因为【" + comment + "】,请及时查看",
                                             Long.parseLong(strs[0]),
                                             0
                                     ));
@@ -896,7 +907,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                                     Long.parseLong(masterTask.getProjectId()),
                                     Long.parseLong(masterTask.getContractId()),
                                     3,
-                                    "【" + projectName + "-" + contractName + "】的用户【" + AuthUtil.getNickName() + "】废除了【" + json.getString("fileName") + "】,废除原因为【" + comment + "】,请及时查看",
+                                    "【" + projectName + "-" + contractName + "】的用户【" + nickName + "】废除了【" + json.getString("fileName") + "】,废除原因为【" + comment + "】,请及时查看",
                                     Long.parseLong(fillUser),
                                     0
                             ));
@@ -913,6 +924,26 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         }
     }
 
+    /**
+     * 试验自检任务业务相关
+     */
+    private void trialSelfTaskRelated(TaskApprovalVO taskApprovalVO, String pdfUrlEVisa, String batchId) throws FileNotFoundException {
+        //============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) ==============
+        if ("OK".equals(taskApprovalVO.getFlag()) && StringUtils.isNotEmpty(pdfUrlEVisa)) {
+            //已审批
+            this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatus(pdfUrlEVisa, taskApprovalVO);
+            //executor删除掉对应批次
+            this.taskBatchService.deletedById(batchId);
+        }
+
+        if (!"OK".equals(taskApprovalVO.getFlag())) {
+            //已废除
+            this.iTrialSelfInspectionRecordService.updateTrialSelfInspectionRecordStatusFC(taskApprovalVO);
+            //executor删除掉对应批次
+            this.taskBatchService.deletedById(batchId);
+        }
+    }
+
     @Override
     public Boolean startApproval(TaskVO vo) {
         //获取业务表
@@ -1141,10 +1172,10 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                         .set(InformationQuery::getBusinessTime, dateInfo)
                         .in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
 
-                //如果是废除任务,那么删除合同段节点树缓存 TODO 不清楚为什么没生效,在外层删除
+                /*//如果是废除任务,那么删除合同段节点树缓存
                 if (status == 3) {
                     informationQueryService.delAsyncWbsTree(queryinfo.getContractId().toString());
-                }
+                }*/
 
                 //修改试验业务状态(已审批的情况下修改)
                 if (new Integer(2).equals(queryinfo.getType()) && ObjectUtil.isNotEmpty(queryinfo.getWbsId()) && status != 3) {

+ 5 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/RoutingInspectionMapper.xml

@@ -8,13 +8,15 @@
                (select dict_value from blade_dict where code = 'inspect_type' and dict_key = mri.inspect_type) as inspectTypeName,
                (select dict_value from blade_dict where code = 'review_inspect_status' and dict_key = mri.review_inspect_status) as reviewInspectStatusName,
                case mri.is_rectify
-                   when 1 then '未开始'
-                   when 2 then '进行中'
+                   when 1 then '需要'
+                   when 2 then '不需要'
+                   when 3 then '已整改'
                    end as isRectifyName
         from m_routing_inspection mri
-        where mri.is_deleted = 0 and mri.project_id = #{inspection.projectId}
+        where mri.is_deleted = 0 and mri.project_id = #{inspection.projectId} and contract_id = #{inspection.contractId}
         <if test="inspection.isRectify != null and inspection.isRectify != ''">
             and mri.is_rectify = #{inspection.isRectify}
         </if>
+        order by mri.create_time desc
     </select>
 </mapper>

+ 19 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/RoutingInspectionServiceImpl.java

@@ -54,6 +54,7 @@ public class RoutingInspectionServiceImpl extends BaseServiceImpl<RoutingInspect
         RoutingInspection inspection = new RoutingInspection();
         BeanUtils.copyProperties(dto,inspection);
         inspection.setId(id);
+        inspection.setCreateTime(new Date());
         this.save(inspection);
         //再保存具体的巡检项目
         List<InspectionRectify> list1 = list.stream().map(l -> {
@@ -96,6 +97,23 @@ public class RoutingInspectionServiceImpl extends BaseServiceImpl<RoutingInspect
     public IPage<RoutingInspectionVO> page(Query query, RoutingInspection inspection) {
         IPage<RoutingInspectionVO> iPage = new Page<>(query.getCurrent(), query.getSize());
         baseMapper.page(iPage,inspection);
+        //设置权限,只能整改人可以点
+        Long userId = AuthUtil.getUserId();
+        List<RoutingInspectionVO> records = iPage.getRecords();
+        for (RoutingInspectionVO record : records) {
+            if (record.getRectifyUser() == null){
+                record.setIsRectifyUser(0);
+                continue;
+            }
+            String rectifyUser = record.getRectifyUser();
+            String[] split = rectifyUser.split("-");
+            Long user = Long.parseLong(split[split.length-1]);
+            if (userId.equals(user)){
+                record.setIsRectifyUser(1);
+            }else {
+                record.setIsRectifyUser(0);
+            }
+        }
         return iPage;
     }
 
@@ -134,7 +152,7 @@ public class RoutingInspectionServiceImpl extends BaseServiceImpl<RoutingInspect
             //复检通过,修改复检状态为3通过,修改整改状态为2不用整改
             this.update(new LambdaUpdateWrapper<RoutingInspection>()
                     .set(RoutingInspection::getReviewInspectStatus,3)
-                    .set(RoutingInspection::getIsRectify,2)
+                    .set(RoutingInspection::getIsRectify,3)
                     .eq(RoutingInspection::getId,id));
         }else {
             throw new ServiceException("参数错误");

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -710,7 +710,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                         }
                     }
                     //获取当前层懒加载节点
-                    List<WbsTreeContractLazyVO> lazyNodes = jdbcTemplate.query("select p_key_id,(SELECT id FROM u_contract_tree_drawings where process_id = p_key_id) AS drawingsId,id,parent_id,node_type,type,wbs_type,is_concrete,major_data_type,partition_code,old_id,contract_id_relation,is_concealed_works_node,CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,IFNULL(if(length(trim(full_name))>0,full_name,node_name),node_name) AS title,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract b WHERE b.parent_id = a.id AND b.type = 1 and b.status = 1 AND b.contract_id = " + contractId + " AND b.is_deleted = 0 ) AS hasChildren from m_wbs_tree_contract a where a.node_type != 111 and a.type = 1 and a.status = 1 and a.is_deleted = 0 and parent_id = " + (StringUtils.isNotEmpty(id) ? id : 0) + " and contract_id = " + contractId + " ORDER BY a.sort,title,a.create_time", new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
+                    List<WbsTreeContractLazyVO> lazyNodes = jdbcTemplate.query("select p_key_id,contract_id,(SELECT id FROM u_contract_tree_drawings where process_id = p_key_id) AS drawingsId,id,parent_id,node_type,type,wbs_type,is_concrete,major_data_type,partition_code,old_id,contract_id_relation,is_concealed_works_node,CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,IFNULL(if(length(trim(full_name))>0,full_name,node_name),node_name) AS title,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract b WHERE b.parent_id = a.id AND b.type = 1 and b.status = 1 AND b.contract_id = " + contractId + " AND b.is_deleted = 0 ) AS hasChildren from m_wbs_tree_contract a where a.node_type != 111 and a.type = 1 and a.status = 1 and a.is_deleted = 0 and parent_id = " + (StringUtils.isNotEmpty(id) ? id : 0) + " and contract_id = " + contractId + " ORDER BY a.sort,title,a.create_time", new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
                     if (lazyNodes.size() > 0 && nodesAll.size() > 0) {
                         //所有节点
                         List<WbsTreeContractLazyVO> distinctNodesAll = nodesAll.stream()
@@ -870,7 +870,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                             }
 
                             //获取当前层懒加载节点
-                            List<WbsTreeContractLazyVO> lazyNodes = jdbcTemplate.query("select p_key_id,(SELECT id FROM u_contract_tree_drawings where process_id = p_key_id) AS drawingsId,id,parent_id,node_type,type,wbs_type,major_data_type,partition_code,old_id,contract_id_relation,is_concealed_works_node,CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,IFNULL(if(length(trim(full_name))>0,full_name,node_name),node_name) AS title,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract b WHERE b.parent_id = a.id AND  b.type = 1 and b.status = 1 AND b.contract_id = " + sgContractId + " AND b.is_deleted = 0 ) AS hasChildren from m_wbs_tree_contract a where a.node_type != 111 and a.type = 1 and a.status = 1 and a.is_deleted = 0 and parent_id = " + (StringUtils.isNotEmpty(id) ? id : 0) + " and contract_id = " + sgContractId + " ORDER BY a.sort,title,a.create_time", new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
+                            List<WbsTreeContractLazyVO> lazyNodes = jdbcTemplate.query("select p_key_id,contract_id,(SELECT id FROM u_contract_tree_drawings where process_id = p_key_id) AS drawingsId,id,parent_id,node_type,type,wbs_type,major_data_type,partition_code,old_id,contract_id_relation,is_concealed_works_node,CASE (SELECT count(1) FROM u_tree_contract_first AS tcf WHERE tcf.is_deleted = 0 AND tcf.wbs_node_id = a.p_key_id) WHEN 0 THEN 'false' ELSE 'true' END AS isFirst,IFNULL(if(length(trim(full_name))>0,full_name,node_name),node_name) AS title,(SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract b WHERE b.parent_id = a.id AND  b.type = 1 and b.status = 1 AND b.contract_id = " + sgContractId + " AND b.is_deleted = 0 ) AS hasChildren from m_wbs_tree_contract a where a.node_type != 111 and a.type = 1 and a.status = 1 and a.is_deleted = 0 and parent_id = " + (StringUtils.isNotEmpty(id) ? id : 0) + " and contract_id = " + sgContractId + " ORDER BY a.sort,title,a.create_time", new BeanPropertyRowMapper<>(WbsTreeContractLazyVO.class));
                             if (lazyNodes.size() > 0 && nodesAll.size() > 0) {
                                 //所有节点
                                 List<WbsTreeContractLazyVO> distinctNodesAll = nodesAll.stream()