generated from dxfeng/secondev-wugang-dxfeng
feat(portal): 增加身份证有效期检查功能
- 新增 checkValidity 方法,用于检查身份证有效期 - 在 IDCardRecognitionAction 类中集成该方法 - 优化代码结构,增加可读性和可维护性
This commit is contained in:
parent
9f3a40aade
commit
fd1c5258e1
|
|
@ -20,9 +20,11 @@ import org.apache.commons.lang.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -103,7 +105,9 @@ public class IDCardRecognitionAction implements EsbServerlessRpcRemoteInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
returnMap.put("issueAuthority", result.getString("签发机关"));
|
returnMap.put("issueAuthority", result.getString("签发机关"));
|
||||||
returnMap.put("validity", result.getString("有效期限"));
|
String validity = result.getString("有效期限");
|
||||||
|
checkValidity(validity, returnMap);
|
||||||
|
returnMap.put("validity", validity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.error("returnMap==" + JSON.toJSONString(returnMap));
|
log.error("returnMap==" + JSON.toJSONString(returnMap));
|
||||||
|
|
@ -205,4 +209,84 @@ public class IDCardRecognitionAction implements EsbServerlessRpcRemoteInterface
|
||||||
|
|
||||||
return period.getYears();
|
return period.getYears();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查有效期
|
||||||
|
*
|
||||||
|
* @param validity
|
||||||
|
* @param returnMap
|
||||||
|
*/
|
||||||
|
private static void checkValidity(String validity, Map<String, Object> returnMap) {
|
||||||
|
if(StringUtils.isBlank(validity)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String[] validityArr = validity.split("-");
|
||||||
|
if (validityArr.length < 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String startDate = Convert.toStr(validityArr[0], "").replace(".", "-");
|
||||||
|
String endDate = Convert.toStr(validityArr[1], "").replace(".", "-");
|
||||||
|
returnMap.put("validity_type", "0");
|
||||||
|
if ("长期".equals(endDate)) {
|
||||||
|
endDate = "9999-12-31";
|
||||||
|
returnMap.put("validityType", "1");
|
||||||
|
}
|
||||||
|
returnMap.put("validityStart", startDate);
|
||||||
|
returnMap.put("validityEnd", endDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
// TODO
|
||||||
|
Map<String, Object> returnMap = new HashMap<>();
|
||||||
|
File file = new File("C:\\Users\\dxfeng\\Desktop\\茶百道\\长期身份证.jpg");
|
||||||
|
InputStream inputStream = Files.newInputStream(file.toPath());
|
||||||
|
|
||||||
|
//String response = callIdCardOcrApi(inputStream, file.getName());
|
||||||
|
// 正面响应数据
|
||||||
|
//String response = "{\"isSuccess\": true, \"data\": {\"page_num\": \"1\", \"result\": [{\"姓名\": \"王某某\", \"性别\": \"男\", \"民族\": \"汉\", \"出生\": \"1989年3月21日\", \"住址\": \"上海市浦东新区塘桥街道蓝村路xxx号\", \"公民身份号码\": \"370112198903217890\", \"标签\": \"头像面\"}]}, \"status_code\": 5200}";
|
||||||
|
//String response = "{\"isSuccess\": true, \"data\": {\"page_num\": \"1\", \"result\": [{\"签发机关\": \"东港市公安局\", \"有效期限\": \"2014.07.09-长期\", \"标签\": \"国徽面\"}]}, \"status_code\": 5200}";
|
||||||
|
String response = "{\"isSuccess\": true, \"data\": {\"page_num\": \"1\", \"result\": [{\"签发机关\": \"东港市公安局\", \"有效期限\": \"2013.03.05-2023.03.05\", \"标签\": \"国徽面\"}]}, \"status_code\": 5200}";
|
||||||
|
System.out.println("response==" + response);
|
||||||
|
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(response);
|
||||||
|
if (jsonObject.getBoolean("isSuccess")) {
|
||||||
|
JSONObject data = jsonObject.getJSONObject("data");
|
||||||
|
JSONArray resultArray = data.getJSONArray("result");
|
||||||
|
if (resultArray.size() > 0) {
|
||||||
|
JSONObject result = resultArray.getJSONObject(0);
|
||||||
|
returnMap.put("name", result.getString("姓名"));
|
||||||
|
returnMap.put("sex", result.getString("性别"));
|
||||||
|
String nation = result.getString("民族");
|
||||||
|
//if (StringUtils.isNotBlank(nation) && StringUtils.isNotBlank(nationalityConvert)) {
|
||||||
|
// Long nationId = dataConvertMapper.getIdByName(baseParam, "nation", nation + "族");
|
||||||
|
// log.error("nationId==" + nationId);
|
||||||
|
// nation = Convert.toStr(nationId, "");
|
||||||
|
// log.error("nation==" + nation);
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
returnMap.put("nation", nation);
|
||||||
|
|
||||||
|
returnMap.put("birthday", Convert.toStr(result.getString("出生"), "").replace("年", "-").replace("月", "-").replace("日", "-"));
|
||||||
|
returnMap.put("address", result.getString("住址"));
|
||||||
|
String idNumber = result.getString("公民身份号码");
|
||||||
|
returnMap.put("idCard", idNumber);
|
||||||
|
// 根据身份证号,计算年龄、 性别
|
||||||
|
if (StringUtils.isNotBlank(idNumber)) {
|
||||||
|
returnMap.put("age", getAge(idNumber));
|
||||||
|
returnMap.put("gender", getGender(idNumber));
|
||||||
|
}
|
||||||
|
|
||||||
|
returnMap.put("issueAuthority", result.getString("签发机关"));
|
||||||
|
String validity = result.getString("有效期限");
|
||||||
|
checkValidity(validity, returnMap);
|
||||||
|
returnMap.put("validity", validity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("returnMap==" + JSON.toJSONString(returnMap));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue