| | |
| | | |
| | | 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 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; |
| | |
| | | |
| | | 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 |
| | |
| | | |
| | | @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 = "L4/5、L5/S1椎间盘突出,腰椎椎体轻度骨质增生。"; |
| | | String s = "62272219610528411X"; |
| | | System.out.println(getBirthDayByIdCard(s)); |
| | | |
| | | String[] split = s.replaceAll("\n", "").split("。|;|;"); |
| | | for (String jg : split) { |
| | | if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常") |
| | | && !jg.contains("未见明显异常") && !jg.contains("未见占位") && !jg.contains("未见") |
| | | && !jg.contains("未见明显")&& !jg.contains("正常")&& !jg.contains("双侧椎间孔无狭窄")){ |
| | | System.out.println(1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public static String getBirthDayByIdCard(String idCard) throws Exception { |
| | | if (!isIdCard(idCard)) { |
| | | throw new Exception("身份证不正确"); |
| | | } |
| | | // 获取身份证的出生年月日串 |
| | | 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; |
| | | |
| | | // 解析为 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) { |
| | | // 正则表达式,匹配身份证号码的格式 |
| | | 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 图片生成路径 |