diff --git a/epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/VisitVisitorFormDTO.java b/epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/VisitVisitorFormDTO.java index affbfb2..48174cf 100644 --- a/epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/VisitVisitorFormDTO.java +++ b/epmet-plugins-module/pli-power-base/pli-power-base-client/src/main/java/com/epmet/plugin/power/dto/visit/form/VisitVisitorFormDTO.java @@ -30,7 +30,6 @@ public class VisitVisitorFormDTO implements Serializable { /** * 身份证 */ - @NotBlank(message = "身份证号不能为空",groups = {AddGroup.class, DefaultGroup.class}) private String idCard; /** diff --git a/epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/impl/VisitVisitorServiceImpl.java b/epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/impl/VisitVisitorServiceImpl.java index 9c5a511..1db4cfd 100644 --- a/epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/impl/VisitVisitorServiceImpl.java +++ b/epmet-plugins-module/pli-power-base/pli-power-base-server/src/main/java/com/epmet/plugin/power/modules/visit/service/impl/VisitVisitorServiceImpl.java @@ -22,6 +22,7 @@ import com.epmet.plugin.power.modules.visit.entity.VisitVisitorEntity; import com.epmet.plugin.power.modules.visit.redis.VisitVisitorRedis; import com.epmet.plugin.power.modules.visit.service.VisitVisitorService; import com.epmet.plugin.power.modules.visit.utils.DhDeviceUtil; +import com.epmet.plugin.power.modules.visit.utils.IDUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -169,12 +170,16 @@ public class VisitVisitorServiceImpl extends BaseServiceImpl= 100) { + sb.append(value); + } else if (value >= 10) { + sb.append('0').append(value); + } else { + sb.append("00").append(value); + } + sb.append(calcTrailingNumber(sb)); + return sb.toString(); + } + + private static final int[] calcC = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; + private static final char[] calcR = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; + + private static char calcTrailingNumber(StringBuilder sb) { + int[] n = new int[17]; + int result = 0; + for (int i = 0; i < n.length; i++) { + n[i] = Integer.parseInt(String.valueOf(sb.charAt(i))); + } + for (int i = 0; i < n.length; i++) { + result += calcC[i] * n[i]; + } + return calcR[result % 11]; + } + + /** + * 根据身份证号判断用户性别 + * + * @param cardNo + * @return + */ + public static String getSex(String cardNo) { + String sexStr = "0"; + if (cardNo.length() == 15) { + sexStr = cardNo.substring(14, 15); + } else if (cardNo.length() == 18) { + sexStr = cardNo.substring(16, 17); + } + int sexNo = Integer.parseInt(sexStr); + return sexNo % 2 == 0 ? "女" : "男"; + } + +// public static void main(String[] args) { +// long a = System.currentTimeMillis(); +// System.out.println(getIdNo("19790306", true)); +// System.out.println(getIdNo("20100112", false)); +// System.out.println(getIdNo(true)); +// System.out.println(getIdNo(false)); +// a = System.currentTimeMillis() - a; +// System.out.println(a); +// } + +}