zjh
21 小时以前 9ac01b48ef00a0855306d72e8c680b912a9a8d03
ltkj-admin/src/test/java/zjhTest.java
@@ -1,9 +1,9 @@
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;
@@ -33,6 +33,9 @@
import java.io.File;
import java.io.IOException;
/**
 * @Author: 西安路泰科技有限公司/赵佳豪
 * @Date: 2022/12/12 9:05
@@ -48,37 +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<>()); // 线程安全的Set,存放生成的编号
//        // 并发执行
//        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<>()); // 线程安全的Set,存放生成的编号
        // 并发执行
        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:其内彩色血流充盈良好,血流速度正常";
//        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 {
            String s = "610124199809053678";
            String s1 = "610622199805230627";
            System.out.println(String.valueOf(MatchUtils.getAgeByIdCard(s)));
            System.out.println(String.valueOf(MatchUtils.getAgeByIdCard(s1)));
            String s = "62272219610528411X";
            System.out.println(isValidIdCard(s) ? "合法" : "非法");
        }
    public static boolean isValidIdCard(String idCardNumber) {
        // 正则表达式,匹配身份证号码的格式
        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;
    }
    /**
     * 执行生成