|
@@ -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) {
|