From 9ac01b48ef00a0855306d72e8c680b912a9a8d03 Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期四, 07 八月 2025 08:44:50 +0800 Subject: [PATCH] zjh20250807 --- ltkj-admin/src/test/java/zjhTest.java | 112 ++++++++++++++++++++++++++++++------------------------- 1 files changed, 61 insertions(+), 51 deletions(-) diff --git a/ltkj-admin/src/test/java/zjhTest.java b/ltkj-admin/src/test/java/zjhTest.java index d60c4e3..4f48657 100644 --- a/ltkj-admin/src/test/java/zjhTest.java +++ b/ltkj-admin/src/test/java/zjhTest.java @@ -1,7 +1,10 @@ import cn.hutool.core.io.FileUtil; -import com.ltkj.LtkjApplication; +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; @@ -30,6 +33,9 @@ import java.io.File; import java.io.IOException; + + + /** * @Author: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃/璧典匠璞� * @Date: 2022/12/12 9:05 @@ -45,67 +51,71 @@ @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 { - List<String> numbers = Arrays.asList( - "25032800283", "25032800284", "25032800285", "25032800286", - "25032800287", "25032800288", "25032800289", "25032800290", - "25032800291", "25032800292", "25032800293", "25032800294", - "25032800295", "25032800296", "25032800297", "25032800298", - "25032800299", "25032800300", "25032800301", "25032800302", - "25032800303", "25032800304", "25032800305", "25032800306", - "25032800307", "25032800308", "25032800309", "25032800310", - "25032800311", "25032800312", "25032800313", "25032800314", - "25032800315", "25032800316", "25032800317", "25032800318", - "25032800319", "25032800320", "25032800321", "25032800322", - "25032800323", "25032800324", "25032800325", "25032800326", - "25032800327", "25032800328", "25032800329", "25032800330", - "25032800331", "25032800332", "25032800333", "25032800334", - "25032800335", "25032800336", "25032800337", "25032800338", - "25032800339", "25032800340", "25032800341", "25032800342", - "25032800343", "25032800344", "25032800345", "25032800346", - "25032800347", "25032800348", "25032800349", "25032800350", - "25032800351", "25032800352", "25032800353", "25032800354", - "25032800355", "25032800356", "25032800357", "25032800358", - "25032800359", "25032800360", "25032800361", "25032800362", - "25032800363", "25032800364", "25032800365", "25032800366", - "25032800367", "25032800368", "25032800369", "25032800370", - "25032800371", "25032800372", "25032800373", "25032800374" - ); - Set<String> uniqueNumbers = new HashSet<>(numbers); - if (uniqueNumbers.size() == numbers.size()) { - System.out.println("鉁� 娌℃湁閲嶅缂栧彿锛�"); - } else { - System.out.println("鉂� 鍙戠幇閲嶅缂栧彿锛�"); - numbers.stream() - .filter(n -> Collections.frequency(numbers, n) > 1) - .distinct() - .forEach(n -> System.out.println("閲嶅鐨勭紪鍙凤細" + n)); - } + String s = "62272219610528411X"; + System.out.println(isValidIdCard(s) ? "鍚堟硶" : "闈炴硶"); + } + 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; + } + /** * 鎵ц鐢熸垚 -- Gitblit v1.8.0