From d25e8023e5367e555b9c70daecdea55a487b889f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=A6=8F=E8=B4=A2?= <1471584931@qq.com> Date: Wed, 22 Oct 2025 14:47:05 +0800 Subject: [PATCH] =?UTF-8?q?---=E6=95=B0=E6=8D=AE=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E7=BB=93=E6=9E=84=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/datalog/vo/DataChangeLogVo.java | 10 ++++ .../java/com/pictc/utils/DataLogTools.java | 55 +++++++++++++++++-- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogVo.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogVo.java index fd99949..2d99e02 100644 --- a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogVo.java +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogVo.java @@ -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 children; + + public void addChild(DataChangeLogVo vo) { + if(children==null) children = Lists.newArrayList(); + children.add(vo); + } + } 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 b6e7a1e..de3907e 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 @@ -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> entry : flowGroup.entrySet()) { Map> 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() { + @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> pidMap){ + List 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 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; }