From cbc1828ae240e37a37670f2760b80649c11679e2 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期一, 11 八月 2025 08:58:56 +0800
Subject: [PATCH] zjh20250811

---
 ltkj-admin/src/test/java/zjhTest.java |  113 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 94 insertions(+), 19 deletions(-)

diff --git a/ltkj-admin/src/test/java/zjhTest.java b/ltkj-admin/src/test/java/zjhTest.java
index 761b949..bea1f4b 100644
--- a/ltkj-admin/src/test/java/zjhTest.java
+++ b/ltkj-admin/src/test/java/zjhTest.java
@@ -1,8 +1,11 @@
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
-import com.ltkj.LtkjApplication;
-import com.ltkj.framework.config.MatchUtils;
+import com.ltkj.LtkjApplication;import com.ltkj.framework.config.MatchUtils;
+import com.ltkj.hosp.domain.TjJcycxm;
 import com.ltkj.hosp.idutil.IdUtils;
+import com.ltkj.system.service.ISysConfigService;
+import jodd.util.StringUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -20,6 +23,9 @@
 import java.math.BigDecimal;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
@@ -31,6 +37,11 @@
 
 import java.io.File;
 import java.io.IOException;
+
+import static com.ltkj.framework.config.MatchUtils.getIdCardBirthDayStr;
+import static com.ltkj.framework.config.MatchUtils.isIdCard;
+
+
 /**
  * @Author: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃/璧典匠璞�
  * @Date: 2022/12/12 9:05
@@ -46,35 +57,99 @@
 
     @Value("${token.secret_key}")
     private String secret;
+
+    @Autowired
+    private ISysConfigService configService;
     @Test
     public void test() throws InterruptedException {
+//
+//        ExecutorService executorService = Executors.newFixedThreadPool(20); // 20涓嚎绋嬫睜
+//        Set<String> numbers = Collections.synchronizedSet(new HashSet<>()); // 绾跨▼瀹夊叏鐨凷et锛屽瓨鏀剧敓鎴愮殑缂栧彿
+//        // 骞跺彂鎵ц
+//        for (int i = 0; i < 20; i++) {
+//            executorService.execute(() -> {
+//                try {
+//                    String number = idUtils.getNewTjNumberRedisLock(); // 璋冪敤鑾峰彇缂栧彿鐨勬柟娉�
+//                    numbers.add(number); // 娣诲姞鍒� Set
+//                } catch (RuntimeException e) {
+//                    throw new RuntimeException(e);
+//                }
+//            });
+//        }
+//        System.out.println(numbers);
+//        executorService.shutdown(); // 鍏抽棴绾跨▼姹�
 
-        ExecutorService executorService = Executors.newFixedThreadPool(20); // 20涓嚎绋嬫睜
-        Set<String> numbers = Collections.synchronizedSet(new HashSet<>()); // 绾跨▼瀹夊叏鐨凷et锛屽瓨鏀剧敓鎴愮殑缂栧彿
-        // 骞跺彂鎵ц
-        for (int i = 0; i < 20; i++) {
-            executorService.execute(() -> {
-                try {
-                    String number = idUtils.getNewTjNumberRedisLock(); // 璋冪敤鑾峰彇缂栧彿鐨勬柟娉�
-                    numbers.add(number); // 娣诲姞鍒� Set
-                } catch (RuntimeException e) {
-                    throw new RuntimeException(e);
-                }
-            });
-        }
-        System.out.println(numbers);
-        executorService.shutdown(); // 鍏抽棴绾跨▼姹�
+//        String regex = configService.selectConfigByKey("jcycxmzz");
+//        String input = "鍙充晶棰堟�诲姩鑴夊彲瑙佽寖鍥�4.2x1.3mm鏂戝潡锛涘乏渚ч鍐呭姩鑴夊彲瑙佽寖鍥�7.8x1.5mm鏂戝潡锛屼綑绠¤厰鍐呮湭瑙佹槑鏄惧紓甯稿洖澹帮紝CDFI锛氬叾鍐呭僵鑹茶娴佸厖鐩堣壇濂斤紝琛�娴侀�熷害姝e父";
+//        String[] split = input.replaceAll("\n", "").split(regex);
+//        System.out.println(split);
 
     }
 
+    private static final String[] CHECK_INDEX = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
 
         public static void main(String[] args) throws Exception {
 
-            System.out.println(MatchUtils.isIdCard("622723197401030409"));
-            System.out.println(MatchUtils.isMobileNO("15346732733"));
+            String s = "62272219610528411X";
+            System.out.println(getBirthDayByIdCard(s));
+
         }
 
 
+    public static String getBirthDayByIdCard(String idCard) throws Exception {
+        if (!isIdCard(idCard)) {
+            throw new Exception("韬唤璇佷笉姝g‘");
+        }
+        // 鑾峰彇韬唤璇佺殑鍑虹敓骞存湀鏃ヤ覆
+        String birth = getIdCardBirthDayStr(idCard);
+        // 鑾峰彇骞存湀鏃�
+        int year = Integer.parseInt(birth.substring(0, 4));
+        int month = Integer.parseInt(birth.substring(4, 6));
+        int day = Integer.parseInt(birth.substring(6, 8));
+        String sr = year + "-" + month + "-" + day;
+
+        // 瑙f瀽涓� Date
+        Date date = DateUtil.parse(sr, "yyyy-MM-dd");
+        // 杞崲涓� LocalDateTime
+        LocalDateTime dateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+        // 璁剧疆鍥哄畾鏃跺垎绉�
+        dateTime = dateTime.withHour(12).withMinute(34).withSecond(56);
+
+        // 鏍煎紡鍖栦负瀛楃涓茶繑鍥�
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        return dateTime.format(formatter);
+    }
+
+
+
+    public static boolean isValidIdCard(String idCardNumber) {
+        // 姝e垯琛ㄨ揪寮忥紝鍖归厤韬唤璇佸彿鐮佺殑鏍煎紡
+        String regex = "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(idCardNumber);
+
+        // 鍒ゆ柇鏄惁鍖归厤韬唤璇佸彿鐮佺殑鏍煎紡
+        if (!matcher.matches()) {
+            return false;
+        }
+
+        // 楠岃瘉韬唤璇佸彿鐮佷腑鐨勬牎楠屼綅
+        if (idCardNumber.length() == 18) {
+            int[] weights = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
+            char[] chars = idCardNumber.toCharArray();
+            int sum = 0;
+            for (int i = 0; i < weights.length; i++) {
+                sum += (chars[i] - '0') * weights[i];
+            }
+            char[] checkCodes = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
+            char checkCode = checkCodes[sum % 11];
+            return chars[17] == checkCode || (chars[17] == 'x' && checkCode == 'X');
+        }
+
+        return true;
+    }
+
+
     /**
      * 鎵ц鐢熸垚
      * @param filePath 鍥剧墖鐢熸垚璺緞

--
Gitblit v1.8.0