Browse Source

个人中心-回收站-恢复功能会检查节点是否在项目节点中存在,不存在就跳过并status设为2

LHB 1 month ago
parent
commit
49bc877f66

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

@@ -204,5 +204,5 @@ public interface WbsTreeContractClient {
     EKeyDto getEKey(@RequestParam String contractId, @RequestParam Long pKeyId, @RequestParam String wbsId);
 
     @GetMapping(API_PREFIX + "/findIsExistTreeNode")
-    List<String> findIsExistTreeNode(List<String> processNodeList);
+    Integer findIsExistTreeNode(List<String> processNodeList);
 }

+ 17 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/RecycleBinController.java

@@ -3,6 +3,7 @@ package org.springblade.business.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -63,7 +64,7 @@ public class RecycleBinController extends BladeController {
         if (vo.getRegainIds() != null && vo.getRegainIds().size() > 0) {
             //获取数据
             List<Long> longs = vo.getRegainIds().stream().map(i -> i.getId()).collect(Collectors.toList());
-            List<RecycleBin> recycleBinList = this.recycleBinService.list(Wrappers.<RecycleBin>lambdaQuery().in(RecycleBin::getId, longs));
+            List<RecycleBin> recycleBinList = this.recycleBinService.list(Wrappers.<RecycleBin>lambdaQuery().eq(RecycleBin::getStatus,1).in(RecycleBin::getId, longs));
             //恢复数据成功后删除回收站对应记录
             List<String> recycleBinIds = new ArrayList<>();
             //划分数据类型
@@ -71,12 +72,25 @@ public class RecycleBinController extends BladeController {
             List<RecycleBin> nodeTypeList = recycleBinList.stream().filter(recycleBin -> new Integer("2").equals(recycleBin.getDelType())).distinct().collect(Collectors.toList());
             boolean regainNode = false, regainFile = false;
             if (nodeTypeList.size() > 0) {
+                List<RecycleBin> errorList = new ArrayList<>();
+                //筛选出项目级存在的节点
+                for (RecycleBin recycleBin : nodeTypeList) {
+                    //当前是否有节点在项目级被删除了  如果是标记当前节点不可用
+                    Integer count = this.wbsTreeContractClient.findIsExistTreeNode(Arrays.asList(recycleBin.getBusinessId().split(",")));
+                    if (count > 0){
+                        recycleBin.setStatus(2);
+                        errorList.add(recycleBin);
+                    }
+                }
+                if(CollectionUtils.isNotEmpty(errorList)){
+                    recycleBinService.updateBatchById(errorList);
+                    nodeTypeList.removeAll(errorList);
+                }
+
                 //恢复集合
                 List<String> processNodeList = new ArrayList<>();
                 this.foreachQueryData(nodeTypeList, recycleBinIds, processNodeList);
                 try {
-                    //筛选出项目级存在的节点
-                    processNodeList = this.wbsTreeContractClient.findIsExistTreeNode(processNodeList);
 
                     //恢复数据
                     if (processNodeList.size() > 0) {

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

@@ -492,7 +492,7 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
     }
 
     @Override
-    public List<String> findIsExistTreeNode(List<String> ids) {
+    public Integer findIsExistTreeNode(List<String> ids) {
         return wbsTreeContractService.findIsExistTreeNode(ids);
     }
 

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -156,5 +156,5 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
      */
     void updateSortBatchByPKeyId(List<WbsTreeContract> resourceData);
 
-    List<String> findIsExistTreeNode(List<String> ids);
+    Integer findIsExistTreeNode(List<String> ids);
 }

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

@@ -953,14 +953,14 @@
           AND wtc.wbs_id = #{wbsId}
           AND wtc.is_deleted = 0;
     </select>
-    <select id="findIsExistTreeNode" resultType="java.lang.String">
-        SELECT a.p_key_id FROM `m_wbs_tree_contract` a
+    <select id="findIsExistTreeNode" resultType="java.lang.Integer">
+        SELECT count(0) FROM `m_wbs_tree_contract` a
         left join m_wbs_tree_private b on a.is_type_private_pid = b.p_key_id
         where a.p_key_id in
           <foreach collection="list" item="item" open="(" close=")" separator=",">
               #{item}
           </foreach>
-        and b.p_key_id is not null and b.is_deleted = 0
+        and (b.p_key_id is null or b.is_deleted = 1)
     </select>
 
 </mapper>

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -89,5 +89,5 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     EKeyDto getEKey(String contractId, Long pKeyId, String wbsId);
 
-    List<String> findIsExistTreeNode(List<String> ids);
+    Integer findIsExistTreeNode(List<String> ids);
 }

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

@@ -2775,7 +2775,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 
 
     @Override
-    public List<String> findIsExistTreeNode(List<String> ids) {
+    public Integer findIsExistTreeNode(List<String> ids) {
         return baseMapper.findIsExistTreeNode(ids);
     }