浏览代码

fix 新增判断身份证号码,提取性别和生日

Administrator 3 年之前
父节点
当前提交
d04d2cc490

+ 10 - 0
boman-web-core/src/main/java/com/boman/web/core/controller/VaccineInfoController.java

@@ -94,4 +94,14 @@ public class VaccineInfoController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(vaccineInfoService.deleteVaccineInfoByIds(ids));
     }
+
+    /**
+     * 查询疫苗信息列表
+     */
+    @PostMapping("/findHjInfo")
+    public AjaxResult findHjInfo(@RequestBody VaccineInfoOperation vaccineInfo) {
+        VaccineInfoOperation hjInfo = vaccineInfoService.findHjInfo(vaccineInfo);
+        return AjaxResult.success(hjInfo);
+    }
+
 }

+ 7 - 0
boman-web-core/src/main/java/com/boman/web/core/mapper/VaccineInfoMapper.java

@@ -61,4 +61,11 @@ public interface VaccineInfoMapper
      * @return 结果
      */
     public int deleteVaccineInfoByIds(Long[] ids);
+
+    /**
+     * 根据身份证号查询用户信息
+     * @param vaccineInfo
+     * @return
+     */
+    public VaccineInfoOperation findHjInfo(VaccineInfoOperation vaccineInfo);
 }

+ 7 - 0
boman-web-core/src/main/java/com/boman/web/core/service/vaccineInfo/IVaccineInfoService.java

@@ -59,4 +59,11 @@ public interface IVaccineInfoService
      * @return 结果
      */
     public int deleteVaccineInfoById(Long id);
+
+    /**
+     * 根据身份证查询信息
+     * @param vaccineInfo
+     * @return
+     */
+    public VaccineInfoOperation  findHjInfo(VaccineInfoOperation vaccineInfo);
 }

+ 97 - 0
boman-web-core/src/main/java/com/boman/web/core/service/vaccineInfo/impl/VaccineInfoServiceImpl.java

@@ -1,10 +1,12 @@
 package com.boman.web.core.service.vaccineInfo.impl;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
 import com.boman.common.core.utils.DateUtils;
 import com.boman.common.core.utils.SecurityUtils;
+import com.boman.common.core.utils.StringUtils;
 import com.boman.web.core.domain.VaccineInfoOperation;
 import com.boman.web.core.mapper.VaccineInfoOperationMapper;
 import com.boman.web.core.service.vaccineInfo.IVaccineInfoService;
@@ -139,6 +141,101 @@ public class VaccineInfoServiceImpl implements IVaccineInfoService {
         return vaccineInfoMapper.deleteVaccineInfoById(id);
     }
 
+    /**
+     * 根据身份证号查询用户信息
+     * @param vaccineInfo
+     * @return
+     */
+    @Override
+    public VaccineInfoOperation findHjInfo(VaccineInfoOperation vaccineInfo) {
+        VaccineInfoOperation hjInfo = vaccineInfoMapper.findHjInfo(vaccineInfo);
+        if (hjInfo == null){
+            String idCard = vaccineInfo.getIdCard();
+            if (StringUtils.isNotBlank(idCard)){
+                //根据身份证提取出生日和性别
+                String sex = getSex(idCard);
+                String birthday = getBirthday(idCard);
+                vaccineInfo.setGender(sex);
+                vaccineInfo.setBirthday(birthday);
+                return vaccineInfo;
+            }
+        }
+        return hjInfo;
+    }
+
+
+    /**
+     * 15位身份证号
+     */
+    private static final Integer FIFTEEN_ID_CARD=15;
+    /**
+     * 18位身份证号
+     */
+    private static final Integer EIGHTEEN_ID_CARD=18;
+    private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+
+    /**
+     * 根据身份证号获取性别
+     * @param IDCard
+     * @return
+     */
+    public static String getSex(String IDCard){
+        String sex ="";
+        if (StringUtils.isNotBlank(IDCard)){
+            //15位身份证号
+            if (IDCard.length() == FIFTEEN_ID_CARD){
+                if (Integer.parseInt(IDCard.substring(14, 15)) % 2 == 0) {
+                    sex = "女";
+                } else {
+                    sex = "男";
+                }
+                //18位身份证号
+            }else if(IDCard.length() == EIGHTEEN_ID_CARD){
+                // 判断性别
+                if (Integer.parseInt(IDCard.substring(16).substring(0, 1)) % 2 == 0) {
+                    sex = "女";
+                } else {
+                    sex = "男";
+                }
+            }
+        }
+        return sex;
+    }
+
+
+    /**
+     * 获取出生日期  yyyy年MM月dd日
+     * @param IDCard
+     * @return
+     */
+    public static String getBirthday(String IDCard){
+        String birthday="";
+        String year="";
+        String month="";
+        String day="";
+        if (StringUtils.isNotBlank(IDCard)){
+            //15位身份证号
+            if (IDCard.length() == FIFTEEN_ID_CARD){
+                // 身份证上的年份(15位身份证为1980年前的)
+                year = "19" + IDCard.substring(6, 8);
+                //身份证上的月份
+                month = IDCard.substring(8, 10);
+                //身份证上的日期
+                day= IDCard.substring(10, 12);
+                //18位身份证号
+            }else if(IDCard.length() == EIGHTEEN_ID_CARD){
+                // 身份证上的年份
+                year = IDCard.substring(6).substring(0, 4);
+                // 身份证上的月份
+                month = IDCard.substring(10).substring(0, 2);
+                //身份证上的日期
+                day=IDCard.substring(12).substring(0,2);
+            }
+            birthday=year+"-"+month+"-"+day;
+        }
+        return birthday;
+    }
+
     private void genNowIn(VaccineInfoOperation vaccineInfo) {
         // 现居地
         String nowIn = vaccineInfo.getProvince() + vaccineInfo.getCity() + vaccineInfo.getRegion();

+ 8 - 0
boman-web-core/src/main/resources/mapper/VaccineInfoMapper.xml

@@ -249,4 +249,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+
+    <select id="findHjInfo" parameterType="VaccineInfoOperation" resultMap="VaccineInfoResult">
+        select xm as userName,xb as gender,csrq as birthday from hj
+        <where>
+         <if test="idCard != null and idCard != '' ">hzsfhm = #{idCard}</if>
+        </where>
+    </select>
 </mapper>