diff --git a/.idea/mybatisx/templates.xml b/.idea/mybatisx/templates.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5952ae05ac66fe5e49a989f1c2b784e829c2d0bd
--- /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 64634eceb51c069749ead77ad0b1f873d30713aa..4ed68fa46c2351ec2ad6b369bf73b71fee4a4e69 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 0000000000000000000000000000000000000000..d0f2152737887fdb4528363cf417b611c5bc3a5a
--- /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 7a4d74750a0a670822125bb800ab53ef83d83a6b..735f2222c763b3534876761526d9f74ade53b002 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 0000000000000000000000000000000000000000..4d8fb3d8c4f62026c725e0d2cebdf53c6e149240
--- /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 0000000000000000000000000000000000000000..36252f03b22328780e37d6f1b7b39a1101988e10
--- /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 9712b85a9c559ea1a6bc7f728676a319f1f1813f..0000000000000000000000000000000000000000
--- 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 348775818f5d0c546f64cb480cff0da8573c8ebf..bd065f23e5c003bb74fbafcd503797f3a0d6ebe5 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 0000000000000000000000000000000000000000..1bb07f62e8a687487c14d5d790af65ec31f279cd
--- /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 2a03ed6fd6948f9daae9b94ac42fd8ece1e43bbc..d16ef85ba3f6355c9ee83e0d4abd176497febf5d 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 0000000000000000000000000000000000000000..ce92399579338ccc9de86209770881ee4a284611
--- /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 0000000000000000000000000000000000000000..f6982e1fc7ed3d3631f348dee2e507de00a2ded6
--- /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 0000000000000000000000000000000000000000..aec73abb02964079d62356ef510641b4c6459ddd
--- /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