package com.yanzuoguang.util.sfz; import com.yanzuoguang.util.helper.StringHelper; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.List; /** * 身份证处理服务 * * @author 颜佐光 */ public class SfzService { /** * 身份证处理类 */ private final List<SfzHandle> handleList = new ArrayList<>(); public SfzService(SfzHandle... sfzHandles) { this.handleList.addAll(Arrays.asList(sfzHandles)); } /** * 获取已包含的处理类 * * @return 已包含的处理类 */ public List<SfzHandle> getHandleList() { return handleList; } /** * 获取身份证信息 * * @param cardId 身份证信息 * @return 返回身份证信息 */ public SfzInfo getInfo(String cardId) { if (StringHelper.isEmpty(cardId)) { return null; } for (SfzHandle sfzHandle : handleList) { if (sfzHandle.validate(cardId)) { return new SfzInfo(cardId, sfzHandle); } } return null; } /** * 获取修复身份证 * * @param info 信息 * @return 返回值 */ public SfzInfo repair(SfzInfo info) { if (info == null) { return null; } String repair = info.getSfzHandle().repair(info.getCardId()); return getInfo(repair); } /** * 获取身份证性别,当没有获取到时,返回空字符串 * * @param info 身份证 * @return 身份证对应的性别, 如:男、女 */ public String getGender(SfzInfo info) { if (info == null) { return StringHelper.EMPTY; } return info.getSfzHandle().getGender(info.getCardId()); } /** * 获取身份证对应的生日,当没有获取到时,返回空字符串 * * @param info 身份证 * @return 生日 */ public String getBirthday(SfzInfo info) { if (info == null) { return StringHelper.EMPTY; } return info.getSfzHandle().getBirthday(info.getCardId()); } /** * 获取国家3位编码 * * @param info 身份证 * @return 国家编号 */ public String getCountry(SfzInfo info) { if (info == null) { return StringHelper.EMPTY; } return info.getSfzHandle().getCountry(info.getCardId()); } /** * 获取地区6位编码,不包含国家信息 * * @param info 身份证 * @return 地区编号 */ public String getAreaId(SfzInfo info) { if (info == null) { return StringHelper.EMPTY; } return info.getSfzHandle().getAreaId(info.getCardId()); } /** * 获取省份名称 * * @param info 身份证 * @return 地区编号 */ public String getProvinceName(SfzInfo info) { if (info == null) { return StringHelper.EMPTY; } return info.getSfzHandle().getProvinceName(info.getCardId()); } }