Commit 632a132a6a9365c3a852cc6a3a6759fe3fc4f05d

Authored by xingyu4j
1 parent 2c1419fb

refactor: Date ==> LocalDateTime

Showing 324 changed files with 1137 additions and 997 deletions

Too many changes.

To preserve performance only 100 of 324 files are displayed.

yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java
1 package cn.iocoder.yudao.framework.common.util.date; 1 package cn.iocoder.yudao.framework.common.util.date;
2 2
3 import cn.hutool.core.date.DateUtil; 3 import cn.hutool.core.date.DateUtil;
  4 +import cn.hutool.core.date.LocalDateTimeUtil;
4 5
5 import java.time.Duration; 6 import java.time.Duration;
  7 +import java.time.Instant;
  8 +import java.time.LocalDateTime;
  9 +import java.time.ZoneId;
  10 +import java.time.ZonedDateTime;
  11 +import java.time.temporal.ChronoUnit;
6 import java.util.Calendar; 12 import java.util.Calendar;
7 import java.util.Date; 13 import java.util.Date;
8 14
@@ -25,6 +31,22 @@ public class DateUtils { @@ -25,6 +31,22 @@ public class DateUtils {
25 31
26 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; 32 public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
27 33
  34 + public static Date localDateTimeToDate(LocalDateTime date){
  35 + // 将此日期时间与时区相结合以创建 ZonedDateTime
  36 + ZonedDateTime zonedDateTime = date.atZone(ZoneId.systemDefault());
  37 + // 本地时间线LocalDateTime到即时时间线Instant时间戳
  38 + Instant instant = zonedDateTime.toInstant();
  39 + // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
  40 + return Date.from(instant);
  41 + }
  42 +
  43 + public static LocalDateTime dateToLocalDateTime(Date date){
  44 + // 转为时间戳
  45 + Instant instant = date.toInstant();
  46 + // UTC时间(世界协调时间,UTC + 00:00)转北京(北京,UTC + 8:00)时间
  47 + return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  48 + }
  49 +
28 public static Date addTime(Duration duration) { 50 public static Date addTime(Duration duration) {
29 return new Date(System.currentTimeMillis() + duration.toMillis()); 51 return new Date(System.currentTimeMillis() + duration.toMillis());
30 } 52 }
@@ -33,6 +55,11 @@ public class DateUtils { @@ -33,6 +55,11 @@ public class DateUtils {
33 return System.currentTimeMillis() > time.getTime(); 55 return System.currentTimeMillis() > time.getTime();
34 } 56 }
35 57
  58 + public static boolean isExpired(LocalDateTime time) {
  59 + LocalDateTime now = LocalDateTime.now();
  60 + return now.isAfter(time);
  61 + }
  62 +
36 public static long diff(Date endTime, Date startTime) { 63 public static long diff(Date endTime, Date startTime) {
37 return endTime.getTime() - startTime.getTime(); 64 return endTime.getTime() - startTime.getTime();
38 } 65 }
@@ -40,24 +67,28 @@ public class DateUtils { @@ -40,24 +67,28 @@ public class DateUtils {
40 /** 67 /**
41 * 创建指定时间 68 * 创建指定时间
42 * 69 *
43 - * @param year 年  
44 - * @param mouth 月  
45 - * @param day 日 70 + * @param year 年
  71 + * @param mouth 月
  72 + * @param day 日
46 * @return 指定时间 73 * @return 指定时间
47 */ 74 */
48 public static Date buildTime(int year, int mouth, int day) { 75 public static Date buildTime(int year, int mouth, int day) {
49 return buildTime(year, mouth, day, 0, 0, 0); 76 return buildTime(year, mouth, day, 0, 0, 0);
50 } 77 }
51 78
  79 + public static LocalDateTime buildLocalDateTime(int year, int mouth, int day) {
  80 + return buildLocalDateTime(year, mouth, day, 0, 0, 0);
  81 + }
  82 +
52 /** 83 /**
53 * 创建指定时间 84 * 创建指定时间
54 * 85 *
55 - * @param year 年  
56 - * @param mouth 月  
57 - * @param day 日  
58 - * @param hour 小时  
59 - * @param minute 分钟  
60 - * @param second 秒 86 + * @param year 年
  87 + * @param mouth 月
  88 + * @param day 日
  89 + * @param hour 小时
  90 + * @param minute 分钟
  91 + * @param second 秒
61 * @return 指定时间 92 * @return 指定时间
62 */ 93 */
63 public static Date buildTime(int year, int mouth, int day, 94 public static Date buildTime(int year, int mouth, int day,
@@ -73,6 +104,19 @@ public class DateUtils { @@ -73,6 +104,19 @@ public class DateUtils {
73 return calendar.getTime(); 104 return calendar.getTime();
74 } 105 }
75 106
  107 + public static LocalDateTime buildLocalDateTime(int year, int mouth, int day,
  108 + int hour, int minute, int second) {
  109 + Calendar calendar = Calendar.getInstance();
  110 + calendar.set(Calendar.YEAR, year);
  111 + calendar.set(Calendar.MONTH, mouth - 1);
  112 + calendar.set(Calendar.DAY_OF_MONTH, day);
  113 + calendar.set(Calendar.HOUR_OF_DAY, hour);
  114 + calendar.set(Calendar.MINUTE, minute);
  115 + calendar.set(Calendar.SECOND, second);
  116 + calendar.set(Calendar.MILLISECOND, 0); // 一般情况下,都是 0 毫秒
  117 + return dateToLocalDateTime(calendar.getTime());
  118 + }
  119 +
76 public static Date max(Date a, Date b) { 120 public static Date max(Date a, Date b) {
77 if (a == null) { 121 if (a == null) {
78 return b; 122 return b;
@@ -83,6 +127,16 @@ public class DateUtils { @@ -83,6 +127,16 @@ public class DateUtils {
83 return a.compareTo(b) > 0 ? a : b; 127 return a.compareTo(b) > 0 ? a : b;
84 } 128 }
85 129
  130 + public static LocalDateTime maxLocalDateTime(LocalDateTime a, LocalDateTime b) {
  131 + if (a == null) {
  132 + return b;
  133 + }
  134 + if (b == null) {
  135 + return a;
  136 + }
  137 + return a.compareTo(b) > 0 ? a : b;
  138 + }
  139 +
86 public static boolean beforeNow(Date date) { 140 public static boolean beforeNow(Date date) {
87 return date.getTime() < System.currentTimeMillis(); 141 return date.getTime() < System.currentTimeMillis();
88 } 142 }
@@ -91,6 +145,10 @@ public class DateUtils { @@ -91,6 +145,10 @@ public class DateUtils {
91 return date.getTime() >= System.currentTimeMillis(); 145 return date.getTime() >= System.currentTimeMillis();
92 } 146 }
93 147
  148 + public static boolean afterNow(LocalDateTime localDateTime) {
  149 + return localDateTime.isAfter(LocalDateTime.now());
  150 + }
  151 +
94 /** 152 /**
95 * 计算当期时间相差的日期 153 * 计算当期时间相差的日期
96 * 154 *
@@ -135,4 +193,14 @@ public class DateUtils { @@ -135,4 +193,14 @@ public class DateUtils {
135 return DateUtil.isSameDay(date, new Date()); 193 return DateUtil.isSameDay(date, new Date());
136 } 194 }
137 195
  196 + /**
  197 + * 是否今天
  198 + *
  199 + * @param date 日期
  200 + * @return 是否
  201 + */
  202 + public static boolean isToday(LocalDateTime date) {
  203 + return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now());
  204 + }
  205 +
138 } 206 }
yudao-framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao/framework/errorcode/core/loader/ErrorCodeLoaderImpl.java
@@ -10,7 +10,7 @@ import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -10,7 +10,7 @@ import org.springframework.boot.context.event.ApplicationReadyEvent;
10 import org.springframework.context.event.EventListener; 10 import org.springframework.context.event.EventListener;
11 import org.springframework.scheduling.annotation.Scheduled; 11 import org.springframework.scheduling.annotation.Scheduled;
12 12
13 -import java.util.Date; 13 +import java.time.LocalDateTime;
14 import java.util.List; 14 import java.util.List;
15 15
16 /** 16 /**
@@ -41,7 +41,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader { @@ -41,7 +41,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
41 /** 41 /**
42 * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新 42 * 缓存错误码的最大更新时间,用于后续的增量轮询,判断是否有更新
43 */ 43 */
44 - private Date maxUpdateTime; 44 + private LocalDateTime maxUpdateTime;
45 45
46 @EventListener(ApplicationReadyEvent.class) 46 @EventListener(ApplicationReadyEvent.class)
47 public void loadErrorCodes() { 47 public void loadErrorCodes() {
@@ -66,7 +66,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader { @@ -66,7 +66,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader {
66 // 写入到错误码的缓存 66 // 写入到错误码的缓存
67 putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage()); 67 putErrorCode(errorCodeRespDTO.getCode(), errorCodeRespDTO.getMessage());
68 // 记录下更新时间,方便增量更新 68 // 记录下更新时间,方便增量更新
69 - maxUpdateTime = DateUtils.max(maxUpdateTime, errorCodeRespDTO.getUpdateTime()); 69 + maxUpdateTime = DateUtils.maxLocalDateTime(maxUpdateTime, errorCodeRespDTO.getUpdateTime());
70 }); 70 });
71 } 71 }
72 72
yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java
1 package cn.iocoder.yudao.framework.operatelog.core.aop; 1 package cn.iocoder.yudao.framework.operatelog.core.aop;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.hutool.core.exceptions.ExceptionUtil; 4 import cn.hutool.core.exceptions.ExceptionUtil;
4 import cn.hutool.core.util.ArrayUtil; 5 import cn.hutool.core.util.ArrayUtil;
5 import cn.hutool.core.util.StrUtil; 6 import cn.hutool.core.util.StrUtil;
@@ -32,6 +33,7 @@ import javax.servlet.http.HttpServletRequest; @@ -32,6 +33,7 @@ import javax.servlet.http.HttpServletRequest;
32 import javax.servlet.http.HttpServletResponse; 33 import javax.servlet.http.HttpServletResponse;
33 import java.lang.annotation.Annotation; 34 import java.lang.annotation.Annotation;
34 import java.lang.reflect.Array; 35 import java.lang.reflect.Array;
  36 +import java.time.LocalDateTime;
35 import java.util.*; 37 import java.util.*;
36 import java.util.function.Predicate; 38 import java.util.function.Predicate;
37 import java.util.stream.IntStream; 39 import java.util.stream.IntStream;
@@ -94,7 +96,7 @@ public class OperateLogAspect { @@ -94,7 +96,7 @@ public class OperateLogAspect {
94 } 96 }
95 97
96 // 记录开始时间 98 // 记录开始时间
97 - Date startTime = new Date(); 99 + LocalDateTime startTime = LocalDateTime.now();
98 try { 100 try {
99 // 执行原有方法 101 // 执行原有方法
100 Object result = joinPoint.proceed(); 102 Object result = joinPoint.proceed();
@@ -128,7 +130,7 @@ public class OperateLogAspect { @@ -128,7 +130,7 @@ public class OperateLogAspect {
128 private void log(ProceedingJoinPoint joinPoint, 130 private void log(ProceedingJoinPoint joinPoint,
129 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog, 131 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog,
130 ApiOperation apiOperation, 132 ApiOperation apiOperation,
131 - Date startTime, Object result, Throwable exception) { 133 + LocalDateTime startTime, Object result, Throwable exception) {
132 try { 134 try {
133 // 判断不记录的情况 135 // 判断不记录的情况
134 if (!isLogEnable(joinPoint, operateLog)) { 136 if (!isLogEnable(joinPoint, operateLog)) {
@@ -145,7 +147,7 @@ public class OperateLogAspect { @@ -145,7 +147,7 @@ public class OperateLogAspect {
145 private void log0(ProceedingJoinPoint joinPoint, 147 private void log0(ProceedingJoinPoint joinPoint,
146 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog, 148 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog,
147 ApiOperation apiOperation, 149 ApiOperation apiOperation,
148 - Date startTime, Object result, Throwable exception) { 150 + LocalDateTime startTime, Object result, Throwable exception) {
149 OperateLog operateLogObj = new OperateLog(); 151 OperateLog operateLogObj = new OperateLog();
150 // 补全通用字段 152 // 补全通用字段
151 operateLogObj.setTraceId(TracerUtils.getTraceId()); 153 operateLogObj.setTraceId(TracerUtils.getTraceId());
@@ -226,7 +228,7 @@ public class OperateLogAspect { @@ -226,7 +228,7 @@ public class OperateLogAspect {
226 private static void fillMethodFields(OperateLog operateLogObj, 228 private static void fillMethodFields(OperateLog operateLogObj,
227 ProceedingJoinPoint joinPoint, 229 ProceedingJoinPoint joinPoint,
228 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog, 230 cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog,
229 - Date startTime, Object result, Throwable exception) { 231 + LocalDateTime startTime, Object result, Throwable exception) {
230 MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); 232 MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
231 operateLogObj.setJavaMethod(methodSignature.toString()); 233 operateLogObj.setJavaMethod(methodSignature.toString());
232 if (operateLog == null || operateLog.logArgs()) { 234 if (operateLog == null || operateLog.logArgs()) {
@@ -235,7 +237,7 @@ public class OperateLogAspect { @@ -235,7 +237,7 @@ public class OperateLogAspect {
235 if (operateLog == null || operateLog.logResultData()) { 237 if (operateLog == null || operateLog.logResultData()) {
236 operateLogObj.setResultData(obtainResultData(result)); 238 operateLogObj.setResultData(obtainResultData(result));
237 } 239 }
238 - operateLogObj.setDuration((int) (System.currentTimeMillis() - startTime.getTime())); 240 + operateLogObj.setDuration((int) (LocalDateTimeUtil.between(startTime, LocalDateTime.now()).toMillis()));
239 // (正常)处理 resultCode 和 resultMsg 字段 241 // (正常)处理 resultCode 和 resultMsg 字段
240 if (result instanceof CommonResult) { 242 if (result instanceof CommonResult) {
241 CommonResult<?> commonResult = (CommonResult<?>) result; 243 CommonResult<?> commonResult = (CommonResult<?>) result;
yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/service/OperateLog.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.operatelog.core.service; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.operatelog.core.service;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import java.util.Date; 5 +import java.time.LocalDateTime;
6 import java.util.Map; 6 import java.util.Map;
7 7
8 /** 8 /**
@@ -85,7 +85,7 @@ public class OperateLog { @@ -85,7 +85,7 @@ public class OperateLog {
85 /** 85 /**
86 * 开始时间 86 * 开始时间
87 */ 87 */
88 - private Date startTime; 88 + private LocalDateTime startTime;
89 89
90 /** 90 /**
91 * 执行时长,单位:毫秒 91 * 执行时长,单位:毫秒
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderNotifyRespDTO.java
@@ -5,7 +5,7 @@ import lombok.Builder; @@ -5,7 +5,7 @@ import lombok.Builder;
5 import lombok.Data; 5 import lombok.Data;
6 import lombok.NoArgsConstructor; 6 import lombok.NoArgsConstructor;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 /** 10 /**
11 * 支付通知 Response DTO 11 * 支付通知 Response DTO
@@ -33,7 +33,7 @@ public class PayOrderNotifyRespDTO { @@ -33,7 +33,7 @@ public class PayOrderNotifyRespDTO {
33 /** 33 /**
34 * 支付成功时间 34 * 支付成功时间
35 */ 35 */
36 - private Date successTime; 36 + private LocalDateTime successTime;
37 37
38 /** 38 /**
39 * 通知的原始数据 39 * 通知的原始数据
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderUnifiedReqDTO.java
@@ -7,7 +7,7 @@ import org.hibernate.validator.constraints.URL; @@ -7,7 +7,7 @@ import org.hibernate.validator.constraints.URL;
7 import javax.validation.constraints.DecimalMin; 7 import javax.validation.constraints.DecimalMin;
8 import javax.validation.constraints.NotEmpty; 8 import javax.validation.constraints.NotEmpty;
9 import javax.validation.constraints.NotNull; 9 import javax.validation.constraints.NotNull;
10 -import java.util.Date; 10 +import java.time.LocalDateTime;
11 import java.util.Map; 11 import java.util.Map;
12 12
13 /** 13 /**
@@ -68,7 +68,7 @@ public class PayOrderUnifiedReqDTO { @@ -68,7 +68,7 @@ public class PayOrderUnifiedReqDTO {
68 * 支付过期时间 68 * 支付过期时间
69 */ 69 */
70 @NotNull(message = "支付过期时间不能为空") 70 @NotNull(message = "支付过期时间不能为空")
71 - private Date expireTime; 71 + private LocalDateTime expireTime;
72 72
73 // ========== 拓展参数 ========== 73 // ========== 拓展参数 ==========
74 /** 74 /**
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayRefundNotifyDTO.java
@@ -5,7 +5,7 @@ import lombok.Builder; @@ -5,7 +5,7 @@ import lombok.Builder;
5 import lombok.Data; 5 import lombok.Data;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 /** 10 /**
11 * 从渠道返回数据中解析得到的支付退款通知的Notify DTO 11 * 从渠道返回数据中解析得到的支付退款通知的Notify DTO
@@ -57,7 +57,7 @@ public class PayRefundNotifyDTO { @@ -57,7 +57,7 @@ public class PayRefundNotifyDTO {
57 /** 57 /**
58 * 退款成功时间 58 * 退款成功时间
59 */ 59 */
60 - private Date refundSuccessTime; 60 + private LocalDateTime refundSuccessTime;
61 61
62 62
63 } 63 }
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AbstractAlipayClient.java
1 package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; 1 package cn.iocoder.yudao.framework.pay.core.client.impl.alipay;
2 2
3 import cn.hutool.core.bean.BeanUtil; 3 import cn.hutool.core.bean.BeanUtil;
4 -import cn.hutool.core.date.DateUtil;  
5 -import cn.hutool.http.HttpUtil; 4 +import cn.hutool.core.date.LocalDateTimeUtil;
6 import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping; 5 import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping;
7 import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; 6 import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult;
8 import cn.iocoder.yudao.framework.pay.core.client.dto.*; 7 import cn.iocoder.yudao.framework.pay.core.client.dto.*;
@@ -61,7 +60,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient&lt;AlipayPayCl @@ -61,7 +60,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient&lt;AlipayPayCl
61 return PayOrderNotifyRespDTO.builder().orderExtensionNo(params.get("out_trade_no")) 60 return PayOrderNotifyRespDTO.builder().orderExtensionNo(params.get("out_trade_no"))
62 .channelOrderNo(params.get("trade_no")).channelUserId(params.get("seller_id")) 61 .channelOrderNo(params.get("trade_no")).channelUserId(params.get("seller_id"))
63 .tradeStatus(params.get("trade_status")) 62 .tradeStatus(params.get("trade_status"))
64 - .successTime(DateUtil.parse(params.get("notify_time"), "yyyy-MM-dd HH:mm:ss")) 63 + .successTime(LocalDateTimeUtil.parse(params.get("notify_time"), "yyyy-MM-dd HH:mm:ss"))
65 .data(data.getBody()).build(); 64 .data(data.getBody()).build();
66 } 65 }
67 66
@@ -72,7 +71,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient&lt;AlipayPayCl @@ -72,7 +71,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient&lt;AlipayPayCl
72 .tradeNo(params.get("out_trade_no")) 71 .tradeNo(params.get("out_trade_no"))
73 .reqNo(params.get("out_biz_no")) 72 .reqNo(params.get("out_biz_no"))
74 .status(PayNotifyRefundStatusEnum.SUCCESS) 73 .status(PayNotifyRefundStatusEnum.SUCCESS)
75 - .refundSuccessTime(DateUtil.parse(params.get("gmt_refund"), "yyyy-MM-dd HH:mm:ss")) 74 + .refundSuccessTime(LocalDateTimeUtil.parse(params.get("gmt_refund"), "yyyy-MM-dd HH:mm:ss"))
76 .build(); 75 .build();
77 return notifyDTO; 76 return notifyDTO;
78 } 77 }
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXLitePayClient.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx;
2 2
3 import cn.hutool.core.bean.BeanUtil; 3 import cn.hutool.core.bean.BeanUtil;
4 import cn.hutool.core.date.DateUtil; 4 import cn.hutool.core.date.DateUtil;
  5 +import cn.hutool.core.date.LocalDateTimeUtil;
5 import cn.hutool.core.lang.Assert; 6 import cn.hutool.core.lang.Assert;
6 import cn.hutool.core.map.MapUtil; 7 import cn.hutool.core.map.MapUtil;
7 import cn.hutool.core.util.StrUtil; 8 import cn.hutool.core.util.StrUtil;
@@ -167,7 +168,7 @@ public class WXLitePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; { @@ -167,7 +168,7 @@ public class WXLitePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
167 .builder() 168 .builder()
168 .orderExtensionNo(result.getOutTradeNo()) 169 .orderExtensionNo(result.getOutTradeNo())
169 .channelOrderNo(result.getTradeState()) 170 .channelOrderNo(result.getTradeState())
170 - .successTime(DateUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX")) 171 + .successTime(LocalDateTimeUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
171 .data(data.getBody()) 172 .data(data.getBody())
172 .build(); 173 .build();
173 } 174 }
@@ -181,7 +182,7 @@ public class WXLitePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; { @@ -181,7 +182,7 @@ public class WXLitePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
181 .orderExtensionNo(notifyResult.getOutTradeNo()) 182 .orderExtensionNo(notifyResult.getOutTradeNo())
182 .channelOrderNo(notifyResult.getTransactionId()) 183 .channelOrderNo(notifyResult.getTransactionId())
183 .channelUserId(notifyResult.getOpenid()) 184 .channelUserId(notifyResult.getOpenid())
184 - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) 185 + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
185 .data(data.getBody()) 186 .data(data.getBody())
186 .build(); 187 .build();
187 188
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXNativePayClient.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx;
2 2
3 import cn.hutool.core.bean.BeanUtil; 3 import cn.hutool.core.bean.BeanUtil;
4 import cn.hutool.core.date.DateUtil; 4 import cn.hutool.core.date.DateUtil;
  5 +import cn.hutool.core.date.LocalDateTimeUtil;
5 import cn.hutool.core.lang.Assert; 6 import cn.hutool.core.lang.Assert;
6 import cn.hutool.core.util.StrUtil; 7 import cn.hutool.core.util.StrUtil;
7 import cn.iocoder.yudao.framework.common.util.io.FileUtils; 8 import cn.iocoder.yudao.framework.common.util.io.FileUtils;
@@ -150,7 +151,7 @@ public class WXNativePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; { @@ -150,7 +151,7 @@ public class WXNativePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
150 .builder() 151 .builder()
151 .orderExtensionNo(result.getOutTradeNo()) 152 .orderExtensionNo(result.getOutTradeNo())
152 .channelOrderNo(result.getTradeState()) 153 .channelOrderNo(result.getTradeState())
153 - .successTime(DateUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX")) 154 + .successTime(LocalDateTimeUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
154 .data(data.getBody()) 155 .data(data.getBody())
155 .build(); 156 .build();
156 } 157 }
@@ -164,7 +165,7 @@ public class WXNativePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; { @@ -164,7 +165,7 @@ public class WXNativePayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
164 .orderExtensionNo(notifyResult.getOutTradeNo()) 165 .orderExtensionNo(notifyResult.getOutTradeNo())
165 .channelOrderNo(notifyResult.getTransactionId()) 166 .channelOrderNo(notifyResult.getTransactionId())
166 .channelUserId(notifyResult.getOpenid()) 167 .channelUserId(notifyResult.getOpenid())
167 - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) 168 + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
168 .data(data.getBody()) 169 .data(data.getBody())
169 .build(); 170 .build();
170 171
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPubPayClient.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl.wx;
2 2
3 import cn.hutool.core.bean.BeanUtil; 3 import cn.hutool.core.bean.BeanUtil;
4 import cn.hutool.core.date.DateUtil; 4 import cn.hutool.core.date.DateUtil;
  5 +import cn.hutool.core.date.LocalDateTimeUtil;
5 import cn.hutool.core.lang.Assert; 6 import cn.hutool.core.lang.Assert;
6 import cn.hutool.core.map.MapUtil; 7 import cn.hutool.core.map.MapUtil;
7 import cn.hutool.core.util.StrUtil; 8 import cn.hutool.core.util.StrUtil;
@@ -161,7 +162,7 @@ public class WXPubPayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; { @@ -161,7 +162,7 @@ public class WXPubPayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
161 .builder() 162 .builder()
162 .orderExtensionNo(result.getOutTradeNo()) 163 .orderExtensionNo(result.getOutTradeNo())
163 .channelOrderNo(result.getTradeState()) 164 .channelOrderNo(result.getTradeState())
164 - .successTime(DateUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX")) 165 + .successTime(LocalDateTimeUtil.parse(result.getSuccessTime(), "yyyy-MM-dd'T'HH:mm:ssXXX"))
165 .data(data.getBody()) 166 .data(data.getBody())
166 .build(); 167 .build();
167 } 168 }
@@ -175,7 +176,7 @@ public class WXPubPayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; { @@ -175,7 +176,7 @@ public class WXPubPayClient extends AbstractPayClient&lt;WXPayClientConfig&gt; {
175 .orderExtensionNo(notifyResult.getOutTradeNo()) 176 .orderExtensionNo(notifyResult.getOutTradeNo())
176 .channelOrderNo(notifyResult.getTransactionId()) 177 .channelOrderNo(notifyResult.getTransactionId())
177 .channelUserId(notifyResult.getOpenid()) 178 .channelUserId(notifyResult.getOpenid())
178 - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) 179 + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss"))
179 .data(data.getBody()) 180 .data(data.getBody())
180 .build(); 181 .build();
181 182
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/dto/SmsReceiveRespDTO.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.sms.core.client.dto; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.sms.core.client.dto;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import java.util.Date; 5 +import java.time.LocalDateTime;
6 6
7 /** 7 /**
8 * 消息接收 Response DTO 8 * 消息接收 Response DTO
@@ -32,7 +32,7 @@ public class SmsReceiveRespDTO { @@ -32,7 +32,7 @@ public class SmsReceiveRespDTO {
32 /** 32 /**
33 * 用户接收时间 33 * 用户接收时间
34 */ 34 */
35 - private Date receiveTime; 35 + private LocalDateTime receiveTime;
36 36
37 /** 37 /**
38 * 短信 API 发送返回的序号 38 * 短信 API 发送返回的序号
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/aliyun/AliyunSmsClient.java
@@ -28,7 +28,7 @@ import com.google.common.annotations.VisibleForTesting; @@ -28,7 +28,7 @@ import com.google.common.annotations.VisibleForTesting;
28 import lombok.Data; 28 import lombok.Data;
29 import lombok.extern.slf4j.Slf4j; 29 import lombok.extern.slf4j.Slf4j;
30 30
31 -import java.util.Date; 31 +import java.time.LocalDateTime;
32 import java.util.List; 32 import java.util.List;
33 import java.util.Objects; 33 import java.util.Objects;
34 import java.util.function.Function; 34 import java.util.function.Function;
@@ -166,13 +166,13 @@ public class AliyunSmsClient extends AbstractSmsClient { @@ -166,13 +166,13 @@ public class AliyunSmsClient extends AbstractSmsClient {
166 */ 166 */
167 @JsonProperty("send_time") 167 @JsonProperty("send_time")
168 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) 168 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
169 - private Date sendTime; 169 + private LocalDateTime sendTime;
170 /** 170 /**
171 * 状态报告时间 171 * 状态报告时间
172 */ 172 */
173 @JsonProperty("report_time") 173 @JsonProperty("report_time")
174 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) 174 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
175 - private Date reportTime; 175 + private LocalDateTime reportTime;
176 /** 176 /**
177 * 是否接收成功 177 * 是否接收成功
178 */ 178 */
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/tencent/TencentSmsClient.java
@@ -22,7 +22,7 @@ import com.tencentcloudapi.sms.v20210111.SmsClient; @@ -22,7 +22,7 @@ import com.tencentcloudapi.sms.v20210111.SmsClient;
22 import com.tencentcloudapi.sms.v20210111.models.*; 22 import com.tencentcloudapi.sms.v20210111.models.*;
23 import lombok.Data; 23 import lombok.Data;
24 24
25 -import java.util.Date; 25 +import java.time.LocalDateTime;
26 import java.util.List; 26 import java.util.List;
27 import java.util.function.Function; 27 import java.util.function.Function;
28 import java.util.function.Supplier; 28 import java.util.function.Supplier;
@@ -240,7 +240,7 @@ public class TencentSmsClient extends AbstractSmsClient { @@ -240,7 +240,7 @@ public class TencentSmsClient extends AbstractSmsClient {
240 */ 240 */
241 @JsonProperty("user_receive_time") 241 @JsonProperty("user_receive_time")
242 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) 242 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
243 - private Date receiveTime; 243 + private LocalDateTime receiveTime;
244 244
245 /** 245 /**
246 * 国家(或地区)码 246 * 国家(或地区)码
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClient.java
@@ -23,6 +23,7 @@ import com.yunpian.sdk.model.Template; @@ -23,6 +23,7 @@ import com.yunpian.sdk.model.Template;
23 import lombok.Data; 23 import lombok.Data;
24 import lombok.extern.slf4j.Slf4j; 24 import lombok.extern.slf4j.Slf4j;
25 25
  26 +import java.time.LocalDateTime;
26 import java.util.*; 27 import java.util.*;
27 import java.util.function.Function; 28 import java.util.function.Function;
28 import java.util.function.Supplier; 29 import java.util.function.Supplier;
@@ -198,7 +199,7 @@ public class YunpianSmsClient extends AbstractSmsClient { @@ -198,7 +199,7 @@ public class YunpianSmsClient extends AbstractSmsClient {
198 */ 199 */
199 @JsonProperty("user_receive_time") 200 @JsonProperty("user_receive_time")
200 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) 201 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
201 - private Date userReceiveTime; 202 + private LocalDateTime userReceiveTime;
202 203
203 } 204 }
204 205
yudao-framework/yudao-spring-boot-starter-biz-sms/src/test/java/cn/iocoder/yudao/framework/sms/core/client/impl/aliyun/AliyunSmsClientTest.java
@@ -125,7 +125,7 @@ public class AliyunSmsClientTest extends BaseMockitoUnitTest { @@ -125,7 +125,7 @@ public class AliyunSmsClientTest extends BaseMockitoUnitTest {
125 assertEquals("DELIVERED", statuses.get(0).getErrorCode()); 125 assertEquals("DELIVERED", statuses.get(0).getErrorCode());
126 assertEquals("用户接收成功", statuses.get(0).getErrorMsg()); 126 assertEquals("用户接收成功", statuses.get(0).getErrorMsg());
127 assertEquals("13900000001", statuses.get(0).getMobile()); 127 assertEquals("13900000001", statuses.get(0).getMobile());
128 - assertEquals(DateUtils.buildTime(2017, 2, 2, 22, 23, 24), statuses.get(0).getReceiveTime()); 128 + assertEquals(DateUtils.buildLocalDateTime(2017, 2, 2, 22, 23, 24), statuses.get(0).getReceiveTime());
129 assertEquals("12345", statuses.get(0).getSerialNo()); 129 assertEquals("12345", statuses.get(0).getSerialNo());
130 assertEquals(67890L, statuses.get(0).getLogId()); 130 assertEquals(67890L, statuses.get(0).getLogId());
131 } 131 }
yudao-framework/yudao-spring-boot-starter-biz-sms/src/test/java/cn/iocoder/yudao/framework/sms/core/client/impl/tencent/TencentSmsClientTest.java
@@ -146,7 +146,7 @@ public class TencentSmsClientTest extends BaseMockitoUnitTest { @@ -146,7 +146,7 @@ public class TencentSmsClientTest extends BaseMockitoUnitTest {
146 assertEquals("DELIVRD", statuses.get(0).getErrorCode()); 146 assertEquals("DELIVRD", statuses.get(0).getErrorCode());
147 assertEquals("用户短信送达成功", statuses.get(0).getErrorMsg()); 147 assertEquals("用户短信送达成功", statuses.get(0).getErrorMsg());
148 assertEquals("13900000001", statuses.get(0).getMobile()); 148 assertEquals("13900000001", statuses.get(0).getMobile());
149 - assertEquals(DateUtils.buildTime(2015, 10, 17, 8, 3, 4), statuses.get(0).getReceiveTime()); 149 + assertEquals(DateUtils.buildLocalDateTime(2015, 10, 17, 8, 3, 4), statuses.get(0).getReceiveTime());
150 assertEquals("12345", statuses.get(0).getSerialNo()); 150 assertEquals("12345", statuses.get(0).getSerialNo());
151 assertEquals(67890L, statuses.get(0).getLogId()); 151 assertEquals(67890L, statuses.get(0).getLogId());
152 } 152 }
yudao-framework/yudao-spring-boot-starter-biz-sms/src/test/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClientTest.java
@@ -115,7 +115,7 @@ public class YunpianSmsClientTest extends BaseMockitoUnitTest { @@ -115,7 +115,7 @@ public class YunpianSmsClientTest extends BaseMockitoUnitTest {
115 assertEquals("", statuses.get(0).getErrorCode()); 115 assertEquals("", statuses.get(0).getErrorCode());
116 assertNull(statuses.get(0).getErrorMsg()); 116 assertNull(statuses.get(0).getErrorMsg());
117 assertEquals("15205201314", statuses.get(0).getMobile()); 117 assertEquals("15205201314", statuses.get(0).getMobile());
118 - assertEquals(DateUtils.buildTime(2014, 3, 17, 22, 55, 21), statuses.get(0).getReceiveTime()); 118 + assertEquals(DateUtils.buildLocalDateTime(2014, 3, 17, 22, 55, 21), statuses.get(0).getReceiveTime());
119 assertEquals("9527", statuses.get(0).getSerialNo()); 119 assertEquals("9527", statuses.get(0).getSerialNo());
120 assertEquals(1024L, statuses.get(0).getLogId()); 120 assertEquals(1024L, statuses.get(0).getLogId());
121 } 121 }
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/ConfigFrameworkDAO.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apollo.internals; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apollo.internals;
2 2
3 import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO; 3 import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO;
4 4
5 -import java.util.Date; 5 +import java.time.LocalDateTime;
6 import java.util.List; 6 import java.util.List;
7 7
8 /** 8 /**
@@ -20,7 +20,7 @@ public interface ConfigFrameworkDAO { @@ -20,7 +20,7 @@ public interface ConfigFrameworkDAO {
20 * @param maxUpdateTime 最大更新时间 20 * @param maxUpdateTime 最大更新时间
21 * @return 是否存在 21 * @return 是否存在
22 */ 22 */
23 - int selectCountByUpdateTimeGt(Date maxUpdateTime); 23 + int selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime);
24 24
25 /** 25 /**
26 * 查询配置列表 26 * 查询配置列表
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java
@@ -18,8 +18,8 @@ import lombok.SneakyThrows; @@ -18,8 +18,8 @@ import lombok.SneakyThrows;
18 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
19 19
20 import java.lang.reflect.Constructor; 20 import java.lang.reflect.Constructor;
  21 +import java.time.LocalDateTime;
21 import java.util.Comparator; 22 import java.util.Comparator;
22 -import java.util.Date;  
23 import java.util.List; 23 import java.util.List;
24 import java.util.Properties; 24 import java.util.Properties;
25 import java.util.concurrent.Executors; 25 import java.util.concurrent.Executors;
@@ -48,7 +48,7 @@ public class DBConfigRepository extends AbstractConfigRepository { @@ -48,7 +48,7 @@ public class DBConfigRepository extends AbstractConfigRepository {
48 /** 48 /**
49 * 缓存配置的最大更新时间,用于后续的增量轮询,判断是否有更新 49 * 缓存配置的最大更新时间,用于后续的增量轮询,判断是否有更新
50 */ 50 */
51 - private volatile Date maxUpdateTime; 51 + private volatile LocalDateTime maxUpdateTime;
52 52
53 /** 53 /**
54 * 配置读取 DAO 54 * 配置读取 DAO
@@ -166,7 +166,7 @@ public class DBConfigRepository extends AbstractConfigRepository { @@ -166,7 +166,7 @@ public class DBConfigRepository extends AbstractConfigRepository {
166 * @param maxUpdateTime 当前配置的最大更新时间 166 * @param maxUpdateTime 当前配置的最大更新时间
167 * @return 配置列表 167 * @return 配置列表
168 */ 168 */
169 - private List<ConfigRespDTO> loadConfigIfUpdate(Date maxUpdateTime) { 169 + private List<ConfigRespDTO> loadConfigIfUpdate(LocalDateTime maxUpdateTime) {
170 // 第一步,判断是否要更新。 170 // 第一步,判断是否要更新。
171 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 171 if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据
172 log.info("[loadConfigIfUpdate][首次加载全量配置]"); 172 log.info("[loadConfigIfUpdate][首次加载全量配置]");
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/dto/ConfigRespDTO.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apollo.internals.dto; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apollo.internals.dto;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import java.util.Date; 5 +import java.time.LocalDateTime;
6 6
7 /** 7 /**
8 * 配置 Response DTO 8 * 配置 Response DTO
@@ -28,6 +28,6 @@ public class ConfigRespDTO { @@ -28,6 +28,6 @@ public class ConfigRespDTO {
28 /** 28 /**
29 * 更新时间 29 * 更新时间
30 */ 30 */
31 - private Date updateTime; 31 + private LocalDateTime updateTime;
32 32
33 } 33 }
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/handler/JobHandlerInvoker.java
1 package cn.iocoder.yudao.framework.quartz.core.handler; 1 package cn.iocoder.yudao.framework.quartz.core.handler;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.hutool.core.lang.Assert; 4 import cn.hutool.core.lang.Assert;
4 import cn.hutool.core.thread.ThreadUtil; 5 import cn.hutool.core.thread.ThreadUtil;
5 import cn.iocoder.yudao.framework.quartz.core.enums.JobDataKeyEnum; 6 import cn.iocoder.yudao.framework.quartz.core.enums.JobDataKeyEnum;
@@ -13,10 +14,10 @@ import org.springframework.context.ApplicationContext; @@ -13,10 +14,10 @@ import org.springframework.context.ApplicationContext;
13 import org.springframework.scheduling.quartz.QuartzJobBean; 14 import org.springframework.scheduling.quartz.QuartzJobBean;
14 15
15 import javax.annotation.Resource; 16 import javax.annotation.Resource;
16 -import java.util.Date; 17 +import java.time.LocalDateTime;
  18 +import java.time.temporal.ChronoUnit;
17 19
18 import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage; 20 import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage;
19 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.diff;  
20 21
21 /** 22 /**
22 * 基础 Job 调用者,负责调用 {@link JobHandler#execute(String)} 执行任务 23 * 基础 Job 调用者,负责调用 {@link JobHandler#execute(String)} 执行任务
@@ -46,7 +47,7 @@ public class JobHandlerInvoker extends QuartzJobBean { @@ -46,7 +47,7 @@ public class JobHandlerInvoker extends QuartzJobBean {
46 47
47 // 第二步,执行任务 48 // 第二步,执行任务
48 Long jobLogId = null; 49 Long jobLogId = null;
49 - Date startTime = new Date(); 50 + LocalDateTime startTime = LocalDateTime.now();
50 String data = null; 51 String data = null;
51 Throwable exception = null; 52 Throwable exception = null;
52 try { 53 try {
@@ -73,9 +74,9 @@ public class JobHandlerInvoker extends QuartzJobBean { @@ -73,9 +74,9 @@ public class JobHandlerInvoker extends QuartzJobBean {
73 return jobHandler.execute(jobHandlerParam); 74 return jobHandler.execute(jobHandlerParam);
74 } 75 }
75 76
76 - private void updateJobLogResultAsync(Long jobLogId, Date startTime, String data, Throwable exception, 77 + private void updateJobLogResultAsync(Long jobLogId, LocalDateTime startTime, String data, Throwable exception,
77 JobExecutionContext executionContext) { 78 JobExecutionContext executionContext) {
78 - Date endTime = new Date(); 79 + LocalDateTime endTime = LocalDateTime.now();
79 // 处理是否成功 80 // 处理是否成功
80 boolean success = exception == null; 81 boolean success = exception == null;
81 if (!success) { 82 if (!success) {
@@ -83,7 +84,7 @@ public class JobHandlerInvoker extends QuartzJobBean { @@ -83,7 +84,7 @@ public class JobHandlerInvoker extends QuartzJobBean {
83 } 84 }
84 // 更新日志 85 // 更新日志
85 try { 86 try {
86 - jobLogFrameworkService.updateJobLogResultAsync(jobLogId, endTime, (int) diff(endTime, startTime), success, data); 87 + jobLogFrameworkService.updateJobLogResultAsync(jobLogId, endTime, (int) LocalDateTimeUtil.between(startTime, endTime).toMillis(), success, data);
87 } catch (Exception ex) { 88 } catch (Exception ex) {
88 log.error("[executeInternal][Job({}) logId({}) 记录执行日志失败({}/{})]", 89 log.error("[executeInternal][Job({}) logId({}) 记录执行日志失败({}/{})]",
89 executionContext.getJobDetail().getKey(), jobLogId, success, data); 90 executionContext.getJobDetail().getKey(), jobLogId, success, data);
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/service/JobLogFrameworkService.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.quartz.core.service; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.quartz.core.service;
2 2
3 import javax.validation.constraints.NotEmpty; 3 import javax.validation.constraints.NotEmpty;
4 import javax.validation.constraints.NotNull; 4 import javax.validation.constraints.NotNull;
5 -import java.util.Date; 5 +import java.time.LocalDateTime;
6 6
7 /** 7 /**
8 * Job 日志 Framework Service 接口 8 * Job 日志 Framework Service 接口
@@ -22,7 +22,7 @@ public interface JobLogFrameworkService { @@ -22,7 +22,7 @@ public interface JobLogFrameworkService {
22 * @return Job 日志的编号 22 * @return Job 日志的编号
23 */ 23 */
24 Long createJobLog(@NotNull(message = "任务编号不能为空") Long jobId, 24 Long createJobLog(@NotNull(message = "任务编号不能为空") Long jobId,
25 - @NotNull(message = "开始时间") Date beginTime, 25 + @NotNull(message = "开始时间") LocalDateTime beginTime,
26 @NotEmpty(message = "Job 处理器的名字不能为空") String jobHandlerName, 26 @NotEmpty(message = "Job 处理器的名字不能为空") String jobHandlerName,
27 String jobHandlerParam, 27 String jobHandlerParam,
28 @NotNull(message = "第几次执行不能为空") Integer executeIndex); 28 @NotNull(message = "第几次执行不能为空") Integer executeIndex);
@@ -37,7 +37,7 @@ public interface JobLogFrameworkService { @@ -37,7 +37,7 @@ public interface JobLogFrameworkService {
37 * @param result 成功数据 37 * @param result 成功数据
38 */ 38 */
39 void updateJobLogResultAsync(@NotNull(message = "日志编号不能为空") Long logId, 39 void updateJobLogResultAsync(@NotNull(message = "日志编号不能为空") Long logId,
40 - @NotNull(message = "结束时间不能为空") Date endTime, 40 + @NotNull(message = "结束时间不能为空") LocalDateTime endTime,
41 @NotNull(message = "运行时长不能为空") Integer duration, 41 @NotNull(message = "运行时长不能为空") Integer duration,
42 boolean success, String result); 42 boolean success, String result);
43 43
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/util/CronUtils.java
1 package cn.iocoder.yudao.framework.quartz.core.util; 1 package cn.iocoder.yudao.framework.quartz.core.util;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import org.quartz.CronExpression; 4 import org.quartz.CronExpression;
4 5
5 import java.text.ParseException; 6 import java.text.ParseException;
  7 +import java.time.LocalDateTime;
6 import java.util.ArrayList; 8 import java.util.ArrayList;
7 import java.util.Date; 9 import java.util.Date;
8 import java.util.List; 10 import java.util.List;
@@ -31,7 +33,7 @@ public class CronUtils { @@ -31,7 +33,7 @@ public class CronUtils {
31 * @param n 数量 33 * @param n 数量
32 * @return 满足条件的执行时间 34 * @return 满足条件的执行时间
33 */ 35 */
34 - public static List<Date> getNextTimes(String cronExpression, int n) { 36 + public static List<LocalDateTime> getNextTimes(String cronExpression, int n) {
35 // 获得 CronExpression 对象 37 // 获得 CronExpression 对象
36 CronExpression cron; 38 CronExpression cron;
37 try { 39 try {
@@ -41,10 +43,10 @@ public class CronUtils { @@ -41,10 +43,10 @@ public class CronUtils {
41 } 43 }
42 // 从当前开始计算,n 个满足条件的 44 // 从当前开始计算,n 个满足条件的
43 Date now = new Date(); 45 Date now = new Date();
44 - List<Date> nextTimes = new ArrayList<>(n); 46 + List<LocalDateTime> nextTimes = new ArrayList<>(n);
45 for (int i = 0; i < n; i++) { 47 for (int i = 0; i < n; i++) {
46 Date nextTime = cron.getNextValidTimeAfter(now); 48 Date nextTime = cron.getNextValidTimeAfter(now);
47 - nextTimes.add(nextTime); 49 + nextTimes.add(LocalDateTimeUtil.of(nextTime));
48 // 切换现在,为下一个触发时间; 50 // 切换现在,为下一个触发时间;
49 now = nextTime; 51 now = nextTime;
50 } 52 }
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java
@@ -7,7 +7,7 @@ import lombok.Data; @@ -7,7 +7,7 @@ import lombok.Data;
7 import org.apache.ibatis.type.JdbcType; 7 import org.apache.ibatis.type.JdbcType;
8 8
9 import java.io.Serializable; 9 import java.io.Serializable;
10 -import java.util.Date; 10 +import java.time.LocalDateTime;
11 11
12 /** 12 /**
13 * 基础实体对象 13 * 基础实体对象
@@ -21,12 +21,12 @@ public abstract class BaseDO implements Serializable { @@ -21,12 +21,12 @@ public abstract class BaseDO implements Serializable {
21 * 创建时间 21 * 创建时间
22 */ 22 */
23 @TableField(fill = FieldFill.INSERT) 23 @TableField(fill = FieldFill.INSERT)
24 - private Date createTime; 24 + private LocalDateTime createTime;
25 /** 25 /**
26 * 最后更新时间 26 * 最后更新时间
27 */ 27 */
28 @TableField(fill = FieldFill.INSERT_UPDATE) 28 @TableField(fill = FieldFill.INSERT_UPDATE)
29 - private Date updateTime; 29 + private LocalDateTime updateTime;
30 /** 30 /**
31 * 创建者,目前使用 SysUser 的 id 编号 31 * 创建者,目前使用 SysUser 的 id 编号
32 * 32 *
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/handler/DefaultDBFieldHandler.java
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
5 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 5 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
6 import org.apache.ibatis.reflection.MetaObject; 6 import org.apache.ibatis.reflection.MetaObject;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 import java.util.Objects; 9 import java.util.Objects;
10 10
11 /** 11 /**
@@ -22,7 +22,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler { @@ -22,7 +22,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
22 if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof BaseDO) { 22 if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof BaseDO) {
23 BaseDO baseDO = (BaseDO) metaObject.getOriginalObject(); 23 BaseDO baseDO = (BaseDO) metaObject.getOriginalObject();
24 24
25 - Date current = new Date(); 25 + LocalDateTime current = LocalDateTime.now();
26 // 创建时间为空,则以当前时间为插入时间 26 // 创建时间为空,则以当前时间为插入时间
27 if (Objects.isNull(baseDO.getCreateTime())) { 27 if (Objects.isNull(baseDO.getCreateTime())) {
28 baseDO.setCreateTime(current); 28 baseDO.setCreateTime(current);
@@ -49,7 +49,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler { @@ -49,7 +49,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler {
49 // 更新时间为空,则以当前时间为更新时间 49 // 更新时间为空,则以当前时间为更新时间
50 Object modifyTime = getFieldValByName("updateTime", metaObject); 50 Object modifyTime = getFieldValByName("updateTime", metaObject);
51 if (Objects.isNull(modifyTime)) { 51 if (Objects.isNull(modifyTime)) {
52 - setFieldValByName("updateTime", new Date(), metaObject); 52 + setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
53 } 53 }
54 54
55 // 当前登录用户不为空,更新人为空,则当前登录用户为更新人 55 // 当前登录用户不为空,更新人为空,则当前登录用户为更新人
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
1 package cn.iocoder.yudao.framework.test.core.util; 1 package cn.iocoder.yudao.framework.test.core.util;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.hutool.core.util.ArrayUtil; 4 import cn.hutool.core.util.ArrayUtil;
4 import cn.hutool.core.util.RandomUtil; 5 import cn.hutool.core.util.RandomUtil;
5 import cn.hutool.core.util.StrUtil; 6 import cn.hutool.core.util.StrUtil;
@@ -8,6 +9,7 @@ import uk.co.jemos.podam.api.PodamFactory; @@ -8,6 +9,7 @@ import uk.co.jemos.podam.api.PodamFactory;
8 import uk.co.jemos.podam.api.PodamFactoryImpl; 9 import uk.co.jemos.podam.api.PodamFactoryImpl;
9 10
10 import java.lang.reflect.Type; 11 import java.lang.reflect.Type;
  12 +import java.time.LocalDateTime;
11 import java.util.Arrays; 13 import java.util.Arrays;
12 import java.util.Date; 14 import java.util.Date;
13 import java.util.List; 15 import java.util.List;
@@ -76,6 +78,10 @@ public class RandomUtils { @@ -76,6 +78,10 @@ public class RandomUtils {
76 return RandomUtil.randomDay(0, RANDOM_DATE_MAX); 78 return RandomUtil.randomDay(0, RANDOM_DATE_MAX);
77 } 79 }
78 80
  81 + public static LocalDateTime randomLocalDateTime() {
  82 + return LocalDateTimeUtil.of(randomDate());
  83 + }
  84 +
79 public static Short randomShort() { 85 public static Short randomShort() {
80 return (short) RandomUtil.randomInt(0, Short.MAX_VALUE); 86 return (short) RandomUtil.randomInt(0, Short.MAX_VALUE);
81 } 87 }
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java
1 package cn.iocoder.yudao.framework.apilog.core.filter; 1 package cn.iocoder.yudao.framework.apilog.core.filter;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.hutool.core.exceptions.ExceptionUtil; 4 import cn.hutool.core.exceptions.ExceptionUtil;
4 import cn.hutool.core.map.MapUtil; 5 import cn.hutool.core.map.MapUtil;
5 import cn.hutool.extra.servlet.ServletUtil; 6 import cn.hutool.extra.servlet.ServletUtil;
@@ -7,7 +8,6 @@ import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLog; @@ -7,7 +8,6 @@ import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLog;
7 import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService; 8 import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService;
8 import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; 9 import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
9 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 10 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
10 -import cn.iocoder.yudao.framework.common.util.date.DateUtils;  
11 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; 11 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
12 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; 12 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
13 import cn.iocoder.yudao.framework.web.config.WebProperties; 13 import cn.iocoder.yudao.framework.web.config.WebProperties;
@@ -20,7 +20,8 @@ import javax.servlet.ServletException; @@ -20,7 +20,8 @@ import javax.servlet.ServletException;
20 import javax.servlet.http.HttpServletRequest; 20 import javax.servlet.http.HttpServletRequest;
21 import javax.servlet.http.HttpServletResponse; 21 import javax.servlet.http.HttpServletResponse;
22 import java.io.IOException; 22 import java.io.IOException;
23 -import java.util.Date; 23 +import java.time.LocalDateTime;
  24 +import java.time.temporal.ChronoUnit;
24 import java.util.Map; 25 import java.util.Map;
25 26
26 import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; 27 import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString;
@@ -47,7 +48,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter { @@ -47,7 +48,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
47 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) 48 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
48 throws ServletException, IOException { 49 throws ServletException, IOException {
49 // 获得开始时间 50 // 获得开始时间
50 - Date beginTim = new Date(); 51 + LocalDateTime beginTime = LocalDateTime.now();
51 // 提前获得参数,避免 XssFilter 过滤处理 52 // 提前获得参数,避免 XssFilter 过滤处理
52 Map<String, String> queryString = ServletUtil.getParamMap(request); 53 Map<String, String> queryString = ServletUtil.getParamMap(request);
53 String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtil.getBody(request) : null; 54 String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtil.getBody(request) : null;
@@ -56,15 +57,15 @@ public class ApiAccessLogFilter extends ApiRequestFilter { @@ -56,15 +57,15 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
56 // 继续过滤器 57 // 继续过滤器
57 filterChain.doFilter(request, response); 58 filterChain.doFilter(request, response);
58 // 正常执行,记录日志 59 // 正常执行,记录日志
59 - createApiAccessLog(request, beginTim, queryString, requestBody, null); 60 + createApiAccessLog(request, beginTime, queryString, requestBody, null);
60 } catch (Exception ex) { 61 } catch (Exception ex) {
61 // 异常执行,记录日志 62 // 异常执行,记录日志
62 - createApiAccessLog(request, beginTim, queryString, requestBody, ex); 63 + createApiAccessLog(request, beginTime, queryString, requestBody, ex);
63 throw ex; 64 throw ex;
64 } 65 }
65 } 66 }
66 67
67 - private void createApiAccessLog(HttpServletRequest request, Date beginTime, 68 + private void createApiAccessLog(HttpServletRequest request, LocalDateTime beginTime,
68 Map<String, String> queryString, String requestBody, Exception ex) { 69 Map<String, String> queryString, String requestBody, Exception ex) {
69 ApiAccessLog accessLog = new ApiAccessLog(); 70 ApiAccessLog accessLog = new ApiAccessLog();
70 try { 71 try {
@@ -75,7 +76,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter { @@ -75,7 +76,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
75 } 76 }
76 } 77 }
77 78
78 - private void buildApiAccessLogDTO(ApiAccessLog accessLog, HttpServletRequest request, Date beginTime, 79 + private void buildApiAccessLogDTO(ApiAccessLog accessLog, HttpServletRequest request, LocalDateTime beginTime,
79 Map<String, String> queryString, String requestBody, Exception ex) { 80 Map<String, String> queryString, String requestBody, Exception ex) {
80 // 处理用户信息 81 // 处理用户信息
81 accessLog.setUserId(WebFrameworkUtils.getLoginUserId(request)); 82 accessLog.setUserId(WebFrameworkUtils.getLoginUserId(request));
@@ -103,8 +104,8 @@ public class ApiAccessLogFilter extends ApiRequestFilter { @@ -103,8 +104,8 @@ public class ApiAccessLogFilter extends ApiRequestFilter {
103 accessLog.setUserIp(ServletUtil.getClientIP(request)); 104 accessLog.setUserIp(ServletUtil.getClientIP(request));
104 // 持续时间 105 // 持续时间
105 accessLog.setBeginTime(beginTime); 106 accessLog.setBeginTime(beginTime);
106 - accessLog.setEndTime(new Date());  
107 - accessLog.setDuration((int) DateUtils.diff(accessLog.getEndTime(), accessLog.getBeginTime())); 107 + accessLog.setEndTime(LocalDateTime.now());
  108 + accessLog.setDuration((int) LocalDateTimeUtil.between(accessLog.getBeginTime(), accessLog.getEndTime(), ChronoUnit.SECONDS));
108 } 109 }
109 110
110 } 111 }
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLog.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.apilog.core.service; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.apilog.core.service;
3 import lombok.Data; 3 import lombok.Data;
4 4
5 import javax.validation.constraints.NotNull; 5 import javax.validation.constraints.NotNull;
6 -import java.util.Date; 6 +import java.time.LocalDateTime;
7 7
8 /** 8 /**
9 * API 访问日志 9 * API 访问日志
@@ -61,12 +61,12 @@ public class ApiAccessLog { @@ -61,12 +61,12 @@ public class ApiAccessLog {
61 * 开始请求时间 61 * 开始请求时间
62 */ 62 */
63 @NotNull(message = "开始请求时间不能为空") 63 @NotNull(message = "开始请求时间不能为空")
64 - private Date beginTime; 64 + private LocalDateTime beginTime;
65 /** 65 /**
66 * 结束请求时间 66 * 结束请求时间
67 */ 67 */
68 @NotNull(message = "结束请求时间不能为空") 68 @NotNull(message = "结束请求时间不能为空")
69 - private Date endTime; 69 + private LocalDateTime endTime;
70 /** 70 /**
71 * 执行时长,单位:毫秒 71 * 执行时长,单位:毫秒
72 */ 72 */
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLog.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.apilog.core.service; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.apilog.core.service;
3 import lombok.Data; 3 import lombok.Data;
4 4
5 import javax.validation.constraints.NotNull; 5 import javax.validation.constraints.NotNull;
6 -import java.util.Date; 6 +import java.time.LocalDateTime;
7 7
8 /** 8 /**
9 * API 错误日志 9 * API 错误日志
@@ -61,7 +61,7 @@ public class ApiErrorLog { @@ -61,7 +61,7 @@ public class ApiErrorLog {
61 * 异常时间 61 * 异常时间
62 */ 62 */
63 @NotNull(message = "异常时间不能为空") 63 @NotNull(message = "异常时间不能为空")
64 - private Date exceptionTime; 64 + private LocalDateTime exceptionTime;
65 /** 65 /**
66 * 异常名 66 * 异常名
67 */ 67 */
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
@@ -31,7 +31,7 @@ import javax.servlet.http.HttpServletRequest; @@ -31,7 +31,7 @@ import javax.servlet.http.HttpServletRequest;
31 import javax.validation.ConstraintViolation; 31 import javax.validation.ConstraintViolation;
32 import javax.validation.ConstraintViolationException; 32 import javax.validation.ConstraintViolationException;
33 import javax.validation.ValidationException; 33 import javax.validation.ValidationException;
34 -import java.util.Date; 34 +import java.time.LocalDateTime;
35 import java.util.Map; 35 import java.util.Map;
36 36
37 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.*; 37 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.*;
@@ -267,7 +267,7 @@ public class GlobalExceptionHandler { @@ -267,7 +267,7 @@ public class GlobalExceptionHandler {
267 errorLog.setRequestMethod(request.getMethod()); 267 errorLog.setRequestMethod(request.getMethod());
268 errorLog.setUserAgent(ServletUtils.getUserAgent(request)); 268 errorLog.setUserAgent(ServletUtils.getUserAgent(request));
269 errorLog.setUserIp(ServletUtil.getClientIP(request)); 269 errorLog.setUserIp(ServletUtil.getClientIP(request));
270 - errorLog.setExceptionTime(new Date()); 270 + errorLog.setExceptionTime(LocalDateTime.now());
271 } 271 }
272 272
273 } 273 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormRespVO.java
@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 import javax.validation.constraints.NotNull; 9 import javax.validation.constraints.NotNull;
10 -import java.util.Date; 10 +import java.time.LocalDateTime;
11 import java.util.List; 11 import java.util.List;
12 12
13 @ApiModel("管理后台 - 动态表单 Response VO") 13 @ApiModel("管理后台 - 动态表单 Response VO")
@@ -28,6 +28,6 @@ public class BpmFormRespVO extends BpmFormBaseVO { @@ -28,6 +28,6 @@ public class BpmFormRespVO extends BpmFormBaseVO {
28 private List<String> fields; 28 private List<String> fields;
29 29
30 @ApiModelProperty(value = "创建时间", required = true) 30 @ApiModelProperty(value = "创建时间", required = true)
31 - private Date createTime; 31 + private LocalDateTime createTime;
32 32
33 } 33 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupPageReqVO.java
@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode; @@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
9 import lombok.ToString; 9 import lombok.ToString;
10 import org.springframework.format.annotation.DateTimeFormat; 10 import org.springframework.format.annotation.DateTimeFormat;
11 11
12 -import java.util.Date; 12 +import java.time.LocalDateTime;
13 13
14 @ApiModel("管理后台 - 用户组分页 Request VO") 14 @ApiModel("管理后台 - 用户组分页 Request VO")
15 @Data 15 @Data
@@ -25,6 +25,6 @@ public class BpmUserGroupPageReqVO extends PageParam { @@ -25,6 +25,6 @@ public class BpmUserGroupPageReqVO extends PageParam {
25 25
26 @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 26 @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 @ApiModelProperty(value = "创建时间") 27 @ApiModelProperty(value = "创建时间")
28 - private Date[] createTime; 28 + private LocalDateTime[] createTime;
29 29
30 } 30 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/group/BpmUserGroupRespVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; 1 package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +
  5 +import java.time.LocalDateTime;
  6 +
5 import io.swagger.annotations.*; 7 import io.swagger.annotations.*;
6 8
7 @ApiModel("管理后台 - 用户组 Response VO") 9 @ApiModel("管理后台 - 用户组 Response VO")
@@ -14,6 +16,6 @@ public class BpmUserGroupRespVO extends BpmUserGroupBaseVO { @@ -14,6 +16,6 @@ public class BpmUserGroupRespVO extends BpmUserGroupBaseVO {
14 private Long id; 16 private Long id;
15 17
16 @ApiModelProperty(value = "创建时间", required = true) 18 @ApiModelProperty(value = "创建时间", required = true)
17 - private Date createTime; 19 + private LocalDateTime createTime;
18 20
19 } 21 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelPageItemRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 流程模型的分页的每一项 Response VO") 11 @ApiModel("管理后台 - 流程模型的分页的每一项 Response VO")
12 @Data 12 @Data
@@ -21,7 +21,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO { @@ -21,7 +21,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO {
21 private String formName; 21 private String formName;
22 22
23 @ApiModelProperty(value = "创建时间", required = true) 23 @ApiModelProperty(value = "创建时间", required = true)
24 - private Date createTime; 24 + private LocalDateTime createTime;
25 25
26 /** 26 /**
27 * 最新部署的流程定义 27 * 最新部署的流程定义
@@ -39,7 +39,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO { @@ -39,7 +39,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO {
39 private Integer version; 39 private Integer version;
40 40
41 @ApiModelProperty(value = "部署时间", required = true) 41 @ApiModelProperty(value = "部署时间", required = true)
42 - private Date deploymentTime; 42 + private LocalDateTime deploymentTime;
43 43
44 @ApiModelProperty(value = "中断状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") 44 @ApiModelProperty(value = "中断状态", required = true, example = "1", notes = "参见 SuspensionState 枚举")
45 private Integer suspensionState; 45 private Integer suspensionState;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 流程模型的创建 Request VO") 11 @ApiModel("管理后台 - 流程模型的创建 Request VO")
12 @Data 12 @Data
@@ -21,6 +21,6 @@ public class BpmModelRespVO extends BpmModelBaseVO { @@ -21,6 +21,6 @@ public class BpmModelRespVO extends BpmModelBaseVO {
21 private String bpmnXml; 21 private String bpmnXml;
22 22
23 @ApiModelProperty(value = "创建时间", required = true) 23 @ApiModelProperty(value = "创建时间", required = true)
24 - private Date createTime; 24 + private LocalDateTime createTime;
25 25
26 } 26 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/process/BpmProcessDefinitionPageItemRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 流程定义的分页的每一项 Response VO") 11 @ApiModel("管理后台 - 流程定义的分页的每一项 Response VO")
12 @Data 12 @Data
@@ -18,6 +18,6 @@ public class BpmProcessDefinitionPageItemRespVO extends BpmProcessDefinitionResp @@ -18,6 +18,6 @@ public class BpmProcessDefinitionPageItemRespVO extends BpmProcessDefinitionResp
18 private String formName; 18 private String formName;
19 19
20 @ApiModelProperty(value = "部署时间", required = true) 20 @ApiModelProperty(value = "部署时间", required = true)
21 - private Date deploymentTime; 21 + private LocalDateTime deploymentTime;
22 22
23 } 23 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveBaseVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +import java.time.LocalDateTime;
5 import io.swagger.annotations.*; 5 import io.swagger.annotations.*;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
7 import org.springframework.format.annotation.DateTimeFormat; 7 import org.springframework.format.annotation.DateTimeFormat;
@@ -18,11 +18,11 @@ public class BpmOALeaveBaseVO { @@ -18,11 +18,11 @@ public class BpmOALeaveBaseVO {
18 @ApiModelProperty(value = "请假的开始时间", required = true) 18 @ApiModelProperty(value = "请假的开始时间", required = true)
19 @NotNull(message = "开始时间不能为空") 19 @NotNull(message = "开始时间不能为空")
20 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 20 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
21 - private Date startTime; 21 + private LocalDateTime startTime;
22 @ApiModelProperty(value = "请假的结束时间", required = true) 22 @ApiModelProperty(value = "请假的结束时间", required = true)
23 @NotNull(message = "结束时间不能为空") 23 @NotNull(message = "结束时间不能为空")
24 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 24 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
25 - private Date endTime; 25 + private LocalDateTime endTime;
26 26
27 @ApiModelProperty(value = "请假类型", required = true, example = "1", notes = "参见 bpm_oa_type 枚举") 27 @ApiModelProperty(value = "请假类型", required = true, example = "1", notes = "参见 bpm_oa_type 枚举")
28 private Integer type; 28 private Integer type;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveCreateReqVO.java
@@ -15,7 +15,7 @@ public class BpmOALeaveCreateReqVO extends BpmOALeaveBaseVO { @@ -15,7 +15,7 @@ public class BpmOALeaveCreateReqVO extends BpmOALeaveBaseVO {
15 15
16 @AssertTrue(message = "结束时间,需要在开始时间之后") 16 @AssertTrue(message = "结束时间,需要在开始时间之后")
17 public boolean isEndTimeValid() { 17 public boolean isEndTimeValid() {
18 - return !getEndTime().before(getStartTime()); 18 + return !getEndTime().isBefore(getStartTime());
19 } 19 }
20 20
21 } 21 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeavePageReqVO.java
1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; 1 package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +import java.time.LocalDateTime;
5 import io.swagger.annotations.*; 5 import io.swagger.annotations.*;
6 import cn.iocoder.yudao.framework.common.pojo.PageParam; 6 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 import org.springframework.format.annotation.DateTimeFormat; 7 import org.springframework.format.annotation.DateTimeFormat;
@@ -25,6 +25,6 @@ public class BpmOALeavePageReqVO extends PageParam { @@ -25,6 +25,6 @@ public class BpmOALeavePageReqVO extends PageParam {
25 25
26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 @ApiModelProperty(value = "申请时间") 27 @ApiModelProperty(value = "申请时间")
28 - private Date[] createTime; 28 + private LocalDateTime[] createTime;
29 29
30 } 30 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/BpmOALeaveRespVO.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.*; @@ -5,7 +5,7 @@ import io.swagger.annotations.*;
5 import org.springframework.format.annotation.DateTimeFormat; 5 import org.springframework.format.annotation.DateTimeFormat;
6 6
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -24,7 +24,7 @@ public class BpmOALeaveRespVO extends BpmOALeaveBaseVO { @@ -24,7 +24,7 @@ public class BpmOALeaveRespVO extends BpmOALeaveBaseVO {
24 @ApiModelProperty(value = "申请时间", required = true) 24 @ApiModelProperty(value = "申请时间", required = true)
25 @NotNull(message = "申请时间不能为空") 25 @NotNull(message = "申请时间不能为空")
26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 - private Date createTime; 27 + private LocalDateTime createTime;
28 28
29 @ApiModelProperty(value = "流程id") 29 @ApiModelProperty(value = "流程id")
30 private String processInstanceId; 30 private String processInstanceId;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/activity/BpmActivityRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel; @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import java.util.Date; 7 +import java.time.LocalDateTime;
8 8
9 @ApiModel("管理后台 - 流程活动的 Response VO") 9 @ApiModel("管理后台 - 流程活动的 Response VO")
10 @Data 10 @Data
@@ -16,9 +16,9 @@ public class BpmActivityRespVO { @@ -16,9 +16,9 @@ public class BpmActivityRespVO {
16 private String type; 16 private String type;
17 17
18 @ApiModelProperty(value = "流程活动的开始时间", required = true) 18 @ApiModelProperty(value = "流程活动的开始时间", required = true)
19 - private Date startTime; 19 + private LocalDateTime startTime;
20 @ApiModelProperty(value = "流程活动的结束时间", required = true) 20 @ApiModelProperty(value = "流程活动的结束时间", required = true)
21 - private Date endTime; 21 + private LocalDateTime endTime;
22 22
23 @ApiModelProperty(value = "关联的流程任务的编号", example = "2048", notes = "关联的流程任务,只有 UserTask 等类型才有") 23 @ApiModelProperty(value = "关联的流程任务的编号", example = "2048", notes = "关联的流程任务,只有 UserTask 等类型才有")
24 private String taskId; 24 private String taskId;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceMyPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -35,6 +35,6 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam { @@ -35,6 +35,6 @@ public class BpmProcessInstanceMyPageReqVO extends PageParam {
35 35
36 @ApiModelProperty(value = "创建时间") 36 @ApiModelProperty(value = "创建时间")
37 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 37 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
38 - private Date[] createTime; 38 + private LocalDateTime[] createTime;
39 39
40 } 40 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstancePageItemRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel; @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import java.util.Date; 7 +import java.time.LocalDateTime;
8 import java.util.List; 8 import java.util.List;
9 9
10 @ApiModel("管理后台 - 流程实例的分页 Item Response VO") 10 @ApiModel("管理后台 - 流程实例的分页 Item Response VO")
@@ -30,10 +30,10 @@ public class BpmProcessInstancePageItemRespVO { @@ -30,10 +30,10 @@ public class BpmProcessInstancePageItemRespVO {
30 private Integer result; 30 private Integer result;
31 31
32 @ApiModelProperty(value = "提交时间", required = true) 32 @ApiModelProperty(value = "提交时间", required = true)
33 - private Date createTime; 33 + private LocalDateTime createTime;
34 34
35 @ApiModelProperty(value = "结束时间", required = true) 35 @ApiModelProperty(value = "结束时间", required = true)
36 - private Date endTime; 36 + private LocalDateTime endTime;
37 37
38 /** 38 /**
39 * 当前任务 39 * 当前任务
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel; @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import java.util.Date; 7 +import java.time.LocalDateTime;
8 import java.util.List; 8 import java.util.List;
9 import java.util.Map; 9 import java.util.Map;
10 10
@@ -28,10 +28,10 @@ public class BpmProcessInstanceRespVO { @@ -28,10 +28,10 @@ public class BpmProcessInstanceRespVO {
28 private Integer result; 28 private Integer result;
29 29
30 @ApiModelProperty(value = "提交时间", required = true) 30 @ApiModelProperty(value = "提交时间", required = true)
31 - private Date createTime; 31 + private LocalDateTime createTime;
32 32
33 @ApiModelProperty(value = "结束时间", required = true) 33 @ApiModelProperty(value = "结束时间", required = true)
34 - private Date endTime; 34 + private LocalDateTime endTime;
35 35
36 @ApiModelProperty(value = "提交的表单值", required = true) 36 @ApiModelProperty(value = "提交的表单值", required = true)
37 private Map<String, Object> formVariables; 37 private Map<String, Object> formVariables;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageItemRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 流程任务的 Done 已完成的分页项 Response VO") 11 @ApiModel("管理后台 - 流程任务的 Done 已完成的分页项 Response VO")
12 @Data 12 @Data
@@ -15,7 +15,7 @@ import java.util.Date; @@ -15,7 +15,7 @@ import java.util.Date;
15 public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO { 15 public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO {
16 16
17 @ApiModelProperty(value = "结束时间", required = true) 17 @ApiModelProperty(value = "结束时间", required = true)
18 - private Date endTime; 18 + private LocalDateTime endTime;
19 @ApiModelProperty(value = "持续时间", required = true, example = "1000") 19 @ApiModelProperty(value = "持续时间", required = true, example = "1000")
20 private Long durationInMillis; 20 private Long durationInMillis;
21 21
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskDonePageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -23,10 +23,10 @@ public class BpmTaskDonePageReqVO extends PageParam { @@ -23,10 +23,10 @@ public class BpmTaskDonePageReqVO extends PageParam {
23 23
24 @ApiModelProperty(value = "开始的创建收间") 24 @ApiModelProperty(value = "开始的创建收间")
25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26 - private Date beginCreateTime; 26 + private LocalDateTime beginCreateTime;
27 27
28 @ApiModelProperty(value = "结束的创建时间") 28 @ApiModelProperty(value = "结束的创建时间")
29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30 - private Date endCreateTime; 30 + private LocalDateTime endCreateTime;
31 31
32 } 32 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageItemRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel; @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import java.util.Date; 7 +import java.time.LocalDateTime;
8 8
9 @ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO") 9 @ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO")
10 @Data 10 @Data
@@ -17,10 +17,10 @@ public class BpmTaskTodoPageItemRespVO { @@ -17,10 +17,10 @@ public class BpmTaskTodoPageItemRespVO {
17 private String name; 17 private String name;
18 18
19 @ApiModelProperty(value = "接收时间", required = true) 19 @ApiModelProperty(value = "接收时间", required = true)
20 - private Date claimTime; 20 + private LocalDateTime claimTime;
21 21
22 @ApiModelProperty(value = "创建时间", required = true) 22 @ApiModelProperty(value = "创建时间", required = true)
23 - private Date createTime; 23 + private LocalDateTime createTime;
24 24
25 @ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") 25 @ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举")
26 private Integer suspensionState; 26 private Integer suspensionState;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskTodoPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -23,10 +23,10 @@ public class BpmTaskTodoPageReqVO extends PageParam { @@ -23,10 +23,10 @@ public class BpmTaskTodoPageReqVO extends PageParam {
23 23
24 @ApiModelProperty(value = "开始的创建收间") 24 @ApiModelProperty(value = "开始的创建收间")
25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 25 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26 - private Date beginCreateTime; 26 + private LocalDateTime beginCreateTime;
27 27
28 @ApiModelProperty(value = "结束的创建时间") 28 @ApiModelProperty(value = "结束的创建时间")
29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 29 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
30 - private Date endCreateTime; 30 + private LocalDateTime endCreateTime;
31 31
32 } 32 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmModelConvert.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.convert.definition; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.convert.definition;
2 2
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  5 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
5 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 6 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*; 7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*;
7 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; 8 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
@@ -44,7 +45,7 @@ public interface BpmModelConvert { @@ -44,7 +45,7 @@ public interface BpmModelConvert {
44 default BpmModelPageItemRespVO convert(Model model, BpmFormDO form, Deployment deployment, ProcessDefinition processDefinition) { 45 default BpmModelPageItemRespVO convert(Model model, BpmFormDO form, Deployment deployment, ProcessDefinition processDefinition) {
45 BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO(); 46 BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO();
46 modelRespVO.setId(model.getId()); 47 modelRespVO.setId(model.getId());
47 - modelRespVO.setCreateTime(model.getCreateTime()); 48 + modelRespVO.setCreateTime(DateUtils.dateToLocalDateTime(model.getCreateTime()));
48 // 通用 copy 49 // 通用 copy
49 copyTo(model, modelRespVO); 50 copyTo(model, modelRespVO);
50 // Form 51 // Form
@@ -57,7 +58,7 @@ public interface BpmModelConvert { @@ -57,7 +58,7 @@ public interface BpmModelConvert {
57 if (modelRespVO.getProcessDefinition() != null) { 58 if (modelRespVO.getProcessDefinition() != null) {
58 modelRespVO.getProcessDefinition().setSuspensionState(processDefinition.isSuspended() ? 59 modelRespVO.getProcessDefinition().setSuspensionState(processDefinition.isSuspended() ?
59 SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode()); 60 SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode());
60 - modelRespVO.getProcessDefinition().setDeploymentTime(deployment.getDeploymentTime()); 61 + modelRespVO.getProcessDefinition().setDeploymentTime(DateUtils.dateToLocalDateTime(deployment.getDeploymentTime()));
61 } 62 }
62 return modelRespVO; 63 return modelRespVO;
63 } 64 }
@@ -65,7 +66,7 @@ public interface BpmModelConvert { @@ -65,7 +66,7 @@ public interface BpmModelConvert {
65 default BpmModelRespVO convert(Model model) { 66 default BpmModelRespVO convert(Model model) {
66 BpmModelRespVO modelRespVO = new BpmModelRespVO(); 67 BpmModelRespVO modelRespVO = new BpmModelRespVO();
67 modelRespVO.setId(model.getId()); 68 modelRespVO.setId(model.getId());
68 - modelRespVO.setCreateTime(model.getCreateTime()); 69 + modelRespVO.setCreateTime(DateUtils.dateToLocalDateTime(model.getCreateTime()));
69 // 通用 copy 70 // 通用 copy
70 copyTo(model, modelRespVO); 71 copyTo(model, modelRespVO);
71 return modelRespVO; 72 return modelRespVO;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmProcessDefinitionConvert.java
1 package cn.iocoder.yudao.module.bpm.convert.definition; 1 package cn.iocoder.yudao.module.bpm.convert.definition;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  5 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
4 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageItemRespVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageItemRespVO;
5 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO; 7 import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
6 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; 8 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
@@ -67,7 +69,7 @@ public interface BpmProcessDefinitionConvert { @@ -67,7 +69,7 @@ public interface BpmProcessDefinitionConvert {
67 BpmProcessDefinitionPageItemRespVO respVO = convert(bean); 69 BpmProcessDefinitionPageItemRespVO respVO = convert(bean);
68 respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode()); 70 respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode());
69 if (deployment != null) { 71 if (deployment != null) {
70 - respVO.setDeploymentTime(deployment.getDeploymentTime()); 72 + respVO.setDeploymentTime(LocalDateTimeUtil.of(deployment.getDeploymentTime()));
71 } 73 }
72 if (form != null) { 74 if (form != null) {
73 respVO.setFormName(form.getName()); 75 respVO.setFormName(form.getName());
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java
1 package cn.iocoder.yudao.module.bpm.convert.task; 1 package cn.iocoder.yudao.module.bpm.convert.task;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 4 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
4 import cn.iocoder.yudao.framework.common.util.number.NumberUtils; 5 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskDonePageItemRespVO; 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskDonePageItemRespVO;
@@ -151,7 +152,7 @@ public interface BpmTaskConvert { @@ -151,7 +152,7 @@ public interface BpmTaskConvert {
151 BpmTaskExtDO taskExtDO = new BpmTaskExtDO().setTaskId(task.getId()) 152 BpmTaskExtDO taskExtDO = new BpmTaskExtDO().setTaskId(task.getId())
152 .setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setName(task.getName()) 153 .setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setName(task.getName())
153 .setProcessDefinitionId(task.getProcessDefinitionId()).setProcessInstanceId(task.getProcessInstanceId()); 154 .setProcessDefinitionId(task.getProcessDefinitionId()).setProcessInstanceId(task.getProcessInstanceId());
154 - taskExtDO.setCreateTime(task.getCreateTime()); 155 + taskExtDO.setCreateTime(LocalDateTimeUtil.of(task.getCreateTime()));
155 return taskExtDO; 156 return taskExtDO;
156 } 157 }
157 158
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa;
2 2
3 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; 3 import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum;
4 import lombok.*; 4 import lombok.*;
5 -import java.util.*; 5 +import java.time.LocalDateTime;
6 import com.baomidou.mybatisplus.annotation.*; 6 import com.baomidou.mybatisplus.annotation.*;
7 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 7 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
8 8
@@ -46,11 +46,11 @@ public class BpmOALeaveDO extends BaseDO { @@ -46,11 +46,11 @@ public class BpmOALeaveDO extends BaseDO {
46 /** 46 /**
47 * 开始时间 47 * 开始时间
48 */ 48 */
49 - private Date startTime; 49 + private LocalDateTime startTime;
50 /** 50 /**
51 * 结束时间 51 * 结束时间
52 */ 52 */
53 - private Date endTime; 53 + private LocalDateTime endTime;
54 /** 54 /**
55 * 请假天数 55 * 请假天数
56 */ 56 */
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmActivityDO.java
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; @@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
4 import lombok.*; 4 import lombok.*;
5 import org.springframework.format.annotation.DateTimeFormat; 5 import org.springframework.format.annotation.DateTimeFormat;
6 6
7 -import java.util.Date; 7 +import java.time.LocalDateTime;
8 8
9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
@@ -80,18 +80,18 @@ public class BpmActivityDO { @@ -80,18 +80,18 @@ public class BpmActivityDO {
80 */ 80 */
81 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 81 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
82 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) 82 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
83 - private Date startTime; 83 + private LocalDateTime startTime;
84 84
85 /** 85 /**
86 * 任务结束时间 86 * 任务结束时间
87 */ 87 */
88 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 88 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
89 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) 89 @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
90 - private Date endTime; 90 + private LocalDateTime endTime;
91 91
92 private Integer transactionOrder; 92 private Integer transactionOrder;
93 93
94 - private Long duration; 94 + private LocalDateTime duration;
95 95
96 /** 96 /**
97 * 删除结果 97 * 删除结果
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmProcessInstanceExtDO.java
@@ -11,7 +11,7 @@ import lombok.Data; @@ -11,7 +11,7 @@ import lombok.Data;
11 import lombok.EqualsAndHashCode; 11 import lombok.EqualsAndHashCode;
12 import lombok.ToString; 12 import lombok.ToString;
13 13
14 -import java.util.Date; 14 +import java.time.LocalDateTime;
15 import java.util.Map; 15 import java.util.Map;
16 16
17 /** 17 /**
@@ -79,7 +79,7 @@ public class BpmProcessInstanceExtDO extends BaseDO { @@ -79,7 +79,7 @@ public class BpmProcessInstanceExtDO extends BaseDO {
79 * 79 *
80 * 冗余 HistoricProcessInstance 的 endTime 属性 80 * 冗余 HistoricProcessInstance 的 endTime 属性
81 */ 81 */
82 - private Date endTime; 82 + private LocalDateTime endTime;
83 83
84 /** 84 /**
85 * 提交的表单值 85 * 提交的表单值
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmTaskExtDO.java
@@ -8,7 +8,7 @@ import lombok.Data; @@ -8,7 +8,7 @@ import lombok.Data;
8 import lombok.EqualsAndHashCode; 8 import lombok.EqualsAndHashCode;
9 import lombok.ToString; 9 import lombok.ToString;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 /** 13 /**
14 * Bpm 流程任务的拓展表 14 * Bpm 流程任务的拓展表
@@ -67,7 +67,7 @@ public class BpmTaskExtDO extends BaseDO { @@ -67,7 +67,7 @@ public class BpmTaskExtDO extends BaseDO {
67 * 67 *
68 * 冗余 HistoricTaskInstance 的 endTime 属性 68 * 冗余 HistoricTaskInstance 的 endTime 属性
69 */ 69 */
70 - private Date endTime; 70 + private LocalDateTime endTime;
71 71
72 /** 72 /**
73 * 流程实例的编号 73 * 流程实例的编号
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java
1 package cn.iocoder.yudao.module.bpm.service.oa; 1 package cn.iocoder.yudao.module.bpm.service.oa;
2 2
3 -import cn.hutool.core.date.DateUtil; 3 +import cn.hutool.core.date.LocalDateTimeUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; 5 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
6 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; 6 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
@@ -46,7 +46,7 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService { @@ -46,7 +46,7 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService {
46 @Transactional(rollbackFor = Exception.class) 46 @Transactional(rollbackFor = Exception.class)
47 public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) { 47 public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) {
48 // 插入 OA 请假单 48 // 插入 OA 请假单
49 - long day = DateUtil.betweenDay(createReqVO.getStartTime(), createReqVO.getEndTime(), false); 49 + long day = LocalDateTimeUtil.between(createReqVO.getStartTime(), createReqVO.getEndTime()).toDays();
50 BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day) 50 BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day)
51 .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); 51 .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
52 leaveMapper.insert(leave); 52 leaveMapper.insert(leave);
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
1 -package cn.iocoder.yudao.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. <a href="https://blog.csdn.net/bobozai86/article/details/105210414" /> * * HistoricProcessInstance & ProcessInstance 的关系: * 1. <a href=" https://my.oschina.net/843294669/blog/71902" /> * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<ProcessInstance> getProcessInstances(Set<String> ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(new Date()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map<String, Object> variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.startProcessInstanceById(definition.getId(), businessKey, variables); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } }  
2 \ No newline at end of file 1 \ No newline at end of file
  2 +package cn.iocoder.yudao.module.bpm.service.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*; import cn.iocoder.yudao.module.bpm.convert.task.BpmProcessInstanceConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceDeleteReasonEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum; import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventPublisher; import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService; import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; import cn.iocoder.yudao.module.system.api.dept.DeptApi; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.HistoryService; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.FlowableCancelledEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; /** * 流程实例 Service 实现类 * * ProcessDefinition & ProcessInstance & Execution & Task 的关系: * 1. <a href="https://blog.csdn.net/bobozai86/article/details/105210414" /> * * HistoricProcessInstance & ProcessInstance 的关系: * 1. <a href=" https://my.oschina.net/843294669/blog/71902" /> * * 简单来说,前者 = 历史 + 运行中的流程实例,后者仅是运行中的流程实例 * * @author 芋道源码 */ @Service @Validated @Slf4j public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService { @Resource private RuntimeService runtimeService; @Resource private BpmProcessInstanceExtMapper processInstanceExtMapper; @Resource @Lazy // 解决循环依赖 private BpmTaskService taskService; @Resource private BpmProcessDefinitionService processDefinitionService; @Resource private HistoryService historyService; @Resource private AdminUserApi adminUserApi; @Resource private DeptApi deptApi; @Resource private BpmProcessInstanceResultEventPublisher processInstanceResultEventPublisher; @Resource private BpmMessageService messageService; @Override public ProcessInstance getProcessInstance(String id) { return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<ProcessInstance> getProcessInstances(Set<String> ids) { return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public PageResult<BpmProcessInstancePageItemRespVO> getMyProcessInstancePage(Long userId, BpmProcessInstanceMyPageReqVO pageReqVO) { // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 PageResult<BpmProcessInstanceExtDO> pageResult = processInstanceExtMapper.selectPage(userId, pageReqVO); if (CollUtil.isEmpty(pageResult.getList())) { return new PageResult<>(pageResult.getTotal()); } // 获得流程 Task Map List<String> processInstanceIds = convertList(pageResult.getList(), BpmProcessInstanceExtDO::getProcessInstanceId); Map<String, List<Task>> taskMap = taskService.getTaskMapByProcessInstanceIds(processInstanceIds); // 转换返回 return BpmProcessInstanceConvert.INSTANCE.convertPage(pageResult, taskMap); } @Override @Transactional(rollbackFor = Exception.class) public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqVO createReqVO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId()); // 发起流程 return createProcessInstance0(userId, definition, createReqVO.getVariables(), null); } @Override public String createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO createReqDTO) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getActiveProcessDefinition(createReqDTO.getProcessDefinitionKey()); // 发起流程 return createProcessInstance0(userId, definition, createReqDTO.getVariables(), createReqDTO.getBusinessKey()); } @Override public BpmProcessInstanceRespVO getProcessInstanceVO(String id) { // 获得流程实例 HistoricProcessInstance processInstance = getHistoricProcessInstance(id); if (processInstance == null) { return null; } BpmProcessInstanceExtDO processInstanceExt = processInstanceExtMapper.selectByProcessInstanceId(id); Assert.notNull(processInstanceExt, "流程实例拓展({}) 不存在", id); // 获得流程定义 ProcessDefinition processDefinition = processDefinitionService .getProcessDefinition(processInstance.getProcessDefinitionId()); Assert.notNull(processDefinition, "流程定义({}) 不存在", processInstance.getProcessDefinitionId()); BpmProcessDefinitionExtDO processDefinitionExt = processDefinitionService.getProcessDefinitionExt( processInstance.getProcessDefinitionId()); Assert.notNull(processDefinitionExt, "流程定义拓展({}) 不存在", id); String bpmnXml = processDefinitionService.getProcessDefinitionBpmnXML(processInstance.getProcessDefinitionId()); // 获得 User AdminUserRespDTO startUser = adminUserApi.getUser(NumberUtils.parseLong(processInstance.getStartUserId())); DeptRespDTO dept = null; if (startUser != null) { dept = deptApi.getDept(startUser.getDeptId()); } // 拼接结果 return BpmProcessInstanceConvert.INSTANCE.convert2(processInstance, processInstanceExt, processDefinition, processDefinitionExt, bpmnXml, startUser, dept); } @Override public void cancelProcessInstance(Long userId, @Valid BpmProcessInstanceCancelReqVO cancelReqVO) { // 校验流程实例存在 ProcessInstance instance = getProcessInstance(cancelReqVO.getId()); if (instance == null) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } // 只能取消自己的 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } // 通过删除流程实例,实现流程实例的取消, // 删除流程实例,正则执行任务 ACT_RU_TASK. 任务会被删除。通过历史表查询 deleteProcessInstance(cancelReqVO.getId(), BpmProcessInstanceDeleteReasonEnum.CANCEL_TASK.format(cancelReqVO.getReason())); } /** * 获得历史的流程实例 * * @param id 流程实例的编号 * @return 历史的流程实例 */ @Override public HistoricProcessInstance getHistoricProcessInstance(String id) { return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult(); } @Override public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) { return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list(); } @Override public void createProcessInstanceExt(ProcessInstance instance) { // 获得流程定义 ProcessDefinition definition = processDefinitionService.getProcessDefinition2(instance.getProcessDefinitionId()); // 插入 BpmProcessInstanceExtDO 对象 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getId()) .setProcessDefinitionId(definition.getId()) .setName(instance.getProcessDefinitionName()) .setStartUserId(Long.valueOf(instance.getStartUserId())) .setCategory(definition.getCategory()) .setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus()) .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); processInstanceExtMapper.insert(instanceExtDO); } @Override public void updateProcessInstanceExtCancel(FlowableCancelledEvent event) { // 判断是否为 Reject 不通过。如果是,则不进行更新. // 因为,updateProcessInstanceExtReject 方法,已经进行更新了 if (BpmProcessInstanceDeleteReasonEnum.isRejectReason((String)event.getCause())) { return; } // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(event.getProcessInstanceId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(event.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Override public void updateProcessInstanceExtComplete(ProcessInstance instance) { // 需要主动查询,因为 instance 只有 id 属性 // 另外,此时如果去查询 ProcessInstance 的话,字段是不全的,所以去查询了 HistoricProcessInstance HistoricProcessInstance processInstance = getHistoricProcessInstance(instance.getId()); // 更新拓展表 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO() .setProcessInstanceId(instance.getProcessInstanceId()) .setEndTime(LocalDateTime.now()) // 由于 ProcessInstance 里没有办法拿到 endTime,所以这里设置 .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()); // 如果正常完全,说明审批通过 processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被通过的消息 messageService.sendMessageWhenProcessInstanceApprove(BpmProcessInstanceConvert.INSTANCE.convert2ApprovedReq(instance)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } @Transactional(rollbackFor = Exception.class) public void updateProcessInstanceExtReject(String id, String reason) { // 需要主动查询,因为 instance 只有 id 属性 ProcessInstance processInstance = getProcessInstance(id); // 删除流程实例,以实现驳回任务时,取消整个审批流程 deleteProcessInstance(id, StrUtil.format(BpmProcessInstanceDeleteReasonEnum.REJECT_TASK.format(reason))); // 更新 status + result // 注意,不能和上面的逻辑更换位置。因为 deleteProcessInstance 会触发流程的取消,进而调用 updateProcessInstanceExtCancel 方法, // 设置 result 为 BpmProcessInstanceStatusEnum.CANCEL,显然和 result 不一定是一致的 BpmProcessInstanceExtDO instanceExtDO = new BpmProcessInstanceExtDO().setProcessInstanceId(id) .setStatus(BpmProcessInstanceStatusEnum.FINISH.getStatus()) .setResult(BpmProcessInstanceResultEnum.REJECT.getResult()); processInstanceExtMapper.updateByProcessInstanceId(instanceExtDO); // 发送流程被不通过的消息 messageService.sendMessageWhenProcessInstanceReject(BpmProcessInstanceConvert.INSTANCE.convert2RejectReq(processInstance, reason)); // 发送流程实例的状态事件 processInstanceResultEventPublisher.sendProcessInstanceResultEvent( BpmProcessInstanceConvert.INSTANCE.convert(this, processInstance, instanceExtDO.getResult())); } private void deleteProcessInstance(String id, String reason) { runtimeService.deleteProcessInstance(id, reason); } private String createProcessInstance0(Long userId, ProcessDefinition definition, Map<String, Object> variables, String businessKey) { // 校验流程定义 if (definition == null) { throw exception(PROCESS_DEFINITION_NOT_EXISTS); } if (definition.isSuspended()) { throw exception(PROCESS_DEFINITION_IS_SUSPENDED); } // 创建流程实例 ProcessInstance instance = runtimeService.startProcessInstanceById(definition.getId(), businessKey, variables); // 设置流程名字 runtimeService.setProcessInstanceName(instance.getId(), definition.getName()); // 补全流程实例的拓展表 processInstanceExtMapper.updateByProcessInstanceId(new BpmProcessInstanceExtDO().setProcessInstanceId(instance.getId()) .setFormVariables(variables)); return instance.getId(); } }
3 \ No newline at end of file 3 \ No newline at end of file
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.bpm.service.task; @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.bpm.service.task;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.date.DateUtils;
6 import cn.iocoder.yudao.framework.common.util.number.NumberUtils; 7 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
7 import cn.iocoder.yudao.framework.common.util.object.PageUtils; 8 import cn.iocoder.yudao.framework.common.util.object.PageUtils;
8 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; 9 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
@@ -32,6 +33,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager @@ -32,6 +33,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
32 33
33 import javax.annotation.Resource; 34 import javax.annotation.Resource;
34 import javax.validation.Valid; 35 import javax.validation.Valid;
  36 +import java.time.LocalDateTime;
35 import java.util.*; 37 import java.util.*;
36 38
37 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 39 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -74,10 +76,10 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -74,10 +76,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
74 taskQuery.taskNameLike("%" + pageVO.getName() + "%"); 76 taskQuery.taskNameLike("%" + pageVO.getName() + "%");
75 } 77 }
76 if (pageVO.getBeginCreateTime() != null) { 78 if (pageVO.getBeginCreateTime() != null) {
77 - taskQuery.taskCreatedAfter(pageVO.getBeginCreateTime()); 79 + taskQuery.taskCreatedAfter(DateUtils.localDateTimeToDate(pageVO.getBeginCreateTime()));
78 } 80 }
79 if (pageVO.getEndCreateTime() != null) { 81 if (pageVO.getEndCreateTime() != null) {
80 - taskQuery.taskCreatedBefore(pageVO.getEndCreateTime()); 82 + taskQuery.taskCreatedBefore(DateUtils.localDateTimeToDate(pageVO.getEndCreateTime()));
81 } 83 }
82 // 执行查询 84 // 执行查询
83 List<Task> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); 85 List<Task> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
@@ -106,10 +108,10 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -106,10 +108,10 @@ public class BpmTaskServiceImpl implements BpmTaskService {
106 taskQuery.taskNameLike("%" + pageVO.getName() + "%"); 108 taskQuery.taskNameLike("%" + pageVO.getName() + "%");
107 } 109 }
108 if (pageVO.getBeginCreateTime() != null) { 110 if (pageVO.getBeginCreateTime() != null) {
109 - taskQuery.taskCreatedAfter(pageVO.getBeginCreateTime()); 111 + taskQuery.taskCreatedAfter(DateUtils.localDateTimeToDate(pageVO.getBeginCreateTime()));
110 } 112 }
111 if (pageVO.getEndCreateTime() != null) { 113 if (pageVO.getEndCreateTime() != null) {
112 - taskQuery.taskCreatedBefore(pageVO.getEndCreateTime()); 114 + taskQuery.taskCreatedBefore(DateUtils.localDateTimeToDate(pageVO.getEndCreateTime()));
113 } 115 }
114 // 执行查询 116 // 执行查询
115 List<HistoricTaskInstance> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); 117 List<HistoricTaskInstance> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize());
@@ -205,7 +207,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -205,7 +207,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
205 // 更新任务拓展表为不通过 207 // 更新任务拓展表为不通过
206 taskExtMapper.updateByTaskId( 208 taskExtMapper.updateByTaskId(
207 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.REJECT.getResult()) 209 new BpmTaskExtDO().setTaskId(task.getId()).setResult(BpmProcessInstanceResultEnum.REJECT.getResult())
208 - .setEndTime(new Date()).setReason(reqVO.getReason())); 210 + .setEndTime(LocalDateTime.now()).setReason(reqVO.getReason()));
209 } 211 }
210 212
211 @Override 213 @Override
@@ -249,7 +251,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -249,7 +251,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
249 public void updateTaskExtComplete(Task task) { 251 public void updateTaskExtComplete(Task task) {
250 BpmTaskExtDO taskExtDO = BpmTaskConvert.INSTANCE.convert2TaskExt(task) 252 BpmTaskExtDO taskExtDO = BpmTaskConvert.INSTANCE.convert2TaskExt(task)
251 .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) // 不设置也问题不大,因为 Complete 一般是审核通过,已经设置 253 .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) // 不设置也问题不大,因为 Complete 一般是审核通过,已经设置
252 - .setEndTime(new Date()); 254 + .setEndTime(LocalDateTime.now());
253 taskExtMapper.updateByTaskId(taskExtDO); 255 taskExtMapper.updateByTaskId(taskExtDO);
254 } 256 }
255 257
@@ -280,7 +282,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { @@ -280,7 +282,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
280 282
281 // 更新任务 283 // 更新任务
282 taskExtMapper.updateById(new BpmTaskExtDO().setId(taskExt.getId()).setResult(BpmProcessInstanceResultEnum.CANCEL.getResult()) 284 taskExtMapper.updateById(new BpmTaskExtDO().setId(taskExt.getId()).setResult(BpmProcessInstanceResultEnum.CANCEL.getResult())
283 - .setEndTime(new Date()).setReason(BpmProcessInstanceDeleteReasonEnum.translateReason(task.getDeleteReason()))); 285 + .setEndTime(LocalDateTime.now()).setReason(BpmProcessInstanceDeleteReasonEnum.translateReason(task.getDeleteReason())));
284 } 286 }
285 287
286 }); 288 });
yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/service/definition/BpmUserGroupServiceTest.java
@@ -17,9 +17,9 @@ import org.springframework.context.annotation.Import; @@ -17,9 +17,9 @@ import org.springframework.context.annotation.Import;
17 17
18 import javax.annotation.Resource; 18 import javax.annotation.Resource;
19 19
20 -import java.util.Date; 20 +import java.time.LocalDateTime;
21 21
22 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; 22 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
23 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; 23 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
24 import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.USER_GROUP_NOT_EXISTS; 24 import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.USER_GROUP_NOT_EXISTS;
25 25
@@ -106,7 +106,7 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest { @@ -106,7 +106,7 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
106 BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到 106 BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到
107 o.setName("芋道源码"); 107 o.setName("芋道源码");
108 o.setStatus(CommonStatusEnum.ENABLE.getStatus()); 108 o.setStatus(CommonStatusEnum.ENABLE.getStatus());
109 - o.setCreateTime(DateUtils.buildTime(2021, 11, 11)); 109 + o.setCreateTime(DateUtils.buildLocalDateTime(2021, 11, 11));
110 }); 110 });
111 userGroupMapper.insert(dbUserGroup); 111 userGroupMapper.insert(dbUserGroup);
112 // 测试 name 不匹配 112 // 测试 name 不匹配
@@ -114,12 +114,12 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest { @@ -114,12 +114,12 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest {
114 // 测试 status 不匹配 114 // 测试 status 不匹配
115 userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); 115 userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
116 // 测试 createTime 不匹配 116 // 测试 createTime 不匹配
117 - userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(DateUtils.buildTime(2021, 12, 12)))); 117 + userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setCreateTime(DateUtils.buildLocalDateTime(2021, 12, 12))));
118 // 准备参数 118 // 准备参数
119 BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO(); 119 BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO();
120 reqVO.setName("源码"); 120 reqVO.setName("源码");
121 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); 121 reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
122 - reqVO.setCreateTime((new Date[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); 122 + reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 11, 10),buildLocalDateTime(2021, 11, 12)}));
123 123
124 // 调用 124 // 调用
125 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO); 125 PageResult<BpmUserGroupDO> pageResult = userGroupService.getUserGroupPage(reqVO);
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.api.logger.dto; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.api.logger.dto;
3 import lombok.Data; 3 import lombok.Data;
4 4
5 import javax.validation.constraints.NotNull; 5 import javax.validation.constraints.NotNull;
6 -import java.util.Date; 6 +import java.time.LocalDateTime;
7 7
8 /** 8 /**
9 * API 访问日志 9 * API 访问日志
@@ -61,12 +61,12 @@ public class ApiAccessLogCreateReqDTO { @@ -61,12 +61,12 @@ public class ApiAccessLogCreateReqDTO {
61 * 开始请求时间 61 * 开始请求时间
62 */ 62 */
63 @NotNull(message = "开始请求时间不能为空") 63 @NotNull(message = "开始请求时间不能为空")
64 - private Date beginTime; 64 + private LocalDateTime beginTime;
65 /** 65 /**
66 * 结束请求时间 66 * 结束请求时间
67 */ 67 */
68 @NotNull(message = "结束请求时间不能为空") 68 @NotNull(message = "结束请求时间不能为空")
69 - private Date endTime; 69 + private LocalDateTime endTime;
70 /** 70 /**
71 * 执行时长,单位:毫秒 71 * 执行时长,单位:毫秒
72 */ 72 */
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.api.logger.dto; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.infra.api.logger.dto;
3 import lombok.Data; 3 import lombok.Data;
4 4
5 import javax.validation.constraints.NotNull; 5 import javax.validation.constraints.NotNull;
6 -import java.util.Date; 6 +import java.time.LocalDateTime;
7 7
8 /** 8 /**
9 * API 错误日志 9 * API 错误日志
@@ -61,7 +61,7 @@ public class ApiErrorLogCreateReqDTO { @@ -61,7 +61,7 @@ public class ApiErrorLogCreateReqDTO {
61 * 异常时间 61 * 异常时间
62 */ 62 */
63 @NotNull(message = "异常时间不能为空") 63 @NotNull(message = "异常时间不能为空")
64 - private Date exceptionTime; 64 + private LocalDateTime exceptionTime;
65 /** 65 /**
66 * 异常名 66 * 异常名
67 */ 67 */
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/column/CodegenColumnRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 代码生成字段定义 Response VO") 11 @ApiModel("管理后台 - 代码生成字段定义 Response VO")
12 @Data 12 @Data
@@ -18,6 +18,6 @@ public class CodegenColumnRespVO extends CodegenColumnBaseVO { @@ -18,6 +18,6 @@ public class CodegenColumnRespVO extends CodegenColumnBaseVO {
18 private Long id; 18 private Long id;
19 19
20 @ApiModelProperty(value = "创建时间", required = true) 20 @ApiModelProperty(value = "创建时间", required = true)
21 - private Date createTime; 21 + private LocalDateTime createTime;
22 22
23 } 23 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -26,6 +26,6 @@ public class CodegenTablePageReqVO extends PageParam { @@ -26,6 +26,6 @@ public class CodegenTablePageReqVO extends PageParam {
26 26
27 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") 27 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 - private Date[] createTime; 29 + private LocalDateTime[] createTime;
30 30
31 } 31 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 代码生成表定义 Response VO") 11 @ApiModel("管理后台 - 代码生成表定义 Response VO")
12 @Data 12 @Data
@@ -21,9 +21,9 @@ public class CodegenTableRespVO extends CodegenTableBaseVO { @@ -21,9 +21,9 @@ public class CodegenTableRespVO extends CodegenTableBaseVO {
21 private Integer dataSourceConfigId; 21 private Integer dataSourceConfigId;
22 22
23 @ApiModelProperty(value = "创建时间", required = true) 23 @ApiModelProperty(value = "创建时间", required = true)
24 - private Date createTime; 24 + private LocalDateTime createTime;
25 25
26 @ApiModelProperty(value = "更新时间", required = true) 26 @ApiModelProperty(value = "更新时间", required = true)
27 - private Date updateTime; 27 + private LocalDateTime updateTime;
28 28
29 } 29 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExcelVO.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 import com.alibaba.excel.annotation.ExcelProperty; 6 import com.alibaba.excel.annotation.ExcelProperty;
7 import lombok.Data; 7 import lombok.Data;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 /** 11 /**
12 * 参数配置 Excel 导出响应 VO 12 * 参数配置 Excel 导出响应 VO
@@ -41,6 +41,6 @@ public class ConfigExcelVO { @@ -41,6 +41,6 @@ public class ConfigExcelVO {
41 private String remark; 41 private String remark;
42 42
43 @ExcelProperty("创建时间") 43 @ExcelProperty("创建时间")
44 - private Date createTime; 44 + private LocalDateTime createTime;
45 45
46 } 46 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigExportReqVO.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 import org.springframework.format.annotation.DateTimeFormat; 6 import org.springframework.format.annotation.DateTimeFormat;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -24,6 +24,6 @@ public class ConfigExportReqVO { @@ -24,6 +24,6 @@ public class ConfigExportReqVO {
24 24
25 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") 25 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 - private Date[] createTime; 27 + private LocalDateTime[] createTime;
28 28
29 } 29 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -29,6 +29,6 @@ public class ConfigPageReqVO extends PageParam { @@ -29,6 +29,6 @@ public class ConfigPageReqVO extends PageParam {
29 29
30 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") 30 @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]")
31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
32 - private Date[] createTime; 32 + private LocalDateTime[] createTime;
33 33
34 } 34 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/vo/ConfigRespVO.java
@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 7
8 import javax.validation.constraints.NotBlank; 8 import javax.validation.constraints.NotBlank;
9 import javax.validation.constraints.Size; 9 import javax.validation.constraints.Size;
10 -import java.util.Date; 10 +import java.time.LocalDateTime;
11 11
12 @ApiModel("管理后台 - 参数配置信息 Response VO") 12 @ApiModel("管理后台 - 参数配置信息 Response VO")
13 @Data 13 @Data
@@ -26,6 +26,6 @@ public class ConfigRespVO extends ConfigBaseVO { @@ -26,6 +26,6 @@ public class ConfigRespVO extends ConfigBaseVO {
26 private Integer type; 26 private Integer type;
27 27
28 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式") 28 @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
29 - private Date createTime; 29 + private LocalDateTime createTime;
30 30
31 } 31 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java
1 package cn.iocoder.yudao.module.infra.controller.admin.db.vo; 1 package cn.iocoder.yudao.module.infra.controller.admin.db.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +
  5 +import java.time.LocalDateTime;
5 import io.swagger.annotations.*; 6 import io.swagger.annotations.*;
6 7
7 @ApiModel("管理后台 - 数据源配置 Response VO") 8 @ApiModel("管理后台 - 数据源配置 Response VO")
@@ -14,6 +15,6 @@ public class DataSourceConfigRespVO extends DataSourceConfigBaseVO { @@ -14,6 +15,6 @@ public class DataSourceConfigRespVO extends DataSourceConfigBaseVO {
14 private Integer id; 15 private Integer id;
15 16
16 @ApiModelProperty(value = "创建时间", required = true) 17 @ApiModelProperty(value = "创建时间", required = true)
17 - private Date createTime; 18 + private LocalDateTime createTime;
18 19
19 } 20 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -26,6 +26,6 @@ public class FileConfigPageReqVO extends PageParam { @@ -26,6 +26,6 @@ public class FileConfigPageReqVO extends PageParam {
26 26
27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 @ApiModelProperty(value = "创建时间") 28 @ApiModelProperty(value = "创建时间")
29 - private Date[] createTime; 29 + private LocalDateTime[] createTime;
30 30
31 } 31 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/config/FileConfigRespVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 9
10 import javax.validation.constraints.NotNull; 10 import javax.validation.constraints.NotNull;
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 @ApiModel("管理后台 - 文件配置 Response VO") 13 @ApiModel("管理后台 - 文件配置 Response VO")
14 @Data 14 @Data
@@ -31,6 +31,6 @@ public class FileConfigRespVO extends FileConfigBaseVO { @@ -31,6 +31,6 @@ public class FileConfigRespVO extends FileConfigBaseVO {
31 private FileClientConfig config; 31 private FileClientConfig config;
32 32
33 @ApiModelProperty(value = "创建时间", required = true) 33 @ApiModelProperty(value = "创建时间", required = true)
34 - private Date createTime; 34 + private LocalDateTime createTime;
35 35
36 } 36 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FilePageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -26,6 +26,6 @@ public class FilePageReqVO extends PageParam { @@ -26,6 +26,6 @@ public class FilePageReqVO extends PageParam {
26 26
27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 @ApiModelProperty(value = "创建时间") 28 @ApiModelProperty(value = "创建时间")
29 - private Date[] createTime; 29 + private LocalDateTime[] createTime;
30 30
31 } 31 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel; @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import java.util.Date; 7 +import java.time.LocalDateTime;
8 8
9 @ApiModel(value = "管理后台 - 文件 Response VO", description = "不返回 content 字段,太大") 9 @ApiModel(value = "管理后台 - 文件 Response VO", description = "不返回 content 字段,太大")
10 @Data 10 @Data
@@ -32,6 +32,6 @@ public class FileRespVO { @@ -32,6 +32,6 @@ public class FileRespVO {
32 private Integer size; 32 private Integer size;
33 33
34 @ApiModelProperty(value = "创建时间", required = true) 34 @ApiModelProperty(value = "创建时间", required = true)
35 - private Date createTime; 35 + private LocalDateTime createTime;
36 36
37 } 37 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/JobController.java
@@ -22,9 +22,9 @@ import javax.annotation.Resource; @@ -22,9 +22,9 @@ import javax.annotation.Resource;
22 import javax.servlet.http.HttpServletResponse; 22 import javax.servlet.http.HttpServletResponse;
23 import javax.validation.Valid; 23 import javax.validation.Valid;
24 import java.io.IOException; 24 import java.io.IOException;
  25 +import java.time.LocalDateTime;
25 import java.util.Collection; 26 import java.util.Collection;
26 import java.util.Collections; 27 import java.util.Collections;
27 -import java.util.Date;  
28 import java.util.List; 28 import java.util.List;
29 29
30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -133,8 +133,8 @@ public class JobController { @@ -133,8 +133,8 @@ public class JobController {
133 @ApiImplicitParam(name = "count", value = "数量", example = "5", dataTypeClass = Long.class) 133 @ApiImplicitParam(name = "count", value = "数量", example = "5", dataTypeClass = Long.class)
134 }) 134 })
135 @PreAuthorize("@ss.hasPermission('infra:job:query')") 135 @PreAuthorize("@ss.hasPermission('infra:job:query')")
136 - public CommonResult<List<Date>> getJobNextTimes(@RequestParam("id") Long id,  
137 - @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) { 136 + public CommonResult<List<LocalDateTime>> getJobNextTimes(@RequestParam("id") Long id,
  137 + @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
138 JobDO job = jobService.getJob(id); 138 JobDO job = jobService.getJob(id);
139 if (job == null) { 139 if (job == null) {
140 return success(Collections.emptyList()); 140 return success(Collections.emptyList());
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobExcelVO.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 import com.alibaba.excel.annotation.ExcelProperty; 6 import com.alibaba.excel.annotation.ExcelProperty;
7 import lombok.Data; 7 import lombok.Data;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 /** 11 /**
12 * 定时任务 Excel VO 12 * 定时任务 Excel VO
@@ -36,21 +36,21 @@ public class JobExcelVO { @@ -36,21 +36,21 @@ public class JobExcelVO {
36 private String cronExpression; 36 private String cronExpression;
37 37
38 @ExcelProperty("最后一次执行的开始时间") 38 @ExcelProperty("最后一次执行的开始时间")
39 - private Date executeBeginTime; 39 + private LocalDateTime executeBeginTime;
40 40
41 @ExcelProperty("最后一次执行的结束时间") 41 @ExcelProperty("最后一次执行的结束时间")
42 - private Date executeEndTime; 42 + private LocalDateTime executeEndTime;
43 43
44 @ExcelProperty("上一次触发时间") 44 @ExcelProperty("上一次触发时间")
45 - private Date firePrevTime; 45 + private LocalDateTime firePrevTime;
46 46
47 @ExcelProperty("下一次触发时间") 47 @ExcelProperty("下一次触发时间")
48 - private Date fireNextTime; 48 + private LocalDateTime fireNextTime;
49 49
50 @ExcelProperty("监控超时时间") 50 @ExcelProperty("监控超时时间")
51 private Integer monitorTimeout; 51 private Integer monitorTimeout;
52 52
53 @ExcelProperty("创建时间") 53 @ExcelProperty("创建时间")
54 - private Date createTime; 54 + private LocalDateTime createTime;
55 55
56 } 56 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobRespVO.java
@@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 import javax.validation.constraints.NotNull; 9 import javax.validation.constraints.NotNull;
10 -import java.util.Date; 10 +import java.time.LocalDateTime;
11 11
12 @ApiModel("管理后台 - 定时任务 Response VO") 12 @ApiModel("管理后台 - 定时任务 Response VO")
13 @Data 13 @Data
@@ -26,6 +26,6 @@ public class JobRespVO extends JobBaseVO { @@ -26,6 +26,6 @@ public class JobRespVO extends JobBaseVO {
26 private String handlerName; 26 private String handlerName;
27 27
28 @ApiModelProperty(value = "创建时间", required = true) 28 @ApiModelProperty(value = "创建时间", required = true)
29 - private Date createTime; 29 + private LocalDateTime createTime;
30 30
31 } 31 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import org.springframework.format.annotation.DateTimeFormat; 5 import org.springframework.format.annotation.DateTimeFormat;
6 6
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -34,11 +34,11 @@ public class JobLogBaseVO { @@ -34,11 +34,11 @@ public class JobLogBaseVO {
34 @ApiModelProperty(value = "开始执行时间", required = true) 34 @ApiModelProperty(value = "开始执行时间", required = true)
35 @NotNull(message = "开始执行时间不能为空") 35 @NotNull(message = "开始执行时间不能为空")
36 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 36 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
37 - private Date beginTime; 37 + private LocalDateTime beginTime;
38 38
39 @ApiModelProperty(value = "结束执行时间") 39 @ApiModelProperty(value = "结束执行时间")
40 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 40 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
41 - private Date endTime; 41 + private LocalDateTime endTime;
42 42
43 @ApiModelProperty(value = "执行时长", example = "123") 43 @ApiModelProperty(value = "执行时长", example = "123")
44 private Integer duration; 44 private Integer duration;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 import com.alibaba.excel.annotation.ExcelProperty; 6 import com.alibaba.excel.annotation.ExcelProperty;
7 import lombok.Data; 7 import lombok.Data;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 /** 11 /**
12 * 定时任务 Excel VO 12 * 定时任务 Excel VO
@@ -32,10 +32,10 @@ public class JobLogExcelVO { @@ -32,10 +32,10 @@ public class JobLogExcelVO {
32 private Integer executeIndex; 32 private Integer executeIndex;
33 33
34 @ExcelProperty("开始执行时间") 34 @ExcelProperty("开始执行时间")
35 - private Date beginTime; 35 + private LocalDateTime beginTime;
36 36
37 @ExcelProperty("结束执行时间") 37 @ExcelProperty("结束执行时间")
38 - private Date endTime; 38 + private LocalDateTime endTime;
39 39
40 @ExcelProperty("执行时长") 40 @ExcelProperty("执行时长")
41 private Integer duration; 41 private Integer duration;
@@ -48,6 +48,6 @@ public class JobLogExcelVO { @@ -48,6 +48,6 @@ public class JobLogExcelVO {
48 private String result; 48 private String result;
49 49
50 @ExcelProperty("创建时间") 50 @ExcelProperty("创建时间")
51 - private Date createTime; 51 + private LocalDateTime createTime;
52 52
53 } 53 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 import org.springframework.format.annotation.DateTimeFormat; 6 import org.springframework.format.annotation.DateTimeFormat;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -21,11 +21,11 @@ public class JobLogExportReqVO { @@ -21,11 +21,11 @@ public class JobLogExportReqVO {
21 21
22 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 22 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
23 @ApiModelProperty(value = "开始执行时间") 23 @ApiModelProperty(value = "开始执行时间")
24 - private Date beginTime; 24 + private LocalDateTime beginTime;
25 25
26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 26 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
27 @ApiModelProperty(value = "结束执行时间") 27 @ApiModelProperty(value = "结束执行时间")
28 - private Date endTime; 28 + private LocalDateTime endTime;
29 29
30 @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举") 30 @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举")
31 private Integer status; 31 private Integer status;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -26,11 +26,11 @@ public class JobLogPageReqVO extends PageParam { @@ -26,11 +26,11 @@ public class JobLogPageReqVO extends PageParam {
26 26
27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 27 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
28 @ApiModelProperty(value = "开始执行时间") 28 @ApiModelProperty(value = "开始执行时间")
29 - private Date beginTime; 29 + private LocalDateTime beginTime;
30 30
31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 31 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
32 @ApiModelProperty(value = "结束执行时间") 32 @ApiModelProperty(value = "结束执行时间")
33 - private Date endTime; 33 + private LocalDateTime endTime;
34 34
35 @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举") 35 @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举")
36 private Integer status; 36 private Integer status;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - 定时任务日志 Response VO") 11 @ApiModel("管理后台 - 定时任务日志 Response VO")
12 @Data 12 @Data
@@ -18,6 +18,6 @@ public class JobLogRespVO extends JobLogBaseVO { @@ -18,6 +18,6 @@ public class JobLogRespVO extends JobLogBaseVO {
18 private Long id; 18 private Long id;
19 19
20 @ApiModelProperty(value = "创建时间", required = true) 20 @ApiModelProperty(value = "创建时间", required = true)
21 - private Date createTime; 21 + private LocalDateTime createTime;
22 22
23 } 23 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import org.springframework.format.annotation.DateTimeFormat; 5 import org.springframework.format.annotation.DateTimeFormat;
6 6
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -54,12 +54,12 @@ public class ApiAccessLogBaseVO { @@ -54,12 +54,12 @@ public class ApiAccessLogBaseVO {
54 @ApiModelProperty(value = "开始请求时间", required = true) 54 @ApiModelProperty(value = "开始请求时间", required = true)
55 @NotNull(message = "开始请求时间不能为空") 55 @NotNull(message = "开始请求时间不能为空")
56 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 56 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
57 - private Date beginTime; 57 + private LocalDateTime beginTime;
58 58
59 @ApiModelProperty(value = "结束请求时间", required = true) 59 @ApiModelProperty(value = "结束请求时间", required = true)
60 @NotNull(message = "结束请求时间不能为空") 60 @NotNull(message = "结束请求时间不能为空")
61 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 61 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
62 - private Date endTime; 62 + private LocalDateTime endTime;
63 63
64 @ApiModelProperty(value = "执行时长", required = true, example = "100") 64 @ApiModelProperty(value = "执行时长", required = true, example = "100")
65 @NotNull(message = "执行时长不能为空") 65 @NotNull(message = "执行时长不能为空")
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
6 import com.alibaba.excel.annotation.ExcelProperty; 6 import com.alibaba.excel.annotation.ExcelProperty;
7 import lombok.Data; 7 import lombok.Data;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 /** 11 /**
12 * API 访问日志 Excel VO 12 * API 访问日志 Excel VO
@@ -48,10 +48,10 @@ public class ApiAccessLogExcelVO { @@ -48,10 +48,10 @@ public class ApiAccessLogExcelVO {
48 private String userAgent; 48 private String userAgent;
49 49
50 @ExcelProperty("开始请求时间") 50 @ExcelProperty("开始请求时间")
51 - private Date beginTime; 51 + private LocalDateTime beginTime;
52 52
53 @ExcelProperty("结束请求时间") 53 @ExcelProperty("结束请求时间")
54 - private Date endTime; 54 + private LocalDateTime endTime;
55 55
56 @ExcelProperty("执行时长") 56 @ExcelProperty("执行时长")
57 private Integer duration; 57 private Integer duration;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExportReqVO.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 import org.springframework.format.annotation.DateTimeFormat; 6 import org.springframework.format.annotation.DateTimeFormat;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -27,7 +27,7 @@ public class ApiAccessLogExportReqVO { @@ -27,7 +27,7 @@ public class ApiAccessLogExportReqVO {
27 27
28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 @ApiModelProperty(value = "开始请求时间") 29 @ApiModelProperty(value = "开始请求时间")
30 - private Date[] beginTime; 30 + private LocalDateTime[] beginTime;
31 31
32 @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") 32 @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒")
33 private Integer duration; 33 private Integer duration;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -32,7 +32,7 @@ public class ApiAccessLogPageReqVO extends PageParam { @@ -32,7 +32,7 @@ public class ApiAccessLogPageReqVO extends PageParam {
32 32
33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 @ApiModelProperty(value = "开始请求时间") 34 @ApiModelProperty(value = "开始请求时间")
35 - private Date[] beginTime; 35 + private LocalDateTime[] beginTime;
36 36
37 @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") 37 @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒")
38 private Integer duration; 38 private Integer duration;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - API 访问日志 Response VO") 11 @ApiModel("管理后台 - API 访问日志 Response VO")
12 @Data 12 @Data
@@ -18,6 +18,6 @@ public class ApiAccessLogRespVO extends ApiAccessLogBaseVO { @@ -18,6 +18,6 @@ public class ApiAccessLogRespVO extends ApiAccessLogBaseVO {
18 private Long id; 18 private Long id;
19 19
20 @ApiModelProperty(value = "创建时间", required = true) 20 @ApiModelProperty(value = "创建时间", required = true)
21 - private Date createTime; 21 + private LocalDateTime createTime;
22 22
23 } 23 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogBaseVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import org.springframework.format.annotation.DateTimeFormat; 5 import org.springframework.format.annotation.DateTimeFormat;
6 6
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -55,7 +55,7 @@ public class ApiErrorLogBaseVO { @@ -55,7 +55,7 @@ public class ApiErrorLogBaseVO {
55 @ApiModelProperty(value = "异常发生时间", required = true) 55 @ApiModelProperty(value = "异常发生时间", required = true)
56 @NotNull(message = "异常发生时间不能为空") 56 @NotNull(message = "异常发生时间不能为空")
57 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 57 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
58 - private Date exceptionTime; 58 + private LocalDateTime exceptionTime;
59 59
60 @ApiModelProperty(value = "异常名", required = true) 60 @ApiModelProperty(value = "异常名", required = true)
61 @NotNull(message = "异常名不能为空") 61 @NotNull(message = "异常名不能为空")
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6 import com.alibaba.excel.annotation.ExcelProperty; 6 import com.alibaba.excel.annotation.ExcelProperty;
7 import lombok.Data; 7 import lombok.Data;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 /** 11 /**
12 * API 错误日志 Excel VO 12 * API 错误日志 Excel VO
@@ -48,7 +48,7 @@ public class ApiErrorLogExcelVO { @@ -48,7 +48,7 @@ public class ApiErrorLogExcelVO {
48 private String userAgent; 48 private String userAgent;
49 49
50 @ExcelProperty("异常发生时间") 50 @ExcelProperty("异常发生时间")
51 - private Date exceptionTime; 51 + private LocalDateTime exceptionTime;
52 52
53 @ExcelProperty("异常名") 53 @ExcelProperty("异常名")
54 private String exceptionName; 54 private String exceptionName;
@@ -75,14 +75,14 @@ public class ApiErrorLogExcelVO { @@ -75,14 +75,14 @@ public class ApiErrorLogExcelVO {
75 private Integer exceptionLineNumber; 75 private Integer exceptionLineNumber;
76 76
77 @ExcelProperty("创建时间") 77 @ExcelProperty("创建时间")
78 - private Date createTime; 78 + private LocalDateTime createTime;
79 79
80 @ExcelProperty(value = "处理状态", converter = DictConvert.class) 80 @ExcelProperty(value = "处理状态", converter = DictConvert.class)
81 @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS) 81 @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS)
82 private Integer processStatus; 82 private Integer processStatus;
83 83
84 @ExcelProperty("处理时间") 84 @ExcelProperty("处理时间")
85 - private Date processTime; 85 + private LocalDateTime processTime;
86 86
87 @ExcelProperty("处理用户编号") 87 @ExcelProperty("处理用户编号")
88 private Integer processUserId; 88 private Integer processUserId;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java
@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
5 import lombok.Data; 5 import lombok.Data;
6 import org.springframework.format.annotation.DateTimeFormat; 6 import org.springframework.format.annotation.DateTimeFormat;
7 7
8 -import java.util.Date; 8 +import java.time.LocalDateTime;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
@@ -27,7 +27,7 @@ public class ApiErrorLogExportReqVO { @@ -27,7 +27,7 @@ public class ApiErrorLogExportReqVO {
27 27
28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 28 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
29 @ApiModelProperty(value = "异常发生时间") 29 @ApiModelProperty(value = "异常发生时间")
30 - private Date[] exceptionTime; 30 + private LocalDateTime[] exceptionTime;
31 31
32 @ApiModelProperty(value = "处理状态", example = "0") 32 @ApiModelProperty(value = "处理状态", example = "0")
33 private Integer processStatus; 33 private Integer processStatus;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
8 import lombok.ToString; 8 import lombok.ToString;
9 import org.springframework.format.annotation.DateTimeFormat; 9 import org.springframework.format.annotation.DateTimeFormat;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
@@ -32,7 +32,7 @@ public class ApiErrorLogPageReqVO extends PageParam { @@ -32,7 +32,7 @@ public class ApiErrorLogPageReqVO extends PageParam {
32 32
33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
34 @ApiModelProperty(value = "异常发生时间") 34 @ApiModelProperty(value = "异常发生时间")
35 - private Date[] exceptionTime; 35 + private LocalDateTime[] exceptionTime;
36 36
37 @ApiModelProperty(value = "处理状态", example = "0") 37 @ApiModelProperty(value = "处理状态", example = "0")
38 private Integer processStatus; 38 private Integer processStatus;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -import java.util.Date; 9 +import java.time.LocalDateTime;
10 10
11 @ApiModel("管理后台 - API 错误日志 Response VO") 11 @ApiModel("管理后台 - API 错误日志 Response VO")
12 @Data 12 @Data
@@ -18,10 +18,10 @@ public class ApiErrorLogRespVO extends ApiErrorLogBaseVO { @@ -18,10 +18,10 @@ public class ApiErrorLogRespVO extends ApiErrorLogBaseVO {
18 private Integer id; 18 private Integer id;
19 19
20 @ApiModelProperty(value = "创建时间", required = true) 20 @ApiModelProperty(value = "创建时间", required = true)
21 - private Date createTime; 21 + private LocalDateTime createTime;
22 22
23 @ApiModelProperty(value = "处理时间", required = true) 23 @ApiModelProperty(value = "处理时间", required = true)
24 - private Date processTime; 24 + private LocalDateTime processTime;
25 25
26 @ApiModelProperty(value = "处理用户编号", example = "233") 26 @ApiModelProperty(value = "处理用户编号", example = "233")
27 private Integer processUserId; 27 private Integer processUserId;
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoExcelVO.java
1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo; 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*;  
5 -import io.swagger.annotations.*; 4 +
  5 +import java.time.LocalDateTime;
6 6
7 import com.alibaba.excel.annotation.ExcelProperty; 7 import com.alibaba.excel.annotation.ExcelProperty;
8 8
@@ -33,6 +33,6 @@ public class TestDemoExcelVO { @@ -33,6 +33,6 @@ public class TestDemoExcelVO {
33 private String remark; 33 private String remark;
34 34
35 @ExcelProperty("创建时间") 35 @ExcelProperty("创建时间")
36 - private Date createTime; 36 + private LocalDateTime createTime;
37 37
38 } 38 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java
1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo; 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +
  5 +import java.time.LocalDateTime;
5 import io.swagger.annotations.*; 6 import io.swagger.annotations.*;
6 -import cn.iocoder.yudao.framework.common.pojo.PageParam;  
7 import org.springframework.format.annotation.DateTimeFormat; 7 import org.springframework.format.annotation.DateTimeFormat;
8 8
9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -29,6 +29,6 @@ public class TestDemoExportReqVO { @@ -29,6 +29,6 @@ public class TestDemoExportReqVO {
29 29
30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 30 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
31 @ApiModelProperty(value = "创建时间") 31 @ApiModelProperty(value = "创建时间")
32 - private Date[] createTime; 32 + private LocalDateTime[] createTime;
33 33
34 } 34 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoPageReqVO.java
1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo; 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +
  5 +import java.time.LocalDateTime;
5 import io.swagger.annotations.*; 6 import io.swagger.annotations.*;
6 import cn.iocoder.yudao.framework.common.pojo.PageParam; 7 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 import org.springframework.format.annotation.DateTimeFormat; 8 import org.springframework.format.annotation.DateTimeFormat;
@@ -31,6 +32,6 @@ public class TestDemoPageReqVO extends PageParam { @@ -31,6 +32,6 @@ public class TestDemoPageReqVO extends PageParam {
31 32
32 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) 33 @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
33 @ApiModelProperty(value = "创建时间") 34 @ApiModelProperty(value = "创建时间")
34 - private Date[] createTime; 35 + private LocalDateTime[] createTime;
35 36
36 } 37 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/test/vo/TestDemoRespVO.java
1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo; 1 package cn.iocoder.yudao.module.infra.controller.admin.test.vo;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*; 4 +
  5 +import java.time.LocalDateTime;
5 import io.swagger.annotations.*; 6 import io.swagger.annotations.*;
6 7
7 @ApiModel("管理后台 - 字典类型 Response VO") 8 @ApiModel("管理后台 - 字典类型 Response VO")
@@ -14,6 +15,6 @@ public class TestDemoRespVO extends TestDemoBaseVO { @@ -14,6 +15,6 @@ public class TestDemoRespVO extends TestDemoBaseVO {
14 private Long id; 15 private Long id;
15 16
16 @ApiModelProperty(value = "创建时间", required = true) 17 @ApiModelProperty(value = "创建时间", required = true)
17 - private Date createTime; 18 + private LocalDateTime createTime;
18 19
19 } 20 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/job/JobLogDO.java
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence; @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.KeySequence;
7 import com.baomidou.mybatisplus.annotation.TableName; 7 import com.baomidou.mybatisplus.annotation.TableName;
8 import lombok.*; 8 import lombok.*;
9 9
10 -import java.util.Date; 10 +import java.time.LocalDateTime;
11 11
12 /** 12 /**
13 * 定时任务的执行日志 13 * 定时任务的执行日志
@@ -56,11 +56,11 @@ public class JobLogDO extends BaseDO { @@ -56,11 +56,11 @@ public class JobLogDO extends BaseDO {
56 /** 56 /**
57 * 开始执行时间 57 * 开始执行时间
58 */ 58 */
59 - private Date beginTime; 59 + private LocalDateTime beginTime;
60 /** 60 /**
61 * 结束执行时间 61 * 结束执行时间
62 */ 62 */
63 - private Date endTime; 63 + private LocalDateTime endTime;
64 /** 64 /**
65 * 执行时长,单位:毫秒 65 * 执行时长,单位:毫秒
66 */ 66 */
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiAccessLogDO.java
@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId; @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
8 import com.baomidou.mybatisplus.annotation.TableName; 8 import com.baomidou.mybatisplus.annotation.TableName;
9 import lombok.*; 9 import lombok.*;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 /** 13 /**
14 * API 访问日志 14 * API 访问日志
@@ -84,11 +84,11 @@ public class ApiAccessLogDO extends BaseDO { @@ -84,11 +84,11 @@ public class ApiAccessLogDO extends BaseDO {
84 /** 84 /**
85 * 开始请求时间 85 * 开始请求时间
86 */ 86 */
87 - private Date beginTime; 87 + private LocalDateTime beginTime;
88 /** 88 /**
89 * 结束请求时间 89 * 结束请求时间
90 */ 90 */
91 - private Date endTime; 91 + private LocalDateTime endTime;
92 /** 92 /**
93 * 执行时长,单位:毫秒 93 * 执行时长,单位:毫秒
94 */ 94 */
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiErrorLogDO.java
@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId; @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
8 import com.baomidou.mybatisplus.annotation.TableName; 8 import com.baomidou.mybatisplus.annotation.TableName;
9 import lombok.*; 9 import lombok.*;
10 10
11 -import java.util.Date; 11 +import java.time.LocalDateTime;
12 12
13 /** 13 /**
14 * API 异常数据 14 * API 异常数据
@@ -84,7 +84,7 @@ public class ApiErrorLogDO extends BaseDO { @@ -84,7 +84,7 @@ public class ApiErrorLogDO extends BaseDO {
84 /** 84 /**
85 * 异常发生时间 85 * 异常发生时间
86 */ 86 */
87 - private Date exceptionTime; 87 + private LocalDateTime exceptionTime;
88 /** 88 /**
89 * 异常名 89 * 异常名
90 * 90 *
@@ -145,7 +145,7 @@ public class ApiErrorLogDO extends BaseDO { @@ -145,7 +145,7 @@ public class ApiErrorLogDO extends BaseDO {
145 /** 145 /**
146 * 处理时间 146 * 处理时间
147 */ 147 */
148 - private Date processTime; 148 + private LocalDateTime processTime;
149 /** 149 /**
150 * 处理用户编号 150 * 处理用户编号
151 * 151 *
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigDAOImpl.java
1 package cn.iocoder.yudao.module.infra.dal.mysql.config; 1 package cn.iocoder.yudao.module.infra.dal.mysql.config;
2 2
  3 +import cn.hutool.core.date.LocalDateTimeUtil;
3 import cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO; 4 import cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO;
4 import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO; 5 import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO;
5 import org.springframework.jdbc.core.JdbcTemplate; 6 import org.springframework.jdbc.core.JdbcTemplate;
6 import org.springframework.jdbc.datasource.DriverManagerDataSource; 7 import org.springframework.jdbc.datasource.DriverManagerDataSource;
7 8
8 import javax.sql.DataSource; 9 import javax.sql.DataSource;
9 -import java.util.Date; 10 +import java.time.LocalDateTime;
10 import java.util.List; 11 import java.util.List;
11 12
12 /** 13 /**
@@ -24,7 +25,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO { @@ -24,7 +25,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO {
24 } 25 }
25 26
26 @Override 27 @Override
27 - public int selectCountByUpdateTimeGt(Date maxUpdateTime) { 28 + public int selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime) {
28 return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM infra_config WHERE update_time > ?", 29 return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM infra_config WHERE update_time > ?",
29 Integer.class, maxUpdateTime); 30 Integer.class, maxUpdateTime);
30 } 31 }
@@ -34,7 +35,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO { @@ -34,7 +35,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO {
34 return jdbcTemplate.query("SELECT config_key, value, update_time, deleted FROM infra_config", 35 return jdbcTemplate.query("SELECT config_key, value, update_time, deleted FROM infra_config",
35 (rs, rowNum) -> new ConfigRespDTO().setKey(rs.getString("config_key")) 36 (rs, rowNum) -> new ConfigRespDTO().setKey(rs.getString("config_key"))
36 .setValue(rs.getString("value")) 37 .setValue(rs.getString("value"))
37 - .setUpdateTime(rs.getDate("update_time")) 38 + .setUpdateTime(LocalDateTimeUtil.of(rs.getDate("update_time")))
38 .setDeleted(rs.getBoolean("deleted"))); 39 .setDeleted(rs.getBoolean("deleted")));
39 } 40 }
40 41