Przeglądaj źródła

Merge remote-tracking branch 'origin/dev' into dev

LHB 1 miesiąc temu
rodzic
commit
1c2cd55d3b

+ 14 - 7
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/WbsTreeContractStatistics.java

@@ -63,38 +63,38 @@ public class WbsTreeContractStatistics implements Serializable {
      * 叶子节点数量
      */
     @ApiModelProperty(value = "叶子节点数量")
-    private Integer leafNum = 0;
+    private Integer leafNum;
 
     /**
      * 已填报数量
      */
     @ApiModelProperty(value = "已填报数量")
-    private Integer fillNum = 0;
+    private Integer fillNum;
     /**
      * 待审批数量
      */
     @ApiModelProperty(value = "待审批数量")
-    private Integer approveNum = 0;
+    private Integer approveNum;
     /**
      * 已审批数量
      */
     @ApiModelProperty(value = "已审批数量")
-    private Integer completeNum = 0;
+    private Integer completeNum;
     /**
      * 已填报数量(监理)
      */
     @ApiModelProperty(value = "已填报数量(监理)")
-    private Integer jlFillNum = 0;
+    private Integer jlFillNum;
     /**
      * 待审批数量(监理)
      */
     @ApiModelProperty(value = "待审批数量(监理)")
-    private Integer jlApproveNum = 0;
+    private Integer jlApproveNum;
     /**
      * 已审批数量(监理)
      */
     @ApiModelProperty(value = "已审批数量(监理)")
-    private Integer jlCompleteNum = 0;
+    private Integer jlCompleteNum;
 
     @DateTimeFormat(
             pattern = "yyyy-MM-dd HH:mm:ss"
@@ -133,6 +133,13 @@ public class WbsTreeContractStatistics implements Serializable {
             this.ancestors = ancestors == null ? "" : ancestors;
             this.status = 1;
             this.isLeaf = 1;
+            this.fillNum = 0;
+            this.approveNum = 0;
+            this.completeNum = 0;
+            this.jlFillNum = 0;
+            this.jlApproveNum = 0;
+            this.jlCompleteNum = 0;
+            this.leafNum = 0;
         }
     }
 

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/WbsTreeContractStatisticsClient.java

@@ -45,4 +45,7 @@ public interface WbsTreeContractStatisticsClient {
     @GetMapping(API_PREFIX + "/statisticsContract")
     void statisticsContract(@RequestParam Long contractId);
 
+    @GetMapping(API_PREFIX + "/updateAncestors")
+    void updateAncestors(@RequestParam String ids);
+
 }

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

@@ -165,14 +165,16 @@ public class TaskController extends BladeController {
     /**
      * 批量审批详情
      */
-    @GetMapping("/batch-approval-parameter")
+    @PostMapping("/batch-approval-parameter")
     @ApiOperationSupport(order = 11)
     @ApiOperation(value = "批量页详情")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "formDataId", value = "数据源", required = true),
             @ApiImplicitParam(name = "approvalType", value = "上报类型", required = true)
     })
-    public R<List<TaskApprovalVO>> getBatchApprovalTaskParameter(@RequestParam String formDataId, @RequestParam String approvalType) {
+    public R<List<TaskApprovalVO>> getBatchApprovalTaskParameter(@RequestBody BatchTaskVO vo) {
+        String formDataId = vo.getFormDataId();
+        String approvalType = vo.getApprovalType();
         List<String> longs = Func.toStrList(formDataId);
         List<String> apptype = Func.toStrList(approvalType);
         List<TaskApprovalVO> taskApprovalVOList = new ArrayList<>();

+ 15 - 5
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/WbsTreeContractStatisticsClientImpl.java

@@ -9,6 +9,7 @@ import org.springblade.business.feign.WbsTreeContractStatisticsClient;
 import org.springblade.business.mapper.InformationQueryMapper;
 import org.springblade.business.service.IWbsTreeContractStatisticsService;
 import org.springblade.business.service.impl.WbsTreeContractStatisticsServiceImpl;
+import org.springblade.common.utils.SystemUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
@@ -36,29 +37,32 @@ public class WbsTreeContractStatisticsClientImpl implements WbsTreeContractStati
 
     @Scheduled(cron = "0/30 * * * * ?")
     public void updateInformationQueryStatus() {
+        if (!SystemUtils.isLinux()) {
+            return;
+        }
         Map<String, String> map = new HashMap<>();
-        List<String> queryIds = redisTemplate.opsForList().range(INFORMATION_QUERY_STATUS_STATISTICS_KEY, 0, 100);
+        List<String> queryIds = redisTemplate.opsForList().range(INFORMATION_QUERY_STATUS_STATISTICS_KEY, 0, 1000);
         if (queryIds != null && !queryIds.isEmpty()) {
             String ids = queryIds.stream().distinct().collect(Collectors.joining(","));
-            List<InformationQuery> queryList = jdbcTemplate.query("select wbs_id, classify, contract_id from u_information_query where id in ( " + ids +" ) and is_deleted = 0 group by contract_id,wbs_id,classify",
+            List<InformationQuery> queryList = jdbcTemplate.query("select id,wbs_id, classify, contract_id from u_information_query where id in ( " + ids +" ) and is_deleted = 0 group by contract_id,wbs_id,classify",
                     new BeanPropertyRowMapper<>(InformationQuery.class));
             if (!queryList.isEmpty()) {
                 for (InformationQuery query : queryList) {
                     if (map.containsKey(query.getWbsId() + "," + query.getContractId() + "," + query.getClassify())) {
-                        redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, query.getId() + "");
                         continue;
                     }
                     try {
                         wbsTreeContractStatisticsService.updateInformationNumber(query.getWbsId(), query.getClassify(), query.getContractId());
                         map.put(query.getWbsId() + "," + query.getContractId() + "," + query.getClassify(), "");
-                        redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, query.getId() + "");
                     } catch (Exception e) {
-                        redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, query.getId() + "");
                         redisTemplate.opsForList().rightPush("blade:statistics:information_query_statistics_key", query.getId() + "");
                         log.error("updateInformationQueryStatus wbsId = {}, contractId = {}, classify = {}", query.getWbsId(), query.getContractId(), query.getClassify() , e);
                     }
                 }
             }
+            for (String queryId : queryIds) {
+                redisTemplate.opsForList().remove("blade:statistics:information_query_statistics_key", 1, queryId);
+            }
         }
     }
 
@@ -160,4 +164,10 @@ public class WbsTreeContractStatisticsClientImpl implements WbsTreeContractStati
     public void statisticsContract(Long contractId) {
         wbsTreeContractStatisticsService.statisticsContract(contractId);
     }
+
+    @Override
+    @Async
+    public void updateAncestors(String ids) {
+        wbsTreeContractStatisticsService.updateAncestors(ids);
+    }
 }

+ 2 - 2
blade-service/blade-business/src/main/java/org/springblade/business/mapper/WbsTreeContractStatisticsMapper.xml

@@ -28,14 +28,14 @@
     <update id="updateLeafNum">
         UPDATE m_wbs_tree_contract_statistics a INNER JOIN (
                 select  b.id, COUNT(c.id) AS leaf_num, sum(c.fill_num) as fill_num, sum(c.approve_num) as approve_num, sum(c.complete_num) as complete_num, sum(c.jl_fill_num) as jl_fill_num, sum(c.jl_approve_num) as jl_approve_num, sum(c.jl_complete_num) as jl_complete_num
-                FROM m_wbs_tree_contract_statistics b INNER JOIN m_wbs_tree_contract_statistics c  ON c.contract_id = b.contract_id AND c.is_leaf = 1 AND c.is_deleted = 0  AND c.status = 1 AND c.ancestors LIKE CONCAT(b.ancestors, ',', b.id, '%')
+                FROM m_wbs_tree_contract_statistics b INNER JOIN m_wbs_tree_contract_statistics c  ON c.contract_id = b.contract_id AND c.leaf_num = 0 AND c.is_deleted = 0  AND c.status = 1 AND c.ancestors LIKE CONCAT(b.ancestors, ',', b.id, '%')
                 WHERE b.id IN (
                     <foreach collection="ids" item="item" separator=",">
                         #{item}
                     </foreach>
                     ) GROUP BY b.id
             ) AS t ON a.id = t.id
-        SET a.leaf_num = t.leaf_num, a.fill_num = t.fill_num,a.approve_num = t.approve_num, a.complete_num = t.complete_num, a.jl_fill_num =t.jl_fill_num, a.jl_approve_num = t.jl_approve_num, a.jl_complete_num = t.jl_complete_num;
+        SET a.leaf_num = t.leaf_num, a.fill_num = t.fill_num,a.approve_num = t.approve_num, a.complete_num = t.complete_num, a.jl_fill_num =t.jl_fill_num, a.jl_approve_num = t.jl_approve_num, a.jl_complete_num = t.jl_complete_num, a.is_leaf = if(t.leaf_num > 0, 0, 1);
     </update>
     <select id="getByIdOnLock" resultMap="ResultMap">
         select <include refid="includeSql"/> from m_wbs_tree_contract_statistics where id = #{id} for update

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

@@ -12,5 +12,6 @@ public interface IWbsTreeContractStatisticsService extends IService<WbsTreeContr
     Boolean updateIsDeleted(Long id, Integer isDeleted);
     void statisticsContract(Long contractId);
 
+    void updateAncestors(String ids);
     void sync();
 }

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

@@ -1144,7 +1144,12 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             //------初始编号信息------
             this.initBuildNumber(dto);
         }
+        String tableIds = dto.getTableIds();
+        if (ObjectUtil.isNotEmpty(dto.getId())) {
+            dto.setTableIds(null);
+        }
         this.saveOrUpdate(dto);
+        dto.setTableIds(tableIds);
         if (ObjectUtil.isNotEmpty(dto.getId())) {
             //------获取最新试验记录------
             TrialSelfInspectionRecord obj = baseMapper.selectById(dto.getId());
@@ -1198,6 +1203,35 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
         }
         return dto.getId().toString();
     }
+    private String saveTrialRecordTableIds(TrialSelfInspectionRecord obj, String tableIds , boolean isRecord){
+        if (obj.getTableIds() ==  null || obj.getTableIds().trim().isEmpty()) {
+            return tableIds;
+        }
+        List<WbsTreePrivate> query = jdbcTemplate.query("select * from m_wbs_tree_private where p_key_id in (" + obj.getTableIds() + ")", new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+        List<String> recordIds = new ArrayList<>();
+        List<String> reportIds = new ArrayList<>();
+        for (WbsTreePrivate treePrivate : query) {
+            Integer type = treePrivate.getTableType();
+            if (type == null) {
+                continue;
+            }
+            if (type == 1 || type == 9) {
+                recordIds.add(treePrivate.getPKeyId() + "");
+            } else if (type == 2 || type == 10) {
+                reportIds.add(treePrivate.getPKeyId() + "");
+            }
+        }
+        if (isRecord) {
+            if (!reportIds.isEmpty()) {
+                tableIds = tableIds + "," + String.join(",", reportIds);
+            }
+        } else {
+            if (!recordIds.isEmpty()) {
+                tableIds = tableIds + "," + String.join(",", recordIds);
+            }
+        }
+        return tableIds;
+    }
 
     /**
      * 取到传入的表单中的报告编号或者记录编号 修改记录表中相应字段的值
@@ -1396,14 +1430,15 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             String updateSql = null;
             if (recordDataTable && !reportDataTable) {
                 //单独保存记录表 查询报告单pdf是否有值 如果有值就合并 合并存到pdf_url
-                updateSql = getUpdateSql(dto, pdfURL, listPdf, snowId, "report_pdf_url", 1, "record_pdf_url");
-
+                String tableIds = saveTrialRecordTableIds(obj, dto.getTableIds(), true);
+                updateSql = getUpdateSql(dto, pdfURL, listPdf, snowId, "report_pdf_url", 1, "record_pdf_url", tableIds);
             } else if (!recordDataTable && reportDataTable) {
                 //单独保存报告表 查询记录表pdf是否有值 如果有值就合并 合并存到pdf_url
-                updateSql = getUpdateSql(dto, pdfURL, listPdf, snowId, "record_pdf_url", 2, "report_pdf_url");
+                String tableIds = saveTrialRecordTableIds(obj, dto.getTableIds(), false);
+                updateSql = getUpdateSql(dto, pdfURL, listPdf, snowId, "record_pdf_url", 2, "report_pdf_url", tableIds);
             } else {
                 //一起保存的数据  只改变pdf_url
-                this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).set(TrialSelfInspectionRecord::getTaskStatus, "未上报").eq(TrialSelfInspectionRecord::getId, dto.getId()));
+                this.update(Wrappers.<TrialSelfInspectionRecord>lambdaUpdate().set(TrialSelfInspectionRecord::getTableIds, dto.getTableIds()).set(TrialSelfInspectionRecord::getPdfUrl, pdfURL).set(TrialSelfInspectionRecord::getTaskStatus, "未上报").eq(TrialSelfInspectionRecord::getId, dto.getId()));
             }
             if (ObjectUtil.isNotEmpty(updateSql)) {
                 jdbcTemplate.execute(updateSql);
@@ -1415,7 +1450,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
     }
 
     @NotNull
-    private String getUpdateSql(TrialSelfInspectionRecordDTO dto, String pdfURL, String listPdf, Long snowId, String param1, int type, String param2) {
+    private String getUpdateSql(TrialSelfInspectionRecordDTO dto, String pdfURL, String listPdf, Long snowId, String param1, int type, String param2, String tableIds) {
         String updateSql;
         String sqlForAntherPDF = "SELECT " + param1 + " from u_trial_self_inspection_record where id =  " + dto.getId() + " and is_deleted = 0";
         String AntherPDFUrl = jdbcTemplate.queryForObject(sqlForAntherPDF, new SingleColumnRowMapper<String>(String.class));
@@ -1428,7 +1463,7 @@ public class TrialSelfInspectionRecordServiceImpl extends BaseServiceImpl<TrialS
             }
 
             BladeFile bladeFile = this.newIOSSClient.uploadFile(snowId + ".pdf", listPdf);
-            updateSql = "update u_trial_self_inspection_record set pdf_url = '" + bladeFile.getLink() + "'," + param2 + "= '" + pdfURL + "' ,task_status='未上报' where id='" + dto.getId() + "'";
+            updateSql = "update u_trial_self_inspection_record set pdf_url = '" + bladeFile.getLink() + "'," + param2 + "= '" + pdfURL + "' ,task_status='未上报', table_ids = '" + tableIds +"' where id='" + dto.getId() + "'";
             //合并后更新queryInfo表的pdfurl
             String updateForQurtyInfo = "update u_information_query set pdf_url ='" + bladeFile.getLink() + "' where classify='" + dto.getType() + "' and  wbs_id='" + dto.getId() + "' and contract_id ='" + dto.getContractId() + "' ";
             jdbcTemplate.execute(updateForQurtyInfo);

+ 94 - 9
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/WbsTreeContractStatisticsServiceImpl.java

@@ -222,13 +222,7 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
     }
 
     private void updateStatusAndIsDeleted(Long contractId) {
-        List<WbsTreeContractStatistics> query = jdbcTemplate.query("SELECT a.id,b.status,b.is_deleted from m_wbs_tree_contract_statistics a LEFT JOIN m_wbs_tree_contract b on a.id = b.p_key_id WHERE (a.status != b.status OR a.is_deleted != b.is_deleted) AND b.p_key_id IS NOT NULl and a.contract_id = " + contractId,
-                new BeanPropertyRowMapper<>(WbsTreeContractStatistics.class));
-        if (query.isEmpty()) {
-            return;
-        }
-        List<WbsTreeContractStatistics> list = query.stream().filter(item -> item.getStatus() != null && item.getIsDeleted() != null).collect(Collectors.toList());
-        this.updateBatchById(list);
+        jdbcTemplate.execute("update  m_wbs_tree_contract_statistics a LEFT JOIN m_wbs_tree_contract b on a.id = b.p_key_id  set a.status = ifnull(b.status, a.status) , a.is_deleted = IFNULL(b.is_deleted,a.is_deleted) WHERE (a.status != b.status OR a.is_deleted != b.is_deleted) AND b.p_key_id IS NOT NULl and a.contract_id = " + contractId);
     }
 
     public Boolean updateLeafNum(String ids) {
@@ -240,6 +234,92 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
         return true;
     }
 
+    @Override
+    public void updateAncestors(String ids) {
+        if (!StringUtil.hasText(ids)) {
+            return;
+        }
+        String[] split = ids.split(",");
+        if (split.length == 0) {
+            return;
+        }
+        Map<Long, Long> map = new HashMap<>();
+        {
+            ids = Arrays.stream(split).filter(StringUtil::isNumeric).distinct().collect(Collectors.joining(","));
+            List<WbsTreeContract> query = jdbcTemplate.query("SELECT id,p_key_id,p_id,parent_id FROM m_wbs_tree_contract WHERE is_deleted = 0 and type = 1 and p_key_id in (" + String.join(",", ids) + ")", new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            if (query.isEmpty()) {
+                return;
+            }
+            // 只更新父级节点
+            Map<Long, List<WbsTreeContract>> childrenMap = query.stream().collect(Collectors.groupingBy(WbsTreeContract::getPId));
+            for (WbsTreeContract wbsTreeContract : query) {
+                List<WbsTreeContract> list = childrenMap.get(wbsTreeContract.getPKeyId());
+                if (list == null) {
+                    // 更新当前节点 parent ancestors字段
+                    map.put(wbsTreeContract.getPKeyId(), wbsTreeContract.getPId());
+                }
+            }
+        }
+        if (map.isEmpty()) {
+            return;
+        }
+        List<WbsTreeContractStatistics> wbsTreeContractStatistics = this.listByIds(map.keySet());
+        List<WbsTreeContractStatistics> parentList = this.listByIds(map.values());
+        Map<Long, WbsTreeContractStatistics> parentMap = parentList.stream().collect(Collectors.toMap(WbsTreeContractStatistics::getId, item -> item));
+        List<WbsTreeContractStatistics> updateList = new ArrayList<>();
+        List<String> sqlList = new ArrayList<>();
+        for (WbsTreeContractStatistics statistics : wbsTreeContractStatistics) {
+            Long parentId = map.get(statistics.getId());
+            WbsTreeContractStatistics update = new WbsTreeContractStatistics();
+            update.setId(statistics.getId());
+            if (parentId == null) {
+                update.setParentId(0L);
+                update.setAncestors("0");
+                updateList.add(update);
+                continue;
+            }
+            WbsTreeContractStatistics parent = parentMap.get(parentId);
+            if (parent == null) {
+                update.setParentId(0L);
+                update.setAncestors("0");
+                updateList.add(update);
+                continue;
+            }
+            update.setParentId(parent.getId());
+            update.setAncestors(parent.getAncestors() + "," + parent.getId());
+            updateList.add(update);
+            WbsTreeContractStatistics temp = new WbsTreeContractStatistics();
+            temp.setId(statistics.getParentId());
+            temp.setAncestors(statistics.getAncestors());
+            parentMap.put(statistics.getParentId(), temp);
+            String oldAncestors = statistics.getAncestors() + "," + statistics.getId();
+            String newAncestors = update.getAncestors() + "," + statistics.getId();
+            String sql = "UPDATE m_wbs_tree_contract_statistics SET ancestors = replace(ancestors, '" + oldAncestors + "', '" + newAncestors + "') WHERE is_deleted = 0 and status = 1 and ancestors like '"
+                    + oldAncestors + "%' and contract_id = " + statistics.getContractId();
+            sqlList.add(sql);
+        }
+        Set<Long> parentIds = new HashSet<>();
+        parentMap.values().forEach(item -> {
+            parentIds.add(item.getId());
+            String ancestors = item.getAncestors();
+            if (ancestors != null && !ancestors.isEmpty()) {
+                String[] split1 = ancestors.split(",");
+                for (String s : split1) {
+                    if (StringUtil.isNumeric(s)) {
+                        parentIds.add(Long.parseLong(s));
+                    }
+                }
+            }
+        });
+        this.updateBatchById(updateList);
+        for (String s : sqlList) {
+            jdbcTemplate.update(s);
+        }
+        if (!parentIds.isEmpty()) {
+            this.baseMapper.updateLeafNum(parentIds);
+        }
+    }
+
     public void createWbsTreeContractStatisticsParent(WbsTreeContract wbsTreeContract, WbsTreeContractStatistics wbsTreeContractStatistics, List<WbsTreeContractStatistics> wbsTreeContractStatisticsList) {
         if (wbsTreeContract.getParentId() == null || wbsTreeContract.getParentId() <= 0) {
             wbsTreeContractStatistics.setParentId(0L);
@@ -253,6 +333,7 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
                 return;
             }
             parent = createWbsTreeContractStatistics(wbsTreeContractParent);
+            parent.setIsLeaf(0);
             createWbsTreeContractStatisticsParent(wbsTreeContractParent, parent, wbsTreeContractStatisticsList);
             wbsTreeContractStatisticsList.add(parent);
         } else {
@@ -260,20 +341,24 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
                 wbsTreeContractStatistics.setParentId(parent.getId());
                 wbsTreeContractStatistics.setAncestors(parent.getAncestors() + "," + parent.getId());
             }
+            if (parent.getIsLeaf() == 1) {
+                this.update(Wrappers.<WbsTreeContractStatistics>lambdaUpdate().eq(WbsTreeContractStatistics::getId, parent.getId()).set(WbsTreeContractStatistics::getIsLeaf, 0));
+            }
         }
     }
 
     public void createWbsTreeContractStatisticsChildren(WbsTreeContract wbsTreeContract, WbsTreeContractStatistics wbsTreeContractStatistics, List<WbsTreeContractStatistics> wbsTreeContractStatisticsList) {
         List<WbsTreeContract> wbsTreeContracts =  jdbcTemplate.query("select * from m_wbs_tree_contract where is_deleted = 0 and type = 1 and contract_id = ? and p_id = ?",
                 new Object[]{wbsTreeContract.getContractId(), wbsTreeContract.getPKeyId()}, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-        if (wbsTreeContracts == null || wbsTreeContracts.isEmpty()) {
+        if (wbsTreeContracts.isEmpty()) {
             wbsTreeContractStatistics.setIsLeaf(1);
             wbsTreeContractStatistics.setLeafNum(0);
             return;
         }
+        wbsTreeContractStatistics.setIsLeaf(0);
         wbsTreeContracts.forEach(item -> {
             WbsTreeContractStatistics statistics = createWbsTreeContractStatistics(item);
-            createWbsTreeContractStatisticsChildren(item, wbsTreeContractStatistics, wbsTreeContractStatisticsList);
+            createWbsTreeContractStatisticsChildren(item, statistics, wbsTreeContractStatisticsList);
             statistics.setAncestors(wbsTreeContractStatistics.getAncestors() + "," + wbsTreeContractStatistics.getId());
             statistics.setParentId(wbsTreeContractStatistics.getId());
             wbsTreeContractStatisticsList.add(statistics);

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

@@ -3194,7 +3194,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
                     }
                 }
-                bladeRedis.setEx("import:projectId:"+wbsTreeContractRoot.getProjectId()+"contractId:"+wbsTreeContractRoot.getContractId(), "100%",5L);
+                bladeRedis.setEx("import:projectId:"+wbsTreeContractRoot.getProjectId()+"contractId:"+wbsTreeContractRoot.getContractId(), "100",7L);
             } catch (Exception e) {
                 bladeRedis.del("import:projectId:"+wbsTreeContractRoot.getProjectId()+"contractId:"+wbsTreeContractRoot.getContractId());
             }finally {
@@ -4750,6 +4750,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             }
             this.wbsTreeContractMapper.updateWbsTreeAncestors(contract);
         }
+        String ids = dto.getLeftPkeyIds().stream().map(id -> id + "").collect(Collectors.joining(","));
+        this.wbsTreeContractStatisticsClient.updateAncestors(ids);
         return R.success("操作成功");
     }