Explorar el Código

合同段树搜索BUG

liuyc hace 2 años
padre
commit
b68a0b694f

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

@@ -2,8 +2,8 @@ package org.springblade.manager.feign;
 
 import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.entity.WbsTreeContract;
-import org.springblade.manager.vo.WbsTreeContractTreeVO;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -131,7 +131,7 @@ public interface WbsTreeContractClient {
      * @param contractId
      * @return
      */
-    @GetMapping(API_PREFIX +"/selectAllByContractId")
-    List<WbsTreeContract> selectAllByContractId(@RequestParam String contractId);
+    @GetMapping(API_PREFIX + "/selectContractTreeAll")
+    List<WbsTreeContract> selectContractTreeAll(@RequestParam String contractId);
 
 }

+ 64 - 17
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -41,6 +41,7 @@ import org.springblade.manager.feign.ProjectClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.feign.WbsTreePrivateClient;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
 import org.springblade.system.entity.DictBiz;
@@ -163,18 +164,44 @@ public class InformationWriteQueryController extends BladeController {
                 List<WbsTreeContractTreeVOS> sgChildNodeList = new ArrayList<>();
 
                 for (ContractRelationJlyz jlkz : jlyzList) {
-                    List<WbsTreeContract> queryValueList = this.wbsTreeContractClient.selectQueryValueLikeNodeName(queryValue, jlkz.getContractIdSg().toString());
-                    if (queryValueList != null && queryValueList.size() > 0) {
+                    //List<WbsTreeContract> queryValueList = this.wbsTreeContractClient.selectQueryValueLikeNodeName(queryValue, jlkz.getContractIdSg().toString());
+
+                    List<WbsTreeContract> wbsTreeContracts = this.wbsTreeContractClient.selectContractTreeAll(jlkz.getContractIdSg().toString());
+                    List<WbsTreeContract> queryValueList = wbsTreeContracts.stream().filter(f -> f.getNodeName().contains(queryValue)).collect(Collectors.toList());
+
+                    if (queryValueList.size() > 0) {
                         //查询与当前节点相关联的数据
                         List<WbsTreeContractTreeVOS> associatedVONodeList = new ArrayList<>();
-                        List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(queryValueList.stream().map(WbsTreeContract::getId).distinct().collect(Collectors.toList())), String.class);
-                        //查询相关联的数据
-                        List<WbsTreeContract> associatedList = this.wbsTreeContractClient.selectQueryCurrentNodeByAncestors(ids, jlkz.getContractIdSg().toString());
-                        if (associatedList != null) {
-                            queryValueList.addAll(associatedList);
+
+                        List<String> ancestorsAll = queryValueList.stream().map(WbsTreeContract::getAncestors).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+
+                        //获取父级节点id
+                        Set<String> parentIdsSet = new HashSet<>();
+                        for (String ancestors : ancestorsAll) {
+                            List<String> parentIds = Func.toStrList(ancestors);
+                            parentIdsSet.addAll(parentIds);
+                        }
+
+                        //添加父级节点
+                        for (WbsTreeContract wbsTreeContract : wbsTreeContracts) {
+                            for (String parentId : parentIdsSet) {
+                                if (wbsTreeContract.getId().equals(Long.parseLong(parentId))) {
+                                    queryValueList.add(wbsTreeContract);
+                                }
+                                if (wbsTreeContract.getParentId() == 0L) {
+                                    queryValueList.add(wbsTreeContract);
+                                }
+                            }
                         }
+
+                        //根据id、nodeName去重
+                        List<WbsTreeContract> resultNodeData = queryValueList.stream().collect(
+                                Collectors.collectingAndThen(
+                                        Collectors.toCollection(() -> new TreeSet<>(
+                                                Comparator.comparing(o -> o.getId() + ";" + o.getNodeName()))), ArrayList::new));
+
                         //处理参数
-                        this.queryContractTree(associatedVONodeList, queryValueList, 2);
+                        this.queryContractTree(associatedVONodeList, resultNodeData, 2);
 
                         if (associatedVONodeList.size() > 0) {
                             List<WbsTreeContractTreeVOS> list = ForestNodeMerger.merge(associatedVONodeList);
@@ -195,21 +222,41 @@ public class InformationWriteQueryController extends BladeController {
         } else if (contract.getContractType().equals(1)) {
             //施工,直接查询
             //获取当前合同段下所有的数据
-            //List<WbsTreeContract> queryValueList = this.wbsTreeContractClient.selectQueryValueLikeNodeName(queryValue, contractId);
-            List<WbsTreeContract> wbsTreeContracts = this.wbsTreeContractClient.selectAllByContractId(contractId);
+            List<WbsTreeContract> wbsTreeContracts = this.wbsTreeContractClient.selectContractTreeAll(contractId);
             List<WbsTreeContract> queryValueList = wbsTreeContracts.stream().filter(f -> f.getNodeName().contains(queryValue)).collect(Collectors.toList());
 
             if (queryValueList.size() > 0) {
                 //查询与当前节点相关联的数据
                 List<WbsTreeContractTreeVOS> associatedVONodeList = new ArrayList<>();
-                List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(queryValueList.stream().map(WbsTreeContract::getId).distinct().collect(Collectors.toList())), String.class);
-                //查询相关联的数据
-                List<WbsTreeContract> associatedList = this.wbsTreeContractClient.selectQueryCurrentNodeByAncestors(ids, contractId);
-                if (associatedList != null && associatedList.size() > 0) {
-                    queryValueList.addAll(associatedList);
+
+                List<String> ancestorsAll = queryValueList.stream().map(WbsTreeContract::getAncestors).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+
+                //获取父级节点id
+                Set<String> parentIdsSet = new HashSet<>();
+                for (String ancestors : ancestorsAll) {
+                    List<String> parentIds = Func.toStrList(ancestors);
+                    parentIdsSet.addAll(parentIds);
+                }
+
+                //添加父级节点
+                for (WbsTreeContract wbsTreeContract : wbsTreeContracts) {
+                    for (String parentId : parentIdsSet) {
+                        if (wbsTreeContract.getId().equals(Long.parseLong(parentId))) {
+                            queryValueList.add(wbsTreeContract);
+                        }
+                        if (wbsTreeContract.getParentId() == 0L) {
+                            queryValueList.add(wbsTreeContract);
+                        }
+                    }
                 }
-                //处理参数
-                this.queryContractTree(associatedVONodeList, queryValueList, 1);
+
+                //根据id、nodeName去重
+                List<WbsTreeContract> resultNodeData = queryValueList.stream().collect(
+                        Collectors.collectingAndThen(
+                                Collectors.toCollection(() -> new TreeSet<>(
+                                        Comparator.comparing(o -> o.getId() + ";" + o.getNodeName()))), ArrayList::new));
+
+                this.queryContractTree(associatedVONodeList, resultNodeData, 1);
 
                 if (associatedVONodeList.size() > 0) {
                     List<WbsTreeContractTreeVOS> list = ForestNodeMerger.merge(associatedVONodeList);

+ 12 - 11
blade-service/blade-manager/pom.xml

@@ -169,17 +169,18 @@
                 </configuration>
             </plugin>
             <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <configuration>
-                <source>${java.version}</source>
-                <target>${java.version}</target>
-                <encoding>${project.build.sourceEncoding}</encoding>
-                <compilerArguments>
-                    <bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/lib/jsse.jar</bootclasspath>
-                </compilerArguments>
-            </configuration>
-        </plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <compilerArguments>
+                        <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar;${java.home}/lib/jsse.jar
+                        </bootclasspath>
+                    </compilerArguments>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>

+ 2 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -1088,7 +1088,7 @@ public class CustomFunction {
 
 
 
-	public static void main(String[] args) {
+	/*public static void main(String[] args) {
 		DateTime a =DateTime.now();
 		DateTime b =new DateTime("2022-12-10 10:10:10");
 		DateTime c =new DateTime("2022-12-11 10:10:10");
@@ -1099,7 +1099,7 @@ public class CustomFunction {
 //		list.add(b);
 //		list.add(c);
 //		System.out.println(dcp(list, Comparator.reverseOrder()));
-	}
+	}*/
 
 	public static String dateToStr(Date date, String formatter) {
 		String value = null;

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

@@ -17,7 +17,7 @@ import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.vo.WbsTreeContractTreeVO;
 import org.springblade.manager.vo.WbsTreeContractTreeVO3;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
-import org.springblade.system.cache.ParamCache;
+import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.feign.ISysClient;
@@ -191,8 +191,8 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
     }
 
     @Override
-    public List<WbsTreeContract> selectAllByContractId(String contractId) {
-        return this.wbsTreeContractService.selectAllByContractId(Long.parseLong(contractId));
+    public List<WbsTreeContract> selectContractTreeAll(String contractId) {
+        return this.wbsTreeContractService.selectContractTreeAll(Long.parseLong(contractId));
     }
 
     @Override

+ 5 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java

@@ -5,7 +5,6 @@ import org.springblade.manager.dto.FindAllUserByConditionDTO;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.entity.SaveUserInfoByProject;
-import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -51,11 +50,12 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
                                      @Param("wbsType") Integer wbsType,
                                      @Param("parentId") String parentId);
 
-    List<WbsTreeContractVO> tree2(@Param("wbsId") String wbsId,
-                                  @Param("projectId") String projectId,
-                                  @Param("contractId") String contractId,
+    List<WbsTreeContractVO> tree2(@Param("wbsId") Long wbsId,
+                                  @Param("projectId") Long projectId,
+                                  @Param("contractId") Long contractId,
                                   @Param("wbsType") Integer wbsType,
-                                  @Param("parentId") String parentId);
+                                  @Param("parentId") String parentId,
+                                  @Param("queryValue") String queryValue);
 
     List<WbsTreeContractVO> tree3(@Param("wbsId") String wbsId,
                                   @Param("projectId") String projectId,

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

@@ -294,6 +294,9 @@
         <if test="parentId != null and parentId != ''">
             and parent_id = #{parentId}
         </if>
+        <if test="queryValue != null and queryValue != ''">
+            and (node_name like concat('%', #{queryValue}, '%') or full_name like concat('%', #{queryValue}, '%'))
+        </if>
         /*不查询客户端新增或者复制的节点 old_id = null*/
         AND old_id is null
         ORDER BY d.sort

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

@@ -46,6 +46,6 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     boolean concealedWorksNode(String pKeyId, Integer type);
 
-    List<WbsTreeContract> selectAllByContractId(Long contractId);
+    List<WbsTreeContract> selectContractTreeAll(Long contractId);
 
 }

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

@@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
-import org.apache.ibatis.annotations.Param;
-import org.checkerframework.checker.units.qual.C;
 import org.springblade.common.utils.BaiduApiUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
@@ -30,7 +28,6 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -123,7 +120,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
 
     @Override
     public List<WbsTreeContractVO> tree(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(wbsId, projectId, contractId, null, null);
+        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId), null, null,null);
         return buildWbsTreeByStream(wbsTreeContractVOS);
     }
 

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

@@ -416,8 +416,8 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
     }
 
     @Override
-    public List<WbsTreeContract> selectAllByContractId(Long contractId) {
-        return baseMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getContractId, contractId));
+    public List<WbsTreeContract> selectContractTreeAll(Long contractId) {
+        return baseMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getContractId, contractId).eq(WbsTreeContract::getType, 1).eq(WbsTreeContract::getStatus, 1));
     }
 
     @Override