xyh
2021-06-11 0f71799671c2143d894b31df22d99524285a8d5c
实有人口、楼栋数据导入
5个文件已修改
9个文件已添加
847 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/PopulHouseUseEnum.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngBuildingExcelListen.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java 158 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngBuildingExcelVO.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/BuildingApi.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/BuildingApi.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngBuildingDAO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngBuildingDO.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActBuildingService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/enums/PopulHouseUseEnum.java
New file
@@ -0,0 +1,45 @@
package com.panzhihua.common.enums;
/** 实有房屋使用类型
 * @author xyh
 * @date 2021/6/11 9:33
 */
public enum  PopulHouseUseEnum {
    SELF(1,"自住"),
    RENT(2,"租住"),
        ;
    private final Integer code;
    private final String name;
    PopulHouseUseEnum(Integer code,String name){
        this.code = code;
        this.name = name;
    }
    public Integer getCode() {
        return code;
    }
    public String getName() {
        return name;
    }
    public static int getCodeByName(String name) {
        for (PopulHouseUseEnum item : PopulHouseUseEnum.values()) {
            if (item.getName().equals(name)) {
                return item.getCode();
            }
        }
        return -1;
    }
    public static String getCnDescByName(Integer code) {
        for (PopulHouseUseEnum item : PopulHouseUseEnum.values()) {
            if (item.getCode().equals(code)) {
                return item.getName();
            }
        }
        return "其他";
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngBuildingExcelListen.java
New file
@@ -0,0 +1,152 @@
package com.panzhihua.common.listen;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.panzhihua.common.enums.*;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationImportErrorVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationServeExcelVO;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.*;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * @description: 社区楼栋导入监听
 * @author: xyh
 */
@Slf4j
public class ComMngBuildingExcelListen extends AnalysisEventListener<Map<Integer, String>> {
    private CommunityService communityService;
    private Long communityId;
    private static int headSize = 0;
    private Map<Integer, String> headData;
    public ComMngBuildingExcelListen(CommunityService communityService, Long communityId) {
        this.communityService = communityService;
        this.communityId = communityId;
    }
    private static final int BATCH_COUNT = 5000;
    List<Map<Integer, String>> list = new ArrayList<Map<Integer, String>>();
    @Override
    public void invoke(Map<Integer, String> data, AnalysisContext context) {
        list.add(data);
        if (list.size() >= BATCH_COUNT) {
            saveData();
            list.clear();
        }
    }
    /**
     *
     * @param headMap
     * @param context
     */
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        headSize = headMap.size();
        headData = headMap;
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        saveData();
        log.info("所有数据解析完成!");
    }
    /**
     * 不是固定的列只能手动处理
     */
    private void saveData() {
        try {
            ArrayList<ComMngBuildingExcelVO> voList = Lists.newArrayList();
            List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
            for(int i =1;i<list.size();i++){
                Map<Integer, String> oneData = list.get(i);
                ComMngBuildingExcelVO vo = new ComMngBuildingExcelVO();
                vo.setId(Snowflake.getId());
                vo.setUseType(oneData.get(1));
                vo.setBuildType(oneData.get(2));
                vo.setAlley(oneData.get(3));
                vo.setVillageName(oneData.get(4));
                vo.setDoorNo(oneData.get(5));
                vo.setName(oneData.get(6));
                try{
                    vo.setUnitTotal(oneData.get(7)==null?0:Integer.valueOf(oneData.get(7)));
                }catch (Exception e){
                    vo.setUnitTotal(0);
                }
                try{
                    vo.setBuildFloorSum(oneData.get(8)==null?0:Integer.valueOf(oneData.get(8)));
                }catch (Exception e){
                    vo.setBuildFloorSum(0);
                }
                try{
                    vo.setEveryFloorSum(oneData.get(9)==null?0:Integer.valueOf(oneData.get(9)));
                }catch (Exception e){
                    vo.setEveryFloorSum(0);
                }
                try{
                    vo.setBuildUserSum(oneData.get(10)==null?0:Integer.valueOf(oneData.get(10)));
                }catch (Exception e){
                    vo.setBuildUserSum(0);
                }
                try{
                    vo.setElevatorTotal(oneData.get(11)==null?0:Integer.valueOf(oneData.get(11)));
                }catch (Exception e){
                    vo.setElevatorTotal(0);
                }
                vo.setPropertyCompanyName(oneData.get(12));
                try {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
                    vo.setBuildDate(sdf.parse(oneData.get(13)));
                }catch (Exception e){
                }
                vo.setRemark(oneData.get(14));
                vo.setGrid(oneData.get(15));
                voList.add(vo);
            }
            //根据list中的IdCard城市来去重
            List<ComMngBuildingExcelVO> newVoList = voList.stream().filter(ListUtils.distinctByKey(ComMngBuildingExcelVO::getName)).collect(Collectors.toList());
            R r = communityService.listSaveBuildingExcelVO(newVoList, communityId,123141L);
            if (!R.isOk(r)) {
                String errMsg = r.getMsg();
                List<ComMngPopulationImportErrorVO> errorList = JSON.parseArray(errMsg,ComMngPopulationImportErrorVO.class);
                if(!errorList.isEmpty()){
                    populationImportErrorVOList.addAll(errorList);
                }
                throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
            }else{
                if(!populationImportErrorVOList.isEmpty()){
                    throw new ServiceException("500", JSON.toJSONString(populationImportErrorVOList));
                }
            }
        } catch (NumberFormatException e) {
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComMngPopulationServeExcelListen.java
@@ -16,10 +16,12 @@
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -135,15 +137,15 @@
                    }
                }
                if(StringUtils.isNotEmpty(oneData.get(2))){
                    String nation = oneData.get(2);
                    if(!nation.contains("族")){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第3列");
                        importErrorVO.setErrorMsg("您填写的民族格式有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
//                    String nation = oneData.get(2);
//                    if(!nation.contains("族")){
//                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
//                        importErrorVO.setErrorPosition("第" + index + "行,第3列");
//                        importErrorVO.setErrorMsg("您填写的民族格式有误");
//                        populationImportErrorVOList.add(importErrorVO);
//                        index++;
//                        continue;
//                    }
                    vo.setNation(oneData.get(2));
                }
                if(StringUtils.isNotEmpty(oneData.get(3))){
@@ -159,7 +161,7 @@
                    vo.setPoliticalOutlook(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(4))){
                    Integer isOk = PopulIsOkEnum.getCodeByName(oneData.get(4));
                    Integer isOk = PopulHouseUseEnum.getCodeByName(oneData.get(4));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第5列");
@@ -170,6 +172,7 @@
                    }
                    vo.setIsRent(isOk);
                }
                //TODO 先存中文后期改为枚举
                if(StringUtils.isNotEmpty(oneData.get(5))){
                    Integer isOk = PopulRelationEnum.getCodeByName(oneData.get(5));
                    if(isOk.equals(-1)){
@@ -228,64 +231,16 @@
                }
                vo.setHouseNo(oneData.get(10).trim());
                if(StringUtils.isNotEmpty(oneData.get(11))){
                    vo.setPhone(oneData.get(11).trim());
                    vo.setBuildPurpose(oneData.get(11).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(12))){
                    vo.setNativePlace(oneData.get(12).trim());
                    vo.setBuildArea(oneData.get(12).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(13))){
                    Integer isOk = PopulCultureLevelEnum.getCodeByName(oneData.get(13));
                    Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(13).trim());
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第14列");
                        importErrorVO.setErrorMsg("您填写的文化程度有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setCultureLevel(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(14))){
                    Integer isOk = PopulMarriageEnum.getCodeByName(oneData.get(14));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第14列");
                        importErrorVO.setErrorMsg("您填写的婚姻状况有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setMarriage(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(15))){
                    vo.setHealthy(oneData.get(15).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(16))){
                    vo.setWorkCompany(oneData.get(16).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(17))){
                    vo.setRemark(oneData.get(17).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(18))){
                    vo.setCensusRegister(oneData.get(18).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(19))){
                    Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(19));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第20列");
                        importErrorVO.setErrorMsg("您填写的外地or本地有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setOutOrLocal(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(20))){
                    Integer isOk = PopulHouseStatusEnum.getCodeByName(oneData.get(20));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第21列");
                        importErrorVO.setErrorMsg("您填写的房屋状态有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
@@ -293,43 +248,96 @@
                    }
                    vo.setHouseStatus(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(21))){
                    Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(21));
                if(StringUtils.isNotEmpty(oneData.get(14))){
                    Integer isOk = PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim());
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第22列");
                        importErrorVO.setErrorPosition("第" + index + "行,第15列");
                        importErrorVO.setErrorMsg("您填写的房屋用途有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setHousePurpose(isOk);
                    vo.setHousePurpose(PopulHousePurposeEnum.getCodeByName(oneData.get(14).trim()));
                }
                if(StringUtils.isNotEmpty(oneData.get(22))){
                    Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(22));
                if(StringUtils.isNotEmpty(oneData.get(15))){
                    Integer isOk = PopulHouseControlStatusEnum.getCodeByName(oneData.get(15));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第23列");
                        importErrorVO.setErrorPosition("第" + index + "行,第16列");
                        importErrorVO.setErrorMsg("您填写的管控状态有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setControlStatus(isOk);
                    vo.setHouseStatus(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(23))){
                    Integer isOk = PopulIsOksEnum.getCodeByName(oneData.get(23));
                if(StringUtils.isNotEmpty(oneData.get(16))){
                    vo.setPhone(oneData.get(16).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(17))){
                    vo.setNativePlace(oneData.get(17).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(18))){
                    Integer isOk = PopulCultureLevelEnum.getCodeByName(oneData.get(18));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第23列");
                        importErrorVO.setErrorMsg("您填写的是否是居住地有误");
                        importErrorVO.setErrorPosition("第" + index + "行,第19列");
                        importErrorVO.setErrorMsg("您填写的文化程度有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setIsResidence(isOk);
                    vo.setCultureLevel(isOk);
                }
                for (int i = 24; i < headSize; i++) {
                if(StringUtils.isNotEmpty(oneData.get(19))){
                    Integer isOk = PopulMarriageEnum.getCodeByName(oneData.get(19));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第20列");
                        importErrorVO.setErrorMsg("您填写的婚姻状况有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setMarriage(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(20))){
                    vo.setHealthy(oneData.get(20).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(21))){
                    vo.setWorkCompany(oneData.get(21).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(22))){
                    Integer isOk = PopulOutOrLocalEnum.getCodeByName(oneData.get(22));
                    if(isOk.equals(-1)){
                        ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
                        importErrorVO.setErrorPosition("第" + index + "行,第23列");
                        importErrorVO.setErrorMsg("您填写的外地or本地有误");
                        populationImportErrorVOList.add(importErrorVO);
                        index++;
                        continue;
                    }
                    vo.setOutOrLocal(isOk);
                }
                if(StringUtils.isNotEmpty(oneData.get(23))){
                    vo.setCensusRegister(oneData.get(23).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(24))){
                    vo.setRemark(oneData.get(24).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(25))){
                    vo.setIdCardPositive(oneData.get(25).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(26))){
                    vo.setIdCardBack(oneData.get(26).trim());
                }
                if(StringUtils.isNotEmpty(oneData.get(27))){
                    vo.setHouseHold(oneData.get(27).trim());
                }
                for (int i = 28; i < headSize; i++) {
                    if (oneData.get(i) != null && oneData.get(i).equals("是")) {
                        vo.getUserTagStr().add(headData.get(i).substring(0,headData.get(i).indexOf("(")));
                    }
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngBuildingExcelVO.java
New file
@@ -0,0 +1,63 @@
package com.panzhihua.common.model.vos.community;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @author xyh
 * @date 2021/6/10 12:43
 */
@Data
public class ComMngBuildingExcelVO implements Serializable {
    private static final long serialVersionUID = 1719392023800643085L;
    private Long id;
    @ExcelProperty(value = "楼房属性", index = 1)
    private String useType;
    @ExcelProperty(value = "建筑类型", index = 2)
    private String buildType;
    @ExcelProperty(value = "街路巷", index = 3)
    private String alley;
    @ExcelProperty(value = "小区名称", index = 4)
    private String villageName;
    @ExcelProperty(value = "门牌号", index = 5)
    private String doorNo;
    @ExcelProperty(value = "楼栋号/楼栋名称", index = 6)
    private String name;
    @ExcelProperty(value = "单元数", index = 7)
    private Integer unitTotal;
    @ExcelProperty(value = "楼层数", index = 8)
    private Integer buildFloorSum;
    @ExcelProperty(value = "每层户数", index = 9)
    private Integer everyFloorSum;
    @ExcelProperty(value = "总户数", index = 10)
    private Integer buildUserSum;
    @ExcelProperty(value = "电梯", index = 11)
    private Integer elevatorTotal;
    @ExcelProperty(value = "物业公司名称", index = 12)
    private String propertyCompanyName;
    @ExcelProperty(value = "建筑年代", index = 13)
    private Date buildDate;
    @ExcelProperty(value = "备注", index = 14)
    private String remark;
    @ExcelProperty(value = "网格划分", index = 15)
    private String grid;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComMngPopulationServeExcelVO.java
@@ -35,7 +35,7 @@
    @ExcelProperty(value = "街路巷", index = 6)
    private String road;
    @ExcelProperty(value = "门牌号", index = 7)
    @ExcelProperty(value = "小区号", index = 7)
    private String doorNo;
    @ExcelProperty(value = "楼排号", index = 8)
@@ -47,43 +47,81 @@
    @ExcelProperty(value = "户室(房间号)", index = 10)
    private String houseNo;
    @ExcelProperty(value = "联系方式", index = 11)
    private String phone;
    @ExcelProperty(value = "建筑用途", index = 11)
    private String buildPurpose;
    @ExcelProperty(value = "籍贯", index = 12)
    private String nativePlace;
    @ExcelProperty(value = "建筑面积", index = 12)
    private String buildArea;
    @ExcelProperty(value = "文化程度(1.小学 2.初中 3.高中 4.中专 5.大专 6.本科 7.硕士 8.博士 9.其他)", index = 13)
    private Integer cultureLevel;
    @ExcelProperty(value = "婚姻状况(1.未婚 2.已婚 3.离异 4.丧偶 5.分居 6.其他)", index = 14)
    private Integer marriage;
    @ExcelProperty(value = "健康状况", index = 15)
    private String healthy;
    @ExcelProperty(value = "工作单位", index = 16)
    private String workCompany;
    @ExcelProperty(value = "备注", index = 17)
    private String remark;
    @ExcelProperty(value = "户口所在地", index = 18)
    private String censusRegister;
    @ExcelProperty(value = "外地or本地(1.本地  2.外地)", index = 19)
    private Integer outOrLocal;
    @ExcelProperty(value = "房屋状态(1.自住 2.租住 3.其他)", index = 20)
    @ExcelProperty(value = "房屋状态(1.自住 2.租住 3.其他)", index = 13)
    private Integer houseStatus;
    @ExcelProperty(value = "房屋用途(1.住宅 2.公寓 3.宿舍 4.仓库 5.其他)", index = 21)
    @ExcelProperty(value = "房屋用途(1.住宅 2.公寓 3.宿舍 4.仓库 5.其他)", index = 14)
    private Integer housePurpose;
    @ExcelProperty(value = "管控状态(1.常规 2.关注 3.管控)", index = 22)
    @ExcelProperty(value = "管控状态(1.常规 2.关注 3.管控)", index = 15)
    private Integer controlStatus;
    @ExcelProperty(value = "是否是居住地(1.是 2.否)", index = 23)
    @ExcelProperty(value = "联系方式", index = 16)
    private String phone;
    @ExcelProperty(value = "籍贯", index = 17)
    private String nativePlace;
    @ExcelProperty(value = "文化程度(1.小学 2.初中 3.高中 4.中专 5.大专 6.本科 7.硕士 8.博士 9.其他)", index = 18)
    private Integer cultureLevel;
    @ExcelProperty(value = "婚姻状况(1.未婚 2.已婚 3.离异 4.丧偶 5.分居 6.其他)", index = 19)
    private Integer marriage;
    @ExcelProperty(value = "健康状况", index = 20)
    private String healthy;
    @ExcelProperty(value = "工作单位", index = 21)
    private String workCompany;
    @ExcelProperty(value = "外地or本地(1.本地  2.外地)", index = 22)
    private Integer outOrLocal;
    @ExcelProperty(value = "户口所在地", index = 23)
    private String censusRegister;
    @ExcelProperty(value = "备注", index = 24)
    private String remark;
    @ExcelProperty(value = "证件照(人面像)照片", index = 25)
    private String idCardPositive;
    @ExcelProperty(value = "证件照(国徽面)照片", index = 26)
    private String idCardBack;
    @ExcelProperty(value = "户口本照片", index = 27)
    private String houseHold;
    @ExcelProperty(value = "退役军人(是/否)", index = 28)
    private Integer veterans;
    @ExcelProperty(value = "残疾人(是/否)", index = 29)
    private Integer disabled;
    @ExcelProperty(value = "低保户(是/否)", index = 30)
    private Integer lowIncomeHold;
    @ExcelProperty(value = "低收入人员(是/否)", index = 31)
    private Integer lowIncome;
    @ExcelProperty(value = "高龄老人(是/否)", index = 32)
    private Integer elder;
    @ExcelProperty(value = "特服家庭(是/否)", index = 33)
    private Integer specialFamily;
    @ExcelProperty(value = "重点人员(是/否)", index = 34)
    private Integer important;
    @ExcelProperty(value = "特殊情况(重大病史/孕)(是/否)", index = 35)
    private Integer specialCase;
    private Integer isResidence;
    /**
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -2727,4 +2727,13 @@
     */
    @PostMapping("/vaccines/admin/enroll/type/list")
    R getEnrollTypeListByAdmin();
    /**
     *  批量保存楼栋
     * @param newVoList
     * @param communityId
     * @return
     */
    @PostMapping("/building/batchSave")
    R listSaveBuildingExcelVO(@RequestBody List<ComMngBuildingExcelVO> newVoList,@RequestParam("communityId") Long communityId,@RequestParam("streetId")Long streetId);
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/BuildingApi.java
New file
@@ -0,0 +1,54 @@
package com.panzhihua.community_backstage.api;
import com.alibaba.excel.EasyExcel;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.listen.ComMngBuildingExcelListen;
import com.panzhihua.common.listen.ComMngPopulationServeExcelListen;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.service.community.CommunityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
/**
 * @author xyh
 * @date 2021/6/10 12:34
 */
@Slf4j
@Api(tags = {"社区管理"})
@RestController
@RequestMapping("/building")
public class BuildingApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @ApiOperation(value = "excel导入楼栋信息")
    @PostMapping(value = "/import", consumes = "multipart/*", headers = "content-type=multipart/form-date")
    public R downloadPopulationTemplate(@RequestParam MultipartFile file, HttpServletRequest request) {
//        String fileName = file.getOriginalFilename();
//        log.info("传入文件名字【{}】", fileName);
        InputStream inputStream;
        try {
            inputStream = file.getInputStream();
            long communityId = 45L;
            ComMngBuildingExcelListen comMngBuildingExcelListen = new ComMngBuildingExcelListen(communityService, communityId);
            EasyExcel.read(inputStream, null, comMngBuildingExcelListen).sheet().doRead();
        } catch (IOException e) {
            log.error("导入模板失败【{}】", e.getMessage());
            e.printStackTrace();
        }
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/PopulationApi.java
@@ -88,8 +88,8 @@
        InputStream inputStream = null;
        try {
            inputStream = file.getInputStream();
            LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
            ComMngPopulationServeExcelListen comMngPopulationServeExcelListen = new ComMngPopulationServeExcelListen(communityService, loginUserInfo.getCommunityId());
//            LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
            ComMngPopulationServeExcelListen comMngPopulationServeExcelListen = new ComMngPopulationServeExcelListen(communityService, 45L);
            EasyExcel.read(inputStream, null, comMngPopulationServeExcelListen).sheet().doRead();
        } catch (IOException e) {
            log.error("导入模板失败【{}】", e.getMessage());
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/BuildingApi.java
New file
@@ -0,0 +1,31 @@
package com.panzhihua.service_community.api;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO;
import com.panzhihua.service_community.service.ComActBuildingService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author xyh
 * @date 2021/6/10 13:39
 */
@Slf4j
@RestController
@RequestMapping("/building")
public class BuildingApi {
    @Resource
    private ComActBuildingService comActBuildingService;
    @PostMapping("/batchSave")
    R listSaveBuildingExcelVO(@RequestBody List<ComMngBuildingExcelVO> newVoList, @RequestParam("communityId") Long communityId, @RequestParam("streetId")Long streetId){
        return comActBuildingService.batchSaveBuilding(newVoList,communityId,streetId);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComMngBuildingDAO.java
New file
@@ -0,0 +1,18 @@
package com.panzhihua.service_community.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.service_community.model.dos.ComMngBuildingDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * @author xyh
 * @date 2021/6/10 13:47
 */
@Mapper
public interface ComMngBuildingDAO extends BaseMapper<ComMngBuildingDO> {
    @Select("select street_id,act_id,village_id,name from com_mng_building")
    List<ComMngBuildingDO> findAllBuilding();
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComMngBuildingDO.java
New file
@@ -0,0 +1,124 @@
package com.panzhihua.service_community.model.dos;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * 楼栋表
 * </p>
 *
 * @author xyh
 * @since 2021-06-10
 */
@Data
@TableName(value = "com_mng_building")
public class ComMngBuildingDO implements Serializable {
    private static final long serialVersionUID = 7264872297827113113L;
    @TableId(value = "id",type = IdType.INPUT)
    private Long id;
    /**
     * 街道Id
     */
    private Long streetId;
    /**
     * 社区id
     */
    private Long actId;
    /**
     * 小区ID
     */
    private Long villageId;
    /**
     * 楼栋号
     */
    private String name;
    /**
     * 楼层数量
     */
    private Integer buildFloorSum;
    /**
     * 每个楼层有多少户
     */
    private Integer everyFloorSum;
    /**
     * 栋楼总共有多少户
     */
    private Integer buildUserSum;
    /**
     * 建筑类型(高层、洋房等)
     */
    private String buildType;
    /**
     * 使用类型
     */
    private String useType;
    /**
     * 建成时间
     */
    private Date buildDate;
    /**
     * 单元数
     */
    private Integer unitTotal;
    /**
     * 电梯数
     */
    private Integer elevatorTotal;
    /**
     * 楼栋状态(在用、待拆迁等)
     */
    private Long buildStatus;
    /**
     * 层次递归字段(街道>社区>小区>楼栋)
     */
    private String path;
    /**
     * 经度
     */
    private String lng;
    /**
     * 维度
     */
    private String lat;
    /**
     * 创建时间
     */
    private Date createAt;
    /**
     * 更新时间
     */
    private Date updateAt;
    /**
     * 备注
     */
    private String remark;
    private Long gridId;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActBuildingService.java
New file
@@ -0,0 +1,18 @@
package com.panzhihua.service_community.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO;
import com.panzhihua.service_community.model.dos.ComMngBuildingDO;
import java.util.List;
/**
 * @author xyh
 * @date 2021/6/10 13:41
 */
public interface ComActBuildingService extends IService<ComMngBuildingDO> {
    R batchSaveBuilding(List<ComMngBuildingExcelVO> newVoList, Long communityId, Long streetId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java
New file
@@ -0,0 +1,59 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO;
import com.panzhihua.common.model.vos.community.ComMngPopulationImportErrorVO;
import com.panzhihua.service_community.dao.ComActDAO;
import com.panzhihua.service_community.dao.ComActVillageDAO;
import com.panzhihua.service_community.dao.ComMngBuildingDAO;
import com.panzhihua.service_community.model.dos.ComActDO;
import com.panzhihua.service_community.model.dos.ComMngBuildingDO;
import com.panzhihua.service_community.model.dos.ComMngVillageDO;
import com.panzhihua.service_community.service.ComActBuildingService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
 * @author xyh
 * @date 2021/6/10 13:46
 */
@Service
public class ComActBuildingServiceImpl extends ServiceImpl<ComMngBuildingDAO, ComMngBuildingDO> implements ComActBuildingService {
    @Resource
    private ComActVillageDAO comActVillageDAO;
    @Resource
    private ComActDAO comActDAO;
    @Override
    public R batchSaveBuilding(List<ComMngBuildingExcelVO> newVoList, Long communityId, Long streetId) {
        ArrayList<ComMngBuildingDO> list = Lists.newArrayList();
        for(ComMngBuildingExcelVO vo:newVoList){
            ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().eq("alley",vo.getAlley()).eq("house_num",vo.getDoorNo()).eq("community_id",communityId));
            if(comMngVillageDO == null){
                continue;
            }
            ComMngBuildingDO comMngBuildingDO = new ComMngBuildingDO();
            BeanUtils.copyProperties(vo,comMngBuildingDO);
            comMngBuildingDO.setActId(comMngVillageDO.getCommunityId());
            comMngBuildingDO.setStreetId(comMngVillageDO.getStreetId());
            comMngBuildingDO.setVillageId(comMngVillageDO.getVillageId());
            ComActDO actDO = comActDAO.selectById(comMngVillageDO.getCommunityId());
            StringBuilder path = new StringBuilder();
            path.append(vo.getAlley()).append(">").append(actDO.getName()).append(vo.getVillageName()).append(">").append(vo.getName());
            comMngBuildingDO.setPath(path.toString());
            comMngBuildingDO.setGridId(null);
            list.add(comMngBuildingDO);
        }
        this.saveBatch(list);
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.panzhihua.common.enums.PopulHouseUseEnum;
import com.panzhihua.common.enums.PopulIsOksEnum;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.dtos.community.*;
@@ -35,6 +36,7 @@
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
@@ -354,12 +356,22 @@
                    //查询该房屋未建立,执行建立房屋信息
                    populationHouseDO = new ComMngPopulationHouseDO();
                    populationHouseDO.setVillageId(comMngVillageDO.getVillageId());
                    populationHouseDO.setAlley(vo.getRoad());
                    populationHouseDO.setHouseNum(vo.getDoorNo());
                    populationHouseDO.setCode(vo.getDoorNo());
                    populationHouseDO.setStatus(vo.getIsRent());
                    populationHouseDO.setCommunityId(communityId);
                    populationHouseDO.setFloor(vo.getFloor());
                    populationHouseDO.setUnitNo(vo.getUnitNo());
                    populationHouseDO.setHouseNo(vo.getHouseNo());
                    populationHouseDO.setAddress(address);
                    populationHouseDO.setUpdateAt(new Date());
                    populationHouseDO.setConstructPurpose(vo.getBuildPurpose());
                    try {
                        populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
                    }catch (Exception e){
                    }
                    if(StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())){
                        populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
                    }
@@ -445,7 +457,7 @@
                }
            }else {
                //实有人口已存在,判断录入的这个房屋信息是否是用户的居住地
                if(vo.getIsResidence() != null && vo.getIsResidence().equals(PopulIsOksEnum.YES.getCode())){
                if(vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())){
                    populationDO.setRoad(vo.getRoad());
                    populationDO.setDoorNo(vo.getDoorNo());
                    populationDO.setFloor(vo.getFloor());