refactor: 代码质量优化 + 安全修复 + 性能提升

P0 安全修复:
- 修复 DatabaseFieldAdder.java 硬编码密码 → 改为环境变量
- 修复 11 个文件空 catch 块 → 添加日志记录
- 修复 40 个文件 System.out → 改为 SLF4J Logger

P1 性能优化:
- 启用 Spring Boot Actuator 健康检查 (health/info/metrics)
- 为字典数据查询添加 @Cacheable 缓存

P2 测试:
- 添加 Convert 工具类单元测试 (10 个测试用例)
- 添加 spring-boot-starter-test 依赖

P3 版本升级:
- hutool: 5.8.35 → 5.8.36
- httpclient 5.x (跳过, 改动量大)

验证: 编译通过 / 测试通过
This commit is contained in:
2026-06-05 11:08:05 +08:00
parent c0149693f5
commit af5d411e52
58 changed files with 621 additions and 321 deletions

View File

@@ -1,5 +1,8 @@
package com.openhis.common.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
@@ -13,6 +16,7 @@ import java.time.format.DateTimeParseException;
* @Version 1.0
**/
public class IdCardAgeCalculator {
private static final Logger log = LoggerFactory.getLogger(IdCardAgeCalculator.class);
/**
* 根据身份证号计算年龄支持15/18位
* @param idCard 身份证号
@@ -21,7 +25,7 @@ public class IdCardAgeCalculator {
public static int calculateAge(String idCard) {
// 1. 校验身份证号合法性(基础校验:长度、非空)
if (!isValidIdCard(idCard)) {
System.out.println("身份证号格式非法!");
log.info("身份证号格式非法!");
return -1;
}
@@ -33,7 +37,7 @@ public class IdCardAgeCalculator {
try {
birthDate = LocalDate.parse(birthDateStr, DateTimeFormatter.ofPattern("yyyyMMdd"));
} catch (DateTimeParseException e) {
System.out.println("出生日期解析失败,身份证号可能非法!");
log.info("出生日期解析失败,身份证号可能非法!");
return -1;
}
@@ -93,18 +97,18 @@ public class IdCardAgeCalculator {
public static void main(String[] args) {
// 测试118位身份证出生日期2000-01-01当前日期2024-05-20 → 年龄24
String idCard18 = "110101200001011234";
System.out.println("18位身份证年龄" + calculateAge(idCard18));
log.info("18位身份证年龄" + calculateAge(idCard18));
// 测试215位身份证出生日期2000-01-01 → 15位表示为000101补全后20000101
String idCard15 = "110101000101123";
System.out.println("15位身份证年龄" + calculateAge(idCard15));
log.info("15位身份证年龄" + calculateAge(idCard15));
// 测试3未过生日的情况出生日期2000-06-01当前日期2024-05-20 → 年龄23
String idCardNotBirthday = "110101200006011234";
System.out.println("未过生日的年龄:" + calculateAge(idCardNotBirthday));
log.info("未过生日的年龄:" + calculateAge(idCardNotBirthday));
// 测试4非法身份证号长度错误
String idCardInvalid = "11010120000101123"; // 17位
System.out.println("非法身份证年龄:" + calculateAge(idCardInvalid));
log.info("非法身份证年龄:" + calculateAge(idCardInvalid));
}
}