ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/system/user/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -7,6 +7,11 @@ import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; /** @@ -117,6 +122,14 @@ } /** * 计ç®ç¸å·®å¤©æ° */ public static int differentDaysByMillisecond(Date date1, Date date2) { return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24))); } /** * 计ç®ä¸¤ä¸ªæ¶é´å·® */ public static String getDatePoor(Date endDate, Date nowDate) { @@ -136,4 +149,21 @@ // long sec = diff % nd % nh % nm / ns; return day + "天" + hour + "å°æ¶" + min + "åé"; } /** * å¢å LocalDateTime ==> Date */ public static Date toDate(LocalDateTime temporalAccessor) { ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } /** * å¢å LocalDate ==> Date */ public static Date toDate(LocalDate temporalAccessor) { LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0)); ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
@@ -231,4 +231,43 @@ return matcher.match(pattern, url); } /** * æ°å左边补é½0ï¼ä½¿ä¹è¾¾å°æå®é¿åº¦ã注æï¼å¦ææ°å转æ¢ä¸ºå符串åï¼é¿åº¦å¤§äºsizeï¼ååªä¿ç æåsize个å符ã * * @param num æ°å对象 * @param size å符串æå®é¿åº¦ * @return è¿åæ°åçåç¬¦ä¸²æ ¼å¼ï¼è¯¥å符串为æå®é¿åº¦ã */ public static final String padl(final Number num, final int size) { return padl(num.toString(), size, '0'); } /** * å符串左补é½ã妿åå§å符串sé¿åº¦å¤§äºsizeï¼ååªä¿çæåsize个å符ã * * @param s åå§å符串 * @param size å符串æå®é¿åº¦ * @param c ç¨äºè¡¥é½çå符 * @return è¿åæå®é¿åº¦çå符串ï¼ç±ååç¬¦ä¸²å·¦è¡¥é½ææªåå¾å°ã */ public static final String padl(final String s, final int size, final char c) { final StringBuilder sb = new StringBuilder(size); if (s != null) { final int len = s.length(); if (s.length() <= size) { for (int i = size - len; i > 0; i--) { sb.append(c); } sb.append(s); } else { return s.substring(len - size, len); } } else { for (int i = size; i > 0; i--) { sb.append(c); } } return sb.toString(); } } ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -22,7 +22,6 @@ * * @param response ååºå¯¹è±¡ * @param realFileName ç宿件å * @return */ public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException { String percentEncodedFileName = percentEncode(realFileName); @@ -35,7 +34,6 @@ .append("utf-8''") .append(percentEncodedFileName); response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename"); response.setHeader("Content-disposition", contentDispositionValue.toString()); response.setHeader("download-filename", percentEncodedFileName); ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,86 @@ package com.ruoyi.common.utils.uuid; import java.util.concurrent.atomic.AtomicInteger; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; /** * @author ruoyi åºåçæç±» */ public class Seq { // éç¨åºåç±»å public static final String commSeqType = "COMMON"; // ä¸ä¼ åºåç±»å public static final String uploadSeqType = "UPLOAD"; // éç¨æ¥å£åºåæ° private static AtomicInteger commSeq = new AtomicInteger(1); // ä¸ä¼ æ¥å£åºåæ° private static AtomicInteger uploadSeq = new AtomicInteger(1); // æºå¨æ è¯ private static String machineCode = "A"; /** * è·åéç¨åºåå· * * @return åºåå¼ */ public static String getId() { return getId(commSeqType); } /** * é»è®¤16ä½åºåå· yyMMddHHmmss + ä¸ä½æºå¨æ è¯ + 3é¿åº¦å¾ªç¯éå¢å符串 * * @return åºåå¼ */ public static String getId(String type) { AtomicInteger atomicInt = commSeq; if (uploadSeqType.equals(type)) { atomicInt = uploadSeq; } return getId(atomicInt, 3); } /** * éç¨æ¥å£åºåå· yyMMddHHmmss + ä¸ä½æºå¨æ è¯ + lengthé¿åº¦å¾ªç¯éå¢å符串 * * @param atomicInt åºåæ° * @param length æ°å¼é¿åº¦ * @return åºåå¼ */ public static String getId(AtomicInteger atomicInt, int length) { String result = DateUtils.dateTimeNow(); result += machineCode; result += getSeq(atomicInt, length); return result; } /** * åºå循ç¯éå¢å符串[1, 10 ç (length)广¬¡æ¹), ç¨0左补é½length使° * * @return åºåå¼ */ private synchronized static String getSeq(AtomicInteger atomicInt, int length) { // å åå¼å+1 int value = atomicInt.getAndIncrement(); // å¦ææ´æ°åå¼>=10 ç (length)广¬¡æ¹åé置为1 int maxSeq = (int) Math.pow(10, length); if (atomicInt.get() >= maxSeq) { atomicInt.set(1); } // 转å符串ï¼ç¨0å·¦è¡¥é½ return StringUtils.padl(value, length); } } ruoyi-ui/src/views/system/user/index.vue
@@ -443,7 +443,7 @@ email: [ { type: "email", message: "'请è¾å ¥æ£ç¡®çé®ç®±å°å", message: "请è¾å ¥æ£ç¡®çé®ç®±å°å", trigger: ["blur", "change"] } ],