huanghongfa
2021-04-15 ea5adbd1ab134c61dd281b8ae9965f4a780ddf84
实有人口模块bug修复
7个文件已修改
3个文件已添加
615 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationVO.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/ComHouseMemberVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/AgeUtils.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/IdCardUtil.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationDO.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
@@ -12,6 +12,8 @@
import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO;
import com.panzhihua.common.model.vos.community.ComMngVillageServeExcelVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.AgeUtils;
import com.panzhihua.common.utlis.IdCardUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -82,40 +84,80 @@
            ArrayList<ComMngPopulationServeExcelVO> voList = Lists.newArrayList();
            for (Map<Integer, String> oneData : list) {
                ComMngPopulationServeExcelVO vo = new ComMngPopulationServeExcelVO();
                if(oneData.get(0) == null){
                    throw new ServiceException("500", "名字不可为空:第" + index + "行,第1列");
                }
                vo.setName(oneData.get(0));
                vo.setSex(PopulSexEnum.getCodeByName(oneData.get(1)));
                if(oneData.get(2) == null){
                    throw new ServiceException("500", "年龄不可为空:第" + index + "行,第3列");
                if(oneData.get(1) == null){
                    throw new ServiceException("500", "身份证号不可为空:第" + index + "行,第2列");
                }
                vo.setAge(Integer.valueOf(oneData.get(2)));
                if(oneData.get(3) == null){
                    throw new ServiceException("500", "是否租住不可为空:第" + index + "行,第4列");
                vo.setCardNo(oneData.get(1));
                //根据身份证号码解析年龄以及性别
                if(IdCardUtil.strongVerifyIdNumber(vo.getCardNo())){
                    //获取用户生日
                    String birthday = vo.getCardNo().substring(6, 14);
                    //设置用户年龄
                    vo.setAge(AgeUtils.getAgeFromBirthTime(birthday));
                    //获取用户性别
                    int sex = Integer.parseInt(vo.getCardNo().substring(16, 17));
                    if(sex%2 == 1){
                        vo.setSex(PopulSexEnum.nan.getCode());
                    }else{
                        vo.setSex(PopulSexEnum.nv.getCode());
                    }
                }else{
                    throw new ServiceException("500", "身份证号码有误:第" + index + "行,第3列");
                }
                vo.setIsRent(PopulIsOkEnum.getCodeByName(oneData.get(3)));
                vo.setRoad(oneData.get(4));
                if(oneData.get(5) == null){
                    throw new ServiceException("500", "门牌号不可为空:第" + index + "行,第6列");
                if(oneData.get(2) != null){
                    vo.setNation(oneData.get(2));
                }
                vo.setDoorNo(Integer.valueOf(oneData.get(5)));
                vo.setFloor(oneData.get(6));
                if(oneData.get(7) == null){
                    throw new ServiceException("500", "单元号不可为空:第" + index + "行,第8列");
                if(oneData.get(3) != null){
                    vo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCodeByName(oneData.get(3)));
                }
                vo.setUnitNo(Integer.valueOf(oneData.get(7)));
                if(oneData.get(8) == null){
                    throw new ServiceException("500", "户室不可为空:第" + index + "行,第9列");
                if(oneData.get(4) != null){
                    vo.setIsRent(PopulIsOkEnum.getCodeByName(oneData.get(4)));
                }
                vo.setHouseNo(Integer.valueOf(oneData.get(8)));
                vo.setNation(oneData.get(9));
                if(oneData.get(10) == null){
                    throw new ServiceException("500", "政治面貌不可为空:第" + index + "行,第11列");
                if(oneData.get(5) != null){
                    vo.setRelation(oneData.get(5));
                }
                vo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCodeByName(oneData.get(10)));
                vo.setCardNo(oneData.get(11));
                vo.setPhone(oneData.get(12));
                vo.setNativePlace(oneData.get(13));
                vo.setWorkCompany(oneData.get(14));
                for (int i = 15; i < headSize; i++) {
                if(oneData.get(6) != null){
                    vo.setRoad(oneData.get(6));
                }
                if(oneData.get(7) != null){
                    vo.setDoorNo(Integer.valueOf(oneData.get(7)));
                }
                if(oneData.get(8) != null){
                    vo.setFloor(oneData.get(8));
                }
                if(oneData.get(9) != null){
                    vo.setUnitNo(Integer.valueOf(oneData.get(9)));
                }
                if(oneData.get(10) != null){
                    vo.setHouseNo(Integer.valueOf(oneData.get(10)));
                }
                if(oneData.get(11) != null){
                    vo.setPhone(oneData.get(11));
                }
                if(oneData.get(12) != null){
                    vo.setNativePlace(oneData.get(12));
                }
                if(oneData.get(13) != null){
                    vo.setCultureLevel(oneData.get(13));
                }
                if(oneData.get(14) != null){
                    vo.setMarriage(oneData.get(14));
                }
                if(oneData.get(15) != null){
                    vo.setHealthy(oneData.get(15));
                }
                if(oneData.get(16) != null){
                    vo.setWorkCompany(oneData.get(16));
                }
                if(oneData.get(17) != null){
                    vo.setRemark(oneData.get(17));
                }
                for (int i = 18; i < headSize; i++) {
                    if (oneData.get(i) != null && oneData.get(i).equals("是")) {
                        vo.getUserTagStr().add(headData.get(i));
                    }
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java
@@ -14,70 +14,66 @@
@Data
public class ComMngPopulationServeExcelVO implements Serializable {
    @ExcelProperty(value = "家庭成员(姓名)", index = 0)
    @ExcelProperty(value = "姓名", index = 0)
    private String name;
    @ExcelProperty(value = "性别(1.男 2.女 3.未知)", index = 1)
    private Integer sex;
    @ExcelProperty(value = "年龄", index = 2)
    private Integer age;
    @ExcelProperty(value = "是否租住", index = 3)
    private Integer isRent;
    @ExcelProperty(value = "街路巷", index = 4)
    private String road;
    @ExcelProperty(value = "门牌号", index = 5)
    private Integer doorNo;
    @ExcelProperty(value = "楼排号", index = 6)
    private String floor;
    @ExcelProperty(value = "单元号", index = 7)
    private Integer unitNo;
    @ExcelProperty(value = "户室(房间号)", index = 8)
    private Integer houseNo;
    @ExcelProperty(value = "民族", index = 9)
    private String nation;
    @ExcelProperty(value = "政治面貌(1.中共党员2.中共预备党员3.共青团员4.民革党员5.民盟盟员6.民建会员7.8.农工党党员9.致公党党员10.九三学社社员11.台盟盟员12.无党派人士13.群众)", index = 10)
    private Integer politicalOutlook;
    @ExcelProperty(value = "身份证号码", index = 11)
    @ExcelProperty(value = "身份证号码", index = 1)
    private String cardNo;
    @ExcelProperty(value = "联系方式", index = 12)
    @ExcelProperty(value = "民族", index = 2)
    private String nation;
    @ExcelProperty(value = "政治面貌", index = 3)
    private Integer politicalOutlook;
    @ExcelProperty(value = "是否租住", index = 4)
    private Integer isRent;
    @ExcelProperty(value = "与户主关系", index = 5)
    private String relation;
    @ExcelProperty(value = "街路巷", index = 6)
    private String road;
    @ExcelProperty(value = "门牌号", index = 7)
    private Integer doorNo;
    @ExcelProperty(value = "楼排号", index = 8)
    private String floor;
    @ExcelProperty(value = "单元号", index = 9)
    private Integer unitNo;
    @ExcelProperty(value = "户室(房间号)", index = 10)
    private Integer houseNo;
    @ExcelProperty(value = "联系方式", index = 11)
    private String phone;
    @ExcelProperty(value = "籍贯", index = 13)
    @ExcelProperty(value = "籍贯", index = 12)
    private String nativePlace;
    @ExcelProperty(value = "工作单位", index = 14)
    @ExcelProperty(value = "文化程度", index = 13)
    private String cultureLevel;
    @ExcelProperty(value = "婚姻状况", index = 14)
    private String marriage;
    @ExcelProperty(value = "健康状况", index = 15)
    private String healthy;
    @ExcelProperty(value = "工作单位", index = 16)
    private String workCompany;
    @ExcelProperty(value = "备注", index = 17)
    private String remark;
    private Integer age;
    private Integer sex;
    /**
     * 扩展字段用逗号隔开
     */
    private List<String> userTagStr = Lists.newArrayList();
    public interface sex{
        String nan = "男";
        String nv = "女";
        String no = "未知";
    }
    public interface isOk{
        String yes = "是";
        String no = "否";
    }
    public interface politicalOutlook{
        String dang = "中共党员";
        String tuan = "共青团员";
        String wu = "无党派人员";
        String qun = "群众";
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationVO.java
@@ -4,6 +4,7 @@
import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField;
import com.panzhihua.common.model.helper.sensitive.Sensitive;
import com.panzhihua.common.model.helper.sensitive.SensitiveStrategy;
import com.panzhihua.common.model.vos.user.ComHouseMemberVo;
import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
import com.panzhihua.common.validated.AddGroup;
import io.swagger.annotations.ApiModel;
@@ -158,10 +159,10 @@
    @ApiModelProperty("小区名字")
    private String alley;
    /**
     * 家庭成员
     * 房屋成员
     */
    @ApiModelProperty("家庭成员")
    private List<ComMngFamilyInfoVO> comMngFamilyInfoVOS;
    @ApiModelProperty("房屋成员")
    private List<ComHouseMemberVo> comMngFamilyInfoVOS;
    /**
     * 是否租住(0.否 1.是)
@@ -171,6 +172,24 @@
    private Integer isRent;
    /**
     * 文化程度
     */
    @ApiModelProperty("文化程度")
    private String cultureLevel;
    /**
     * 婚姻状况
     */
    @ApiModelProperty("婚姻状况")
    private String marriage;
    /**
     * 健康状况
     */
    @ApiModelProperty("健康状况")
    private String healthy;
    /**
     * 性别(1.男 2.女 3.未知)
     */
    public interface sex{
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/user/ComHouseMemberVo.java
New file
@@ -0,0 +1,23 @@
package com.panzhihua.common.model.vos.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("房屋成员信息")
public class ComHouseMemberVo {
    @ApiModelProperty("房屋成员用户id")
    private Long id;
    @ApiModelProperty("姓名")
    private String name;
    @ApiModelProperty("手机号")
    private String phone;
    @ApiModelProperty("与户主关系")
    private String relation;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/AgeUtils.java
New file
@@ -0,0 +1,72 @@
package com.panzhihua.common.utlis;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * Created by qing on 2017/3/28.
 */
public class AgeUtils {
    // 根据年月日计算年龄,birthTimeString:"1994-11-14"
    public static int getAgeFromBirthTime(String birthTimeString) {
        // 先截取到字符串中的年、月、日
        int selectYear = Integer.parseInt(birthTimeString.substring(0,4));
        int selectMonth = Integer.parseInt(birthTimeString.substring(4,6));
        int selectDay = Integer.parseInt(birthTimeString.substring(6,8));
        // 得到当前时间的年、月、日
        Calendar cal = Calendar.getInstance();
        int yearNow = cal.get(Calendar.YEAR);
        int monthNow = cal.get(Calendar.MONTH) + 1;
        int dayNow = cal.get(Calendar.DATE);
        // 用当前年月日减去生日年月日
        int yearMinus = yearNow - selectYear;
        int monthMinus = monthNow - selectMonth;
        int dayMinus = dayNow - selectDay;
        int age = yearMinus;// 先大致赋值
        if (yearMinus < 0) {// 选了未来的年份
            age = 0;
        } else if (yearMinus == 0) {// 同年的,要么为1,要么为0
            if (monthMinus < 0) {// 选了未来的月份
                age = 0;
            } else if (monthMinus == 0) {// 同月份的
                if (dayMinus < 0) {// 选了未来的日期
                    age = 0;
                } else if (dayMinus >= 0) {
                    age = 1;
                }
            } else if (monthMinus > 0) {
                age = 1;
            }
        } else if (yearMinus > 0) {
            if (monthMinus < 0) {// 当前月>生日月
            } else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄
                if (dayMinus < 0) {
                } else if (dayMinus >= 0) {
                    age = age + 1;
                }
            } else if (monthMinus > 0) {
                age = age + 1;
            }
        }
        return age;
    }
    // 根据时间戳计算年龄
    public static int getAgeFromBirthTime(long birthTimeLong) {
        Date date = new Date(birthTimeLong * 1000l);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String birthTimeString = format.format(date);
        return getAgeFromBirthTime(birthTimeString);
    }
    public static void main(String[] args) {
        String yese = "19980516";
        String year = yese.substring(0,4);
        String month = yese.substring(4,6);
        String ri = yese.substring(6,8);
        System.out.println();
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/IdCardUtil.java
New file
@@ -0,0 +1,169 @@
package com.panzhihua.common.utlis;
import java.util.HashSet;
import java.util.regex.Pattern;
/**
 * 身份证正则校验工具类
 */
public class IdCardUtil {
    /** 大陆地区地域编码最大值 **/
    public static final int MAX_MAINLAND_AREACODE = 659004;
    /** 大陆地区地域编码最小值 **/
    public static final int MIN_MAINLAND_AREACODE = 110000;
    /** 香港地域编码值 **/
    public static final int HONGKONG_AREACODE = 810000; // 香港地域编码值
    /** 台湾地域编码值 **/
    public static final int TAIWAN_AREACODE = 710000;
    /** 澳门地域编码值 **/
    public static final int MACAO_AREACODE = 820000;
    /** 数字正则 **/
    public static final String regexNum = "^[0-9]*$";
    /** 闰年生日正则 **/
    public static final String regexBirthdayInLeapYear = "^((19[0-9]{2})|(200[0-9])|(201[0-5]))((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))$";
    /** 平年生日正则 **/
    public static final String regexBirthdayInCommonYear = "^((19[0-9]{2})|(200[0-9])|(201[0-5]))((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))$";
    private static final HashSet<String> BLACK_SET = new HashSet<String>() {
        private static final long serialVersionUID = 48136604486603324L;
        {
            add("111111111111111");
        }
    };
    /**
     * <p>
     * 身份证格式强校验
     * </p>
     * <p>
     *  1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,
     * 八位数字出生日期码,三位数字顺序码和一位数字校验码。
     * </p>
     * <p>
     * 2、地址码(前六位数)表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
     * </p>
     * <p>
     * 3、出生日期码(第七位至十四位)表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
     * </p>
     * <p>
     * 4、顺序码(第十五位至十七位)表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号, 顺序码的奇数分配给男性,偶数分配给女性。
     * </p>
     * <p>
     * 5、校验码(第十八位数)
     * (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和
     * Ai:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4
     * 2 (2)计算模 Y = mod(S, 11) (3)通过模得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0
     * X 9 8 7 6 5 4 3 2
     * </p>
     */
    public static final boolean strongVerifyIdNumber(String idNumber) {
        if (StringUtils.isBlank(idNumber)) {
            return false;
        }
        idNumber = idNumber.trim();
        if (BLACK_SET.contains(idNumber)) {
            return false;
        }
        if (!checkIdNumberRegex(idNumber)) {
            return false;
        }
        if (!checkIdNumberArea(idNumber.substring(0, 6))) {
            return false;
        }
        idNumber = convertFifteenToEighteen(idNumber);
        if (!checkBirthday(idNumber.substring(6, 14))) {
            return false;
        }
        if (!checkIdNumberVerifyCode(idNumber)) {
            return false;
        }
        return true;
    }
    /**
     * 身份证正则校验
     */
    private static boolean checkIdNumberRegex(String idNumber) {
        return Pattern.matches("^([0-9]{17}[0-9Xx])|([0-9]{15})$", idNumber);
    }
    /**
     * 身份证地区码检查
     */
    private static boolean checkIdNumberArea(String idNumberArea) {
        int areaCode = Integer.parseInt(idNumberArea);
        if (areaCode == HONGKONG_AREACODE || areaCode == MACAO_AREACODE || areaCode == TAIWAN_AREACODE) {
            return true;
        }
        if (areaCode <= MAX_MAINLAND_AREACODE && areaCode >= MIN_MAINLAND_AREACODE) {
            return true;
        }
        return false;
    }
    /**
     * 将15位身份证转换为18位
     */
    private static String convertFifteenToEighteen(String idNumber) {
        if (15 != idNumber.length()) {
            return idNumber;
        }
        idNumber = idNumber.substring(0, 6) + "19" + idNumber.substring(6, 15);
        idNumber = idNumber + getVerifyCode(idNumber);
        return idNumber;
    }
    /**
     * 根据身份证前17位计算身份证校验码
     */
    private static String getVerifyCode(String idNumber) {
        if (!Pattern.matches(regexNum, idNumber.substring(0, 17))) {
            return null;
        }
        String[] ValCodeArr = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
        String[] Wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2" };
        int sum = 0;
        for (int i = 0; i < 17; i++) {
            sum = sum + Integer.parseInt(String.valueOf(idNumber.charAt(i))) * Integer.parseInt(Wi[i]);
        }
        return ValCodeArr[sum % 11];
    }
    /**
     * 身份证出生日期嘛检查
     */
    private static boolean checkBirthday(String idNumberBirthdayStr) {
        Integer year = null;
        try {
            year = Integer.valueOf(idNumberBirthdayStr.substring(0, 4));
        } catch (Exception e) {
        }
        if (null == year) {
            return false;
        }
        if (isLeapYear(year)) {
            return Pattern.matches(regexBirthdayInLeapYear, idNumberBirthdayStr);
        } else {
            return Pattern.matches(regexBirthdayInCommonYear, idNumberBirthdayStr);
        }
    }
    /**
     * 判断是否为闰年
     */
    private static boolean isLeapYear(int year) {
        return (year % 400 == 0) || (year % 100 != 0 && year % 4 == 0);
    }
    /**
     * 身份证校验码检查
     */
    private static boolean checkIdNumberVerifyCode(String idNumber) {
        return getVerifyCode(idNumber).equalsIgnoreCase(idNumber.substring(17));
    }
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/CommonDataApi.java
@@ -794,35 +794,41 @@
    private List<List<String>> headDataFilling(){
        List<List<String>> list = new ArrayList<List<String>>();
        List<String> head0 = new ArrayList<String>();
        head0.add("家庭成员");
        head0.add("姓名");
        List<String> head1 = new ArrayList<String>();
        head1.add("性别");
        head1.add("身份证(性别和年龄自动根据身份证号识别)");
        List<String> head2 = new ArrayList<String>();
        head2.add("年龄");
        head2.add("民族");
        List<String> head3 = new ArrayList<String>();
        head3.add("是否租住");
        head3.add("政治面貌(群众/中共党员/共青团员)");
        List<String> head4 = new ArrayList<String>();
        head4.add("街路巷");
        head4.add("是否租住");
        List<String> head5 = new ArrayList<String>();
        head5.add("门牌号");
        head5.add("与户主关系");
        List<String> head6 = new ArrayList<String>();
        head6.add("楼排号");
        head6.add("街道");
        List<String> head7 = new ArrayList<String>();
        head7.add("单元号");
        head7.add("小区号(政府对于每个小区都有特定编号)");
        List<String> head8 = new ArrayList<String>();
        head8.add("户室");
        head8.add("楼排号");
        List<String> head10 = new ArrayList<String>();
        head10.add("民族");
        head10.add("单元号");
        List<String> head11 = new ArrayList<String>();
        head11.add("政治面貌(群众/中共党员/共青团员)");
        head11.add("户室(四位数表示。前两位楼层,后两位户号)");
        List<String> head12 = new ArrayList<String>();
        head12.add("身份证");
        head12.add("联系方式");
        List<String> head13 = new ArrayList<String>();
        head13.add("联系方式");
        head13.add("籍贯");
        List<String> head14 = new ArrayList<String>();
        head14.add("籍贯");
        head14.add("文化程度");
        List<String> head15 = new ArrayList<String>();
        head15.add("工作单位");
        head15.add("婚姻状况");
        List<String> head16 = new ArrayList<String>();
        head16.add("健康状况");
        List<String> head17 = new ArrayList<String>();
        head17.add("工作单位");
        List<String> head18 = new ArrayList<String>();
        head18.add("备注");
        list.add(head0);
        list.add(head1);
        list.add(head2);
@@ -838,26 +844,32 @@
        list.add(head13);
        list.add(head14);
        list.add(head15);
        list.add(head16);
        list.add(head17);
        list.add(head18);
        return list;
    }
    private List<Object> formDataFilling(){
        List<Object> data = new ArrayList<>();
        data.add("张三");
        data.add("男");
        data.add(25);
        data.add("513421199508187219");
        data.add("汉族");
        data.add("群众");
        data.add("是");
        data.add("");
        data.add("樱花街");
        data.add(115);
        data.add("15栋");
        data.add(10);
        data.add(1001);
        data.add("汉族");
        data.add("群众");
        data.add("513421199508187219");
        data.add("13768548521");
        data.add("中国");
        data.add("");
        data.add("");
        data.add("");
        data.add("阿里巴巴");
        data.add("");
        return data;
    }
@@ -878,7 +890,6 @@
            if (!existDir) {
                String property = System.getProperty("user.dir");
                String fileName = property + File.separator + name;
                // 这里 需要指定写用哪个class去写
                // 这里 需要指定写用哪个class去写
                ExcelWriter excelWriter = null;
                InputStream inputStream = null;
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngPopulationDAO.java
@@ -7,6 +7,7 @@
import com.panzhihua.common.model.vos.community.ComActMessageVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationVO;
import com.panzhihua.common.model.vos.community.PageComActMessageVO;
import com.panzhihua.common.model.vos.user.ComHouseMemberVo;
import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
import com.panzhihua.service_community.model.dos.ComMngPopulationDO;
import org.apache.ibatis.annotations.Mapper;
@@ -92,6 +93,9 @@
    @Select("select id,user_id,relationship,`name`,id_card,phone,age,health,job,create_at,update_at from com_mng_family_info where user_id=#{userId}")
    List<ComMngFamilyInfoVO> listFamilyByUserId(Long userId);
    @Select("select id,`name`,phone,relation from com_mng_population where road = #{comMngPopulationDO.road} and door_no = #{comMngPopulationDO.doorNo} and floor = #{comMngPopulationDO.floor} and unit_no = #{comMngPopulationDO.unitNo} and house_no = #{comMngPopulationDO.houseNo} and id != #{comMngPopulationDO.id}")
    List<ComHouseMemberVo> listHouseMermberByUserId(ComMngPopulationDO comMngPopulationDO);
    @Select("<script> " +
            "SELECT\n" +
            "cmp.`name`,\n" +
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngPopulationDO.java
@@ -1,9 +1,6 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.panzhihua.common.model.helper.encrypt.EncryptDecryptClass;
import com.panzhihua.common.model.helper.encrypt.EncryptDecryptField;
import lombok.Data;
@@ -99,10 +96,12 @@
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createAt;
    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date updateAt;
    /**
     * 籍贯
@@ -123,6 +122,26 @@
    private String villageName;
    /**
     * 与户主关系
     */
    private String relation;
    /**
     * 文化程度
     */
    private String cultureLevel;
    /**
     * 婚姻状况
     */
    private String marriage;
    /**
     * 健康状况
     */
    private String healthy;
    /**
     * 性别(1.男 2.女 3.未知)
     */
    public interface sex{
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -13,6 +13,7 @@
import com.panzhihua.common.model.dtos.community.PageComActDTO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.user.ComHouseMemberVo;
import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
import com.panzhihua.service_community.dao.ComActActivityDAO;
import com.panzhihua.service_community.dao.ComActDAO;
@@ -118,8 +119,8 @@
        ComMngPopulationVO comMngPopulationVO = new ComMngPopulationVO();
        BeanUtils.copyProperties(comMngPopulationDO, comMngPopulationVO);
        //查询家庭成员信息
        List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = populationDAO.listFamilyByUserId(comMngPopulationDO.getId());
        //查询房屋成员信息
        List<ComHouseMemberVo> comMngFamilyInfoVOS = populationDAO.listHouseMermberByUserId(comMngPopulationDO);
        if (!comMngFamilyInfoVOS.isEmpty()) {
            comMngPopulationVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
        }
@@ -193,47 +194,6 @@
        List<ComMngVillageDO> villageDOList = comActVillageDAO.selectList(new QueryWrapper<ComMngVillageDO>().lambda().eq(ComMngVillageDO::getCommunityId, communityId));
        int index = 2;
        for (ComMngPopulationServeExcelVO vo : list) {
            if (vo.getName() == null) {
                return R.fail("家庭成员(姓名)第" + index + "行为空!");
            }
            if (vo.getSex() == null) {
                return R.fail("性别第" + index + "行为空!");
            }
            if (vo.getAge() == null) {
                return R.fail("年龄" + index + "行为空!");
            }
            if (vo.getIsRent() == null) {
                return R.fail("是否租住,第" + index + "行为空!");
            }
            if (vo.getRoad() == null) {
                return R.fail("街路巷,第" + index + "行为空!");
            }
            if (vo.getDoorNo() == null) {
                return R.fail("门牌号,第" + index + "行为空!");
            }
            if (vo.getFloor() == null) {
                return R.fail("楼排号,第" + index + "行为空!");
            }
            if (vo.getUnitNo() == null) {
                return R.fail("单元号,第" + index + "行为空!");
            }
            if (vo.getHouseNo() == null) {
                return R.fail("户室,第" + index + "行为空!");
            }
            if (vo.getNation() == null) {
                return R.fail("民族,第" + index + "行为空!");
            }
            if (vo.getPoliticalOutlook() == null) {
                return R.fail("政治面貌,第" + index + "行为空!");
            }
            if (vo.getCardNo() == null) {
                return R.fail("身份证号码,第" + index + "行为空!");
            }
            if (vo.getPhone() == null) {
                return R.fail("联系方式,第" + index + "行为空!");
            }
            //判断DB和exel数据重复判断
            boolean result = comMngPopulationDOS.stream().anyMatch(population -> population.getCardNo().equals(vo.getCardNo()));
            if (result) {