From ba9495c1f7ff6da44dd990ced8ea051e8509f055 Mon Sep 17 00:00:00 2001
From: yutao <3082046177@qq.com>
Date: Mon, 14 Jul 2025 18:00:15 +0800
Subject: [PATCH] init
---
.idea/mybatisx/templates.xml | 65 +++++++++++++++
.../com/ediagnosis/cdr/CdrApplication.java | 2 +
.../cdr/dao/DimDataSummaryRepository.java | 40 ++++++++++
.../entity/DimDataSummaryEntity.java} | 4 +-
.../cdr/dao/mapper/DimDataSummaryMapper.java | 15 ++++
.../ediagnosis/cdr/domain/DimDataSummary.java | 14 ++++
.../cdr/mapper/DimDataSummaryMapper.java | 14 ----
.../ediagnosis/cdr/util/JsonProcessor.java | 32 ++++----
.../com/ediagnosis/cdr/util/TimeUtil.java | 79 +++++++++++++++++++
.../generator/mapper/DimDataSummaryMapper.xml | 4 +-
.../cdr/util/JsonProcessorTest.java | 33 ++++++++
.../java/com/ediagnosis/cdr/util/Person.java | 44 +++++++++++
.../com/ediagnosis/cdr/util/TimeUtilTest.java | 47 +++++++++++
13 files changed, 361 insertions(+), 32 deletions(-)
create mode 100644 .idea/mybatisx/templates.xml
create mode 100644 src/main/java/com/ediagnosis/cdr/dao/DimDataSummaryRepository.java
rename src/main/java/com/ediagnosis/cdr/{entity/DimDataSummary.java => dao/entity/DimDataSummaryEntity.java} (95%)
create mode 100644 src/main/java/com/ediagnosis/cdr/dao/mapper/DimDataSummaryMapper.java
create mode 100644 src/main/java/com/ediagnosis/cdr/domain/DimDataSummary.java
delete mode 100644 src/main/java/com/ediagnosis/cdr/mapper/DimDataSummaryMapper.java
create mode 100644 src/main/java/com/ediagnosis/cdr/util/TimeUtil.java
create mode 100644 src/test/java/com/ediagnosis/cdr/util/JsonProcessorTest.java
create mode 100644 src/test/java/com/ediagnosis/cdr/util/Person.java
create mode 100644 src/test/java/com/ediagnosis/cdr/util/TimeUtilTest.java
diff --git a/.idea/mybatisx/templates.xml b/.idea/mybatisx/templates.xml
new file mode 100644
index 0000000..5952ae0
--- /dev/null
+++ b/.idea/mybatisx/templates.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/ediagnosis/cdr/CdrApplication.java b/src/main/java/com/ediagnosis/cdr/CdrApplication.java
index 64634ec..4ed68fa 100644
--- a/src/main/java/com/ediagnosis/cdr/CdrApplication.java
+++ b/src/main/java/com/ediagnosis/cdr/CdrApplication.java
@@ -1,9 +1,11 @@
package com.ediagnosis.cdr;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
+@MapperScan("com.ediagnosis.cdr.dao.mapper")
public class CdrApplication {
public static void main(String[] args) {
diff --git a/src/main/java/com/ediagnosis/cdr/dao/DimDataSummaryRepository.java b/src/main/java/com/ediagnosis/cdr/dao/DimDataSummaryRepository.java
new file mode 100644
index 0000000..d0f2152
--- /dev/null
+++ b/src/main/java/com/ediagnosis/cdr/dao/DimDataSummaryRepository.java
@@ -0,0 +1,40 @@
+package com.ediagnosis.cdr.dao;
+
+import com.ediagnosis.cdr.dao.entity.DimDataSummaryEntity;
+import com.ediagnosis.cdr.dao.mapper.DimDataSummaryMapper;
+import com.ediagnosis.cdr.domain.DimDataSummary;
+import com.ediagnosis.cdr.util.TimeUtil;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Optional;
+
+@Repository
+public class DimDataSummaryRepository {
+
+ private final DimDataSummaryMapper dimDataSummaryMapper;
+
+ public DimDataSummaryRepository(DimDataSummaryMapper dimDataSummaryMapper) {
+ this.dimDataSummaryMapper = dimDataSummaryMapper;
+ }
+
+ public List getAllDimDataSummary() {
+ List entityList = dimDataSummaryMapper.selectAll();
+ return entityList.stream().map(this::convertToDimDataSummary).toList();
+ }
+
+
+ private DimDataSummary convertToDimDataSummary(DimDataSummaryEntity entity) {
+ Optional timeOptional = TimeUtil.toLocalDateTime(entity.getUpdateTime());
+
+ return new DimDataSummary(
+ entity.getName(),
+ entity.getCode(),
+ entity.getValue(),
+ timeOptional.orElse(null)
+ );
+ }
+
+
+}
diff --git a/src/main/java/com/ediagnosis/cdr/entity/DimDataSummary.java b/src/main/java/com/ediagnosis/cdr/dao/entity/DimDataSummaryEntity.java
similarity index 95%
rename from src/main/java/com/ediagnosis/cdr/entity/DimDataSummary.java
rename to src/main/java/com/ediagnosis/cdr/dao/entity/DimDataSummaryEntity.java
index 7a4d747..735f222 100644
--- a/src/main/java/com/ediagnosis/cdr/entity/DimDataSummary.java
+++ b/src/main/java/com/ediagnosis/cdr/dao/entity/DimDataSummaryEntity.java
@@ -1,4 +1,4 @@
-package com.ediagnosis.cdr.entity;
+package com.ediagnosis.cdr.dao.entity;
import com.mybatisflex.annotation.Id;
@@ -10,7 +10,7 @@ import com.mybatisflex.annotation.Table;
* @TableName dim_data_summary
*/
@Table(value ="dim_data_summary")
-public class DimDataSummary {
+public class DimDataSummaryEntity {
/**
*
*/
diff --git a/src/main/java/com/ediagnosis/cdr/dao/mapper/DimDataSummaryMapper.java b/src/main/java/com/ediagnosis/cdr/dao/mapper/DimDataSummaryMapper.java
new file mode 100644
index 0000000..4d8fb3d
--- /dev/null
+++ b/src/main/java/com/ediagnosis/cdr/dao/mapper/DimDataSummaryMapper.java
@@ -0,0 +1,15 @@
+package com.ediagnosis.cdr.dao.mapper;
+
+import com.ediagnosis.cdr.dao.entity.DimDataSummaryEntity;
+import com.mybatisflex.core.BaseMapper;
+import org.mybatis.spring.annotation.MapperScan;
+
+
+@MapperScan
+public interface DimDataSummaryMapper extends BaseMapper {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ediagnosis/cdr/domain/DimDataSummary.java b/src/main/java/com/ediagnosis/cdr/domain/DimDataSummary.java
new file mode 100644
index 0000000..36252f0
--- /dev/null
+++ b/src/main/java/com/ediagnosis/cdr/domain/DimDataSummary.java
@@ -0,0 +1,14 @@
+package com.ediagnosis.cdr.domain;
+
+import java.time.LocalDateTime;
+
+
+public record DimDataSummary(
+ String name,
+ String code,
+ String value,
+ LocalDateTime updateTime
+) {
+
+}
+
diff --git a/src/main/java/com/ediagnosis/cdr/mapper/DimDataSummaryMapper.java b/src/main/java/com/ediagnosis/cdr/mapper/DimDataSummaryMapper.java
deleted file mode 100644
index 9712b85..0000000
--- a/src/main/java/com/ediagnosis/cdr/mapper/DimDataSummaryMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.ediagnosis.cdr.mapper;
-
-import com.ediagnosis.cdr.entity.DimDataSummary;
-import com.mybatisflex.core.BaseMapper;
-
-
-
-public interface DimDataSummaryMapper extends BaseMapper {
-
-}
-
-
-
-
diff --git a/src/main/java/com/ediagnosis/cdr/util/JsonProcessor.java b/src/main/java/com/ediagnosis/cdr/util/JsonProcessor.java
index 3487758..bd065f2 100644
--- a/src/main/java/com/ediagnosis/cdr/util/JsonProcessor.java
+++ b/src/main/java/com/ediagnosis/cdr/util/JsonProcessor.java
@@ -2,34 +2,38 @@ package com.ediagnosis.cdr.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
-@Component
-public class JsonProcessor {
+import java.util.Optional;
- private final ObjectMapper objectMapper;
- public JsonProcessor(ObjectMapper objectMapper) {
- this.objectMapper = objectMapper;
- }
+public class JsonProcessor {
+ private static final ObjectMapper objectMapper = new ObjectMapper();
+ private static final Logger log = LoggerFactory.getLogger(JsonProcessor.class);
- public T toObject(String json, Class clazz) {
+
+ public static Optional toObject(String json, Class clazz) {
+ T value = null;
try {
- return objectMapper.readValue(json, clazz);
+ value = objectMapper.readValue(json, clazz);
} catch (Exception e) {
-// todo:打印日志
- throw new RuntimeException(e);
+ log.error("json to object error", e);
}
+ return Optional.ofNullable(value);
}
- public String toJson(Object object) {
+ public static Optional toJson(Object object) {
+ String value = "";
try {
- return objectMapper.writeValueAsString(object);
+ value = objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
-// todo:打印日志
- throw new RuntimeException(e);
+ log.error("object to json error", e);
+
}
+ return Optional.ofNullable(value);
}
}
diff --git a/src/main/java/com/ediagnosis/cdr/util/TimeUtil.java b/src/main/java/com/ediagnosis/cdr/util/TimeUtil.java
new file mode 100644
index 0000000..1bb07f6
--- /dev/null
+++ b/src/main/java/com/ediagnosis/cdr/util/TimeUtil.java
@@ -0,0 +1,79 @@
+package com.ediagnosis.cdr.util;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.time.DateTimeException;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+import java.time.temporal.Temporal;
+import java.util.Optional;
+
+public class TimeUtil {
+
+
+ private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ private static final Logger log = LoggerFactory.getLogger(TimeUtil.class);
+
+ public static Optional toLocalDateTime(String time) {
+ return parseTime(time, LocalDateTime.class, DATE_TIME_FORMATTER);
+ }
+
+ public static Optional toString(LocalDateTime time) {
+
+ return formatTime(time,DATE_TIME_FORMATTER);
+ }
+
+ public static Optional toLocalDate(String time) {
+ return parseTime(time, LocalDate.class, DATE_FORMATTER);
+
+ }
+
+ public static Optional toString(LocalDate time) {
+ return formatTime(time,DATE_FORMATTER);
+ }
+
+ private static Optional parseTime(String time, Class temporalClass, DateTimeFormatter formatter) {
+ try {
+ if (temporalClass.equals(LocalDateTime.class)) {
+ LocalDateTime dateTime = LocalDateTime.parse(time, formatter);
+ log.debug("time parse success:{}", dateTime);
+ return Optional.of(dateTime).map(temporalClass::cast);
+ } else if (temporalClass.equals(LocalDate.class)) {
+ LocalDate date = LocalDate.parse(time, formatter);
+ log.debug("time parse success:{}", date);
+ return Optional.of(date).map(temporalClass::cast);
+ } else {
+ log.error("Unsupported temporal class: {}", temporalClass.getName());
+ return Optional.empty();
+ }
+ } catch (DateTimeParseException e) {
+ log.error("time parse error", e);
+ return Optional.empty();
+ }
+ }
+
+ private static Optional formatTime(Temporal time, DateTimeFormatter formatter) {
+ try {
+ if(time instanceof LocalDateTime dateTime){
+ String format = dateTime.format(formatter);
+ log.debug("time format success:{}", format);
+ return Optional.of(format);
+ }else if(time instanceof LocalDate date){
+ String format = date.format(formatter);
+ log.debug("time format success:{}", format);
+ return Optional.of(format);
+ }else {
+ log.error("Unsupported temporal class: {}", time.getClass().getName());
+ return Optional.empty();
+ }
+ } catch (DateTimeException e){
+ log.error("time format error", e);
+ return Optional.empty();
+ }
+ }
+}
diff --git a/src/main/resources/generator/mapper/DimDataSummaryMapper.xml b/src/main/resources/generator/mapper/DimDataSummaryMapper.xml
index 2a03ed6..d16ef85 100644
--- a/src/main/resources/generator/mapper/DimDataSummaryMapper.xml
+++ b/src/main/resources/generator/mapper/DimDataSummaryMapper.xml
@@ -2,9 +2,9 @@
-
+
-
+
diff --git a/src/test/java/com/ediagnosis/cdr/util/JsonProcessorTest.java b/src/test/java/com/ediagnosis/cdr/util/JsonProcessorTest.java
new file mode 100644
index 0000000..ce92399
--- /dev/null
+++ b/src/test/java/com/ediagnosis/cdr/util/JsonProcessorTest.java
@@ -0,0 +1,33 @@
+package com.ediagnosis.cdr.util;
+
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.util.Assert;
+
+import java.util.Optional;
+
+
+@SpringBootTest
+class JsonProcessorTest {
+
+
+ private static final Person person=new Person("张三",18);
+
+ @Test
+ void toObject() {
+ String json = "{\"name\":\"张三\",\"age\":18}";
+ Optional personOptional = JsonProcessor.toObject(json, Person.class);
+ Assert.isTrue(personOptional.isPresent(), "转换结果不应为空");
+ Person tmpPerson = personOptional.get();
+ Assert.isTrue(person.equals(tmpPerson), "转换后的对象与预期不一致");
+ }
+
+ @Test
+ void toJson() {
+ Optional json = JsonProcessor.toJson(person);
+ Assert.isTrue(json.isPresent(), "转换结果不应为空");
+ Assert.isTrue(json.get().equals("{\"name\":\"张三\",\"age\":18}"), "转换结果与预期不一致");
+
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/com/ediagnosis/cdr/util/Person.java b/src/test/java/com/ediagnosis/cdr/util/Person.java
new file mode 100644
index 0000000..f6982e1
--- /dev/null
+++ b/src/test/java/com/ediagnosis/cdr/util/Person.java
@@ -0,0 +1,44 @@
+package com.ediagnosis.cdr.util;
+
+import java.util.Objects;
+
+public class Person {
+ private String name;
+ private int age;
+
+ public Person() {
+ }
+
+ public Person(String name, int age) {
+ this.name = name;
+ this.age = age;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof Person person)) return false;
+ return age == person.age && Objects.equals(name, person.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, age);
+ }
+}
diff --git a/src/test/java/com/ediagnosis/cdr/util/TimeUtilTest.java b/src/test/java/com/ediagnosis/cdr/util/TimeUtilTest.java
new file mode 100644
index 0000000..aec73ab
--- /dev/null
+++ b/src/test/java/com/ediagnosis/cdr/util/TimeUtilTest.java
@@ -0,0 +1,47 @@
+package com.ediagnosis.cdr.util;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.util.Assert;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Optional;
+
+
+@SpringBootTest
+class TimeUtilTest {
+
+ String time = "2021-01-01 00:00:00";
+ String date = "2021-01-01";
+ LocalDateTime localDateTime = LocalDateTime.of(2021, 1, 1, 0, 0, 0);
+ LocalDate localDate = LocalDate.of(2021, 1, 1);
+
+ @Test
+ void toLocalDateTime() {
+ Optional timeOptional = TimeUtil.toLocalDateTime(time);
+ Assert.isTrue(timeOptional.isPresent(), "时间不存在");
+ Assert.isTrue(localDateTime.equals(timeOptional.get()), "时间不相等");
+ }
+
+ @Test
+ void testToString() {
+ Optional timeOptional = TimeUtil.toString(localDateTime);
+ Assert.isTrue(timeOptional.isPresent(), "时间不存在");
+ Assert.isTrue(time.equals(timeOptional.get()), "时间字符串不相等");
+ }
+
+ @Test
+ void toLocalDate() {
+ Optional timeOptional = TimeUtil.toLocalDate(date);
+ Assert.isTrue(timeOptional.isPresent(), "时间不存在");
+ Assert.isTrue(localDate.equals(timeOptional.get()), "时间不相等");
+ }
+
+ @Test
+ void testDateToString() {
+ Optional timeOptional = TimeUtil.toString(localDate);
+ Assert.isTrue(timeOptional.isPresent(), "时间不存在");
+ Assert.isTrue(date.equals(timeOptional.get()), "时间字符串不相等");
+ }
+}
\ No newline at end of file
--
2.18.1