Răsfoiți Sursa

节点参数:同步;查重

yangyj 2 ani în urmă
părinte
comite
0459ca621e

+ 13 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -57,6 +57,7 @@ import java.sql.Types;
 import java.time.LocalDateTime;
 import java.io.*;
 import java.util.*;
+import java.util.function.BinaryOperator;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -925,8 +926,15 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         "from m_wbs_param a join m_wbs_tree_private b on a.node_id = b.p_key_id   where  b.project_id in(?) and b.p_key_id in("+sourceNodeIds.stream().map(Object::toString).collect(Collectors.joining(","))+") and a.is_deleted=0  and a.type=1 ",  Long.parseLong(sourceRootNode.getProjectId()));
                 List<Map<String, Object>> distListMap = this.jdbcTemplate.queryForList("select a.id,a.name,a.k,a.v,a.remark,a.node_id nodeId ,b.id privateId,a.update_time updateTime  " +
                         "from m_wbs_param a join m_wbs_tree_private b on a.node_id = b.p_key_id   where  b.project_id in(?) and b.p_key_id in("+distNodeIds.stream().map(Object::toString).collect(Collectors.joining(","))+") and a.is_deleted=0  and a.type=1 ", Long.parseLong(projectId));
-                Map<String, Map<String, Object>> sourceMap = sourceListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m));
-                Map<String, Map<String, Object>> distMap = distListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m));
+
+                /*存在多个同名参数;保留日期最新那个参数*/
+                BinaryOperator<Map<String,Object>> mapBinaryOperator= (m1, m2) -> {
+                    LocalDateTime sldt = ((Timestamp)m1.get("updateTime")).toLocalDateTime();
+                    LocalDateTime tldt = ((Timestamp)m2.get("updateTime")).toLocalDateTime();
+                    return sldt.isAfter(tldt)?m1:m2;
+                };
+                Map<String, Map<String, Object>> sourceMap = sourceListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m,mapBinaryOperator));
+                Map<String, Map<String, Object>> distMap = distListMap.stream().collect(Collectors.toMap(m -> m.get("privateId").toString() + m.get("k"), m -> m,mapBinaryOperator));
                 /*比较的结果*/
                 Map<String, Map<String, Object>> updateMap = new HashMap<>();
                 Map<String, Map<String, Object>> insertMap = new HashMap<>();
@@ -936,7 +944,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         Map<String, Object> u = distMap.get(k);
                         String t = Func.toStr(u.get("v"));
                         if (!s.equals(t)) {
-
                             LocalDateTime sldt = ((Timestamp)v.get("updateTime")).toLocalDateTime();
                             LocalDateTime tldt = ((Timestamp)u.get("updateTime")).toLocalDateTime();
                             /*假如内容不一样,且模版最后更新时间更晚,则覆盖*/
@@ -1036,6 +1043,9 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return false;
     }
 
+
+
+
     @Override
     public R<String> syncPrivateProjectFormula(Long projectId, Long pKeyId) {
         if (projectId != null && pKeyId != null) {