Bladeren bron

收藏夹优化查询逻辑

lvy 1 week geleden
bovenliggende
commit
1dc7bbf8da

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractCollectFolder.java

@@ -52,6 +52,7 @@ public class ContractCollectFolder implements Serializable {
      * 节点路径pKeyIds
      */
     @ApiModelProperty("节点路径pKeyIds")
+    @TableField(exist = false)
     private String nodeAncestors;
 
     /**

+ 0 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractCollectFolderMapper.xml

@@ -9,8 +9,6 @@
         <result column="folder_name" property="folderName"/>
         <result column="contract_id" property="contractId"/>
         <result column="node_id" property="nodeId"/>
-        <result column="node_parent_id" property="nodeParentId"/>
-        <result column="node_ancestors" property="nodeAncestors"/>
         <result column="type" property="type"/>
         <result column="sort" property="sort"/>
         <result column="create_time" property="createTime"/>

+ 5 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractCollectFolderServiceImpl.java

@@ -121,8 +121,12 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
             if (node == null) {
                 return true;
             }
+            List<WbsTreeContract> childrenList = new ArrayList<>();
+            getAllChildren(Collections.singleton(vo.getNodeId()), childrenList);
+            childrenList.add(wbsTreeContract);
+            Set<Long> nodeIds = childrenList.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toSet());
             this.remove(Wrappers.<ContractCollectFolder>lambdaQuery().eq(ContractCollectFolder::getParentId, node.getParentId())
-                    .eq(ContractCollectFolder::getType, 1).eq(ContractCollectFolder::getContractId, vo.getContractId()).likeRight(ContractCollectFolder::getNodeAncestors, node.getNodeAncestors()));
+                    .eq(ContractCollectFolder::getType, 1).eq(ContractCollectFolder::getContractId, vo.getContractId()).in(ContractCollectFolder::getNodeId, nodeIds));
         } else if (vo.getType() == 1) {
             ContractCollectFolder collectFolder = this.getById(vo.getId());
             if (collectFolder == null) {
@@ -149,9 +153,7 @@ public class ContractCollectFolderServiceImpl extends ServiceImpl<ContractCollec
                     node1.setContractId(vo.getContractId());
                     node1.setType(1);
                     node1.setCreateUser(AuthUtil.getUserId());
-                    node1.setNodeAncestors(contract.getAncestorsPId() + "," + contract.getPKeyId());
                     node1.setParentId(vo.getId());
-                    node1.setNodeParentId(contract.getPId() == null ? 0 : contract.getPId());
                     nodes.add(node1);
                 }
                 return this.saveBatch(nodes);

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

@@ -1603,7 +1603,8 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             return R.fail(200, "合同段不存在");
         }
         Set<String> syncPKeyIds = getSyncFlagIds(contractId, tableOwner);
-        List<ContractCollectFolder> contractCollectNodes = jdbcTemplate.query("select node_id, node_ancestors from m_contract_collect_folder where type = 1 and parent_id = " + folderId, new BeanPropertyRowMapper<>(ContractCollectFolder.class));
+        List<ContractCollectFolder> contractCollectNodes = jdbcTemplate.query("select node_id, ifnull((select ancestors_p_id from m_wbs_tree_contract where p_key_id = a.node_id), (select ancestors from m_wbs_tree_contract_statistics where id = a.node_id)) as nodeAncestors " +
+                "from m_contract_collect_folder a where type = 1 and parent_id = " + folderId, new BeanPropertyRowMapper<>(ContractCollectFolder.class));
         if (!contractCollectNodes.isEmpty()) {
             Set<Long> pKeyIds = new LinkedHashSet<>();
             Map<Long, String> collectMap = new HashMap<>();
@@ -1716,7 +1717,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             return R.fail(200, "合同段不存在");
         }
         Set<String> syncPKeyIds = getSyncFlagIds(contractId, tableOwner);
-        List<ContractCollectFolder> contractCollectNodes = jdbcTemplate.query("select node_id, node_ancestors from m_contract_collect_folder a where type = 1 and parent_id = " + folderId
+        List<ContractCollectFolder> contractCollectNodes = jdbcTemplate.query("select node_id, ifnull((select ancestors_p_id from m_wbs_tree_contract where p_key_id = a.node_id), (select ancestors from m_wbs_tree_contract_statistics where id = a.node_id)) as nodeAncestors from m_contract_collect_folder a where type = 1 and parent_id = " + folderId
                         + " and EXISTS (SELECT 1 from m_wbs_tree_contract where p_key_id = a.node_id and full_name like '%" + queryValue + "%')",
                 new BeanPropertyRowMapper<>(ContractCollectFolder.class));
         if (!contractCollectNodes.isEmpty()) {