diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java index 335a968..bdca6ed 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/utils/DataLogTools.java @@ -27,6 +27,8 @@ import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collector; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; @@ -723,6 +725,27 @@ public class DataLogTools { return null; } + /** + * @Description: 判断是否有子表数据日志 + * @param item + * @param pidMap + * @return boolean 返回类型 + */ + private static boolean hasChild(DataChangeLog item,Map> pidMap) { + if(!pidMap.containsKey(item.getId())) { + return false; + } + boolean flag = false; + List childs = pidMap.get(item.getId()); + for (DataChangeLog child : childs) { + if(child.hasFieldChanges() || hasChild(child,pidMap)) { + flag = true; + break; + } + } + return flag; + } + /** * @Description: 保存数据日志 @@ -734,20 +757,29 @@ public class DataLogTools { initTable(tableName); String sql = parseSql(SQL_INSERT, tableName); List> batchParams = CollectionUtils.newArrayList(); - for (DataChangeLog log : logs) { + Map> pidMap = logs.stream().collect(Collectors.groupingBy(DataChangeLog::getPid)); + + + + for (DataChangeLog item : logs) { + //没有改变的属性,且没有子表修改时跳过 + if(!item.hasFieldChanges() && !hasChild(item, pidMap)) { + continue; + } + List params = CollectionUtils.newArrayList(); - params.add(JdbcParam.of(Types.VARCHAR,String.class, log.getId())); - params.add(JdbcParam.of(Types.VARCHAR,String.class, log.getFlowId())); - params.add(JdbcParam.of(Types.VARCHAR,String.class, log.getPid())); - params.add(JdbcParam.of(Types.VARCHAR,String.class, log.getEntityClassName())); - params.add(JdbcParam.of(Types.VARCHAR,String.class, log.getBusName())); - params.add(JdbcParam.of(Types.BIGINT,long.class, log.getEntityId())); - params.add(JdbcParam.of(Types.VARCHAR,String.class,JSON.toJSONString(log.getFieldChanges()))); - params.add(JdbcParam.of(Types.VARCHAR,String.class,log.getOperationType().name())); - params.add(JdbcParam.of(Types.VARCHAR,long.class,log.getOperatorId())); - params.add(JdbcParam.of(Types.VARCHAR,String.class,log.getOperatorName())); - params.add(JdbcParam.of(Types.TIMESTAMP,Timestamp.class,log.getOperationTime())); - params.add(JdbcParam.of(Types.VARCHAR,String.class,log.getOperationIp())); + params.add(JdbcParam.of(Types.VARCHAR,String.class, item.getId())); + params.add(JdbcParam.of(Types.VARCHAR,String.class, item.getFlowId())); + params.add(JdbcParam.of(Types.VARCHAR,String.class, item.getPid())); + params.add(JdbcParam.of(Types.VARCHAR,String.class, item.getEntityClassName())); + params.add(JdbcParam.of(Types.VARCHAR,String.class, item.getBusName())); + params.add(JdbcParam.of(Types.BIGINT,long.class, item.getEntityId())); + params.add(JdbcParam.of(Types.VARCHAR,String.class,JSON.toJSONString(item.getFieldChanges()))); + params.add(JdbcParam.of(Types.VARCHAR,String.class,item.getOperationType().name())); + params.add(JdbcParam.of(Types.VARCHAR,long.class,item.getOperatorId())); + params.add(JdbcParam.of(Types.VARCHAR,String.class,item.getOperatorName())); + params.add(JdbcParam.of(Types.TIMESTAMP,Timestamp.class,item.getOperationTime())); + params.add(JdbcParam.of(Types.VARCHAR,String.class,item.getOperationIp())); batchParams.add(params); } executeBatch(sql, batchParams); diff --git a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml index 656ae61..b7c7902 100644 --- a/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml +++ b/itc-pcitc-mdm/itc-pcitc-mdm-start/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ spring: main: allow-bean-definition-overriding: true profiles: - active: remote + active: dev cloud: nacos: #nacos监控 config: