---修改数据日志修改记录逻辑

This commit is contained in:
2025-10-29 09:04:46 +08:00
parent f1e70966b7
commit e2f5e6e37d
2 changed files with 46 additions and 14 deletions

View File

@ -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<String, List<DataChangeLog>> pidMap) {
if(!pidMap.containsKey(item.getId())) {
return false;
}
boolean flag = false;
List<DataChangeLog> 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<List<JdbcParam>> batchParams = CollectionUtils.newArrayList();
for (DataChangeLog log : logs) {
Map<String, List<DataChangeLog>> pidMap = logs.stream().collect(Collectors.groupingBy(DataChangeLog::getPid));
for (DataChangeLog item : logs) {
//没有改变的属性,且没有子表修改时跳过
if(!item.hasFieldChanges() && !hasChild(item, pidMap)) {
continue;
}
List<JdbcParam> 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);

View File

@ -7,7 +7,7 @@ spring:
main:
allow-bean-definition-overriding: true
profiles:
active: remote
active: dev
cloud:
nacos: #nacos监控
config: