Commit 632a132a6a9365c3a852cc6a3a6759fe3fc4f05d
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 | 1 | package cn.iocoder.yudao.framework.common.util.date; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.date.DateUtil; |
| 4 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 4 | 5 | |
| 5 | 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 | 12 | import java.util.Calendar; |
| 7 | 13 | import java.util.Date; |
| 8 | 14 | |
| ... | ... | @@ -25,6 +31,22 @@ public class DateUtils { |
| 25 | 31 | |
| 26 | 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 | 50 | public static Date addTime(Duration duration) { |
| 29 | 51 | return new Date(System.currentTimeMillis() + duration.toMillis()); |
| 30 | 52 | } |
| ... | ... | @@ -33,6 +55,11 @@ public class DateUtils { |
| 33 | 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 | 63 | public static long diff(Date endTime, Date startTime) { |
| 37 | 64 | return endTime.getTime() - startTime.getTime(); |
| 38 | 65 | } |
| ... | ... | @@ -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 | 73 | * @return 指定时间 |
| 47 | 74 | */ |
| 48 | 75 | public static Date buildTime(int year, int mouth, int day) { |
| 49 | 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 | 92 | * @return 指定时间 |
| 62 | 93 | */ |
| 63 | 94 | public static Date buildTime(int year, int mouth, int day, |
| ... | ... | @@ -73,6 +104,19 @@ public class DateUtils { |
| 73 | 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 | 120 | public static Date max(Date a, Date b) { |
| 77 | 121 | if (a == null) { |
| 78 | 122 | return b; |
| ... | ... | @@ -83,6 +127,16 @@ public class DateUtils { |
| 83 | 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 | 140 | public static boolean beforeNow(Date date) { |
| 87 | 141 | return date.getTime() < System.currentTimeMillis(); |
| 88 | 142 | } |
| ... | ... | @@ -91,6 +145,10 @@ public class DateUtils { |
| 91 | 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 | 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 | 10 | import org.springframework.context.event.EventListener; |
| 11 | 11 | import org.springframework.scheduling.annotation.Scheduled; |
| 12 | 12 | |
| 13 | -import java.util.Date; | |
| 13 | +import java.time.LocalDateTime; | |
| 14 | 14 | import java.util.List; |
| 15 | 15 | |
| 16 | 16 | /** |
| ... | ... | @@ -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 | 46 | @EventListener(ApplicationReadyEvent.class) |
| 47 | 47 | public void loadErrorCodes() { |
| ... | ... | @@ -66,7 +66,7 @@ public class ErrorCodeLoaderImpl implements ErrorCodeLoader { |
| 66 | 66 | // 写入到错误码的缓存 |
| 67 | 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 | 1 | package cn.iocoder.yudao.framework.operatelog.core.aop; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.hutool.core.exceptions.ExceptionUtil; |
| 4 | 5 | import cn.hutool.core.util.ArrayUtil; |
| 5 | 6 | import cn.hutool.core.util.StrUtil; |
| ... | ... | @@ -32,6 +33,7 @@ import javax.servlet.http.HttpServletRequest; |
| 32 | 33 | import javax.servlet.http.HttpServletResponse; |
| 33 | 34 | import java.lang.annotation.Annotation; |
| 34 | 35 | import java.lang.reflect.Array; |
| 36 | +import java.time.LocalDateTime; | |
| 35 | 37 | import java.util.*; |
| 36 | 38 | import java.util.function.Predicate; |
| 37 | 39 | import java.util.stream.IntStream; |
| ... | ... | @@ -94,7 +96,7 @@ public class OperateLogAspect { |
| 94 | 96 | } |
| 95 | 97 | |
| 96 | 98 | // 记录开始时间 |
| 97 | - Date startTime = new Date(); | |
| 99 | + LocalDateTime startTime = LocalDateTime.now(); | |
| 98 | 100 | try { |
| 99 | 101 | // 执行原有方法 |
| 100 | 102 | Object result = joinPoint.proceed(); |
| ... | ... | @@ -128,7 +130,7 @@ public class OperateLogAspect { |
| 128 | 130 | private void log(ProceedingJoinPoint joinPoint, |
| 129 | 131 | cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog, |
| 130 | 132 | ApiOperation apiOperation, |
| 131 | - Date startTime, Object result, Throwable exception) { | |
| 133 | + LocalDateTime startTime, Object result, Throwable exception) { | |
| 132 | 134 | try { |
| 133 | 135 | // 判断不记录的情况 |
| 134 | 136 | if (!isLogEnable(joinPoint, operateLog)) { |
| ... | ... | @@ -145,7 +147,7 @@ public class OperateLogAspect { |
| 145 | 147 | private void log0(ProceedingJoinPoint joinPoint, |
| 146 | 148 | cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog operateLog, |
| 147 | 149 | ApiOperation apiOperation, |
| 148 | - Date startTime, Object result, Throwable exception) { | |
| 150 | + LocalDateTime startTime, Object result, Throwable exception) { | |
| 149 | 151 | OperateLog operateLogObj = new OperateLog(); |
| 150 | 152 | // 补全通用字段 |
| 151 | 153 | operateLogObj.setTraceId(TracerUtils.getTraceId()); |
| ... | ... | @@ -226,7 +228,7 @@ public class OperateLogAspect { |
| 226 | 228 | private static void fillMethodFields(OperateLog operateLogObj, |
| 227 | 229 | ProceedingJoinPoint joinPoint, |
| 228 | 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 | 232 | MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); |
| 231 | 233 | operateLogObj.setJavaMethod(methodSignature.toString()); |
| 232 | 234 | if (operateLog == null || operateLog.logArgs()) { |
| ... | ... | @@ -235,7 +237,7 @@ public class OperateLogAspect { |
| 235 | 237 | if (operateLog == null || operateLog.logResultData()) { |
| 236 | 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 | 241 | // (正常)处理 resultCode 和 resultMsg 字段 |
| 240 | 242 | if (result instanceof CommonResult) { |
| 241 | 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 | 2 | |
| 3 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | -import java.util.Date; | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | import java.util.Map; |
| 7 | 7 | |
| 8 | 8 | /** |
| ... | ... | @@ -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 | 5 | import lombok.Data; |
| 6 | 6 | import lombok.NoArgsConstructor; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 10 | /** |
| 11 | 11 | * 支付通知 Response DTO |
| ... | ... | @@ -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 | import javax.validation.constraints.DecimalMin; |
| 8 | 8 | import javax.validation.constraints.NotEmpty; |
| 9 | 9 | import javax.validation.constraints.NotNull; |
| 10 | -import java.util.Date; | |
| 10 | +import java.time.LocalDateTime; | |
| 11 | 11 | import java.util.Map; |
| 12 | 12 | |
| 13 | 13 | /** |
| ... | ... | @@ -68,7 +68,7 @@ public class PayOrderUnifiedReqDTO { |
| 68 | 68 | * 支付过期时间 |
| 69 | 69 | */ |
| 70 | 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 | 5 | import lombok.Data; |
| 6 | 6 | import lombok.ToString; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 10 | /** |
| 11 | 11 | * 从渠道返回数据中解析得到的支付退款通知的Notify DTO |
| ... | ... | @@ -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 | 1 | package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; |
| 2 | 2 | |
| 3 | 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 | 5 | import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping; |
| 7 | 6 | import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; |
| 8 | 7 | import cn.iocoder.yudao.framework.pay.core.client.dto.*; |
| ... | ... | @@ -61,7 +60,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient<AlipayPayCl |
| 61 | 60 | return PayOrderNotifyRespDTO.builder().orderExtensionNo(params.get("out_trade_no")) |
| 62 | 61 | .channelOrderNo(params.get("trade_no")).channelUserId(params.get("seller_id")) |
| 63 | 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 | 64 | .data(data.getBody()).build(); |
| 66 | 65 | } |
| 67 | 66 | |
| ... | ... | @@ -72,7 +71,7 @@ public abstract class AbstractAlipayClient extends AbstractPayClient<AlipayPayCl |
| 72 | 71 | .tradeNo(params.get("out_trade_no")) |
| 73 | 72 | .reqNo(params.get("out_biz_no")) |
| 74 | 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 | 75 | .build(); |
| 77 | 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 | 2 | |
| 3 | 3 | import cn.hutool.core.bean.BeanUtil; |
| 4 | 4 | import cn.hutool.core.date.DateUtil; |
| 5 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 5 | 6 | import cn.hutool.core.lang.Assert; |
| 6 | 7 | import cn.hutool.core.map.MapUtil; |
| 7 | 8 | import cn.hutool.core.util.StrUtil; |
| ... | ... | @@ -167,7 +168,7 @@ public class WXLitePayClient extends AbstractPayClient<WXPayClientConfig> { |
| 167 | 168 | .builder() |
| 168 | 169 | .orderExtensionNo(result.getOutTradeNo()) |
| 169 | 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 | 172 | .data(data.getBody()) |
| 172 | 173 | .build(); |
| 173 | 174 | } |
| ... | ... | @@ -181,7 +182,7 @@ public class WXLitePayClient extends AbstractPayClient<WXPayClientConfig> { |
| 181 | 182 | .orderExtensionNo(notifyResult.getOutTradeNo()) |
| 182 | 183 | .channelOrderNo(notifyResult.getTransactionId()) |
| 183 | 184 | .channelUserId(notifyResult.getOpenid()) |
| 184 | - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) | |
| 185 | + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) | |
| 185 | 186 | .data(data.getBody()) |
| 186 | 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 | 2 | |
| 3 | 3 | import cn.hutool.core.bean.BeanUtil; |
| 4 | 4 | import cn.hutool.core.date.DateUtil; |
| 5 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 5 | 6 | import cn.hutool.core.lang.Assert; |
| 6 | 7 | import cn.hutool.core.util.StrUtil; |
| 7 | 8 | import cn.iocoder.yudao.framework.common.util.io.FileUtils; |
| ... | ... | @@ -150,7 +151,7 @@ public class WXNativePayClient extends AbstractPayClient<WXPayClientConfig> { |
| 150 | 151 | .builder() |
| 151 | 152 | .orderExtensionNo(result.getOutTradeNo()) |
| 152 | 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 | 155 | .data(data.getBody()) |
| 155 | 156 | .build(); |
| 156 | 157 | } |
| ... | ... | @@ -164,7 +165,7 @@ public class WXNativePayClient extends AbstractPayClient<WXPayClientConfig> { |
| 164 | 165 | .orderExtensionNo(notifyResult.getOutTradeNo()) |
| 165 | 166 | .channelOrderNo(notifyResult.getTransactionId()) |
| 166 | 167 | .channelUserId(notifyResult.getOpenid()) |
| 167 | - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) | |
| 168 | + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) | |
| 168 | 169 | .data(data.getBody()) |
| 169 | 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 | 2 | |
| 3 | 3 | import cn.hutool.core.bean.BeanUtil; |
| 4 | 4 | import cn.hutool.core.date.DateUtil; |
| 5 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 5 | 6 | import cn.hutool.core.lang.Assert; |
| 6 | 7 | import cn.hutool.core.map.MapUtil; |
| 7 | 8 | import cn.hutool.core.util.StrUtil; |
| ... | ... | @@ -161,7 +162,7 @@ public class WXPubPayClient extends AbstractPayClient<WXPayClientConfig> { |
| 161 | 162 | .builder() |
| 162 | 163 | .orderExtensionNo(result.getOutTradeNo()) |
| 163 | 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 | 166 | .data(data.getBody()) |
| 166 | 167 | .build(); |
| 167 | 168 | } |
| ... | ... | @@ -175,7 +176,7 @@ public class WXPubPayClient extends AbstractPayClient<WXPayClientConfig> { |
| 175 | 176 | .orderExtensionNo(notifyResult.getOutTradeNo()) |
| 176 | 177 | .channelOrderNo(notifyResult.getTransactionId()) |
| 177 | 178 | .channelUserId(notifyResult.getOpenid()) |
| 178 | - .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) | |
| 179 | + .successTime(LocalDateTimeUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) | |
| 179 | 180 | .data(data.getBody()) |
| 180 | 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 | 2 | |
| 3 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | -import java.util.Date; | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | 8 | * 消息接收 Response DTO |
| ... | ... | @@ -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 | 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 | 28 | import lombok.Data; |
| 29 | 29 | import lombok.extern.slf4j.Slf4j; |
| 30 | 30 | |
| 31 | -import java.util.Date; | |
| 31 | +import java.time.LocalDateTime; | |
| 32 | 32 | import java.util.List; |
| 33 | 33 | import java.util.Objects; |
| 34 | 34 | import java.util.function.Function; |
| ... | ... | @@ -166,13 +166,13 @@ public class AliyunSmsClient extends AbstractSmsClient { |
| 166 | 166 | */ |
| 167 | 167 | @JsonProperty("send_time") |
| 168 | 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 | 173 | @JsonProperty("report_time") |
| 174 | 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 | 22 | import com.tencentcloudapi.sms.v20210111.models.*; |
| 23 | 23 | import lombok.Data; |
| 24 | 24 | |
| 25 | -import java.util.Date; | |
| 25 | +import java.time.LocalDateTime; | |
| 26 | 26 | import java.util.List; |
| 27 | 27 | import java.util.function.Function; |
| 28 | 28 | import java.util.function.Supplier; |
| ... | ... | @@ -240,7 +240,7 @@ public class TencentSmsClient extends AbstractSmsClient { |
| 240 | 240 | */ |
| 241 | 241 | @JsonProperty("user_receive_time") |
| 242 | 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 | 23 | import lombok.Data; |
| 24 | 24 | import lombok.extern.slf4j.Slf4j; |
| 25 | 25 | |
| 26 | +import java.time.LocalDateTime; | |
| 26 | 27 | import java.util.*; |
| 27 | 28 | import java.util.function.Function; |
| 28 | 29 | import java.util.function.Supplier; |
| ... | ... | @@ -198,7 +199,7 @@ public class YunpianSmsClient extends AbstractSmsClient { |
| 198 | 199 | */ |
| 199 | 200 | @JsonProperty("user_receive_time") |
| 200 | 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 | 125 | assertEquals("DELIVERED", statuses.get(0).getErrorCode()); |
| 126 | 126 | assertEquals("用户接收成功", statuses.get(0).getErrorMsg()); |
| 127 | 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 | 129 | assertEquals("12345", statuses.get(0).getSerialNo()); |
| 130 | 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 | 146 | assertEquals("DELIVRD", statuses.get(0).getErrorCode()); |
| 147 | 147 | assertEquals("用户短信送达成功", statuses.get(0).getErrorMsg()); |
| 148 | 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 | 150 | assertEquals("12345", statuses.get(0).getSerialNo()); |
| 151 | 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 | 115 | assertEquals("", statuses.get(0).getErrorCode()); |
| 116 | 116 | assertNull(statuses.get(0).getErrorMsg()); |
| 117 | 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 | 119 | assertEquals("9527", statuses.get(0).getSerialNo()); |
| 120 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO; |
| 4 | 4 | |
| 5 | -import java.util.Date; | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | import java.util.List; |
| 7 | 7 | |
| 8 | 8 | /** |
| ... | ... | @@ -20,7 +20,7 @@ public interface ConfigFrameworkDAO { |
| 20 | 20 | * @param maxUpdateTime 最大更新时间 |
| 21 | 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 | 18 | import lombok.extern.slf4j.Slf4j; |
| 19 | 19 | |
| 20 | 20 | import java.lang.reflect.Constructor; |
| 21 | +import java.time.LocalDateTime; | |
| 21 | 22 | import java.util.Comparator; |
| 22 | -import java.util.Date; | |
| 23 | 23 | import java.util.List; |
| 24 | 24 | import java.util.Properties; |
| 25 | 25 | import java.util.concurrent.Executors; |
| ... | ... | @@ -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 | 54 | * 配置读取 DAO |
| ... | ... | @@ -166,7 +166,7 @@ public class DBConfigRepository extends AbstractConfigRepository { |
| 166 | 166 | * @param maxUpdateTime 当前配置的最大更新时间 |
| 167 | 167 | * @return 配置列表 |
| 168 | 168 | */ |
| 169 | - private List<ConfigRespDTO> loadConfigIfUpdate(Date maxUpdateTime) { | |
| 169 | + private List<ConfigRespDTO> loadConfigIfUpdate(LocalDateTime maxUpdateTime) { | |
| 170 | 170 | // 第一步,判断是否要更新。 |
| 171 | 171 | if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 |
| 172 | 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 | 2 | |
| 3 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | -import java.util.Date; | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | 8 | * 配置 Response DTO |
| ... | ... | @@ -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 | 1 | package cn.iocoder.yudao.framework.quartz.core.handler; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.hutool.core.lang.Assert; |
| 4 | 5 | import cn.hutool.core.thread.ThreadUtil; |
| 5 | 6 | import cn.iocoder.yudao.framework.quartz.core.enums.JobDataKeyEnum; |
| ... | ... | @@ -13,10 +14,10 @@ import org.springframework.context.ApplicationContext; |
| 13 | 14 | import org.springframework.scheduling.quartz.QuartzJobBean; |
| 14 | 15 | |
| 15 | 16 | import javax.annotation.Resource; |
| 16 | -import java.util.Date; | |
| 17 | +import java.time.LocalDateTime; | |
| 18 | +import java.time.temporal.ChronoUnit; | |
| 17 | 19 | |
| 18 | 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 | 23 | * 基础 Job 调用者,负责调用 {@link JobHandler#execute(String)} 执行任务 |
| ... | ... | @@ -46,7 +47,7 @@ public class JobHandlerInvoker extends QuartzJobBean { |
| 46 | 47 | |
| 47 | 48 | // 第二步,执行任务 |
| 48 | 49 | Long jobLogId = null; |
| 49 | - Date startTime = new Date(); | |
| 50 | + LocalDateTime startTime = LocalDateTime.now(); | |
| 50 | 51 | String data = null; |
| 51 | 52 | Throwable exception = null; |
| 52 | 53 | try { |
| ... | ... | @@ -73,9 +74,9 @@ public class JobHandlerInvoker extends QuartzJobBean { |
| 73 | 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 | 78 | JobExecutionContext executionContext) { |
| 78 | - Date endTime = new Date(); | |
| 79 | + LocalDateTime endTime = LocalDateTime.now(); | |
| 79 | 80 | // 处理是否成功 |
| 80 | 81 | boolean success = exception == null; |
| 81 | 82 | if (!success) { |
| ... | ... | @@ -83,7 +84,7 @@ public class JobHandlerInvoker extends QuartzJobBean { |
| 83 | 84 | } |
| 84 | 85 | // 更新日志 |
| 85 | 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 | 88 | } catch (Exception ex) { |
| 88 | 89 | log.error("[executeInternal][Job({}) logId({}) 记录执行日志失败({}/{})]", |
| 89 | 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 | 2 | |
| 3 | 3 | import javax.validation.constraints.NotEmpty; |
| 4 | 4 | import javax.validation.constraints.NotNull; |
| 5 | -import java.util.Date; | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | |
| 7 | 7 | /** |
| 8 | 8 | * Job 日志 Framework Service 接口 |
| ... | ... | @@ -22,7 +22,7 @@ public interface JobLogFrameworkService { |
| 22 | 22 | * @return Job 日志的编号 |
| 23 | 23 | */ |
| 24 | 24 | Long createJobLog(@NotNull(message = "任务编号不能为空") Long jobId, |
| 25 | - @NotNull(message = "开始时间") Date beginTime, | |
| 25 | + @NotNull(message = "开始时间") LocalDateTime beginTime, | |
| 26 | 26 | @NotEmpty(message = "Job 处理器的名字不能为空") String jobHandlerName, |
| 27 | 27 | String jobHandlerParam, |
| 28 | 28 | @NotNull(message = "第几次执行不能为空") Integer executeIndex); |
| ... | ... | @@ -37,7 +37,7 @@ public interface JobLogFrameworkService { |
| 37 | 37 | * @param result 成功数据 |
| 38 | 38 | */ |
| 39 | 39 | void updateJobLogResultAsync(@NotNull(message = "日志编号不能为空") Long logId, |
| 40 | - @NotNull(message = "结束时间不能为空") Date endTime, | |
| 40 | + @NotNull(message = "结束时间不能为空") LocalDateTime endTime, | |
| 41 | 41 | @NotNull(message = "运行时长不能为空") Integer duration, |
| 42 | 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 | 1 | package cn.iocoder.yudao.framework.quartz.core.util; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import org.quartz.CronExpression; |
| 4 | 5 | |
| 5 | 6 | import java.text.ParseException; |
| 7 | +import java.time.LocalDateTime; | |
| 6 | 8 | import java.util.ArrayList; |
| 7 | 9 | import java.util.Date; |
| 8 | 10 | import java.util.List; |
| ... | ... | @@ -31,7 +33,7 @@ public class CronUtils { |
| 31 | 33 | * @param n 数量 |
| 32 | 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 | 37 | // 获得 CronExpression 对象 |
| 36 | 38 | CronExpression cron; |
| 37 | 39 | try { |
| ... | ... | @@ -41,10 +43,10 @@ public class CronUtils { |
| 41 | 43 | } |
| 42 | 44 | // 从当前开始计算,n 个满足条件的 |
| 43 | 45 | Date now = new Date(); |
| 44 | - List<Date> nextTimes = new ArrayList<>(n); | |
| 46 | + List<LocalDateTime> nextTimes = new ArrayList<>(n); | |
| 45 | 47 | for (int i = 0; i < n; i++) { |
| 46 | 48 | Date nextTime = cron.getNextValidTimeAfter(now); |
| 47 | - nextTimes.add(nextTime); | |
| 49 | + nextTimes.add(LocalDateTimeUtil.of(nextTime)); | |
| 48 | 50 | // 切换现在,为下一个触发时间; |
| 49 | 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 | import org.apache.ibatis.type.JdbcType; |
| 8 | 8 | |
| 9 | 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 | 21 | * 创建时间 |
| 22 | 22 | */ |
| 23 | 23 | @TableField(fill = FieldFill.INSERT) |
| 24 | - private Date createTime; | |
| 24 | + private LocalDateTime createTime; | |
| 25 | 25 | /** |
| 26 | 26 | * 最后更新时间 |
| 27 | 27 | */ |
| 28 | 28 | @TableField(fill = FieldFill.INSERT_UPDATE) |
| 29 | - private Date updateTime; | |
| 29 | + private LocalDateTime updateTime; | |
| 30 | 30 | /** |
| 31 | 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 | 5 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; |
| 6 | 6 | import org.apache.ibatis.reflection.MetaObject; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | import java.util.Objects; |
| 10 | 10 | |
| 11 | 11 | /** |
| ... | ... | @@ -22,7 +22,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler { |
| 22 | 22 | if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof BaseDO) { |
| 23 | 23 | BaseDO baseDO = (BaseDO) metaObject.getOriginalObject(); |
| 24 | 24 | |
| 25 | - Date current = new Date(); | |
| 25 | + LocalDateTime current = LocalDateTime.now(); | |
| 26 | 26 | // 创建时间为空,则以当前时间为插入时间 |
| 27 | 27 | if (Objects.isNull(baseDO.getCreateTime())) { |
| 28 | 28 | baseDO.setCreateTime(current); |
| ... | ... | @@ -49,7 +49,7 @@ public class DefaultDBFieldHandler implements MetaObjectHandler { |
| 49 | 49 | // 更新时间为空,则以当前时间为更新时间 |
| 50 | 50 | Object modifyTime = getFieldValByName("updateTime", metaObject); |
| 51 | 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 | 1 | package cn.iocoder.yudao.framework.test.core.util; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.hutool.core.util.ArrayUtil; |
| 4 | 5 | import cn.hutool.core.util.RandomUtil; |
| 5 | 6 | import cn.hutool.core.util.StrUtil; |
| ... | ... | @@ -8,6 +9,7 @@ import uk.co.jemos.podam.api.PodamFactory; |
| 8 | 9 | import uk.co.jemos.podam.api.PodamFactoryImpl; |
| 9 | 10 | |
| 10 | 11 | import java.lang.reflect.Type; |
| 12 | +import java.time.LocalDateTime; | |
| 11 | 13 | import java.util.Arrays; |
| 12 | 14 | import java.util.Date; |
| 13 | 15 | import java.util.List; |
| ... | ... | @@ -76,6 +78,10 @@ public class RandomUtils { |
| 76 | 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 | 85 | public static Short randomShort() { |
| 80 | 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 | 1 | package cn.iocoder.yudao.framework.apilog.core.filter; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.hutool.core.exceptions.ExceptionUtil; |
| 4 | 5 | import cn.hutool.core.map.MapUtil; |
| 5 | 6 | import cn.hutool.extra.servlet.ServletUtil; |
| ... | ... | @@ -7,7 +8,6 @@ import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLog; |
| 7 | 8 | import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService; |
| 8 | 9 | import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; |
| 9 | 10 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 10 | -import cn.iocoder.yudao.framework.common.util.date.DateUtils; | |
| 11 | 11 | import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; |
| 12 | 12 | import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; |
| 13 | 13 | import cn.iocoder.yudao.framework.web.config.WebProperties; |
| ... | ... | @@ -20,7 +20,8 @@ import javax.servlet.ServletException; |
| 20 | 20 | import javax.servlet.http.HttpServletRequest; |
| 21 | 21 | import javax.servlet.http.HttpServletResponse; |
| 22 | 22 | import java.io.IOException; |
| 23 | -import java.util.Date; | |
| 23 | +import java.time.LocalDateTime; | |
| 24 | +import java.time.temporal.ChronoUnit; | |
| 24 | 25 | import java.util.Map; |
| 25 | 26 | |
| 26 | 27 | import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; |
| ... | ... | @@ -47,7 +48,7 @@ public class ApiAccessLogFilter extends ApiRequestFilter { |
| 47 | 48 | protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) |
| 48 | 49 | throws ServletException, IOException { |
| 49 | 50 | // 获得开始时间 |
| 50 | - Date beginTim = new Date(); | |
| 51 | + LocalDateTime beginTime = LocalDateTime.now(); | |
| 51 | 52 | // 提前获得参数,避免 XssFilter 过滤处理 |
| 52 | 53 | Map<String, String> queryString = ServletUtil.getParamMap(request); |
| 53 | 54 | String requestBody = ServletUtils.isJsonRequest(request) ? ServletUtil.getBody(request) : null; |
| ... | ... | @@ -56,15 +57,15 @@ public class ApiAccessLogFilter extends ApiRequestFilter { |
| 56 | 57 | // 继续过滤器 |
| 57 | 58 | filterChain.doFilter(request, response); |
| 58 | 59 | // 正常执行,记录日志 |
| 59 | - createApiAccessLog(request, beginTim, queryString, requestBody, null); | |
| 60 | + createApiAccessLog(request, beginTime, queryString, requestBody, null); | |
| 60 | 61 | } catch (Exception ex) { |
| 61 | 62 | // 异常执行,记录日志 |
| 62 | - createApiAccessLog(request, beginTim, queryString, requestBody, ex); | |
| 63 | + createApiAccessLog(request, beginTime, queryString, requestBody, ex); | |
| 63 | 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 | 69 | Map<String, String> queryString, String requestBody, Exception ex) { |
| 69 | 70 | ApiAccessLog accessLog = new ApiAccessLog(); |
| 70 | 71 | try { |
| ... | ... | @@ -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 | 80 | Map<String, String> queryString, String requestBody, Exception ex) { |
| 80 | 81 | // 处理用户信息 |
| 81 | 82 | accessLog.setUserId(WebFrameworkUtils.getLoginUserId(request)); |
| ... | ... | @@ -103,8 +104,8 @@ public class ApiAccessLogFilter extends ApiRequestFilter { |
| 103 | 104 | accessLog.setUserIp(ServletUtil.getClientIP(request)); |
| 104 | 105 | // 持续时间 |
| 105 | 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 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | 5 | import javax.validation.constraints.NotNull; |
| 6 | -import java.util.Date; | |
| 6 | +import java.time.LocalDateTime; | |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | 9 | * API 访问日志 |
| ... | ... | @@ -61,12 +61,12 @@ public class ApiAccessLog { |
| 61 | 61 | * 开始请求时间 |
| 62 | 62 | */ |
| 63 | 63 | @NotNull(message = "开始请求时间不能为空") |
| 64 | - private Date beginTime; | |
| 64 | + private LocalDateTime beginTime; | |
| 65 | 65 | /** |
| 66 | 66 | * 结束请求时间 |
| 67 | 67 | */ |
| 68 | 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 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | 5 | import javax.validation.constraints.NotNull; |
| 6 | -import java.util.Date; | |
| 6 | +import java.time.LocalDateTime; | |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | 9 | * API 错误日志 |
| ... | ... | @@ -61,7 +61,7 @@ public class ApiErrorLog { |
| 61 | 61 | * 异常时间 |
| 62 | 62 | */ |
| 63 | 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 | 31 | import javax.validation.ConstraintViolation; |
| 32 | 32 | import javax.validation.ConstraintViolationException; |
| 33 | 33 | import javax.validation.ValidationException; |
| 34 | -import java.util.Date; | |
| 34 | +import java.time.LocalDateTime; | |
| 35 | 35 | import java.util.Map; |
| 36 | 36 | |
| 37 | 37 | import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.*; |
| ... | ... | @@ -267,7 +267,7 @@ public class GlobalExceptionHandler { |
| 267 | 267 | errorLog.setRequestMethod(request.getMethod()); |
| 268 | 268 | errorLog.setUserAgent(ServletUtils.getUserAgent(request)); |
| 269 | 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 | import lombok.ToString; |
| 8 | 8 | |
| 9 | 9 | import javax.validation.constraints.NotNull; |
| 10 | -import java.util.Date; | |
| 10 | +import java.time.LocalDateTime; | |
| 11 | 11 | import java.util.List; |
| 12 | 12 | |
| 13 | 13 | @ApiModel("管理后台 - 动态表单 Response VO") |
| ... | ... | @@ -28,6 +28,6 @@ public class BpmFormRespVO extends BpmFormBaseVO { |
| 28 | 28 | private List<String> fields; |
| 29 | 29 | |
| 30 | 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 | 9 | import lombok.ToString; |
| 10 | 10 | import org.springframework.format.annotation.DateTimeFormat; |
| 11 | 11 | |
| 12 | -import java.util.Date; | |
| 12 | +import java.time.LocalDateTime; | |
| 13 | 13 | |
| 14 | 14 | @ApiModel("管理后台 - 用户组分页 Request VO") |
| 15 | 15 | @Data |
| ... | ... | @@ -25,6 +25,6 @@ public class BpmUserGroupPageReqVO extends PageParam { |
| 25 | 25 | |
| 26 | 26 | @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | 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 | 1 | package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.group; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | + | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | + | |
| 5 | 7 | import io.swagger.annotations.*; |
| 6 | 8 | |
| 7 | 9 | @ApiModel("管理后台 - 用户组 Response VO") |
| ... | ... | @@ -14,6 +16,6 @@ public class BpmUserGroupRespVO extends BpmUserGroupBaseVO { |
| 14 | 16 | private Long id; |
| 15 | 17 | |
| 16 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 流程模型的分页的每一项 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -21,7 +21,7 @@ public class BpmModelPageItemRespVO extends BpmModelBaseVO { |
| 21 | 21 | private String formName; |
| 22 | 22 | |
| 23 | 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 | 39 | private Integer version; |
| 40 | 40 | |
| 41 | 41 | @ApiModelProperty(value = "部署时间", required = true) |
| 42 | - private Date deploymentTime; | |
| 42 | + private LocalDateTime deploymentTime; | |
| 43 | 43 | |
| 44 | 44 | @ApiModelProperty(value = "中断状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") |
| 45 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 流程模型的创建 Request VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -21,6 +21,6 @@ public class BpmModelRespVO extends BpmModelBaseVO { |
| 21 | 21 | private String bpmnXml; |
| 22 | 22 | |
| 23 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 流程定义的分页的每一项 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -18,6 +18,6 @@ public class BpmProcessDefinitionPageItemRespVO extends BpmProcessDefinitionResp |
| 18 | 18 | private String formName; |
| 19 | 19 | |
| 20 | 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 | 1 | package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | +import java.time.LocalDateTime; | |
| 5 | 5 | import io.swagger.annotations.*; |
| 6 | 6 | import javax.validation.constraints.*; |
| 7 | 7 | import org.springframework.format.annotation.DateTimeFormat; |
| ... | ... | @@ -18,11 +18,11 @@ public class BpmOALeaveBaseVO { |
| 18 | 18 | @ApiModelProperty(value = "请假的开始时间", required = true) |
| 19 | 19 | @NotNull(message = "开始时间不能为空") |
| 20 | 20 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 21 | - private Date startTime; | |
| 21 | + private LocalDateTime startTime; | |
| 22 | 22 | @ApiModelProperty(value = "请假的结束时间", required = true) |
| 23 | 23 | @NotNull(message = "结束时间不能为空") |
| 24 | 24 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 25 | - private Date endTime; | |
| 25 | + private LocalDateTime endTime; | |
| 26 | 26 | |
| 27 | 27 | @ApiModelProperty(value = "请假类型", required = true, example = "1", notes = "参见 bpm_oa_type 枚举") |
| 28 | 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 | 15 | |
| 16 | 16 | @AssertTrue(message = "结束时间,需要在开始时间之后") |
| 17 | 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 | 1 | package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | +import java.time.LocalDateTime; | |
| 5 | 5 | import io.swagger.annotations.*; |
| 6 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 7 | 7 | import org.springframework.format.annotation.DateTimeFormat; |
| ... | ... | @@ -25,6 +25,6 @@ public class BpmOALeavePageReqVO extends PageParam { |
| 25 | 25 | |
| 26 | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | 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 | 5 | import org.springframework.format.annotation.DateTimeFormat; |
| 6 | 6 | |
| 7 | 7 | import javax.validation.constraints.NotNull; |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 24 | @ApiModelProperty(value = "申请时间", required = true) |
| 25 | 25 | @NotNull(message = "申请时间不能为空") |
| 26 | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | - private Date createTime; | |
| 27 | + private LocalDateTime createTime; | |
| 28 | 28 | |
| 29 | 29 | @ApiModelProperty(value = "流程id") |
| 30 | 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 | 4 | import io.swagger.annotations.ApiModelProperty; |
| 5 | 5 | import lombok.Data; |
| 6 | 6 | |
| 7 | -import java.util.Date; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | 8 | |
| 9 | 9 | @ApiModel("管理后台 - 流程活动的 Response VO") |
| 10 | 10 | @Data |
| ... | ... | @@ -16,9 +16,9 @@ public class BpmActivityRespVO { |
| 16 | 16 | private String type; |
| 17 | 17 | |
| 18 | 18 | @ApiModelProperty(value = "流程活动的开始时间", required = true) |
| 19 | - private Date startTime; | |
| 19 | + private LocalDateTime startTime; | |
| 20 | 20 | @ApiModelProperty(value = "流程活动的结束时间", required = true) |
| 21 | - private Date endTime; | |
| 21 | + private LocalDateTime endTime; | |
| 22 | 22 | |
| 23 | 23 | @ApiModelProperty(value = "关联的流程任务的编号", example = "2048", notes = "关联的流程任务,只有 UserTask 等类型才有") |
| 24 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 35 | |
| 36 | 36 | @ApiModelProperty(value = "创建时间") |
| 37 | 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 | 4 | import io.swagger.annotations.ApiModelProperty; |
| 5 | 5 | import lombok.Data; |
| 6 | 6 | |
| 7 | -import java.util.Date; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | 8 | import java.util.List; |
| 9 | 9 | |
| 10 | 10 | @ApiModel("管理后台 - 流程实例的分页 Item Response VO") |
| ... | ... | @@ -30,10 +30,10 @@ public class BpmProcessInstancePageItemRespVO { |
| 30 | 30 | private Integer result; |
| 31 | 31 | |
| 32 | 32 | @ApiModelProperty(value = "提交时间", required = true) |
| 33 | - private Date createTime; | |
| 33 | + private LocalDateTime createTime; | |
| 34 | 34 | |
| 35 | 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 | 4 | import io.swagger.annotations.ApiModelProperty; |
| 5 | 5 | import lombok.Data; |
| 6 | 6 | |
| 7 | -import java.util.Date; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | 8 | import java.util.List; |
| 9 | 9 | import java.util.Map; |
| 10 | 10 | |
| ... | ... | @@ -28,10 +28,10 @@ public class BpmProcessInstanceRespVO { |
| 28 | 28 | private Integer result; |
| 29 | 29 | |
| 30 | 30 | @ApiModelProperty(value = "提交时间", required = true) |
| 31 | - private Date createTime; | |
| 31 | + private LocalDateTime createTime; | |
| 32 | 32 | |
| 33 | 33 | @ApiModelProperty(value = "结束时间", required = true) |
| 34 | - private Date endTime; | |
| 34 | + private LocalDateTime endTime; | |
| 35 | 35 | |
| 36 | 36 | @ApiModelProperty(value = "提交的表单值", required = true) |
| 37 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 流程任务的 Done 已完成的分页项 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -15,7 +15,7 @@ import java.util.Date; |
| 15 | 15 | public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO { |
| 16 | 16 | |
| 17 | 17 | @ApiModelProperty(value = "结束时间", required = true) |
| 18 | - private Date endTime; | |
| 18 | + private LocalDateTime endTime; | |
| 19 | 19 | @ApiModelProperty(value = "持续时间", required = true, example = "1000") |
| 20 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 23 | |
| 24 | 24 | @ApiModelProperty(value = "开始的创建收间") |
| 25 | 25 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 26 | - private Date beginCreateTime; | |
| 26 | + private LocalDateTime beginCreateTime; | |
| 27 | 27 | |
| 28 | 28 | @ApiModelProperty(value = "结束的创建时间") |
| 29 | 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 | 4 | import io.swagger.annotations.ApiModelProperty; |
| 5 | 5 | import lombok.Data; |
| 6 | 6 | |
| 7 | -import java.util.Date; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | 8 | |
| 9 | 9 | @ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO") |
| 10 | 10 | @Data |
| ... | ... | @@ -17,10 +17,10 @@ public class BpmTaskTodoPageItemRespVO { |
| 17 | 17 | private String name; |
| 18 | 18 | |
| 19 | 19 | @ApiModelProperty(value = "接收时间", required = true) |
| 20 | - private Date claimTime; | |
| 20 | + private LocalDateTime claimTime; | |
| 21 | 21 | |
| 22 | 22 | @ApiModelProperty(value = "创建时间", required = true) |
| 23 | - private Date createTime; | |
| 23 | + private LocalDateTime createTime; | |
| 24 | 24 | |
| 25 | 25 | @ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") |
| 26 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 23 | |
| 24 | 24 | @ApiModelProperty(value = "开始的创建收间") |
| 25 | 25 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 26 | - private Date beginCreateTime; | |
| 26 | + private LocalDateTime beginCreateTime; | |
| 27 | 27 | |
| 28 | 28 | @ApiModelProperty(value = "结束的创建时间") |
| 29 | 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 | 2 | |
| 3 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 5 | +import cn.iocoder.yudao.framework.common.util.date.DateUtils; | |
| 5 | 6 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 6 | 7 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.*; |
| 7 | 8 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; |
| ... | ... | @@ -44,7 +45,7 @@ public interface BpmModelConvert { |
| 44 | 45 | default BpmModelPageItemRespVO convert(Model model, BpmFormDO form, Deployment deployment, ProcessDefinition processDefinition) { |
| 45 | 46 | BpmModelPageItemRespVO modelRespVO = new BpmModelPageItemRespVO(); |
| 46 | 47 | modelRespVO.setId(model.getId()); |
| 47 | - modelRespVO.setCreateTime(model.getCreateTime()); | |
| 48 | + modelRespVO.setCreateTime(DateUtils.dateToLocalDateTime(model.getCreateTime())); | |
| 48 | 49 | // 通用 copy |
| 49 | 50 | copyTo(model, modelRespVO); |
| 50 | 51 | // Form |
| ... | ... | @@ -57,7 +58,7 @@ public interface BpmModelConvert { |
| 57 | 58 | if (modelRespVO.getProcessDefinition() != null) { |
| 58 | 59 | modelRespVO.getProcessDefinition().setSuspensionState(processDefinition.isSuspended() ? |
| 59 | 60 | SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode()); |
| 60 | - modelRespVO.getProcessDefinition().setDeploymentTime(deployment.getDeploymentTime()); | |
| 61 | + modelRespVO.getProcessDefinition().setDeploymentTime(DateUtils.dateToLocalDateTime(deployment.getDeploymentTime())); | |
| 61 | 62 | } |
| 62 | 63 | return modelRespVO; |
| 63 | 64 | } |
| ... | ... | @@ -65,7 +66,7 @@ public interface BpmModelConvert { |
| 65 | 66 | default BpmModelRespVO convert(Model model) { |
| 66 | 67 | BpmModelRespVO modelRespVO = new BpmModelRespVO(); |
| 67 | 68 | modelRespVO.setId(model.getId()); |
| 68 | - modelRespVO.setCreateTime(model.getCreateTime()); | |
| 69 | + modelRespVO.setCreateTime(DateUtils.dateToLocalDateTime(model.getCreateTime())); | |
| 69 | 70 | // 通用 copy |
| 70 | 71 | copyTo(model, modelRespVO); |
| 71 | 72 | return modelRespVO; | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/definition/BpmProcessDefinitionConvert.java
| 1 | 1 | package cn.iocoder.yudao.module.bpm.convert.definition; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 5 | +import cn.iocoder.yudao.framework.common.util.date.DateUtils; | |
| 4 | 6 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionPageItemRespVO; |
| 5 | 7 | import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO; |
| 6 | 8 | import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; |
| ... | ... | @@ -67,7 +69,7 @@ public interface BpmProcessDefinitionConvert { |
| 67 | 69 | BpmProcessDefinitionPageItemRespVO respVO = convert(bean); |
| 68 | 70 | respVO.setSuspensionState(bean.isSuspended() ? SuspensionState.SUSPENDED.getStateCode() : SuspensionState.ACTIVE.getStateCode()); |
| 69 | 71 | if (deployment != null) { |
| 70 | - respVO.setDeploymentTime(deployment.getDeploymentTime()); | |
| 72 | + respVO.setDeploymentTime(LocalDateTimeUtil.of(deployment.getDeploymentTime())); | |
| 71 | 73 | } |
| 72 | 74 | if (form != null) { |
| 73 | 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 | 1 | package cn.iocoder.yudao.module.bpm.convert.task; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
| 5 | 6 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskDonePageItemRespVO; |
| ... | ... | @@ -151,7 +152,7 @@ public interface BpmTaskConvert { |
| 151 | 152 | BpmTaskExtDO taskExtDO = new BpmTaskExtDO().setTaskId(task.getId()) |
| 152 | 153 | .setAssigneeUserId(NumberUtils.parseLong(task.getAssignee())).setName(task.getName()) |
| 153 | 154 | .setProcessDefinitionId(task.getProcessDefinitionId()).setProcessInstanceId(task.getProcessInstanceId()); |
| 154 | - taskExtDO.setCreateTime(task.getCreateTime()); | |
| 155 | + taskExtDO.setCreateTime(LocalDateTimeUtil.of(task.getCreateTime())); | |
| 155 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; |
| 4 | 4 | import lombok.*; |
| 5 | -import java.util.*; | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.*; |
| 7 | 7 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 8 | 8 | |
| ... | ... | @@ -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 | 4 | import lombok.*; |
| 5 | 5 | import org.springframework.format.annotation.DateTimeFormat; |
| 6 | 6 | |
| 7 | -import java.util.Date; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | 8 | |
| 9 | 9 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 10 | 10 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; |
| ... | ... | @@ -80,18 +80,18 @@ public class BpmActivityDO { |
| 80 | 80 | */ |
| 81 | 81 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 82 | 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 | 88 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 89 | 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 | 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 | 11 | import lombok.EqualsAndHashCode; |
| 12 | 12 | import lombok.ToString; |
| 13 | 13 | |
| 14 | -import java.util.Date; | |
| 14 | +import java.time.LocalDateTime; | |
| 15 | 15 | import java.util.Map; |
| 16 | 16 | |
| 17 | 17 | /** |
| ... | ... | @@ -79,7 +79,7 @@ public class BpmProcessInstanceExtDO extends BaseDO { |
| 79 | 79 | * |
| 80 | 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 | 8 | import lombok.EqualsAndHashCode; |
| 9 | 9 | import lombok.ToString; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | 14 | * Bpm 流程任务的拓展表 |
| ... | ... | @@ -67,7 +67,7 @@ public class BpmTaskExtDO extends BaseDO { |
| 67 | 67 | * |
| 68 | 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 | 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 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 5 | import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; |
| 6 | 6 | import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; |
| ... | ... | @@ -46,7 +46,7 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService { |
| 46 | 46 | @Transactional(rollbackFor = Exception.class) |
| 47 | 47 | public Long createLeave(Long userId, BpmOALeaveCreateReqVO createReqVO) { |
| 48 | 48 | // 插入 OA 请假单 |
| 49 | - long day = DateUtil.betweenDay(createReqVO.getStartTime(), createReqVO.getEndTime(), false); | |
| 49 | + long day = LocalDateTimeUtil.between(createReqVO.getStartTime(), createReqVO.getEndTime()).toDays(); | |
| 50 | 50 | BpmOALeaveDO leave = BpmOALeaveConvert.INSTANCE.convert(createReqVO).setUserId(userId).setDay(day) |
| 51 | 51 | .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); |
| 52 | 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 | 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 | 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 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.util.StrUtil; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.common.util.date.DateUtils; | |
| 6 | 7 | import cn.iocoder.yudao.framework.common.util.number.NumberUtils; |
| 7 | 8 | import cn.iocoder.yudao.framework.common.util.object.PageUtils; |
| 8 | 9 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*; |
| ... | ... | @@ -32,6 +33,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager |
| 32 | 33 | |
| 33 | 34 | import javax.annotation.Resource; |
| 34 | 35 | import javax.validation.Valid; |
| 36 | +import java.time.LocalDateTime; | |
| 35 | 37 | import java.util.*; |
| 36 | 38 | |
| 37 | 39 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| ... | ... | @@ -74,10 +76,10 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 74 | 76 | taskQuery.taskNameLike("%" + pageVO.getName() + "%"); |
| 75 | 77 | } |
| 76 | 78 | if (pageVO.getBeginCreateTime() != null) { |
| 77 | - taskQuery.taskCreatedAfter(pageVO.getBeginCreateTime()); | |
| 79 | + taskQuery.taskCreatedAfter(DateUtils.localDateTimeToDate(pageVO.getBeginCreateTime())); | |
| 78 | 80 | } |
| 79 | 81 | if (pageVO.getEndCreateTime() != null) { |
| 80 | - taskQuery.taskCreatedBefore(pageVO.getEndCreateTime()); | |
| 82 | + taskQuery.taskCreatedBefore(DateUtils.localDateTimeToDate(pageVO.getEndCreateTime())); | |
| 81 | 83 | } |
| 82 | 84 | // 执行查询 |
| 83 | 85 | List<Task> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); |
| ... | ... | @@ -106,10 +108,10 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 106 | 108 | taskQuery.taskNameLike("%" + pageVO.getName() + "%"); |
| 107 | 109 | } |
| 108 | 110 | if (pageVO.getBeginCreateTime() != null) { |
| 109 | - taskQuery.taskCreatedAfter(pageVO.getBeginCreateTime()); | |
| 111 | + taskQuery.taskCreatedAfter(DateUtils.localDateTimeToDate(pageVO.getBeginCreateTime())); | |
| 110 | 112 | } |
| 111 | 113 | if (pageVO.getEndCreateTime() != null) { |
| 112 | - taskQuery.taskCreatedBefore(pageVO.getEndCreateTime()); | |
| 114 | + taskQuery.taskCreatedBefore(DateUtils.localDateTimeToDate(pageVO.getEndCreateTime())); | |
| 113 | 115 | } |
| 114 | 116 | // 执行查询 |
| 115 | 117 | List<HistoricTaskInstance> tasks = taskQuery.listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); |
| ... | ... | @@ -205,7 +207,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 205 | 207 | // 更新任务拓展表为不通过 |
| 206 | 208 | taskExtMapper.updateByTaskId( |
| 207 | 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 | 213 | @Override |
| ... | ... | @@ -249,7 +251,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 249 | 251 | public void updateTaskExtComplete(Task task) { |
| 250 | 252 | BpmTaskExtDO taskExtDO = BpmTaskConvert.INSTANCE.convert2TaskExt(task) |
| 251 | 253 | .setResult(BpmProcessInstanceResultEnum.APPROVE.getResult()) // 不设置也问题不大,因为 Complete 一般是审核通过,已经设置 |
| 252 | - .setEndTime(new Date()); | |
| 254 | + .setEndTime(LocalDateTime.now()); | |
| 253 | 255 | taskExtMapper.updateByTaskId(taskExtDO); |
| 254 | 256 | } |
| 255 | 257 | |
| ... | ... | @@ -280,7 +282,7 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 280 | 282 | |
| 281 | 283 | // 更新任务 |
| 282 | 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 | 17 | |
| 18 | 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 | 23 | import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; |
| 24 | 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 | 106 | BpmUserGroupDO dbUserGroup = RandomUtils.randomPojo(BpmUserGroupDO.class, o -> { // 等会查询到 |
| 107 | 107 | o.setName("芋道源码"); |
| 108 | 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 | 111 | userGroupMapper.insert(dbUserGroup); |
| 112 | 112 | // 测试 name 不匹配 |
| ... | ... | @@ -114,12 +114,12 @@ public class BpmUserGroupServiceTest extends BaseDbUnitTest { |
| 114 | 114 | // 测试 status 不匹配 |
| 115 | 115 | userGroupMapper.insert(cloneIgnoreId(dbUserGroup, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); |
| 116 | 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 | 119 | BpmUserGroupPageReqVO reqVO = new BpmUserGroupPageReqVO(); |
| 120 | 120 | reqVO.setName("源码"); |
| 121 | 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 | 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 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | 5 | import javax.validation.constraints.NotNull; |
| 6 | -import java.util.Date; | |
| 6 | +import java.time.LocalDateTime; | |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | 9 | * API 访问日志 |
| ... | ... | @@ -61,12 +61,12 @@ public class ApiAccessLogCreateReqDTO { |
| 61 | 61 | * 开始请求时间 |
| 62 | 62 | */ |
| 63 | 63 | @NotNull(message = "开始请求时间不能为空") |
| 64 | - private Date beginTime; | |
| 64 | + private LocalDateTime beginTime; | |
| 65 | 65 | /** |
| 66 | 66 | * 结束请求时间 |
| 67 | 67 | */ |
| 68 | 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 | 3 | import lombok.Data; |
| 4 | 4 | |
| 5 | 5 | import javax.validation.constraints.NotNull; |
| 6 | -import java.util.Date; | |
| 6 | +import java.time.LocalDateTime; | |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | 9 | * API 错误日志 |
| ... | ... | @@ -61,7 +61,7 @@ public class ApiErrorLogCreateReqDTO { |
| 61 | 61 | * 异常时间 |
| 62 | 62 | */ |
| 63 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 代码生成字段定义 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -18,6 +18,6 @@ public class CodegenColumnRespVO extends CodegenColumnBaseVO { |
| 18 | 18 | private Long id; |
| 19 | 19 | |
| 20 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 26 | |
| 27 | 27 | @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") |
| 28 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 代码生成表定义 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -21,9 +21,9 @@ public class CodegenTableRespVO extends CodegenTableBaseVO { |
| 21 | 21 | private Integer dataSourceConfigId; |
| 22 | 22 | |
| 23 | 23 | @ApiModelProperty(value = "创建时间", required = true) |
| 24 | - private Date createTime; | |
| 24 | + private LocalDateTime createTime; | |
| 25 | 25 | |
| 26 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | 12 | * 参数配置 Excel 导出响应 VO |
| ... | ... | @@ -41,6 +41,6 @@ public class ConfigExcelVO { |
| 41 | 41 | private String remark; |
| 42 | 42 | |
| 43 | 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 | 5 | import lombok.Data; |
| 6 | 6 | import org.springframework.format.annotation.DateTimeFormat; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 24 | |
| 25 | 25 | @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") |
| 26 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 29 | |
| 30 | 30 | @ApiModelProperty(value = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") |
| 31 | 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 | |
| 8 | 8 | import javax.validation.constraints.NotBlank; |
| 9 | 9 | import javax.validation.constraints.Size; |
| 10 | -import java.util.Date; | |
| 10 | +import java.time.LocalDateTime; | |
| 11 | 11 | |
| 12 | 12 | @ApiModel("管理后台 - 参数配置信息 Response VO") |
| 13 | 13 | @Data |
| ... | ... | @@ -26,6 +26,6 @@ public class ConfigRespVO extends ConfigBaseVO { |
| 26 | 26 | private Integer type; |
| 27 | 27 | |
| 28 | 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 | 1 | package cn.iocoder.yudao.module.infra.controller.admin.db.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | + | |
| 5 | +import java.time.LocalDateTime; | |
| 5 | 6 | import io.swagger.annotations.*; |
| 6 | 7 | |
| 7 | 8 | @ApiModel("管理后台 - 数据源配置 Response VO") |
| ... | ... | @@ -14,6 +15,6 @@ public class DataSourceConfigRespVO extends DataSourceConfigBaseVO { |
| 14 | 15 | private Integer id; |
| 15 | 16 | |
| 16 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 26 | |
| 27 | 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 28 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | |
| 10 | 10 | import javax.validation.constraints.NotNull; |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 13 | @ApiModel("管理后台 - 文件配置 Response VO") |
| 14 | 14 | @Data |
| ... | ... | @@ -31,6 +31,6 @@ public class FileConfigRespVO extends FileConfigBaseVO { |
| 31 | 31 | private FileClientConfig config; |
| 32 | 32 | |
| 33 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 26 | |
| 27 | 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 28 | 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 | 4 | import io.swagger.annotations.ApiModelProperty; |
| 5 | 5 | import lombok.Data; |
| 6 | 6 | |
| 7 | -import java.util.Date; | |
| 7 | +import java.time.LocalDateTime; | |
| 8 | 8 | |
| 9 | 9 | @ApiModel(value = "管理后台 - 文件 Response VO", description = "不返回 content 字段,太大") |
| 10 | 10 | @Data |
| ... | ... | @@ -32,6 +32,6 @@ public class FileRespVO { |
| 32 | 32 | private Integer size; |
| 33 | 33 | |
| 34 | 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 | 22 | import javax.servlet.http.HttpServletResponse; |
| 23 | 23 | import javax.validation.Valid; |
| 24 | 24 | import java.io.IOException; |
| 25 | +import java.time.LocalDateTime; | |
| 25 | 26 | import java.util.Collection; |
| 26 | 27 | import java.util.Collections; |
| 27 | -import java.util.Date; | |
| 28 | 28 | import java.util.List; |
| 29 | 29 | |
| 30 | 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| ... | ... | @@ -133,8 +133,8 @@ public class JobController { |
| 133 | 133 | @ApiImplicitParam(name = "count", value = "数量", example = "5", dataTypeClass = Long.class) |
| 134 | 134 | }) |
| 135 | 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 | 138 | JobDO job = jobService.getJob(id); |
| 139 | 139 | if (job == null) { |
| 140 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | 12 | * 定时任务 Excel VO |
| ... | ... | @@ -36,21 +36,21 @@ public class JobExcelVO { |
| 36 | 36 | private String cronExpression; |
| 37 | 37 | |
| 38 | 38 | @ExcelProperty("最后一次执行的开始时间") |
| 39 | - private Date executeBeginTime; | |
| 39 | + private LocalDateTime executeBeginTime; | |
| 40 | 40 | |
| 41 | 41 | @ExcelProperty("最后一次执行的结束时间") |
| 42 | - private Date executeEndTime; | |
| 42 | + private LocalDateTime executeEndTime; | |
| 43 | 43 | |
| 44 | 44 | @ExcelProperty("上一次触发时间") |
| 45 | - private Date firePrevTime; | |
| 45 | + private LocalDateTime firePrevTime; | |
| 46 | 46 | |
| 47 | 47 | @ExcelProperty("下一次触发时间") |
| 48 | - private Date fireNextTime; | |
| 48 | + private LocalDateTime fireNextTime; | |
| 49 | 49 | |
| 50 | 50 | @ExcelProperty("监控超时时间") |
| 51 | 51 | private Integer monitorTimeout; |
| 52 | 52 | |
| 53 | 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 | import lombok.ToString; |
| 8 | 8 | |
| 9 | 9 | import javax.validation.constraints.NotNull; |
| 10 | -import java.util.Date; | |
| 10 | +import java.time.LocalDateTime; | |
| 11 | 11 | |
| 12 | 12 | @ApiModel("管理后台 - 定时任务 Response VO") |
| 13 | 13 | @Data |
| ... | ... | @@ -26,6 +26,6 @@ public class JobRespVO extends JobBaseVO { |
| 26 | 26 | private String handlerName; |
| 27 | 27 | |
| 28 | 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 | 5 | import org.springframework.format.annotation.DateTimeFormat; |
| 6 | 6 | |
| 7 | 7 | import javax.validation.constraints.NotNull; |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 34 | @ApiModelProperty(value = "开始执行时间", required = true) |
| 35 | 35 | @NotNull(message = "开始执行时间不能为空") |
| 36 | 36 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 37 | - private Date beginTime; | |
| 37 | + private LocalDateTime beginTime; | |
| 38 | 38 | |
| 39 | 39 | @ApiModelProperty(value = "结束执行时间") |
| 40 | 40 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 41 | - private Date endTime; | |
| 41 | + private LocalDateTime endTime; | |
| 42 | 42 | |
| 43 | 43 | @ApiModelProperty(value = "执行时长", example = "123") |
| 44 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | 12 | * 定时任务 Excel VO |
| ... | ... | @@ -32,10 +32,10 @@ public class JobLogExcelVO { |
| 32 | 32 | private Integer executeIndex; |
| 33 | 33 | |
| 34 | 34 | @ExcelProperty("开始执行时间") |
| 35 | - private Date beginTime; | |
| 35 | + private LocalDateTime beginTime; | |
| 36 | 36 | |
| 37 | 37 | @ExcelProperty("结束执行时间") |
| 38 | - private Date endTime; | |
| 38 | + private LocalDateTime endTime; | |
| 39 | 39 | |
| 40 | 40 | @ExcelProperty("执行时长") |
| 41 | 41 | private Integer duration; |
| ... | ... | @@ -48,6 +48,6 @@ public class JobLogExcelVO { |
| 48 | 48 | private String result; |
| 49 | 49 | |
| 50 | 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 | 5 | import lombok.Data; |
| 6 | 6 | import org.springframework.format.annotation.DateTimeFormat; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 21 | |
| 22 | 22 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 23 | 23 | @ApiModelProperty(value = "开始执行时间") |
| 24 | - private Date beginTime; | |
| 24 | + private LocalDateTime beginTime; | |
| 25 | 25 | |
| 26 | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | 27 | @ApiModelProperty(value = "结束执行时间") |
| 28 | - private Date endTime; | |
| 28 | + private LocalDateTime endTime; | |
| 29 | 29 | |
| 30 | 30 | @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举") |
| 31 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 26 | |
| 27 | 27 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 28 | 28 | @ApiModelProperty(value = "开始执行时间") |
| 29 | - private Date beginTime; | |
| 29 | + private LocalDateTime beginTime; | |
| 30 | 30 | |
| 31 | 31 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 32 | 32 | @ApiModelProperty(value = "结束执行时间") |
| 33 | - private Date endTime; | |
| 33 | + private LocalDateTime endTime; | |
| 34 | 34 | |
| 35 | 35 | @ApiModelProperty(value = "任务状态", notes = "参见 JobLogStatusEnum 枚举") |
| 36 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - 定时任务日志 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -18,6 +18,6 @@ public class JobLogRespVO extends JobLogBaseVO { |
| 18 | 18 | private Long id; |
| 19 | 19 | |
| 20 | 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 | 5 | import org.springframework.format.annotation.DateTimeFormat; |
| 6 | 6 | |
| 7 | 7 | import javax.validation.constraints.NotNull; |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 54 | @ApiModelProperty(value = "开始请求时间", required = true) |
| 55 | 55 | @NotNull(message = "开始请求时间不能为空") |
| 56 | 56 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 57 | - private Date beginTime; | |
| 57 | + private LocalDateTime beginTime; | |
| 58 | 58 | |
| 59 | 59 | @ApiModelProperty(value = "结束请求时间", required = true) |
| 60 | 60 | @NotNull(message = "结束请求时间不能为空") |
| 61 | 61 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 62 | - private Date endTime; | |
| 62 | + private LocalDateTime endTime; | |
| 63 | 63 | |
| 64 | 64 | @ApiModelProperty(value = "执行时长", required = true, example = "100") |
| 65 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | 12 | * API 访问日志 Excel VO |
| ... | ... | @@ -48,10 +48,10 @@ public class ApiAccessLogExcelVO { |
| 48 | 48 | private String userAgent; |
| 49 | 49 | |
| 50 | 50 | @ExcelProperty("开始请求时间") |
| 51 | - private Date beginTime; | |
| 51 | + private LocalDateTime beginTime; | |
| 52 | 52 | |
| 53 | 53 | @ExcelProperty("结束请求时间") |
| 54 | - private Date endTime; | |
| 54 | + private LocalDateTime endTime; | |
| 55 | 55 | |
| 56 | 56 | @ExcelProperty("执行时长") |
| 57 | 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 | 5 | import lombok.Data; |
| 6 | 6 | import org.springframework.format.annotation.DateTimeFormat; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 27 | |
| 28 | 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 29 | 29 | @ApiModelProperty(value = "开始请求时间") |
| 30 | - private Date[] beginTime; | |
| 30 | + private LocalDateTime[] beginTime; | |
| 31 | 31 | |
| 32 | 32 | @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") |
| 33 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 32 | |
| 33 | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | 34 | @ApiModelProperty(value = "开始请求时间") |
| 35 | - private Date[] beginTime; | |
| 35 | + private LocalDateTime[] beginTime; | |
| 36 | 36 | |
| 37 | 37 | @ApiModelProperty(value = "执行时长", example = "100", notes = "大于等于,单位:毫秒") |
| 38 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - API 访问日志 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -18,6 +18,6 @@ public class ApiAccessLogRespVO extends ApiAccessLogBaseVO { |
| 18 | 18 | private Long id; |
| 19 | 19 | |
| 20 | 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 | 5 | import org.springframework.format.annotation.DateTimeFormat; |
| 6 | 6 | |
| 7 | 7 | import javax.validation.constraints.NotNull; |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 55 | @ApiModelProperty(value = "异常发生时间", required = true) |
| 56 | 56 | @NotNull(message = "异常发生时间不能为空") |
| 57 | 57 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 58 | - private Date exceptionTime; | |
| 58 | + private LocalDateTime exceptionTime; | |
| 59 | 59 | |
| 60 | 60 | @ApiModelProperty(value = "异常名", required = true) |
| 61 | 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 | 6 | import com.alibaba.excel.annotation.ExcelProperty; |
| 7 | 7 | import lombok.Data; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | /** |
| 12 | 12 | * API 错误日志 Excel VO |
| ... | ... | @@ -48,7 +48,7 @@ public class ApiErrorLogExcelVO { |
| 48 | 48 | private String userAgent; |
| 49 | 49 | |
| 50 | 50 | @ExcelProperty("异常发生时间") |
| 51 | - private Date exceptionTime; | |
| 51 | + private LocalDateTime exceptionTime; | |
| 52 | 52 | |
| 53 | 53 | @ExcelProperty("异常名") |
| 54 | 54 | private String exceptionName; |
| ... | ... | @@ -75,14 +75,14 @@ public class ApiErrorLogExcelVO { |
| 75 | 75 | private Integer exceptionLineNumber; |
| 76 | 76 | |
| 77 | 77 | @ExcelProperty("创建时间") |
| 78 | - private Date createTime; | |
| 78 | + private LocalDateTime createTime; | |
| 79 | 79 | |
| 80 | 80 | @ExcelProperty(value = "处理状态", converter = DictConvert.class) |
| 81 | 81 | @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS) |
| 82 | 82 | private Integer processStatus; |
| 83 | 83 | |
| 84 | 84 | @ExcelProperty("处理时间") |
| 85 | - private Date processTime; | |
| 85 | + private LocalDateTime processTime; | |
| 86 | 86 | |
| 87 | 87 | @ExcelProperty("处理用户编号") |
| 88 | 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 | 5 | import lombok.Data; |
| 6 | 6 | import org.springframework.format.annotation.DateTimeFormat; |
| 7 | 7 | |
| 8 | -import java.util.Date; | |
| 8 | +import java.time.LocalDateTime; | |
| 9 | 9 | |
| 10 | 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 | 27 | |
| 28 | 28 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 29 | 29 | @ApiModelProperty(value = "异常发生时间") |
| 30 | - private Date[] exceptionTime; | |
| 30 | + private LocalDateTime[] exceptionTime; | |
| 31 | 31 | |
| 32 | 32 | @ApiModelProperty(value = "处理状态", example = "0") |
| 33 | 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 | 8 | import lombok.ToString; |
| 9 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 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 | 32 | |
| 33 | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | 34 | @ApiModelProperty(value = "异常发生时间") |
| 35 | - private Date[] exceptionTime; | |
| 35 | + private LocalDateTime[] exceptionTime; | |
| 36 | 36 | |
| 37 | 37 | @ApiModelProperty(value = "处理状态", example = "0") |
| 38 | 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 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | 8 | |
| 9 | -import java.util.Date; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @ApiModel("管理后台 - API 错误日志 Response VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -18,10 +18,10 @@ public class ApiErrorLogRespVO extends ApiErrorLogBaseVO { |
| 18 | 18 | private Integer id; |
| 19 | 19 | |
| 20 | 20 | @ApiModelProperty(value = "创建时间", required = true) |
| 21 | - private Date createTime; | |
| 21 | + private LocalDateTime createTime; | |
| 22 | 22 | |
| 23 | 23 | @ApiModelProperty(value = "处理时间", required = true) |
| 24 | - private Date processTime; | |
| 24 | + private LocalDateTime processTime; | |
| 25 | 25 | |
| 26 | 26 | @ApiModelProperty(value = "处理用户编号", example = "233") |
| 27 | 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 | 1 | package cn.iocoder.yudao.module.infra.controller.admin.test.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 4 | + | |
| 5 | +import java.time.LocalDateTime; | |
| 6 | 6 | |
| 7 | 7 | import com.alibaba.excel.annotation.ExcelProperty; |
| 8 | 8 | |
| ... | ... | @@ -33,6 +33,6 @@ public class TestDemoExcelVO { |
| 33 | 33 | private String remark; |
| 34 | 34 | |
| 35 | 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 | 1 | package cn.iocoder.yudao.module.infra.controller.admin.test.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | + | |
| 5 | +import java.time.LocalDateTime; | |
| 5 | 6 | import io.swagger.annotations.*; |
| 6 | -import cn.iocoder.yudao.framework.common.pojo.PageParam; | |
| 7 | 7 | import org.springframework.format.annotation.DateTimeFormat; |
| 8 | 8 | |
| 9 | 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 | 29 | |
| 30 | 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 31 | 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 | 1 | package cn.iocoder.yudao.module.infra.controller.admin.test.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | + | |
| 5 | +import java.time.LocalDateTime; | |
| 5 | 6 | import io.swagger.annotations.*; |
| 6 | 7 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 7 | 8 | import org.springframework.format.annotation.DateTimeFormat; |
| ... | ... | @@ -31,6 +32,6 @@ public class TestDemoPageReqVO extends PageParam { |
| 31 | 32 | |
| 32 | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 33 | 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 | 1 | package cn.iocoder.yudao.module.infra.controller.admin.test.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 4 | + | |
| 5 | +import java.time.LocalDateTime; | |
| 5 | 6 | import io.swagger.annotations.*; |
| 6 | 7 | |
| 7 | 8 | @ApiModel("管理后台 - 字典类型 Response VO") |
| ... | ... | @@ -14,6 +15,6 @@ public class TestDemoRespVO extends TestDemoBaseVO { |
| 14 | 15 | private Long id; |
| 15 | 16 | |
| 16 | 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 | import com.baomidou.mybatisplus.annotation.TableName; |
| 8 | 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 | 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 | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
| 9 | 9 | import lombok.*; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | 14 | * API 访问日志 |
| ... | ... | @@ -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 | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
| 9 | 9 | import lombok.*; |
| 10 | 10 | |
| 11 | -import java.util.Date; | |
| 11 | +import java.time.LocalDateTime; | |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | 14 | * API 异常数据 |
| ... | ... | @@ -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 | 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 | 1 | package cn.iocoder.yudao.module.infra.dal.mysql.config; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.date.LocalDateTimeUtil; | |
| 3 | 4 | import cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO; |
| 4 | 5 | import cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO; |
| 5 | 6 | import org.springframework.jdbc.core.JdbcTemplate; |
| 6 | 7 | import org.springframework.jdbc.datasource.DriverManagerDataSource; |
| 7 | 8 | |
| 8 | 9 | import javax.sql.DataSource; |
| 9 | -import java.util.Date; | |
| 10 | +import java.time.LocalDateTime; | |
| 10 | 11 | import java.util.List; |
| 11 | 12 | |
| 12 | 13 | /** |
| ... | ... | @@ -24,7 +25,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO { |
| 24 | 25 | } |
| 25 | 26 | |
| 26 | 27 | @Override |
| 27 | - public int selectCountByUpdateTimeGt(Date maxUpdateTime) { | |
| 28 | + public int selectCountByUpdateTimeGt(LocalDateTime maxUpdateTime) { | |
| 28 | 29 | return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM infra_config WHERE update_time > ?", |
| 29 | 30 | Integer.class, maxUpdateTime); |
| 30 | 31 | } |
| ... | ... | @@ -34,7 +35,7 @@ public class ConfigDAOImpl implements ConfigFrameworkDAO { |
| 34 | 35 | return jdbcTemplate.query("SELECT config_key, value, update_time, deleted FROM infra_config", |
| 35 | 36 | (rs, rowNum) -> new ConfigRespDTO().setKey(rs.getString("config_key")) |
| 36 | 37 | .setValue(rs.getString("value")) |
| 37 | - .setUpdateTime(rs.getDate("update_time")) | |
| 38 | + .setUpdateTime(LocalDateTimeUtil.of(rs.getDate("update_time"))) | |
| 38 | 39 | .setDeleted(rs.getBoolean("deleted"))); |
| 39 | 40 | } |
| 40 | 41 | ... | ... |