疯狂的狮子li
2022-02-28 b9afd5585645c215df0ec0006a8af46bd7d80523
Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev

 Conflicts:
 pom.xml
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
 ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
 ruoyi-ui/src/components/FileUpload/index.vue
 ruoyi-ui/src/components/ImageUpload/index.vue
 ruoyi-ui/src/views/monitor/server/index.vue
 ruoyi-ui/src/views/system/user/index.vue
已修改4个文件
已添加1个文件
159 ■■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/src/views/system/user/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | 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"]
          }
        ],