update:弃用java.util.Date改为java8 java.time.Instant

This commit is contained in:
carey 2025-06-04 10:15:08 +08:00
parent 60b0faa3c6
commit 0c11ee7a39
53 changed files with 248 additions and 127 deletions

View File

@ -36,7 +36,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.time.Duration;
import java.util.Date;
import java.time.Instant;
import java.util.List;
import java.util.function.Supplier;
@ -180,7 +180,7 @@ public class SysLoginService {
SysUser sysUser = new SysUser();
sysUser.setUserId(userId);
sysUser.setLoginIp(ip);
sysUser.setLoginDate(DateUtils.getNowDate());
sysUser.setLoginDate(Instant.now());
sysUser.setUpdateBy(userId);
DataPermissionHelper.ignore(() -> userMapper.updateById(sysUser));
}
@ -242,7 +242,7 @@ public class SysLoginService {
log.info("登录租户:{} 已被停用.", tenantId);
throw new TenantException("tenant.blocked");
} else if (ObjectUtil.isNotNull(tenant.getExpireTime())
&& new Date().after(tenant.getExpireTime())) {
&& Instant.now().isAfter(tenant.getExpireTime())) {
log.info("登录租户:{} 已超过有效期.", tenantId);
throw new TenantException("tenant.expired");
}

View File

@ -6,7 +6,7 @@ import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -56,7 +56,7 @@ public class TaskAssigneeDTO implements Serializable {
Function<T, String> handlerCode,
Function<T, String> handlerName,
Function<T, Long> groupName,
Function<T, Date> createTimeMapper) {
Function<T, Instant> createTimeMapper) {
return sourceList.stream()
.map(item -> new TaskHandler(
String.valueOf(storageId.apply(item)),
@ -95,7 +95,7 @@ public class TaskAssigneeDTO implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
}
}

View File

@ -5,7 +5,7 @@ import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -68,6 +68,6 @@ public class UserDTO implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
}

View File

@ -0,0 +1,75 @@
package org.dromara.common.core.utils;
import org.dromara.common.core.enums.FormatsType;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.TimeUnit;
public class Date8Utils {
/**
* 获取当前日期的路径格式字符串格式为"yyyy/MM/dd"
*
* @return 当前日期的路径格式字符串
*/
public static String datePath() {
//Instant now = Instant.now();
LocalDateTime localDateTime = LocalDateTime.now();
return DateTimeFormatter.ofPattern(FormatsType.YYYY_MM_DD_SLASH.getTimeFormat()).format(localDateTime);
}
/**
* 获取当前日期的字符串表示格式为YYYY-MM-DD
*
* @return 当前日期的字符串表示
*/
public static String getDate() {
LocalDateTime localDateTime = LocalDateTime.now();
return DateTimeFormatter.ofPattern(FormatsType.YYYY_MM_DD.getTimeFormat()).format(localDateTime);
}
/**
* 计算两个时间点的差值小时分钟当值为0时不显示该单位
*
* @param endInstant 结束时间
* @param nowInstant 当前时间
* @return 时间差字符串格式为 "x天 x小时 x分钟 x秒"若为 0 则不显示
*/
public static String getTimeDifference(Instant endInstant, Instant nowInstant) {
long diffInMillis = Duration.between(endInstant, nowInstant).toMillis();
long day = TimeUnit.MILLISECONDS.toDays(diffInMillis);
long hour = TimeUnit.MILLISECONDS.toHours(diffInMillis) % 24;
long min = TimeUnit.MILLISECONDS.toMinutes(diffInMillis) % 60;
long sec = TimeUnit.MILLISECONDS.toSeconds(diffInMillis) % 60;
// 构建时间差字符串条件是值不为0才显示
StringBuilder result = new StringBuilder();
if (day > 0) {
result.append(String.format("%d天 ", day));
}
if (hour > 0) {
result.append(String.format("%d小时 ", hour));
}
if (min > 0) {
result.append(String.format("%d分钟 ", min));
}
if (sec > 0) {
result.append(String.format("%d秒", sec));
}
return result.length() > 0 ? result.toString().trim() : "0秒";
}
/**
* 将指定日期按照指定格式进行格式化
*
* @param format 要使用的日期时间格式例如"YYYY-MM-DD HH:MM:SS"
* @param instant 要格式化的日期对象
* @return 格式化后的日期时间字符串
*/
public static String parseDateToStr(final FormatsType format, final Instant instant) {
return DateTimeFormatter.ofPattern(format.getTimeFormat()).format(instant);
}
}

View File

@ -16,6 +16,7 @@ import java.util.concurrent.TimeUnit;
*
* @author ruoyi
*/
@Deprecated
public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
private static final String[] PARSE_PATTERNS = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",

View File

@ -6,7 +6,7 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.json.handler.BigNumberSerializer;
import org.dromara.common.json.handler.CustomDateDeserializer;
import org.dromara.common.json.handler.CustomInstantDeserializer;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
@ -16,7 +16,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.time.Instant;
import java.util.TimeZone;
/**
@ -40,7 +40,7 @@ public class JacksonConfig {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
javaTimeModule.addDeserializer(Date.class, new CustomDateDeserializer());
javaTimeModule.addDeserializer(Instant.class, new CustomInstantDeserializer());
builder.modules(javaTimeModule);
builder.timeZone(TimeZone.getDefault());
log.info("初始化 jackson 配置");

View File

@ -0,0 +1,41 @@
package org.dromara.common.json.handler;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
/**
* 自定义 Instant 类型反序列化处理器支持多种格式
*
* @author AprilWind
*/
public class CustomInstantDeserializer extends JsonDeserializer<Instant> {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* 反序列化逻辑将字符串转换为 Date 对象
*
* @param p JSON 解析器用于获取字符串值
* @param ctxt 上下文环境可用于获取更多配置
* @return 转换后的 Instant 对象若为空字符串返回 null
* @throws IOException,DateTimeParseException 当字符串格式非法或转换失败时抛出
*/
@Override
public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws IOException,DateTimeParseException {
String text = p.getText();
if(StrUtil.isBlank(text)){
return null;
}
LocalDateTime ldt = LocalDateTime.parse(text, FORMATTER);
return ldt.atZone(ZoneId.systemDefault()).toInstant();
}
}

View File

@ -4,7 +4,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 操作日志事件
@ -106,7 +106,7 @@ public class OperLogEvent implements Serializable {
/**
* 操作时间
*/
private Date operTime;
private Instant operTime;
/**
* 消耗时间

View File

@ -8,7 +8,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
@ -46,7 +46,7 @@ public class BaseEntity implements Serializable {
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
private Instant createTime;
/**
* 更新者
@ -58,7 +58,7 @@ public class BaseEntity implements Serializable {
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
private Instant updateTime;
/**
* 请求参数

View File

@ -11,7 +11,7 @@ import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.satoken.utils.LoginHelper;
import java.util.Date;
import java.time.Instant;
/**
* MP注入处理器
@ -32,7 +32,7 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
// 获取当前时间作为创建时间和更新时间如果创建时间不为空则使用创建时间否则使用当前时间
Date current = ObjectUtils.notNull(baseEntity.getCreateTime(), new Date());
Instant current = ObjectUtils.notNull(baseEntity.getCreateTime(), Instant.now());
baseEntity.setCreateTime(current);
baseEntity.setUpdateTime(current);
@ -48,9 +48,9 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
}
}
} else {
Date date = new Date();
this.strictInsertFill(metaObject, "createTime", Date.class, date);
this.strictInsertFill(metaObject, "updateTime", Date.class, date);
Instant now = Instant.now();
this.strictInsertFill(metaObject, "createTime", Instant.class, now);
this.strictInsertFill(metaObject, "updateTime", Instant.class, now);
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
@ -67,7 +67,7 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
// 获取当前时间作为更新时间无论原始对象中的更新时间是否为空都填充
Date current = new Date();
Instant current = Instant.now();
baseEntity.setUpdateTime(current);
// 获取当前登录用户的ID并填充更新人信息
@ -76,7 +76,7 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
baseEntity.setUpdateBy(userId);
}
} else {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
this.strictUpdateFill(metaObject, "updateTime", Instant.class, Instant.now());
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);

View File

@ -3,7 +3,7 @@ package org.dromara.common.oss.core;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil;
import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.Date8Utils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.file.FileUtils;
import org.dromara.common.oss.constant.OssConstant;
@ -439,7 +439,7 @@ public class OssClient {
// 生成uuid
String uuid = IdUtil.fastSimpleUUID();
// 生成日期路径
String datePath = DateUtils.datePath();
String datePath = Date8Utils.datePath();
// 拼接路径
String path = StringUtils.isNotEmpty(prefix) ?
prefix + StringUtils.SLASH + datePath + StringUtils.SLASH + uuid : datePath + StringUtils.SLASH + uuid;

View File

@ -12,7 +12,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -74,7 +74,7 @@ public class TestDemoVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
/**
* 创建人
@ -93,7 +93,7 @@ public class TestDemoVo implements Serializable {
* 更新时间
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
private Instant updateTime;
/**
* 更新人

View File

@ -8,7 +8,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -58,7 +58,7 @@ public class TestTreeVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
}

View File

@ -167,7 +167,7 @@ public interface GenConstants {
/**
* 时间类型
*/
String TYPE_DATE = "Date";
String TYPE_DATE = "Instant";
/**
* 模糊查询

View File

@ -44,6 +44,7 @@ import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@ -162,8 +163,8 @@ public class GenTableServiceImpl implements IGenTableService {
gen.setTableName(x.getName());
gen.setTableComment(x.getComment());
// postgresql的表元数据没有创建时间这个东西(好奇葩) 只能new Date代替
gen.setCreateTime(ObjectUtil.defaultIfNull(x.getCreateTime(), new Date()));
gen.setUpdateTime(x.getUpdateTime());
gen.setCreateTime(x.getCreateTime() != null ? x.getCreateTime().toInstant() : Instant.now());
gen.setUpdateTime(x.getUpdateTime() != null ? x.getUpdateTime().toInstant() : Instant.now());
return gen;
}).sorted(Comparator.comparing(GenTable::getCreateTime).reversed())
.toList();
@ -199,8 +200,8 @@ public class GenTableServiceImpl implements IGenTableService {
gen.setDataName(dataName);
gen.setTableName(x.getName());
gen.setTableComment(x.getComment());
gen.setCreateTime(x.getCreateTime());
gen.setUpdateTime(x.getUpdateTime());
gen.setCreateTime(x.getCreateTime() != null ? x.getCreateTime().toInstant() : Instant.now());
gen.setUpdateTime(x.getUpdateTime() != null ? x.getUpdateTime().toInstant() : Instant.now());
return gen;
}).toList();
}

View File

@ -3,8 +3,8 @@ package org.dromara.generator.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Dict;
import org.dromara.common.core.utils.Date8Utils;
import org.dromara.generator.constant.GenConstants;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.mybatis.helper.DataBaseHelper;
@ -63,7 +63,7 @@ public class VelocityUtils {
velocityContext.put("basePackage", getPackagePrefix(packageName));
velocityContext.put("packageName", packageName);
velocityContext.put("author", genTable.getFunctionAuthor());
velocityContext.put("datetime", DateUtils.getDate());
velocityContext.put("datetime", Date8Utils.getDate());
velocityContext.put("pkColumn", genTable.getPkColumn());
velocityContext.put("importList", getImportList(genTable));
velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName));
@ -211,7 +211,7 @@ public class VelocityUtils {
HashSet<String> importList = new HashSet<>();
for (GenTableColumn column : columns) {
if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) {
importList.add("java.util.Date");
importList.add("java.time.Instant");
importList.add("com.fasterxml.jackson.annotation.JsonFormat");
} else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) {
importList.add("java.math.BigDecimal");

View File

@ -13,7 +13,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;

View File

@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 系统访问记录表 sys_logininfor
@ -80,6 +80,6 @@ public class SysLogininfor implements Serializable {
/**
* 访问时间
*/
private Date loginTime;
private Instant loginTime;
}

View File

@ -6,7 +6,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 操作日志记录表 oper_log
@ -105,7 +105,7 @@ public class SysOperLog implements Serializable {
/**
* 操作时间
*/
private Date operTime;
private Instant operTime;
/**
* 消耗时间

View File

@ -8,7 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.Date;
import java.time.Instant;
/**
* 租户对象 sys_tenant
@ -82,7 +82,7 @@ public class SysTenant extends BaseEntity {
/**
* 过期时间
*/
private Date expireTime;
private Instant expireTime;
/**
* 用户数量-1不限制

View File

@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.tenant.core.TenantEntity;
import java.util.Date;
import java.time.Instant;
/**
* 用户对象 sys_user
@ -96,7 +96,7 @@ public class SysUser extends TenantEntity {
/**
* 最后登录时间
*/
private Date loginDate;
private Instant loginDate;
/**
* 备注

View File

@ -4,7 +4,7 @@ import org.dromara.system.domain.SysLogininfor;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.util.Date;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
@ -76,7 +76,7 @@ public class SysLogininforBo {
/**
* 访问时间
*/
private Date loginTime;
private Instant loginTime;
/**
* 请求参数

View File

@ -6,7 +6,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import lombok.Data;
import java.util.Date;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
@ -112,7 +112,7 @@ public class SysOperLogBo {
/**
* 操作时间
*/
private Date operTime;
private Instant operTime;
/**
* 消耗时间

View File

@ -8,7 +8,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.time.Instant;
import org.dromara.common.mybatis.core.domain.BaseEntity;
@ -98,7 +98,7 @@ public class SysTenantBo extends BaseEntity {
/**
* 过期时间
*/
private Date expireTime;
private Instant expireTime;
/**
* 用户数量-1不限制

View File

@ -10,7 +10,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -67,6 +67,6 @@ public class SysConfigVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
}

View File

@ -11,7 +11,7 @@ import org.dromara.system.domain.SysDept;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.time.Instant;
import java.util.List;
/**
@ -99,7 +99,7 @@ public class SysDeptVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
/**
* 子部门

View File

@ -10,7 +10,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -83,6 +83,6 @@ public class SysDictDataVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
}

View File

@ -10,7 +10,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -54,6 +54,6 @@ public class SysDictTypeVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
}

View File

@ -1,6 +1,6 @@
package org.dromara.system.domain.vo;
import java.util.Date;
import java.time.Instant;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@ -100,7 +100,7 @@ public class SysLogininforVo implements Serializable {
* 访问时间
*/
@ExcelProperty(value = "访问时间")
private Date loginTime;
private Instant loginTime;
}

View File

@ -7,7 +7,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.time.Instant;
import java.util.List;
@ -106,7 +106,7 @@ public class SysMenuVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 子菜单

View File

@ -8,7 +8,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
@ -68,6 +68,6 @@ public class SysNoticeVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
}

View File

@ -10,7 +10,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -134,7 +134,7 @@ public class SysOperLogVo implements Serializable {
* 操作时间
*/
@ExcelProperty(value = "操作时间")
private Date operTime;
private Instant operTime;
/**
* 消耗时间

View File

@ -8,7 +8,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* OSS对象存储视图对象 sys_oss
@ -55,7 +55,7 @@ public class SysOssVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 上传人

View File

@ -12,7 +12,7 @@ import org.dromara.system.domain.SysPost;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 岗位信息视图对象 sys_post
@ -80,7 +80,7 @@ public class SysPostVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
/**
* 部门名

View File

@ -11,7 +11,7 @@ import org.dromara.system.domain.SysRole;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 角色信息视图对象 sys_role
@ -86,7 +86,7 @@ public class SysRoleVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
/**
* 用户是否存在此角色标识 默认不存在

View File

@ -6,7 +6,7 @@ import org.dromara.system.domain.SysSocial;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -140,5 +140,5 @@ public class SysSocialVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
}

View File

@ -1,6 +1,6 @@
package org.dromara.system.domain.vo;
import java.util.Date;
import java.time.Instant;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@ -96,7 +96,7 @@ public class SysTenantVo implements Serializable {
* 过期时间
*/
@ExcelProperty(value = "过期时间")
private Date expireTime;
private Instant expireTime;
/**
* 用户数量-1不限制

View File

@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 用户对象导出VO
@ -79,7 +79,7 @@ public class SysUserExportVo implements Serializable {
* 最后登录时间
*/
@ExcelProperty(value = "最后登录时间")
private Date loginDate;
private Instant loginDate;
/**
* 部门名称

View File

@ -12,7 +12,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
import java.util.List;
@ -101,7 +101,7 @@ public class SysUserVo implements Serializable {
/**
* 最后登录时间
*/
private Date loginDate;
private Instant loginDate;
/**
* 备注
@ -111,7 +111,7 @@ public class SysUserVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 部门名

View File

@ -29,7 +29,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.time.Instant;
import java.util.List;
import java.util.Map;
@ -132,7 +132,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
@Override
public void insertLogininfor(SysLogininforBo bo) {
SysLogininfor logininfor = MapstructUtils.convert(bo, SysLogininfor.class);
logininfor.setLoginTime(new Date());
logininfor.setLoginTime(Instant.now());
baseMapper.insert(logininfor);
}

View File

@ -20,7 +20,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Date;
import java.time.Instant;
import java.util.List;
import java.util.Map;
@ -86,7 +86,7 @@ public class SysOperLogServiceImpl implements ISysOperLogService {
@Override
public void insertOperlog(SysOperLogBo bo) {
SysOperLog operLog = MapstructUtils.convert(bo, SysOperLog.class);
operLog.setOperTime(new Date());
operLog.setOperTime(Instant.now());
baseMapper.insert(operLog);
}

View File

@ -34,7 +34,7 @@ import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.util.*;
/**
@ -365,7 +365,7 @@ public class SysTenantServiceImpl implements ISysTenantService {
return true;
}
// 如果当前时间在过期时间之前则通过
return new Date().before(tenant.getExpireTime());
return Instant.now().isBefore(tenant.getExpireTime());
}
/**

View File

@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
import java.util.Date;
import java.time.Instant;
/**
* 请假对象 test_leave
@ -37,12 +37,12 @@ public class TestLeave extends BaseEntity {
/**
* 开始时间
*/
private Date startDate;
private Instant startDate;
/**
* 结束时间
*/
private Date endDate;
private Instant endDate;
/**
* 请假天数

View File

@ -12,7 +12,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.workflow.domain.TestLeave;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.time.Instant;
/**
* 请假业务对象 test_leave
@ -41,17 +41,17 @@ public class TestLeaveBo extends BaseEntity {
* 开始时间
*/
@NotNull(message = "开始时间不能为空", groups = {AddGroup.class, EditGroup.class})
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Instant startDate;
/**
* 结束时间
*/
@NotNull(message = "结束时间不能为空", groups = {AddGroup.class, EditGroup.class})
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Instant endDate;
/**
* 请假天数

View File

@ -9,7 +9,7 @@ import org.dromara.workflow.domain.FlowCategory;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.time.Instant;
import java.util.List;
@ -64,7 +64,7 @@ public class FlowCategoryVo implements Serializable {
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
private Instant createTime;
/**
* 子菜单

View File

@ -6,7 +6,7 @@ import org.dromara.workflow.common.constant.FlowConstant;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
* 流程定义视图
@ -24,12 +24,12 @@ public class FlowDefinitionVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 更新时间
*/
private Date updateTime;
private Instant updateTime;
/**
* 租户ID

View File

@ -1,7 +1,7 @@
package org.dromara.workflow.domain.vo;
import lombok.Data;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.Date8Utils;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.warm.flow.core.enums.CooperateType;
@ -9,7 +9,7 @@ import org.dromara.workflow.common.constant.FlowConstant;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
import java.util.List;
/**
@ -28,12 +28,12 @@ public class FlowHisTaskVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 更新时间
*/
private Date updateTime;
private Instant updateTime;
/**
* 租户ID
@ -208,7 +208,7 @@ public class FlowHisTaskVo implements Serializable {
*
* @param createTime 创建时间
*/
public void setCreateTime(Date createTime) {
public void setCreateTime(Instant createTime) {
this.createTime = createTime;
updateRunDuration();
}
@ -218,7 +218,7 @@ public class FlowHisTaskVo implements Serializable {
*
* @param updateTime 更新时间
*/
public void setUpdateTime(Date updateTime) {
public void setUpdateTime(Instant updateTime) {
this.updateTime = updateTime;
updateRunDuration();
}
@ -229,7 +229,7 @@ public class FlowHisTaskVo implements Serializable {
private void updateRunDuration() {
// 如果创建时间和更新时间均不为空计算它们之间的时长
if (this.updateTime != null && this.createTime != null) {
this.runDuration = DateUtils.getTimeDifference(this.updateTime, this.createTime);
this.runDuration = Date8Utils.getTimeDifference(this.updateTime, this.createTime);
}
}

View File

@ -5,7 +5,7 @@ import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.workflow.common.constant.FlowConstant;
import java.util.Date;
import java.time.Instant;
/**
* 流程实例视图
@ -20,12 +20,12 @@ public class FlowInstanceVo {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 更新时间
*/
private Date updateTime;
private Instant updateTime;
/**
* 租户ID

View File

@ -9,7 +9,7 @@ import org.dromara.workflow.common.constant.FlowConstant;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.time.Instant;
import java.util.List;
/**
@ -28,12 +28,12 @@ public class FlowTaskVo implements Serializable {
/**
* 创建时间
*/
private Date createTime;
private Instant createTime;
/**
* 更新时间
*/
private Date updateTime;
private Instant updateTime;
/**
* 租户ID

View File

@ -9,7 +9,7 @@ import org.dromara.workflow.domain.TestLeave;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.time.Instant;
/**
@ -43,14 +43,14 @@ public class TestLeaveVo implements Serializable {
*/
@ExcelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startDate;
private Instant startDate;
/**
* 结束时间
*/
@ExcelProperty(value = "结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
private Instant endDate;
/**
* 请假天数

View File

@ -14,7 +14,7 @@ import org.dromara.common.core.enums.FormatsType;
import org.dromara.common.core.service.DeptService;
import org.dromara.common.core.service.TaskAssigneeService;
import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.Date8Utils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.ui.dto.HandlerFunDto;
import org.dromara.warm.flow.ui.dto.HandlerQuery;
@ -162,7 +162,7 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
Optional.ofNullable(assignee.getGroupName())
.map(deptService::selectDeptNameByIds)
.orElse(DEFAULT_GROUP_NAME), DEFAULT_GROUP_NAME))
.setCreateTime(assignee -> DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime()));
.setCreateTime(assignee -> Date8Utils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime()));
}
/**

View File

@ -54,6 +54,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
@ -243,14 +244,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
long taskId = identifierGenerator.nextId(null).longValue();
task.setId(taskId);
task.setNodeName("【抄送】" + task.getNodeName());
Date updateTime = new Date(flowHisTask.getUpdateTime().getTime() - 1000);
Instant updateTime = flowHisTask.getUpdateTime().toInstant().plusSeconds(-1);
FlowParams flowParams = FlowParams.build()
.skipType(SkipType.NONE.getKey())
.hisStatus(TaskStatusEnum.COPY.getStatus())
.message("【抄送给】" + StreamUtils.join(flowCopyList, FlowCopyBo::getUserName));
HisTask hisTask = hisTaskService.setSkipHisTask(task, flowNode, flowParams);
hisTask.setCreateTime(updateTime);
hisTask.setUpdateTime(updateTime);
hisTask.setCreateTime(Date.from(updateTime));
hisTask.setUpdateTime(Date.from(updateTime));
hisTaskService.save(hisTask);
List<User> userList = flowCopyList.stream()
.map(flowCopy -> {

View File

@ -29,6 +29,7 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Duration;
import java.util.List;
import java.util.Map;
@ -101,7 +102,8 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
*/
@Override
public TestLeaveVo insertByBo(TestLeaveBo bo) {
long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true);
Duration duration = Duration.between(bo.getStartDate(),bo.getEndDate());
long day = duration.toDays();
// 截止日期也算一天
bo.setLeaveDays((int) day + 1);
TestLeave add = MapstructUtils.convert(bo, TestLeave.class);