From a5bbda30b568e9d72679da762166c40c9508b414 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期二, 11 二月 2025 16:24:42 +0800
Subject: [PATCH] zjh20250211

---
 ltkj-common/src/main/java/com/ltkj/common/utils/IdUtils.java |   34 +++++++++++++++++++++++++++-------
 1 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/ltkj-common/src/main/java/com/ltkj/common/utils/IdUtils.java b/ltkj-common/src/main/java/com/ltkj/common/utils/IdUtils.java
index 5d88fd1..71bb04c 100644
--- a/ltkj-common/src/main/java/com/ltkj/common/utils/IdUtils.java
+++ b/ltkj-common/src/main/java/com/ltkj/common/utils/IdUtils.java
@@ -18,6 +18,7 @@
 public class IdUtils {
 
     private static final String LIS_LAST_ID_KEY = "id:generate:lis:id";
+    private static final String TJH_LAST_ID_KEY = "id:generate:tjhs:tjh";
     private static final String LIS_LAST_ID_INCR_KEY = "id:generate:lis:id:incr";
     private static final String LIS_CURRENT_DATE_KEY = "id:generate:lis:currentDate";
 
@@ -68,16 +69,35 @@
     private static long lastTimestamp = -1;
     private static final Random random = new Random();
 
-    public static synchronized String getTjNumber() {
-        long timestamp = System.currentTimeMillis();  // 鑾峰彇褰撳墠鏃堕棿鎴筹紙姣锛�
+//    public static synchronized String getTjNumber() {
+//        long timestamp = System.currentTimeMillis();  // 鑾峰彇褰撳墠鏃堕棿鎴筹紙姣锛�
+//
+//        // 濡傛灉鏃堕棿鎴冲拰涓婃鐢熸垚鐨勬椂闂存埑鐩稿悓锛岀敓鎴愪竴涓柊鐨勯殢鏈烘暟
+//        if (timestamp == lastTimestamp) {
+//            return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100);
+//        } else {
+//            lastTimestamp = timestamp;  // 鏇存柊鏈�鍚庣敓鎴愭椂闂存埑
+//            return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100);
+//        }
+//    }
 
-        // 濡傛灉鏃堕棿鎴冲拰涓婃鐢熸垚鐨勬椂闂存埑鐩稿悓锛岀敓鎴愪竴涓柊鐨勯殢鏈烘暟
-        if (timestamp == lastTimestamp) {
-            return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100);
+
+    public  synchronized String getTjNumber() {
+        String currentDate = new SimpleDateFormat("yyyyMMdd").format(new Date());
+        String storedDate = stringRedisTemplate.opsForValue().get(LIS_CURRENT_DATE_KEY);
+        String lastIdStr = stringRedisTemplate.opsForValue().get(TJH_LAST_ID_KEY);
+        if (StrUtil.isBlank(lastIdStr))lastIdStr = "0";
+        int lastId;
+        if (storedDate == null || !storedDate.equals(currentDate)) {
+            lastId = 1;
+            stringRedisTemplate.opsForValue().set(TJH_LAST_ID_KEY, String.valueOf(lastId));
+            stringRedisTemplate.opsForValue().set(LIS_CURRENT_DATE_KEY, currentDate);
         } else {
-            lastTimestamp = timestamp;  // 鏇存柊鏈�鍚庣敓鎴愭椂闂存埑
-            return String.format("%09d", (timestamp % 1000000000) + random.nextInt(900) + 100);
+            lastId = Integer.parseInt(lastIdStr) + 1;
+            stringRedisTemplate.opsForValue().set(TJH_LAST_ID_KEY, String.valueOf(lastId));
         }
+        String yyMMdd = currentDate.substring(2);
+        return String.format("%s%05d", yyMMdd, lastId);
     }
 
 

--
Gitblit v1.8.0