---数据日志返回结构完成

This commit is contained in:
2025-10-22 14:47:05 +08:00
parent 9d51ea1557
commit d25e8023e5
2 changed files with 60 additions and 5 deletions

View File

@ -2,6 +2,8 @@ package com.xjrsoft.module.datalog.vo;
import java.util.List;
import org.apache.commons.compress.utils.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -65,9 +67,17 @@ public class DataChangeLogVo {
@ApiModelProperty("操作时间")
private String operationTime;
private long sort;
@ApiModelProperty("子对象")
private List<DataChangeLogVo> children;
public void addChild(DataChangeLogVo vo) {
if(children==null) children = Lists.newArrayList();
children.add(vo);
}
}

View File

@ -15,7 +15,11 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@ -855,27 +859,68 @@ public class DataLogTools {
for (Entry<String, List<DataChangeLog>> entry : flowGroup.entrySet()) {
Map<String, List<DataChangeLog>> pidMap = entry.getValue().stream().collect(Collectors.groupingBy(DataChangeLog::getPid));
DataChangeLog root = pidMap.get("#").get(0);
DataChangeLogVo vo = new DataChangeLogVo();
DataChangeLogVo vo = toVo(root);
addChildVo(root,vo,pidMap);
result.add(vo);
}
}
Collections.sort(result,new Comparator<DataChangeLogVo>() {
@Override
public int compare(DataChangeLogVo o1, DataChangeLogVo o2) {
return Long.valueOf(o2.getSort()-o1.getSort()).intValue();
}
});
return result;
}
private static void addChildVo(DataChangeLog current,DataChangeLogVo parentVo,Map<String, List<DataChangeLog>> pidMap){
List<DataChangeLog> childs = pidMap.get(current.getId());
if(CollectionUtils.isNotEmpty(childs)) {
for (DataChangeLog item : childs) {
DataChangeLogVo logVo = toVo(item,parentVo.getId());
parentVo.addChild(logVo);
addChildVo(item, logVo, pidMap);
}
}
}
private static DataChangeLogVo toVo(DataChangeLog obj){
return toVo(obj, obj.getPid());
}
private static long toMills(LocalDateTime datetime) {
ZonedDateTime systemZoned = datetime.atZone(ZoneId.systemDefault());
return systemZoned.toInstant().toEpochMilli();
}
private static DataChangeLogVo toVo(DataChangeLog obj,String pid){
DataChangeLogVo vo = new DataChangeLogVo();
vo.setId(obj.getId());
vo.setPid(obj.getPid());
vo.setPid(pid);
vo.setTableName(obj.getBusName());
vo.setOperationType(obj.getOperationType());
vo.setOperatorName(obj.getOperatorName());
vo.setOperationIp(obj.getOperationIp());
vo.setOperationTime(DateUtils.format(obj.getOperationTime()));
vo.setSort(toMills(obj.getOperationTime()));
List<FieldChange> fieldChanges = obj.getFieldChanges();
for (FieldChange fieldChange : fieldChanges) {
DataChangeLogVo fvo = new DataChangeLogVo();
fvo.setId(obj.getId()+"_"+fieldChange.getField());
fvo.setPid(obj.getId());
fvo.setName(fvo.getName());
fvo.setOldValue(fieldChange.getOldValue());
fvo.setNewValue(fieldChange.getNewValue());
fvo.setOperationType(obj.getOperationType());
fvo.setOperatorName(obj.getOperatorName());
fvo.setOperationIp(obj.getOperationIp());
fvo.setOperationTime(DateUtils.format(obj.getOperationTime()));
vo.addChild(fvo);
}
return vo;
}