From bcd5bb0f86381fc7004498f32e6897d1e7cef4eb Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Mon, 15 Dec 2025 06:19:29 +0000 Subject: [PATCH] =?UTF-8?q?!805=20update=20=E4=BC=98=E5=8C=96=E6=88=91?= =?UTF-8?q?=E7=9A=84=E5=BE=85=E5=8A=9E=E6=97=B6=E9=97=B4=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=20*=20update=20=E4=BC=98=E5=8C=96=E6=88=91=E7=9A=84=E5=BE=85?= =?UTF-8?q?=E5=8A=9E=E6=97=B6=E9=97=B4=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/core/utils/DateUtils.java | 56 +++++++++++++++++++ .../workflow/domain/vo/FlowHisTaskVo.java | 4 ++ .../workflow/domain/vo/FlowTaskVo.java | 6 +- 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java index 1970f063e..6c450853c 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java @@ -1,5 +1,6 @@ package org.dromara.common.core.utils; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import org.apache.commons.lang3.time.DateFormatUtils; import org.dromara.common.core.enums.FormatsType; @@ -319,4 +320,59 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } } + /** + * 将日期格式化为仿微信的友好时间 + *
+ * 规则说明: + * 1. 未来时间:yyyy-MM-dd HH:mm + * 2. 今天: + * - 1 分钟内:刚刚 + * - 1 小时内:X 分钟前 + * - 超过 1 小时:凌晨/上午/中午/下午/晚上 HH:mm + * 3. 昨天:昨天 HH:mm + * 4. 本周:周X HH:mm + * 5. 今年内:MM-dd HH:mm + * 6. 非今年:yyyy-MM-dd HH:mm + * + * @param date 日期时间 + * @return 格式化后的时间描述 + */ + public static String formatFriendlyTime(Date date) { + if (date == null) { + return ""; + } + Date now = DateUtil.date(); + + // 未来时间或非今年 + if (date.after(now) || DateUtil.year(date) != DateUtil.year(now)) { + return parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM, date); + } + + // 今天 + if (DateUtil.isSameDay(date, now)) { + long minutes = DateUtil.between(date, now, DateUnit.MINUTE); + if (minutes < 1) { + return "刚刚"; + } + if (minutes < 60) { + return minutes + "分钟前"; + } + return getTodayHour(date) + " " + DateUtil.format(date, "HH:mm"); + } + + // 昨天 + if (DateUtil.isSameDay(date, DateUtil.yesterday())) { + return "昨天 " + DateUtil.format(date, "HH:mm"); + } + + // 本周 + if (DateUtil.isSameWeek(date, now, true)) { + return DateUtil.dayOfWeekEnum(date).toChinese("周") + + " " + DateUtil.format(date, "HH:mm"); + } + + // 今年内其它时间 + return DateUtil.format(date, "MM-dd HH:mm"); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java index ee0fd6330..a9f6a60f4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java @@ -253,4 +253,8 @@ public class FlowHisTaskVo implements Serializable { this.cooperateTypeName = CooperateType.getValueByKey(cooperateType); } + public String getCreateTime() { + return DateUtils.formatFriendlyTime(createTime); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java index 2e23241aa..ffe804912 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -1,6 +1,7 @@ package org.dromara.workflow.domain.vo; import lombok.Data; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.translation.annotation.Translation; import org.dromara.common.translation.constant.TransConstant; import org.dromara.warm.flow.core.entity.User; @@ -8,7 +9,6 @@ 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.util.List; import java.util.Map; @@ -212,4 +212,8 @@ public class FlowTaskVo implements Serializable { private String businessTitle; //业务扩展信息结束 + public String getCreateTime() { + return DateUtils.formatFriendlyTime(createTime); + } + }