fix provience bug

This commit is contained in:
Looly 2021-06-24 22:01:01 +08:00
parent 36dcc17390
commit 968d18db10
2 changed files with 20 additions and 5 deletions

View File

@ -12,6 +12,7 @@
### 🐞Bug修复 ### 🐞Bug修复
* 【json 】 修复XML转义字符的问题issue#I3XH09@Gitee * 【json 】 修复XML转义字符的问题issue#I3XH09@Gitee
* 【core 】 修复FormatCache中循环引用异常pr#1673@Github * 【core 】 修复FormatCache中循环引用异常pr#1673@Github
* 【core 】 修复IdcardUtil.getIdcardInfo.getProvinceCode获取为汉字的问题issue#I3XP4Q@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

View File

@ -532,6 +532,21 @@ public class IdcardUtil {
return (sCardChar % 2 != 0) ? 1 : 0; return (sCardChar % 2 != 0) ? 1 : 0;
} }
/**
* 根据身份编号获取户籍省份编码只支持15或18位身份证号码
*
* @param idcard 身份编码
* @return 省份编码
* @since 5.7.2
*/
public static String getProvinceCodeByIdCard(String idcard) {
int len = idcard.length();
if (len == CHINA_ID_MIN_LENGTH || len == CHINA_ID_MAX_LENGTH) {
return idcard.substring(0, 2);
}
return null;
}
/** /**
* 根据身份编号获取户籍省份只支持15或18位身份证号码 * 根据身份编号获取户籍省份只支持15或18位身份证号码
* *
@ -539,10 +554,9 @@ public class IdcardUtil {
* @return 省份名称 * @return 省份名称
*/ */
public static String getProvinceByIdCard(String idcard) { public static String getProvinceByIdCard(String idcard) {
int len = idcard.length(); final String code = getProvinceCodeByIdCard(idcard);
if (len == CHINA_ID_MIN_LENGTH || len == CHINA_ID_MAX_LENGTH) { if(StrUtil.isNotBlank(code)){
String sProvinNum = idcard.substring(0, 2); return CITY_CODES.get(code);
return CITY_CODES.get(sProvinNum);
} }
return null; return null;
} }
@ -672,7 +686,7 @@ public class IdcardUtil {
* @param idcard 身份证号码 * @param idcard 身份证号码
*/ */
public Idcard(String idcard) { public Idcard(String idcard) {
this.provinceCode = IdcardUtil.getProvinceByIdCard(idcard); this.provinceCode = IdcardUtil.getProvinceCodeByIdCard(idcard);
this.cityCode = IdcardUtil.getCityCodeByIdCard(idcard); this.cityCode = IdcardUtil.getCityCodeByIdCard(idcard);
this.birthDate = IdcardUtil.getBirthDate(idcard); this.birthDate = IdcardUtil.getBirthDate(idcard);
this.gender = IdcardUtil.getGenderByIdCard(idcard); this.gender = IdcardUtil.getGenderByIdCard(idcard);