Преглед на файлове

Merge branch 'refs/heads/feature-sync-lihb-20250813' into test-merge

# Conflicts:
#	blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeAllVO.java
#	blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
LHB преди 1 месец
родител
ревизия
a9e757fc15

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

@@ -44,6 +44,9 @@ public class WbsTreeContractTreeAllVO implements INode<WbsTreeContractTreeAllVO>
     @ApiModelProperty(value = "是否完成日期填写 1是 2否")
     private Integer dateIsComplete;
 
+    @ApiModelProperty(value = "是否为自定义新增节点 1=是")
+    private Integer isSync;
+
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private List<WbsTreeContractTreeAllVO> children;
 

+ 27 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -19,6 +19,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.manager.bean.NodeVO;
 import org.springblade.manager.dto.FindAllUserByConditionDTO;
@@ -34,6 +35,7 @@ import org.springblade.system.user.feign.IUserClient;
 import org.springblade.system.user.vo.UserContractInfoVO;
 import org.springblade.system.user.vo.UserVO2;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -368,6 +370,21 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     public R<Object> getTreeNodeByValueAndContractId(String queryValue, String contractId, String tableOwner) {
         if (StringUtils.isNotEmpty(queryValue) && StringUtils.isNotEmpty(contractId)) {
             ContractInfo contractInfo = contractInfoMapper.selectById(contractId);
+
+            //查询wbs同步信息
+            String contractExtendSql = "select ancestors from m_wbs_tree_contract_extend where type = " + tableOwner + " and is_sync = 1 and is_deleted = 0 and contract_id = " + contractId;
+            Set<String> syncPKeyIds = new HashSet<>();
+            List<String> strings = null;
+            try {
+                strings = jdbcTemplate.queryForList(contractExtendSql, String.class);
+            } catch (DataAccessException e) {
+                e.printStackTrace();
+                //TODO 暂时忽略错误
+            }
+            if(CollectionUtil.isNotEmpty(strings)){
+                strings.stream().filter(com.alibaba.nacos.common.utils.StringUtils::isNotEmpty).forEach(f -> syncPKeyIds.addAll(Arrays.asList(f.split(","))));
+            }
+
             if (contractInfo != null) {
                 /*质检施工合同段*/
                 if (contractInfo.getContractType().equals(1)) {
@@ -491,6 +508,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
                             List<WbsTreeContractStatistics> wbsTreeContractStatisticsList = jdbcTemplate.query("select id, leaf_num, fill_num, approve_num, complete_num,jl_fill_num, jl_approve_num, jl_complete_num from m_wbs_tree_contract_statistics where id in (" + pKeyIds + ")",
                                     new BeanPropertyRowMapper<>(WbsTreeContractStatistics.class));
                             Map<Long, WbsTreeContractStatistics> wbsTreeContractStatisticsMap = wbsTreeContractStatisticsList.stream().collect(Collectors.toMap(WbsTreeContractStatistics::getId, item -> item));
+                            List<String> finalStrings = strings;
                             List<WbsTreeContractTreeAllVO> wbsTreeContractTreeAllVOS = wbsTreeContractList.stream()
                                     .map(node -> {
                                         WbsTreeContractTreeAllVO vo = BeanUtil.copyProperties(node, WbsTreeContractTreeAllVO.class);
@@ -519,6 +537,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
 //                                                    vo.setColorStatus(lowestNode.getColorStatus());
 //                                                }
 //                                            }
+                                            if(CollectionUtil.isNotEmpty(finalStrings)){
+                                                //判断是否展示同步标识
+                                                vo.setIsSync(finalStrings.contains(vo.getPrimaryKeyId()) ? 1 : 0);
+                                            }
                                         }
                                         return vo;
                                     }).collect(Collectors.toList());
@@ -652,6 +674,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
 //                                        countMap.put(key, 1L);
 //                                    }
 //                                }
+                                List<String> finalStrings = strings;
                                 String pKeyIds = wbsTreeContractList.stream().map(item -> item.getPKeyId() + "").collect(Collectors.joining(","));
                                 List<WbsTreeContractStatistics> wbsTreeContractStatisticsList = jdbcTemplate.query("select id, leaf_num, fill_num, approve_num, complete_num,jl_fill_num, jl_approve_num, jl_complete_num from m_wbs_tree_contract_statistics where id in (" + pKeyIds + ")",
                                         new BeanPropertyRowMapper<>(WbsTreeContractStatistics.class));
@@ -684,6 +707,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
 //                                                        vo.setColorStatus(lowestNode.getColorStatus());
 //                                                    }
 //                                                }
+                                                if(CollectionUtil.isNotEmpty(finalStrings)){
+                                                    //判断是否展示同步标识
+                                                    vo.setIsSync(finalStrings.contains(vo.getPrimaryKeyId()) ? 1 : 0);
+                                                }
                                             }
                                             return vo;
                                         }).collect(Collectors.toList());

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

@@ -613,25 +613,12 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
 //        if(info!=null){
 //            resultTabs.forEach(tab->tab.setFileName(info.getName()));
 //        }
-
-        if (Optional.ofNullable(wbsTreeContract.getIsUseSort()).orElse(0) == 0) {
-            //表单排序
-            if (resultTabs.size() > 0) {
-                sortTabsByIsTypePrivatePid(resultTabs);
-                // 使用自定义 Comparator 进行排序
-                resultTabs.sort(new WbsTreeContractComparator());
-               List<AppWbsTreeContractVO> resultTabsToCopy = this.sortTabs(resultTabs, "__"); //复制表排序
-                return this.sortTabs(resultTabsToCopy, "_PL_"); //频率表排序
-            }
-        }
-        // 使用自定义 Comparator 进行排序
-        resultTabs.sort(new WbsTreeContractComparator());
         //同步标识
         if (CollectionUtil.isNotEmpty(resultTabs)) {
             List<Long> collect1 = resultTabs.stream().map(WbsTreeContract::getPKeyId).collect(Collectors.toList());
             List<Long> longs = null;
             try {
-                longs = jdbcTemplate.queryForList("select * from m_wbs_tree_contract_extend where p_key_id in (" + StringUtils.join(collect1, ",") + ")", Long.class);
+                longs = jdbcTemplate.queryForList("select p_key_id from m_wbs_tree_contract_extend where p_key_id in (" + StringUtils.join(collect1, ",") + ")", Long.class);
             } catch (DataAccessException e) {
                 //TODO 暂时忽略异常,避免表不存在报错
                 e.printStackTrace();
@@ -643,6 +630,19 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 });
             }
         }
+
+        if (Optional.ofNullable(wbsTreeContract.getIsUseSort()).orElse(0) == 0) {
+            //表单排序
+            if (resultTabs.size() > 0) {
+                sortTabsByIsTypePrivatePid(resultTabs);
+                // 使用自定义 Comparator 进行排序
+                resultTabs.sort(new WbsTreeContractComparator());
+               List<AppWbsTreeContractVO> resultTabsToCopy = this.sortTabs(resultTabs, "__"); //复制表排序
+                return this.sortTabs(resultTabsToCopy, "_PL_"); //频率表排序
+            }
+        }
+        // 使用自定义 Comparator 进行排序
+        resultTabs.sort(new WbsTreeContractComparator());
         return resultTabs;
     }
 

+ 9 - 3
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -761,8 +761,14 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         if (cn.hutool.core.util.ObjectUtil.isNotEmpty(contractId)) {
             ContractInfo contractInfo = jdbcTemplate.query("SELECT contract_name,contract_type FROM m_contract_info WHERE id = " + contractId,
                     new BeanPropertyRowMapper<>(ContractInfo.class)).stream().findAny().orElse(null);
-            String contractExtendSql = "select ancestors from m_wbs_tree_contract_extend where type = " + tableOwner + " and is_sync = 1 and is_deleted = 0 and ancestors like concat( " + id + ",'%')";
-            List<String> ids = new ArrayList<>();
+
+            //查询当前节点的祖级路径和pkid
+            String ancestors = jdbcTemplate.query("SELECT concat(ancestors_p_id,',',p_key_id) FROM m_wbs_tree_contract WHERE contract_id = " + contractId
+                            + "and id = " + id,
+                    new BeanPropertyRowMapper<>(String.class)).stream().findAny().orElse(null);
+
+            String contractExtendSql = "select ancestors from m_wbs_tree_contract_extend where type = " + tableOwner + " and is_sync = 1 and is_deleted = 0 and ancestors like concat( " + ancestors + ",'%')";
+            Set<String> ids = new HashSet<>();
             List<String> strings = null;
             try {
                 strings = jdbcTemplate.queryForList(contractExtendSql, String.class);
@@ -771,7 +777,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
                 //TODO 暂时忽略错误
             }
             if(CollectionUtil.isNotEmpty(strings)){
-                strings.forEach(f -> ids.addAll(Arrays.asList(f.split(","))));
+                strings.stream().filter(StringUtils::isNotEmpty).forEach(f -> ids.addAll(Arrays.asList(f.split(","))));
             }
 
             if (contractInfo != null) {