From 42afde07c16010e72c5df5a3791d6a9137908b92 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 31 Mar 2024 15:45:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=8A=A5=E8=A1=A8=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/AcDeviceDataReportRequest.java | 18 ++++ .../service/AcDeviceDataService.java | 97 ++++++++++++++++--- .../coal/spring/config/JacksonConfig.java | 9 +- 3 files changed, 112 insertions(+), 12 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/acDeviceData/dto/AcDeviceDataReportRequest.java b/src/main/java/cn/lihongjie/coal/acDeviceData/dto/AcDeviceDataReportRequest.java index e41f4884..2aba312f 100644 --- a/src/main/java/cn/lihongjie/coal/acDeviceData/dto/AcDeviceDataReportRequest.java +++ b/src/main/java/cn/lihongjie/coal/acDeviceData/dto/AcDeviceDataReportRequest.java @@ -6,6 +6,7 @@ import lombok.Data; import org.hibernate.annotations.Comment; +import java.time.LocalDateTime; import java.util.*; @Data @@ -31,4 +32,21 @@ direction_name, """) private List reportFields; + + + private LocalDateTime startTime; + private LocalDateTime endTime; + + + private String plateNo; + + private String parkName; + + private String gateName; + + private String laneName; + + private String directionName; + + } diff --git a/src/main/java/cn/lihongjie/coal/acDeviceData/service/AcDeviceDataService.java b/src/main/java/cn/lihongjie/coal/acDeviceData/service/AcDeviceDataService.java index 2a5e4fb7..36282b11 100644 --- a/src/main/java/cn/lihongjie/coal/acDeviceData/service/AcDeviceDataService.java +++ b/src/main/java/cn/lihongjie/coal/acDeviceData/service/AcDeviceDataService.java @@ -14,12 +14,12 @@ import cn.lihongjie.coal.dbFunctions.DbFunctionService; import com.google.common.base.CaseFormat; -import jakarta.persistence.EntityManager; -import jakarta.persistence.PersistenceContext; -import jakarta.persistence.Query; +import jakarta.persistence.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; @@ -29,6 +29,8 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -82,19 +84,61 @@ public class AcDeviceDataService extends BaseService> convertTuplesToMap(List tuples) { + List> result = new ArrayList<>(); + for (Tuple single : tuples) { + Map tempMap = new HashMap<>(); + for (TupleElement key : single.getElements()) { + tempMap.put(key.getAlias(), single.get(key)); + } + result.add(tempMap); + } + return result; + } @PersistenceContext private EntityManager em; public Page report(AcDeviceDataReportRequest request) { + if (StringUtils.isNotEmpty(request.getTimeDimension())){ + request.setTimeDimension("day"); + } + String fields = - request.getReportFields().stream() - .map(s -> "d." + s) - .collect(Collectors.joining(",")); + CollectionUtils.isEmpty(request.getReportFields()) + ? " 1 " + : request.getReportFields().stream() + .map(s -> "d." + s) + .collect(Collectors.joining(",")); + String where = "where 1 = 1 "; + if (request.getStartTime() != null) { + where += " and d.pass_time >= :startTime "; + } + if (request.getEndTime() != null) { + where += " and d.pass_time <= :endTime "; + } + if (StringUtils.isNotEmpty(request.getPlateNo())) { + where += " and d.plate_no = :plateNo "; + } + + if (StringUtils.isNotEmpty(request.getParkName())) { + where += " and d.park_name = :parkName "; + } + + if (StringUtils.isNotEmpty(request.getGateName())) { + where += " and d.gate_name = :gateName "; + } + + if (StringUtils.isNotEmpty(request.getLaneName())) { + where += " and d.lane_name = :laneName "; + } + + if (StringUtils.isNotEmpty(request.getDirectionName())) { + where += " and d.direction_name = :directionName "; + } var sql = "select DATE_TRUNC('" @@ -104,6 +148,9 @@ public class AcDeviceDataService extends BaseService @@ -129,7 +204,7 @@ public class AcDeviceDataService extends BaseService e.getValue()))) diff --git a/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java b/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java index 9487fd0e..7a9aff89 100644 --- a/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java +++ b/src/main/java/cn/lihongjie/coal/spring/config/JacksonConfig.java @@ -1,6 +1,5 @@ package cn.lihongjie.coal.spring.config; -import com.fasterxml.jackson.core.JacksonException; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; @@ -18,6 +17,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.io.IOException; +import java.sql.Timestamp; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -42,6 +42,13 @@ public class JacksonConfig { gen.writeString(value.getAddress()); } }); + + module.addSerializer(Timestamp.class, new JsonSerializer() { + @Override + public void serialize(Timestamp value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeObject(value.toLocalDateTime()); + } + }); module.addDeserializer(Inet.class, new JsonDeserializer() { @Override