From 9da90ea735a75506c8cc51c102349ac17a701151 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Mon, 2 Dec 2024 14:38:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=85=E9=81=93#631=E3=80=81#700=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/aop/ControllerResolver.java | 46 +++++++++++++++++++ .../config/ChenfengWebAutoConfiguration.java | 7 ++- .../order/OrderStatisticsServiceImpl.java | 7 ++- 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/aop/ControllerResolver.java diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/aop/ControllerResolver.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/aop/ControllerResolver.java new file mode 100644 index 000000000..ebaa931d1 --- /dev/null +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/aop/ControllerResolver.java @@ -0,0 +1,46 @@ +package com.cf.imes.framework.aop; + +import cn.hutool.core.util.ArrayUtil; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.InitBinder; + +import java.beans.PropertyEditorSupport; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * controller解析器 + * + * @author Gqr + * @since 2024/12/2 10:05 + */ +@ControllerAdvice +public class ControllerResolver { + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @InitBinder + public void initBinder(WebDataBinder webDataBinder) { + /** + * 时间数组解析器:只适用get请求 + * 当出现以下情况产生改变: + * 1、传入年月日时分秒完全相同,第一个时间改为当天的0点0分0秒 + * 2、当第二个时间小于第一个时间,第一个时间改为当天的0点0分0秒 + */ + webDataBinder.registerCustomEditor(LocalDateTime[].class, new PropertyEditorSupport() { + @Override + public void setAsText(String text) throws IllegalArgumentException { + String[] split = text.split(","); + if (ArrayUtil.isNotEmpty(split) && split.length == 2) { + LocalDateTime startTime = LocalDateTime.parse(split[0], FORMATTER); + LocalDateTime endTime = LocalDateTime.parse(split[1], FORMATTER); + // 比较时间 + if (startTime.isEqual(endTime) || startTime.isAfter(endTime)) { + startTime = startTime.withHour(0).withMinute(0).withSecond(0); + } + setValue(new LocalDateTime[]{startTime, endTime}); + } + } + }); + } +} \ No newline at end of file diff --git a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/config/ChenfengWebAutoConfiguration.java b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/config/ChenfengWebAutoConfiguration.java index 457e32756..e34d08f56 100644 --- a/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/config/ChenfengWebAutoConfiguration.java +++ b/cf-framework/cf-spring-boot-starter-web/src/main/java/com/cf/imes/framework/web/config/ChenfengWebAutoConfiguration.java @@ -1,10 +1,10 @@ package com.cf.imes.framework.web.config; +import com.cf.imes.framework.aop.ControllerResolver; import com.cf.imes.framework.apilog.core.service.ApiErrorLogFrameworkService; import com.cf.imes.framework.common.enums.WebFilterOrderEnum; import com.cf.imes.framework.web.core.filter.CacheRequestBodyFilter; import com.cf.imes.framework.web.core.filter.DataSourceFilter; -import com.cf.imes.framework.web.core.filter.DemoFilter; import com.cf.imes.framework.web.core.handler.GlobalExceptionHandler; import com.cf.imes.framework.web.core.handler.GlobalResponseBodyHandler; import com.cf.imes.framework.web.core.util.WebFrameworkUtils; @@ -132,4 +132,9 @@ public class ChenfengWebAutoConfiguration implements WebMvcConfigurer { public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { return restTemplateBuilder.build(); } + + @Bean + public ControllerResolver controllerResolver(){ + return new ControllerResolver(); + } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java index 9910ab717..1aa5861a5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderStatisticsServiceImpl.java @@ -704,7 +704,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { startDate = ObjectUtil.clone(reqVO.getCreateTime()[1]); endDate = ObjectUtil.clone(reqVO.getCreateTime()[0]); } - LocalDate first = startDate; + LocalDate first = startDate; LocalDate end = endDate; switch (OrderStatisticsUnit.fromValue(unit)) { case QUARTER -> { @@ -719,6 +719,9 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { first = startDate.with(TemporalAdjusters.previousOrSame(java.time.DayOfWeek.MONDAY)); end = endDate.with(TemporalAdjusters.nextOrSame(java.time.DayOfWeek.SUNDAY)); } + default -> { + return; + } } reqVO.setCreateTime(new LocalDate[]{first, end}); } @@ -806,7 +809,7 @@ public class OrderStatisticsServiceImpl implements OrderStatisticsService { newDateStrBuffer.append("第").append(dateSplit[2]).append("周"); break; case DAY: - newDateStrBuffer.append(dateSplit[2]); + newDateStrBuffer.append(dateSplit[2]).append("日"); break; default: }