---数据日志返回结构完成
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user