From 16ee5b8d01f21df048464b907cd0dd7b3c41e79f Mon Sep 17 00:00:00 2001 From: yinq Date: Thu, 6 Nov 2025 09:14:46 +0800 Subject: [PATCH] =?UTF-8?q?1.0.30=20=E4=BC=98=E5=8C=96=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E8=A7=84=E5=88=99=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SysCodeRuleServiceImpl.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java index 9b3f7318..623967be 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCodeRuleServiceImpl.java @@ -170,7 +170,7 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService { String dateToStr = null; if (sysCodeRule.getRenewFlag().equals(SysConstants.SYS_RENEW_FLAG_DAY)) { //每日更新 - dateToStr = DateUtils.parseDateToStr(ruleTemplate, new Date()); + dateToStr = formatRuleTemplate(ruleTemplate); code.append(dateToStr); // 如果 nextCode 不包含 dateToStr,说明是新的日期 if (nextCode == null || !nextCode.contains(dateToStr)) { @@ -181,7 +181,7 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService { return sysCodeRule; } } else if (sysCodeRule.getRenewFlag().equals(SysConstants.SYS_RENEW_FLAG_NO) && ruleTemplate != null) { - dateToStr = DateUtils.parseDateToStr(ruleTemplate, new Date()); + dateToStr = formatRuleTemplate(ruleTemplate); code.append(dateToStr); } long seq = 1L; @@ -197,6 +197,34 @@ public class SysCodeRuleServiceImpl implements ISysCodeRuleService { return sysCodeRule; } + /** + * 格式化规则模板,将日期格式模式(yyyy、yyyyMM、yyyyMMdd)替换为实际日期值,其他字符保持不变 + * + * @param ruleTemplate 规则模板 + * @return 格式化后的字符串 + */ + private String formatRuleTemplate(String ruleTemplate) { + if (StringUtils.isBlank(ruleTemplate)) { + return ruleTemplate; + } + Date currentDate = new Date(); + String result = ruleTemplate; + + // 按优先级处理:yyyyMMdd > yyyyMM > yyyy + if (result.contains("yyyyMMdd")) { + String dateStr = DateUtils.parseDateToStr("yyyyMMdd", currentDate); + result = result.replace("yyyyMMdd", dateStr); + } else if (result.contains("yyyyMM")) { + String dateStr = DateUtils.parseDateToStr("yyyyMM", currentDate); + result = result.replace("yyyyMM", dateStr); + } else if (result.contains("yyyy")) { + String dateStr = DateUtils.parseDateToStr("yyyy", currentDate); + result = result.replace("yyyy", dateStr); + } + + return result; + } + public static String formatSequence(Long sequenceLength, Long seq) { String seqStr = String.valueOf(seq); if (seqStr.length() >= sequenceLength) {