From 0208c795499b808c762edbb3d61432410692dd6e Mon Sep 17 00:00:00 2001 From: chenhj <chenhj@lunor.cn> Date: 星期六, 24 五月 2025 14:50:15 +0800 Subject: [PATCH] Merge pull request 'chen' (#7) from chen into master --- ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 86 insertions(+), 0 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java new file mode 100644 index 0000000..bf99611 --- /dev/null +++ b/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 final 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宸﹁ˉ榻恖ength浣嶆暟 + * + * @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); + } +} -- Gitblit v1.9.3