101captain
2021-12-23 5a8a90c095280fbd2106869ecd2bad10e01a57a6
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -1,6 +1,27 @@
package com.panzhihua.service_community.service.impl;
import cn.hutool.core.util.IdcardUtil;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
import com.panzhihua.common.model.vos.community.bigscreen.WestScreenStatics;
import com.panzhihua.common.model.vos.community.screen.civil.*;
import com.panzhihua.common.model.vos.community.bigscreen.*;
import com.panzhihua.common.utlis.*;
import com.panzhihua.service_community.util.WxDataUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -38,27 +59,15 @@
import com.panzhihua.common.model.vos.screen.ComActPopulationScreenVO;
import com.panzhihua.common.model.vos.screen.ComMngPopulationAgeVO;
import com.panzhihua.common.model.vos.user.*;
import com.panzhihua.common.model.vos.user.ComMngUserTagVO;
import com.panzhihua.common.utlis.AgeUtils;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.Snowflake;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.util.IdcardUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestParam;
import static java.util.Objects.nonNull;
/**
 * 实有人口Service实现类
@@ -80,6 +89,10 @@
    private ComMngCarDAO comMngCarDAO;
    @Resource
    private ComMngPopulationHouseUserDAO comMngPopulationHouseUserDAO;
    @Resource
    private ComMngPopulationCommunityTagsDAO comMngPopulationCommunityTagsDAO;
    @Resource
    private ComMngPopulationCommunityTagsService comMngPopulationCommunityTagsService;
    @Resource
    private ComMngPopulationDAO comMngPopulationDAO;
    @Resource
@@ -112,21 +125,33 @@
    private ComDisabilityPopulationDAO comDisabilityPopulationDAO;
    @Resource
    private ComLowSecurityPopulationDAO comLowSecurityPopulationDAO;
    @Resource
    private ComElderAuthElderliesDAO comElderAuthElderliesDAO;
    @Resource
    private ComPensionAuthPensionerDAO comPensionAuthPensionerDAO;
    @Resource
    private ComEldersAuthStatisticsMapper comEldersAuthStatisticsMapper;
    @Resource
    private ComPensionAuthStatisticsDAO comPensionAuthStatisticsDAO;
    @Resource
    private ComActReserveMapper comActReserveMapper;
    @Value("${domain.aesKey:}")
    private String aesKey;
    @Resource
    private ComActEasyPhotoDAO comActEasyPhotoDAO;
    /**
     * 新增实有人口
     *
     * @param comMngPopulationVO 新增信息
     * @param comMngPopulationVO
     *            新增信息
     * @return 新增结果
     */
    @Override
    public R addPopulation(ComMngPopulationVO comMngPopulationVO) {
        ComMngPopulationDO comMngPopulationDO = new ComMngPopulationDO();
        Integer integer = populationDAO.selectCount(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getCardNo, comMngPopulationVO.getCardNo()));
        Integer integer = populationDAO.selectCount(new QueryWrapper<ComMngPopulationDO>().lambda()
            .eq(ComMngPopulationDO::getCardNo, comMngPopulationVO.getCardNo()));
        if (integer > 0) {
            return R.fail("实有人口已经存在");
        }
@@ -139,11 +164,11 @@
        return R.ok(nub);
    }
    /**
     * 编辑实有人口
     *
     * @param comMngPopulationVO 编辑内容
     * @param comMngPopulationVO
     *            编辑内容
     * @return 编辑结果
     */
    @Override
@@ -164,7 +189,8 @@
    /**
     * 查询实有人口
     *
     * @param comMngPopulationVO 查询条件
     * @param comMngPopulationVO
     *            查询条件
     * @return 实有人口集合
     */
    @Override
@@ -176,59 +202,74 @@
    /**
     * 实有人口详情
     *
     * @param populationId 实有人口id
     * @param populationId
     *            实有人口id
     * @return 实有人口详情
     */
    @Override
    public R detailPopulation(Long populationId) {
    public R detailPopulation(Long populationId, Long communityId) {
        ComMngPopulationDO comMngPopulationDO = populationDAO.selectById(populationId);
        if (ObjectUtils.isEmpty(comMngPopulationDO)) {
            return R.fail("用户信息不存在");
        }
//        if(StringUtils.isNotEmpty(comMngPopulationDO.getBirthday())){//计算年龄
//            comMngPopulationDO.setAge(AgeUtils.getAgeFromBirthTimes(comMngPopulationDO.getBirthday()));
//        }
        // if(StringUtils.isNotEmpty(comMngPopulationDO.getBirthday())){//计算年龄
        // comMngPopulationDO.setAge(AgeUtils.getAgeFromBirthTimes(comMngPopulationDO.getBirthday()));
        // }
        ComMngPopulationVO comMngPopulationVO = new ComMngPopulationVO();
        BeanUtils.copyProperties(comMngPopulationDO, comMngPopulationVO);
        //查询户主关系信息
//        List<ComHouseMemberVo> comMngFamilyInfoVOS = populationDAO.listHouseMermberByUserId(comMngPopulationDO.getHouseId(),comMngPopulationDO.getId());
//        if (!comMngFamilyInfoVOS.isEmpty()) {
//            comMngPopulationVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
//        }
        //查询户主关系信息
        // 查询户主关系信息
        // List<ComHouseMemberVo> comMngFamilyInfoVOS =
        // populationDAO.listHouseMermberByUserId(comMngPopulationDO.getHouseId(),comMngPopulationDO.getId());
        // if (!comMngFamilyInfoVOS.isEmpty()) {
        // comMngPopulationVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
        // }
        // 查询户主关系信息
        List<ComHouseMemberVo> comMngFamilyInfoVOS = populationDAO.listHouseMermberByPopuId(comMngPopulationDO.getId());
        if (!comMngFamilyInfoVOS.isEmpty()) {
            for (ComHouseMemberVo comHouseMemberVo : comMngFamilyInfoVOS){
            for (ComHouseMemberVo comHouseMemberVo : comMngFamilyInfoVOS) {
                comHouseMemberVo.setAge(AgeUtils.getAgeFromBirthTimes(comHouseMemberVo.getBirthDay()));
            }
            comMngPopulationVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
        }
        //设置户主关系
        List<ComMngPopulationHouseUserDO> comMngPopulationHouseUserDOS = comMngPopulationHouseUserDAO.selectList((new QueryWrapper<ComMngPopulationHouseUserDO>().lambda().eq(ComMngPopulationHouseUserDO::getPopulId, populationId)));
        // 设置户主关系
        List<ComMngPopulationHouseUserDO> comMngPopulationHouseUserDOS =
            comMngPopulationHouseUserDAO.selectList((new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
                .eq(ComMngPopulationHouseUserDO::getPopulId, populationId)));
        if (!comMngPopulationHouseUserDOS.isEmpty()) {
            comMngPopulationVO.setRelation(comMngPopulationHouseUserDOS.get(comMngPopulationHouseUserDOS.size() - 1).getRelation());
            comMngPopulationVO
                .setRelation(comMngPopulationHouseUserDOS.get(comMngPopulationHouseUserDOS.size() - 1).getRelation());
        }
        //设置年龄
        // 设置年龄
        if (StringUtils.isNotEmpty(comMngPopulationVO.getBirthday())) {
            comMngPopulationVO.setAge(AgeUtils.getAgeFromBirthTimes(comMngPopulationVO.getBirthday()));
        }
        // 设置特殊群体标签
        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
            comMngPopulationCommunityTagsDAO.selectOne(new QueryWrapper<ComMngPopulationCommunityTagsDO>().lambda()
                    .eq(ComMngPopulationCommunityTagsDO::getPopulationId, populationId)
                    .eq(ComMngPopulationCommunityTagsDO::getCommunityId, communityId));
        if (null != comMngPopulationCommunityTagsDO) {
            comMngPopulationVO.setLabel(comMngPopulationCommunityTagsDO.getLabel());
        }
        //查询当前用户电子档信息
        // 查询当前用户电子档信息
        if (!StringUtils.isEmpty(comMngPopulationDO.getCardNo())) {
            UserElectronicFileVO electronicFileVO = populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
            UserElectronicFileVO electronicFileVO =
                populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
            if (electronicFileVO != null) {
                comMngPopulationVO.setUserElectronicFileVO(electronicFileVO);
                //查询家庭成员信息
                List<ComMngFamilyInfoVO> familyInfoVOList = populationDAO.listFamilyByUserId(electronicFileVO.getUserId());
                // 查询家庭成员信息
                List<ComMngFamilyInfoVO> familyInfoVOList =
                    populationDAO.listFamilyByUserId(electronicFileVO.getUserId());
                if (!familyInfoVOList.isEmpty()) {
                    comMngPopulationVO.setFamilyInfoVOList(familyInfoVOList);
                }
            }
        }
        //查询当前用户房屋信息
        // 查询当前用户房屋信息
        List<ComMngHouseVo> houseList = comMngPopulationHouseDAO.getPopulHouseListByPopulId(populationId);
        if (!houseList.isEmpty()) {
            houseList.forEach(house -> {
@@ -237,127 +278,173 @@
            comMngPopulationVO.setHouseList(houseList);
        }
        //查询当前实有人口车辆信息
        // 查询当前实有人口车辆信息
        List<ComMngPopulationCarVO> carList = comMngCarDAO.getPopulationCarListByIdCard(comMngPopulationDO.getCardNo());
        if (!carList.isEmpty()) {
            comMngPopulationVO.setCarList(carList);
        }
        //吸毒信息
        List<ComDrugPopulationVO> comDrugPopulationVOs = new ArrayList<>();
        List<ComDrugPopulationDO> comDrugPopulationDOs = comDrugPopulationDAO.selectList(new QueryWrapper<ComDrugPopulationDO>().
                lambda().eq(ComDrugPopulationDO::getPopulationId, populationId));
        if (!comDrugPopulationDOs.isEmpty()) {
            comDrugPopulationDOs.forEach(comDrugPopulationDO -> {
                ComDrugPopulationVO comDrugPopulationVO = new ComDrugPopulationVO();
                BeanUtils.copyProperties(comDrugPopulationDO, comDrugPopulationVO);
                comDrugPopulationVOs.add(comDrugPopulationVO);
                comMngPopulationVO.setComDrugPopulationVOs(comDrugPopulationVOs);
            });
        }
        if (communityId != null){
            // 吸毒信息
            List<ComDrugPopulationVO> comDrugPopulationVOs = new ArrayList<>();
            List<ComDrugPopulationDO> comDrugPopulationDOs = comDrugPopulationDAO.selectList(
                    new QueryWrapper<ComDrugPopulationDO>().lambda().eq(ComDrugPopulationDO::getPopulationId, populationId)
                            .eq(ComDrugPopulationDO::getCommunityId, communityId));
            if (!comDrugPopulationDOs.isEmpty()) {
                comDrugPopulationDOs.forEach(comDrugPopulationDO -> {
                    ComDrugPopulationVO comDrugPopulationVO = new ComDrugPopulationVO();
                    BeanUtils.copyProperties(comDrugPopulationDO, comDrugPopulationVO);
                    comDrugPopulationVOs.add(comDrugPopulationVO);
                    comMngPopulationVO.setComDrugPopulationVOs(comDrugPopulationVOs);
                });
            }
        //社区矫正信息
        List<ComCorrectPopulationVO> comCorrectPopulationVOS = new ArrayList<>();
        List<ComCorrectPopulationDO> comCorrectPopulationDOS = comCorrectPopulationDAO.selectList(new QueryWrapper<ComCorrectPopulationDO>().
                lambda().eq(ComCorrectPopulationDO::getPopulationId, populationId));
        if (!comCorrectPopulationDOS.isEmpty()) {
            comCorrectPopulationDOS.forEach(comCorrectPopulationDO -> {
                ComCorrectPopulationVO comCorrectPopulationVO = new ComCorrectPopulationVO();
                BeanUtils.copyProperties(comCorrectPopulationDO, comCorrectPopulationVO);
                comCorrectPopulationVOS.add(comCorrectPopulationVO);
                comMngPopulationVO.setComCorrectPopulationVOs(comCorrectPopulationVOS);
            });
        }
            // 社区矫正信息
            List<ComCorrectPopulationVO> comCorrectPopulationVOS = new ArrayList<>();
            List<ComCorrectPopulationDO> comCorrectPopulationDOS =
                    comCorrectPopulationDAO.selectList(new QueryWrapper<ComCorrectPopulationDO>().lambda()
                            .eq(ComCorrectPopulationDO::getPopulationId, populationId)
                            .eq(ComCorrectPopulationDO::getCommunityId, communityId));
            if (!comCorrectPopulationDOS.isEmpty()) {
                comCorrectPopulationDOS.forEach(comCorrectPopulationDO -> {
                    ComCorrectPopulationVO comCorrectPopulationVO = new ComCorrectPopulationVO();
                    BeanUtils.copyProperties(comCorrectPopulationDO, comCorrectPopulationVO);
                    comCorrectPopulationVOS.add(comCorrectPopulationVO);
                    comMngPopulationVO.setComCorrectPopulationVOs(comCorrectPopulationVOS);
                });
            }
        //精神障碍信息
        List<ComMajorPopulationVO> comMajorPopulationVOS = new ArrayList<>();
        List<ComMajorPopulationDO> comMajorPopulationDOs = comMajorPopulationDAO.selectList(new QueryWrapper<ComMajorPopulationDO>().
                lambda().eq(ComMajorPopulationDO::getPopulationId, populationId));
        if (!comMajorPopulationDOs.isEmpty()) {
            comMajorPopulationDOs.forEach(comMajorPopulationDO -> {
                ComMajorPopulationVO comMajorPopulationVO = new ComMajorPopulationVO();
                BeanUtils.copyProperties(comMajorPopulationDO, comMajorPopulationVO);
                comMajorPopulationVOS.add(comMajorPopulationVO);
                comMngPopulationVO.setComMajorPopulationVOs(comMajorPopulationVOS);
            });
        }
            // 精神障碍信息
            List<ComMajorPopulationVO> comMajorPopulationVOS = new ArrayList<>();
            List<ComMajorPopulationDO> comMajorPopulationDOs = comMajorPopulationDAO.selectList(
                    new QueryWrapper<ComMajorPopulationDO>().lambda().eq(ComMajorPopulationDO::getPopulationId, populationId)
                            .eq(ComMajorPopulationDO::getCommunityId, communityId));
            if (!comMajorPopulationDOs.isEmpty()) {
                comMajorPopulationDOs.forEach(comMajorPopulationDO -> {
                    ComMajorPopulationVO comMajorPopulationVO = new ComMajorPopulationVO();
                    BeanUtils.copyProperties(comMajorPopulationDO, comMajorPopulationVO);
                    comMajorPopulationVOS.add(comMajorPopulationVO);
                    comMngPopulationVO.setComMajorPopulationVOs(comMajorPopulationVOS);
                });
            }
        //邪教信息
        List<ComCultPopulationVO> comCultPopulationVOS = new ArrayList<>();
        List<ComCultPopulationDO> comCultPopulationDOS = comCultPopulationDAO.selectList(new QueryWrapper<ComCultPopulationDO>().
                lambda().eq(ComCultPopulationDO::getPopulationId, populationId));
        if (!comCultPopulationDOS.isEmpty()) {
            comCultPopulationDOS.forEach(comCultPopulationDO -> {
                ComCultPopulationVO comCultPopulationVO = new ComCultPopulationVO();
                BeanUtils.copyProperties(comCultPopulationDO, comCultPopulationVO);
                comCultPopulationVOS.add(comCultPopulationVO);
                comMngPopulationVO.setComCultPopulationVOs(comCultPopulationVOS);
            });
        }
            // 邪教信息
            List<ComCultPopulationVO> comCultPopulationVOS = new ArrayList<>();
            List<ComCultPopulationDO> comCultPopulationDOS = comCultPopulationDAO.selectList(
                    new QueryWrapper<ComCultPopulationDO>().lambda().eq(ComCultPopulationDO::getPopulationId, populationId)
                            .eq(ComCultPopulationDO::getCommunityId, communityId));
            if (!comCultPopulationDOS.isEmpty()) {
                comCultPopulationDOS.forEach(comCultPopulationDO -> {
                    ComCultPopulationVO comCultPopulationVO = new ComCultPopulationVO();
                    BeanUtils.copyProperties(comCultPopulationDO, comCultPopulationVO);
                    comCultPopulationVOS.add(comCultPopulationVO);
                    comMngPopulationVO.setComCultPopulationVOs(comCultPopulationVOS);
                });
            }
        //刑释信息
        List<ComRehabilitationPopulationVO> comRehabilitationPopulationVOS = new ArrayList<>();
        List<ComRehabilitationPopulationDO> comRehabilitationPopulationDOS = comRehabilitationPopulationDAO.selectList(new QueryWrapper<ComRehabilitationPopulationDO>().
                lambda().eq(ComRehabilitationPopulationDO::getPopulationId, populationId));
        if (!comRehabilitationPopulationDOS.isEmpty()) {
            comRehabilitationPopulationDOS.forEach(comRehabilitationPopulationDO -> {
                ComRehabilitationPopulationVO comRehabilitationPopulationVO = new ComRehabilitationPopulationVO();
                BeanUtils.copyProperties(comRehabilitationPopulationDO, comRehabilitationPopulationVO);
                comRehabilitationPopulationVOS.add(comRehabilitationPopulationVO);
                comMngPopulationVO.setComRehabilitationPopulationVOs(comRehabilitationPopulationVOS);
            });
        }
            // 刑释信息
            List<ComRehabilitationPopulationVO> comRehabilitationPopulationVOS = new ArrayList<>();
            List<ComRehabilitationPopulationDO> comRehabilitationPopulationDOS =
                    comRehabilitationPopulationDAO.selectList(new QueryWrapper<ComRehabilitationPopulationDO>().lambda()
                            .eq(ComRehabilitationPopulationDO::getPopulationId, populationId)
                            .eq(ComRehabilitationPopulationDO::getCommunityId, communityId));
            if (!comRehabilitationPopulationDOS.isEmpty()) {
                comRehabilitationPopulationDOS.forEach(comRehabilitationPopulationDO -> {
                    ComRehabilitationPopulationVO comRehabilitationPopulationVO = new ComRehabilitationPopulationVO();
                    BeanUtils.copyProperties(comRehabilitationPopulationDO, comRehabilitationPopulationVO);
                    comRehabilitationPopulationVOS.add(comRehabilitationPopulationVO);
                    comMngPopulationVO.setComRehabilitationPopulationVOs(comRehabilitationPopulationVOS);
                });
            }
        //上访信息
        List<ComKeyPopulationVO> comKeyPopulationVOS = new ArrayList<>();
        List<ComKeyPopulationDO> comKeyPopulationDOS = comKeyPopulationDAO.selectList(new QueryWrapper<ComKeyPopulationDO>().
                lambda().eq(ComKeyPopulationDO::getPopulationId, populationId));
        if (!comKeyPopulationDOS.isEmpty()) {
            comKeyPopulationDOS.forEach(comKeyPopulationDO -> {
                ComKeyPopulationVO comKeyPopulationVO = new ComKeyPopulationVO();
                BeanUtils.copyProperties(comKeyPopulationDO, comKeyPopulationVO);
                comKeyPopulationVOS.add(comKeyPopulationVO);
                comMngPopulationVO.setComKeyPopulationVOs(comKeyPopulationVOS);
            });
        }
            // 上访信息
            List<ComKeyPopulationVO> comKeyPopulationVOS = new ArrayList<>();
            List<ComKeyPopulationDO> comKeyPopulationDOS = comKeyPopulationDAO.selectList(
                    new QueryWrapper<ComKeyPopulationDO>().lambda().eq(ComKeyPopulationDO::getPopulationId, populationId)
                            .eq(ComKeyPopulationDO::getCommunityId, communityId));
            if (!comKeyPopulationDOS.isEmpty()) {
                comKeyPopulationDOS.forEach(comKeyPopulationDO -> {
                    ComKeyPopulationVO comKeyPopulationVO = new ComKeyPopulationVO();
                    BeanUtils.copyProperties(comKeyPopulationDO, comKeyPopulationVO);
                    comKeyPopulationVOS.add(comKeyPopulationVO);
                    comMngPopulationVO.setComKeyPopulationVOs(comKeyPopulationVOS);
                });
            }
        //退役军人信息
        List<ComVeteransPopulationVO> comVeteransPopulationVOS = new ArrayList<>();
        List<ComVeteransPopulationDO> comVeteransPopulationDOS = comVeteransPopulationDAO.selectList(new QueryWrapper<ComVeteransPopulationDO>().
                lambda().eq(ComVeteransPopulationDO::getPopulationId, populationId));
        if (!comVeteransPopulationDOS.isEmpty()) {
            comVeteransPopulationDOS.forEach(comVeteransPopulationDO -> {
                ComVeteransPopulationVO comVeteransPopulationVO = new ComVeteransPopulationVO();
                BeanUtils.copyProperties(comVeteransPopulationDO, comVeteransPopulationVO);
                comVeteransPopulationVOS.add(comVeteransPopulationVO);
                comMngPopulationVO.setComVeteransPopulationVOs(comVeteransPopulationVOS);
            });
        }
            // 退役军人信息
            List<ComVeteransPopulationVO> comVeteransPopulationVOS = new ArrayList<>();
            List<ComVeteransPopulationDO> comVeteransPopulationDOS =
                    comVeteransPopulationDAO.selectList(new QueryWrapper<ComVeteransPopulationDO>().lambda()
                            .eq(ComVeteransPopulationDO::getPopulationId, populationId)
                            .eq(ComVeteransPopulationDO::getCommunityId, communityId));
            if (!comVeteransPopulationDOS.isEmpty()) {
                comVeteransPopulationDOS.forEach(comVeteransPopulationDO -> {
                    ComVeteransPopulationVO comVeteransPopulationVO = new ComVeteransPopulationVO();
                    BeanUtils.copyProperties(comVeteransPopulationDO, comVeteransPopulationVO);
                    comVeteransPopulationVOS.add(comVeteransPopulationVO);
                    comMngPopulationVO.setComVeteransPopulationVOs(comVeteransPopulationVOS);
                });
            }
        //残疾人信息
        List<ComDisabilityPopulationVO> comDisabilityPopulationVOS = new ArrayList<>();
        List<ComDisabilityPopulationDO> comDisabilityPopulationDOS = comDisabilityPopulationDAO.selectList(new QueryWrapper<ComDisabilityPopulationDO>().
                lambda().eq(ComDisabilityPopulationDO::getPopulationId, populationId));
        if (!comDisabilityPopulationDOS.isEmpty()) {
            comDisabilityPopulationDOS.forEach(comDisabilityPopulationDO -> {
                ComDisabilityPopulationVO comDisabilityPopulationVO = new ComDisabilityPopulationVO();
                BeanUtils.copyProperties(comDisabilityPopulationDO, comDisabilityPopulationVO);
                comDisabilityPopulationVOS.add(comDisabilityPopulationVO);
                comMngPopulationVO.setComDisabilityPopulationVOs(comDisabilityPopulationVOS);
            });
        }
            // 残疾人信息
            List<ComDisabilityPopulationVO> comDisabilityPopulationVOS = new ArrayList<>();
            List<ComDisabilityPopulationDO> comDisabilityPopulationDOS =
                    comDisabilityPopulationDAO.selectList(new QueryWrapper<ComDisabilityPopulationDO>().lambda()
                            .eq(ComDisabilityPopulationDO::getPopulationId, populationId)
                            .eq(ComDisabilityPopulationDO::getCommunityId, communityId));
            if (!comDisabilityPopulationDOS.isEmpty()) {
                comDisabilityPopulationDOS.forEach(comDisabilityPopulationDO -> {
                    ComDisabilityPopulationVO comDisabilityPopulationVO = new ComDisabilityPopulationVO();
                    BeanUtils.copyProperties(comDisabilityPopulationDO, comDisabilityPopulationVO);
                    comDisabilityPopulationVOS.add(comDisabilityPopulationVO);
                    comMngPopulationVO.setComDisabilityPopulationVOs(comDisabilityPopulationVOS);
                });
            }
        //低保户信息
        List<ComLowSecurityPopulationVO> comLowSecurityPopulationVOS = new ArrayList<>();
        List<ComLowSecurityPopulationDO> comLowSecurityPopulationDOS = comLowSecurityPopulationDAO.selectList(new QueryWrapper<ComLowSecurityPopulationDO>().
                lambda().eq(ComLowSecurityPopulationDO::getPopulationId, populationId));
        if (!comLowSecurityPopulationDOS.isEmpty()) {
            comLowSecurityPopulationDOS.forEach(comLowSecurityPopulationDO -> {
                ComLowSecurityPopulationVO comLowSecurityPopulationVO = new ComLowSecurityPopulationVO();
                BeanUtils.copyProperties(comLowSecurityPopulationDO, comLowSecurityPopulationVO);
                comLowSecurityPopulationVOS.add(comLowSecurityPopulationVO);
                comMngPopulationVO.setComLowSecurityPopulationVOs(comLowSecurityPopulationVOS);
            });
            // 低保户信息
            List<ComLowSecurityPopulationVO> comLowSecurityPopulationVOS = new ArrayList<>();
            List<ComLowSecurityPopulationDO> comLowSecurityPopulationDOS =
                    comLowSecurityPopulationDAO.selectList(new QueryWrapper<ComLowSecurityPopulationDO>().lambda()
                            .eq(ComLowSecurityPopulationDO::getPopulationId, populationId)
                            .eq(ComLowSecurityPopulationDO::getCommunityId, communityId));
            if (!comLowSecurityPopulationDOS.isEmpty()) {
                comLowSecurityPopulationDOS.forEach(comLowSecurityPopulationDO -> {
                    ComLowSecurityPopulationVO comLowSecurityPopulationVO = new ComLowSecurityPopulationVO();
                    BeanUtils.copyProperties(comLowSecurityPopulationDO, comLowSecurityPopulationVO);
                    comLowSecurityPopulationVOS.add(comLowSecurityPopulationVO);
                    comMngPopulationVO.setComLowSecurityPopulationVOs(comLowSecurityPopulationVOS);
                });
            }
            // 高龄老人信息
            List<ComElderAuthElderliesVO> comElderAuthElderliesVOList = new ArrayList<>();
            List<ComElderAuthElderliesDO> comElderAuthElderliesDOS =
                    comElderAuthElderliesDAO.selectList(new QueryWrapper<ComElderAuthElderliesDO>().lambda()
                            .eq(ComElderAuthElderliesDO::getPopulationId, populationId)
                            .eq(ComElderAuthElderliesDO::getCommunityId, communityId));
            if (!comElderAuthElderliesDOS.isEmpty()) {
                comElderAuthElderliesDOS.forEach(comElderAuthElderliesDO -> {
                    ComElderAuthElderliesVO comElderAuthElderliesVO = new ComElderAuthElderliesVO();
                    BeanUtils.copyProperties(comElderAuthElderliesDO, comElderAuthElderliesVO);
                    comElderAuthElderliesVOList.add(comElderAuthElderliesVO);
                    comMngPopulationVO.setComElderAuthElderliesVOList(comElderAuthElderliesVOList);
                });
            }
            // 养老人员信息
            List<ComPensionAuthPensionerVO> comPensionAuthPensionerVOList = new ArrayList<>();
            List<ComPensionAuthPensionerDO> comPensionAuthPensionerDOS =
                    comPensionAuthPensionerDAO.selectList(new QueryWrapper<ComPensionAuthPensionerDO>().lambda()
                            .eq(ComPensionAuthPensionerDO::getPopulationId, populationId)
                            .eq(ComPensionAuthPensionerDO::getCommunityId, communityId));
            if (!comPensionAuthPensionerDOS.isEmpty()) {
                comPensionAuthPensionerDOS.forEach(comPensionAuthPensionerDO -> {
                    ComPensionAuthPensionerVO comPensionAuthPensionerVO = new ComPensionAuthPensionerVO();
                    BeanUtils.copyProperties(comPensionAuthPensionerDO, comPensionAuthPensionerVO);
                    comPensionAuthPensionerVOList.add(comPensionAuthPensionerVO);
                    comMngPopulationVO.setComPensionAuthPensionerVOList(comPensionAuthPensionerVOList);
                });
            }
        }
        return R.ok(comMngPopulationVO);
    }
@@ -365,7 +452,8 @@
    /**
     * 分页查询社区
     *
     * @param comMngPopulationVO 查询参数
     * @param comMngPopulationVO
     *            查询参数
     * @return 分页集合
     */
    @Override
@@ -391,25 +479,27 @@
                        break;
                    case 2:
                        comMngPopulationVO.setRoad(houseDO.getAlley());
                        comMngPopulationVO.setDoorNo(houseDO.getHouseNum());
//                        comMngPopulationVO.setDoorNo(houseDO.getHouseNum());
                        break;
                    case 3:
                        comMngPopulationVO.setRoad(houseDO.getAlley());
                        comMngPopulationVO.setDoorNo(houseDO.getHouseNum());
                        comMngPopulationVO.setFloor(houseDO.getFloor());
//                        comMngPopulationVO.setFloor(houseDO.getFloor());
                        break;
                    case 4:
                        comMngPopulationVO.setRoad(houseDO.getAlley());
                        comMngPopulationVO.setDoorNo(houseDO.getHouseNum());
                        comMngPopulationVO.setFloor(houseDO.getFloor());
                        comMngPopulationVO.setUnitNo(houseDO.getUnitNo());
//                        comMngPopulationVO.setUnitNo(houseDO.getUnitNo());
                        break;
                    case 5:
                        comMngPopulationVO.setRoad(houseDO.getAlley());
                        comMngPopulationVO.setDoorNo(houseDO.getHouseNum());
                        comMngPopulationVO.setFloor(houseDO.getFloor());
                        comMngPopulationVO.setUnitNo(houseDO.getUnitNo());
                        comMngPopulationVO.setHouseNo(houseDO.getHouseNo());
                        if(comMngPopulationVO.getLevelIsAll() == null){
                            comMngPopulationVO.setHouseNo(houseDO.getHouseNo());
                        }
                        break;
                    default:
                        break;
@@ -418,27 +508,32 @@
        }
        if (StringUtils.isNotEmpty(comMngPopulationVO.getAgeStart())) {
            String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(new Date(), -(Integer.parseInt(comMngPopulationVO.getAgeStart()))), "yyyy-MM-dd");
            String ageStartTime = DateUtils.getDateFormatString(
                DateUtils.yearAddNum(new Date(), -(Integer.parseInt(comMngPopulationVO.getAgeStart()))), "yyyy-MM-dd");
            if (StringUtils.isNotEmpty(ageStartTime)) {
                comMngPopulationVO.setAgeStartTime(ageStartTime);
            }
        }
        if (StringUtils.isNotEmpty(comMngPopulationVO.getAgeEnd())) {
            String ageEndTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(new Date(), -(Integer.parseInt(comMngPopulationVO.getAgeEnd()))), "yyyy-MM-dd");
            String ageEndTime = DateUtils.getDateFormatString(
                DateUtils.yearAddNum(new Date(), -(Integer.parseInt(comMngPopulationVO.getAgeEnd()))), "yyyy-MM-dd");
            if (StringUtils.isNotEmpty(ageEndTime)) {
                comMngPopulationVO.setAgeEndTime(ageEndTime);
            }
        }
        if (comMngPopulationVO.getAgeStartTime() !=null && !"".equals(comMngPopulationVO.getAgeStartTime()) && comMngPopulationVO.getAgeEndTime() !=null && !"".equals(comMngPopulationVO.getAgeEndTime())){
        if (comMngPopulationVO.getAgeStartTime() != null && !"".equals(comMngPopulationVO.getAgeStartTime())
            && comMngPopulationVO.getAgeEndTime() != null && !"".equals(comMngPopulationVO.getAgeEndTime())) {
            if (comMngPopulationVO.getAgeStartTime().equals(comMngPopulationVO.getAgeEndTime())) {
                Date endAge = DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(), new SimpleDateFormat("yyyy-MM-dd"));
                Date endAge =
                    DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(), new SimpleDateFormat("yyyy-MM-dd"));
                String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(endAge, -1), "yyyy-MM-dd");
                if (StringUtils.isNotEmpty(ageStartTime)) {
                    comMngPopulationVO.setAgeStartTimeEnd(ageStartTime);
                }
            } else {
                Date endAge = DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(), new SimpleDateFormat("yyyy-MM-dd"));
                Date endAge =
                    DateUtils.stringToDate(comMngPopulationVO.getAgeEndTime(), new SimpleDateFormat("yyyy-MM-dd"));
                String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(endAge, -1), "yyyy-MM-dd");
                if (StringUtils.isNotEmpty(ageStartTime)) {
                    comMngPopulationVO.setAgeEndTimeEnd(ageStartTime);
@@ -452,7 +547,8 @@
                    populDO.setAge(AgeUtils.getAgeFromBirthTimes(populDO.getBirthday()));
                    populDO.setRelationName(PopulRelationEnum.getCnDescByName(populDO.getRelation()));
                    populDO.setCultureLevelName(PopulCultureLevelEnum.getCnDescByName(populDO.getCultureLevel()));
                    populDO.setPoliticalOutlookName(PopulPoliticalOutlookEnum.getCnDescByName(populDO.getPoliticalOutlook()));
                    populDO.setPoliticalOutlookName(
                        PopulPoliticalOutlookEnum.getCnDescByName(populDO.getPoliticalOutlook()));
                    populDO.setMarriageName(PopulMarriageEnum.getCnDescByName(populDO.getMarriage()));
                }
            });
@@ -463,7 +559,8 @@
    /**
     * 删除实有人口
     *
     * @param populationId 实有人口id
     * @param populationId
     *            实有人口id
     * @return 删除结果
     */
    @Override
@@ -482,7 +579,8 @@
     */
    @Override
    public R listPopulationAll() {
        List<ComMngPopulationDO> populationDOS = populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda().orderByDesc(ComMngPopulationDO::getCreateAt));
        List<ComMngPopulationDO> populationDOS = populationDAO
            .selectList(new QueryWrapper<ComMngPopulationDO>().lambda().orderByDesc(ComMngPopulationDO::getCreateAt));
        List<ComMngPopulationVO> populationVOS = new ArrayList<>();
        if (!ObjectUtils.isEmpty(populationDOS)) {
            populationDOS.forEach(comActDO -> {
@@ -496,107 +594,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSavePopulation(List<ComMngPopulationServeExcelVO> list, Long communityId){
        //需要新增的房屋集合
    public R listSavePopulation(List<ComMngPopulationServeExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            log.info("查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationServeExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -607,61 +721,65 @@
                    address.append(vo.getHouseNo()).append("号");
                }
                vo.setAddress(address.toString());
                log.info("开始查询小区街路巷是否存在完成");
                log.info("查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = savePopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO =
                            savePopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                log.info("查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updatePopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO = updatePopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = savePopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = savePopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
@@ -672,34 +790,93 @@
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
            log.info("数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
            log.info("数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
            // this.updateBatchById(updateList);
            log.info("数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
            log.info("数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -712,107 +889,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveDrugPopulation(List<ComMngPopulationDrugExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveDrugPopulation(List<ComMngPopulationDrugExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationDrugMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationDrugExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setDrugMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -826,96 +1019,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveDrugPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveDrugPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateDrugPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateDrugPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveDrugPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveDrugPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setDrugMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -928,107 +1185,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveCorrectPopulation(List<ComMngPopulationCorrectExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveCorrectPopulation(List<ComMngPopulationCorrectExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationCorrectMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationCorrectExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationCorrectMistakeExcelVO mistake = new ComMngPopulationCorrectMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setCorrectMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -1042,96 +1315,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveCorrectPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveCorrectPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateCorrectPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateCorrectPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveCorrectPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveCorrectPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationCorrectMistakeExcelVO mistake = new ComMngPopulationCorrectMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setCorrectMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -1144,107 +1481,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveMajorPopulation(List<ComMngPopulationMajorExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveMajorPopulation(List<ComMngPopulationMajorExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationMajorMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationMajorExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationMajorMistakeExcelVO mistake = new ComMngPopulationMajorMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setMajorMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -1258,96 +1611,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveMajorPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveMajorPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateMajorPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateMajorPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveMajorPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveMajorPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationMajorMistakeExcelVO mistake = new ComMngPopulationMajorMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setMajorMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -1360,107 +1777,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveCultPopulation(List<ComMngPopulationCultExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveCultPopulation(List<ComMngPopulationCultExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationCultMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationCultExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationCultMistakeExcelVO mistake = new ComMngPopulationCultMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setCultMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -1474,96 +1907,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveCultPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveCultPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateCultPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateCultPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveCultPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveCultPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    } else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationCultMistakeExcelVO mistake = new ComMngPopulationCultMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setCultMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -1576,107 +2073,125 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveRehabilitationPopulation(List<ComMngPopulationRehabilitationExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveRehabilitationPopulation(List<ComMngPopulationRehabilitationExcelVO> list, Long communityId,
        Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationRehabilitationMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationRehabilitationExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                    ComMngPopulationRehabilitationMistakeExcelVO mistake = new ComMngPopulationRehabilitationMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                } else {
                    ComMngPopulationRehabilitationMistakeExcelVO mistake =
                        new ComMngPopulationRehabilitationMistakeExcelVO();
                    BeanUtils.copyProperties(vo, mistake);
                    setRehabilitationMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -1690,96 +2205,161 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveRehabilitationPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveRehabilitationPopulationHouse(vo, comMngVillageDO, communityId,
                            areaPath, populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateRehabilitationPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateRehabilitationPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveRehabilitationPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveRehabilitationPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationRehabilitationMistakeExcelVO mistake =
                                new ComMngPopulationRehabilitationMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setRehabilitationMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -1792,107 +2372,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveKeyPopulation(List<ComMngPopulationKeyExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveKeyPopulation(List<ComMngPopulationKeyExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationKeyMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationKeyExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationKeyMistakeExcelVO mistake = new ComMngPopulationKeyMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setKeyMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -1906,96 +2502,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveKeyPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveKeyPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateKeyPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateKeyPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveKeyPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveKeyPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationKeyMistakeExcelVO mistake = new ComMngPopulationKeyMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setKeyMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -2008,107 +2668,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveSentencePopulation(List<ComMngPopulationSentenceExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveSentencePopulation(List<ComMngPopulationSentenceExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationSentenceMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationSentenceExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setSentenceMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -2122,96 +2798,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveSentencePopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveSentencePopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateSentencePopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateSentencePopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveSentencePopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveSentencePopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    } else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setSentenceMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -2224,107 +2964,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveVeteransPopulation(List<ComMngPopulationVeteransExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveVeteransPopulation(List<ComMngPopulationVeteransExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationVeteransMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationVeteransExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationVeteransMistakeExcelVO mistake = new ComMngPopulationVeteransMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setVeteransMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -2338,96 +3094,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveVeteransPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveVeteransPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateVeteransPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateVeteransPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveVeteransPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveVeteransPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    }else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationVeteransMistakeExcelVO mistake = new ComMngPopulationVeteransMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setVeteransMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -2440,107 +3260,123 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveDisabilityPopulation(List<ComMngPopulationDisabilityExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveDisabilityPopulation(List<ComMngPopulationDisabilityExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationDisabilityMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationDisabilityExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setDisabilityMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -2554,96 +3390,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveDisabilityPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveDisabilityPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateDisabilityPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateDisabilityPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveDisabilityPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveDisabilityPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    } else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setDisabilityMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -2656,111 +3556,128 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveLowSecurityPopulation(List<ComMngPopulationLowSecurityExcelVO> list, Long communityId) {
        //需要新增的房屋集合
    public R listSaveLowSecurityPopulation(List<ComMngPopulationLowSecurityExcelVO> list, Long communityId,
        Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        //需要新增的人口集合
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        //需要修改的人口集合
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        //需要新增的吸毒人员集合
        // 需要新增的吸毒人员集合
        List<ComDrugPopulationDO> saveDrugList = new ArrayList<>();
        //需要修改的吸毒人员集合
        // 需要修改的吸毒人员集合
        List<ComDrugPopulationDO> updateDrugList = new ArrayList<>();
        //需要新增的人口与房屋关系集合
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationLowSecurityMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            //查询社区信息
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if(populationActVO == null){
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            //查询当前社区标签列表
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(new QueryWrapper<ComMngUserTagDO>().eq("sys_flag", 1).or().eq("community_id", communityId));
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName()).collect(Collectors.toList());
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                    .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">").append(populationActVO.getDistrictName()).append(">");
            //处理实有人口信息
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            //查询所有人口数据放入HashMap中
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String,Object> populationMap = new HashMap<>();
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key,population);
                populationMap.put(key, population);
            });
            //查询所有房屋信息放入到HashMap中
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String,Object> houseMap = new HashMap<>();
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo() + house.getHouseNo();
                houseMap.put(key,house);
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                    + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String,Object> villageMap = new HashMap<>();
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key,village);
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String,Object> houseUserMap = new HashMap<>();
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key,houseUser);
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationLowSecurityExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号",""));
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if(vo.getFloor().contains("栋")){
                        vo.setFloor(vo.getFloor().replace("栋",""));
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if(vo.getUnitNo().contains("单元")){
                        vo.setUnitNo(vo.getUnitNo().replace("单元",""));
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if(vo.getHouseNo().contains("号")){
                        vo.setHouseNo(vo.getHouseNo().replace("号",""));
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                //查询小区街路巷是否存在
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if(!isOnly(villageKey,villageMap)){
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                }else{
                } else {
                    ComMngPopulationLowSecurityMistakeExcelVO mistake = new ComMngPopulationLowSecurityMistakeExcelVO();
                    BeanUtils.copyProperties(vo,mistake);
                    BeanUtils.copyProperties(vo, mistake);
                    setLowSecurityMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:"+ vo.getRoad() +",小区号:" + vo.getDoorNo());
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName()).append(populationActVO.getDistrictName())
                        .append(populationActVO.getStreetName()).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                    .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                    .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
@@ -2774,96 +3691,160 @@
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                //先判断房屋是否存在
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey = communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if(isOnly(houseKey,houseMap)){
                    if(!houseList.isEmpty()){
                        for (ComMngPopulationHouseDO house:houseList) {
                            if(house.getVillageId().equals(comMngVillageDO.getVillageId()) && house.getCommunityId().equals(communityId)
                                    && house.getFloor().equals(vo.getFloor()) && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())){
                String houseKey =
                    communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                && house.getUnitNo().equals(vo.getUnitNo())
                                && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if(populationHouseDO == null){
                        //房屋信息不存在建立房屋信息
                        populationHouseDO = saveLowSecurityPopulationHouse(vo, comMngVillageDO, communityId, areaPath, populationActVO.getName());
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveLowSecurityPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                            populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                }else{
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    //空户处理完房屋信息,直接返回
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                //判断实有人口是否已存在
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if(!isOnly(populationKey,populationMap)){
                    //存在实有人口信息,则更新
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO = updateLowSecurityPopulationDO(vo,populationDO,labelList);
                    ComMngPopulationDO updatePopulationDO =
                        updateLowSecurityPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                }else{
                    //不存在实有人口,则新增
                    populationDO = saveLowSecurityPopulationDO(vo, populationActVO, comMngVillageDO,labelList);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveLowSecurityPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                //处理实有人口房屋居住信息
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if(isOnly(houseUserKey,houseUserMap)){
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
//                        populationHouseUserDO.setRelation(vo.getRelation());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
//                        populationHouseUserDO.setResidence(vo.getResidence());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                            .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    } else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        comMngPopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationLowSecurityMistakeExcelVO mistake = new ComMngPopulationLowSecurityMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setLowSecurityMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        }catch (Exception e){
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if(!houseList.isEmpty()){
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if(!saveList.isEmpty()){
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if(!updateList.isEmpty()){
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
//            this.updateBatchById(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if(!houseUserList.isEmpty()){
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
@@ -2874,328 +3855,1181 @@
        return R.ok(mistakes);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSaveEdlerPopulation(List<ComMngPopulationElderExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
    private ComMngPopulationDO updatePopulationDO(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
        BeanUtils.copyProperties(vo, populationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        log.info("开始处理导入数据");
        List<ComMngPopulationElderMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO
                    .selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                        .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                    .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key, population);
            });
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                        + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                    comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationElderExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                } else {
                    ComMngPopulationElderMistakeExcelVO mistake = new ComMngPopulationElderMistakeExcelVO();
                    BeanUtils.copyProperties(vo, mistake);
                    setElderMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                        .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                        .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    address.append(vo.getUnitNo()).append("单元");
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    address.append(vo.getHouseNo()).append("号");
                }
                vo.setAddress(address.toString());
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey =
                        communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                    && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                    && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = saveElderPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                                populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO =
                            updateElderPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = saveElderPopulationDO(vo, populationActVO, comMngVillageDO, userId,communityId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    } else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if(StringUtils.isNotEmpty(comMngPopulationCommunityTagsDO.getLabel())
                                    && comMngPopulationCommunityTagsDO.getLabel().contains(s)){
                                iterator.remove();
                            }
                        }
                        if(userTag != null && userTag.size() > 0){
                            comMngPopulationCommunityTagsDO.setLabel(comMngPopulationCommunityTagsDO.getLabel() + "," + Joiner.on(",").join(userTag));
                        }
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationElderMistakeExcelVO mistake = new ComMngPopulationElderMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setElderMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
        if (!mistakes.isEmpty()) {
            log.info("返回错误数据");
            return R.fail(mistakes);
        }
        return R.ok(mistakes);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R listSavePensionPopulation(List<ComMngPopulationPensionExcelVO> list, Long communityId, Long userId) {
        // 需要新增的房屋集合
        List<ComMngPopulationHouseDO> houseList = new ArrayList<>();
        // 需要新增的人口集合
        List<ComMngPopulationDO> saveList = new ArrayList<>();
        // 需要修改的人口集合
        List<ComMngPopulationDO> updateList = new ArrayList<>();
        // 需要新增的人口与房屋关系集合
        List<ComMngPopulationHouseUserDO> houseUserList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> savePopulationCommunityList = new ArrayList<>();
        // 需要新增的人口与社区关系集合
        List<ComMngPopulationCommunityTagsDO> updatePopulationCommunityList = new ArrayList<>();
        log.info("开始处理导入数据");
        List<ComMngPopulationPensionMistakeExcelVO> mistakes = new ArrayList<>();
        try {
            // 查询社区信息
            log.info("开始查询社区信息数据");
            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(communityId);
            if (populationActVO == null) {
                log.error("未查询到社区信息");
                return R.fail("未查询到社区信息");
            }
            log.info("开始查询社区信息数据完成");
            // 查询当前社区标签列表
            List<String> labelList = new ArrayList<>();
            List<ComMngUserTagDO> comMngUserTagDOS = comMngUserTagDAO.selectList(null);
            if (!ObjectUtils.isEmpty(comMngUserTagDOS)) {
                labelList = comMngUserTagDOS.stream().map(comMngUserTagDO -> comMngUserTagDO.getTagName())
                        .collect(Collectors.toList());
            }
            StringBuilder areaPath = new StringBuilder();
            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
                    .append(">").append(populationActVO.getDistrictName()).append(">");
            // 处理实有人口信息
            Integer nub = 1;
            // 查询所有人口数据放入HashMap中
            List<ComMngPopulationDO> populationList = this.baseMapper.selectList(null);
            HashMap<String, Object> populationMap = new HashMap<>();
            populationList.forEach(population -> {
                String key = population.getCardNo();
                populationMap.put(key, population);
            });
            // 查询所有房屋信息放入到HashMap中
            List<ComMngPopulationHouseDO> houseLists = comMngPopulationHouseDAO.selectList(null);
            HashMap<String, Object> houseMap = new HashMap<>();
            houseLists.forEach(house -> {
                String key = house.getCommunityId() + house.getVillageId() + house.getFloor() + house.getUnitNo()
                        + house.getHouseNo();
                houseMap.put(key, house);
            });
            List<ComMngVillageDO> villageList = comActVillageDAO.selectList(null);
            HashMap<String, Object> villageMap = new HashMap<>();
            villageList.forEach(village -> {
                String key = village.getCommunityId() + village.getAlley() + village.getHouseNum();
                villageMap.put(key, village);
            });
            List<ComMngPopulationHouseUserDO> houseUserLists = comMngPopulationHouseUserDAO.selectList(null);
            HashMap<String, Object> houseUserMap = new HashMap<>();
            houseUserLists.forEach(houseUser -> {
                String key = houseUser.getPopulId() + houseUser.getHouseId() + "";
                houseUserMap.put(key, houseUser);
            });
            List<ComMngPopulationCommunityTagsDO> populationCommunityLists =
                    comMngPopulationCommunityTagsDAO.selectList(null);
            HashMap<String, Object> populationCommunityMap = new HashMap<>();
            populationCommunityLists.forEach(populationCommunity -> {
                String key = populationCommunity.getPopulationId() + populationCommunity.getCommunityId() + "";
                populationCommunityMap.put(key, populationCommunity);
            });
            for (ComMngPopulationPensionExcelVO vo : list) {
                if (vo.getDoorNo().contains("号")) {
                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                }
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    if (vo.getFloor().contains("栋")) {
                        vo.setFloor(vo.getFloor().replace("栋", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    if (vo.getUnitNo().contains("单元")) {
                        vo.setUnitNo(vo.getUnitNo().replace("单元", ""));
                    }
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    if (vo.getHouseNo().contains("号")) {
                        vo.setHouseNo(vo.getHouseNo().replace("号", ""));
                    }
                }
                log.info("开始查询小区街路巷是否存在");
                // 查询小区街路巷是否存在
                ComMngVillageDO comMngVillageDO = null;
                String villageKey = communityId + vo.getRoad() + vo.getDoorNo();
                if (!isOnly(villageKey, villageMap)) {
                    comMngVillageDO = (ComMngVillageDO)villageMap.get(villageKey);
                } else {
                    ComMngPopulationPensionMistakeExcelVO mistake = new ComMngPopulationPensionMistakeExcelVO();
                    BeanUtils.copyProperties(vo, mistake);
                    setPensionMistake(mistake, vo);
                    mistake.setMistake("街路巷或小区号不存在,请先在“小区管理”中添加该小区:街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    mistakes.add(mistake);
                    log.info("未查询到街路巷:" + vo.getRoad() + ",小区号:" + vo.getDoorNo());
                    continue;
                }
                StringBuilder address = new StringBuilder();
                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
                        .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
                        .append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号");
                if (StringUtils.isNotEmpty(vo.getFloor())) {
                    address.append(vo.getFloor()).append("栋");
                }
                if (StringUtils.isNotEmpty(vo.getUnitNo())) {
                    address.append(vo.getUnitNo()).append("单元");
                }
                if (StringUtils.isNotEmpty(vo.getHouseNo())) {
                    address.append(vo.getHouseNo()).append("号");
                }
                vo.setAddress(address.toString());
                log.info("开始查询小区街路巷是否存在完成");
                log.info("开始查询房屋是否存在");
                // 先判断房屋是否存在
                ComMngPopulationHouseDO populationHouseDO = null;
                String houseKey =
                        communityId + comMngVillageDO.getVillageId() + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
                if (isOnly(houseKey, houseMap)) {
                    if (!houseList.isEmpty()) {
                        for (ComMngPopulationHouseDO house : houseList) {
                            if (house.getVillageId().equals(comMngVillageDO.getVillageId())
                                    && house.getCommunityId().equals(communityId) && house.getFloor().equals(vo.getFloor())
                                    && house.getUnitNo().equals(vo.getUnitNo())
                                    && house.getHouseNo().equals(vo.getHouseNo())) {
                                populationHouseDO = house;
                                break;
                            }
                        }
                    }
                    if (populationHouseDO == null) {
                        // 房屋信息不存在建立房屋信息
                        populationHouseDO = savePensionPopulationHouse(vo, comMngVillageDO, communityId, areaPath,
                                populationActVO.getName());
                        houseList.add(populationHouseDO);
                    }
                } else {
                    populationHouseDO = (ComMngPopulationHouseDO)houseMap.get(houseKey);
                }
                vo.setHouseId(populationHouseDO.getId());
                log.info("开始查询房屋是否存在完成");
                if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
                    // 空户处理完房屋信息,直接返回
                    continue;
                }
                String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
                // 判断实有人口是否已存在
                log.info("开始查询实有人口是否已存在");
                ComMngPopulationDO populationDO = null;
                String populationKey = vo.getCardNo();
                if (!isOnly(populationKey, populationMap)) {
                    // 存在实有人口信息,则更新
                    populationDO = (ComMngPopulationDO)populationMap.get(populationKey);
                    ComMngPopulationDO updatePopulationDO =
                            updatePensionPopulationDO(vo, populationDO, communityId, userId);
                    updateList.add(updatePopulationDO);
                } else {
                    // 不存在实有人口,则新增
                    populationDO = savePensionPopulationDO(vo, populationActVO, comMngVillageDO, userId);
                    saveList.add(populationDO);
                    populationMap.put(populationDO.getCardNo(),populationDO);
                }
                log.info("开始查询实有人口是否已存在完成");
                log.info("开始查询实有人口房屋居住信息");
                // 处理实有人口房屋居住信息
                if (populationDO != null) {
                    ComMngPopulationHouseUserDO populationHouseUserDO = null;
                    String houseUserKey = populationDO.getId() + populationHouseDO.getId() + "";
                    if (isOnly(houseUserKey, houseUserMap)) {
                        populationHouseUserDO = new ComMngPopulationHouseUserDO();
                        populationHouseUserDO.setId(Snowflake.getId());
                        populationHouseUserDO.setHouseId(populationHouseDO.getId());
                        populationHouseUserDO.setPopulId(populationDO.getId());
                        // populationHouseUserDO.setRelation(vo.getRelation());
                        populationHouseUserDO.setRelationId(vo.getIsRent());
                        // populationHouseUserDO.setResidence(vo.getResidence());
                        houseUserList.add(populationHouseUserDO);
                    }
                }
                log.info("开始查询实有人口房屋居住信息完成");
                log.info("开始查询实有人口存在社区信息");
                // 处理实有人口与社区关系以及对应特殊群体标签
                String populationCommunityKey = populationDO.getId() + populationActVO.getCommunityId() + "";
                if (populationDO != null) {
                    ComMngPopulationCommunityTagsDO cpopulationCommunityTagsDO = null;
                    if (isOnly(populationCommunityKey, populationCommunityMap)) {
                        // 实有人口不存在于当前社区
                        cpopulationCommunityTagsDO = new ComMngPopulationCommunityTagsDO();
                        cpopulationCommunityTagsDO.setId(Snowflake.getId());
                        cpopulationCommunityTagsDO.setPopulationId(populationDO.getId());
                        cpopulationCommunityTagsDO.setCommunityId(communityId);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if (!labelList.contains(s))
                                iterator.remove();
                        }
                        cpopulationCommunityTagsDO.setLabel(Joiner.on(",").join(userTag));
                        cpopulationCommunityTagsDO.setCreateBy(userId);
                        savePopulationCommunityList.add(cpopulationCommunityTagsDO);
                    } else {
                        // 实有人口存在于当前社区,则更新
                        ComMngPopulationCommunityTagsDO comMngPopulationCommunityTagsDO =
                                (ComMngPopulationCommunityTagsDO)populationCommunityMap.get(populationCommunityKey);
                        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0])
                                .collect(Collectors.toList());
                        // 如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
                        Iterator<String> iterator = userTag.iterator();
                        while (iterator.hasNext()) {
                            String s = iterator.next();
                            if(StringUtils.isNotEmpty(comMngPopulationCommunityTagsDO.getLabel())
                                    && comMngPopulationCommunityTagsDO.getLabel().contains(s)){
                                iterator.remove();
                            }
                        }
                        if(userTag != null && userTag.size() > 0){
                            comMngPopulationCommunityTagsDO.setLabel(comMngPopulationCommunityTagsDO.getLabel() + "," + Joiner.on(",").join(userTag));
                        }
                        comMngPopulationCommunityTagsDO.setUpdateBy(userId);
                        updatePopulationCommunityList.add(comMngPopulationCommunityTagsDO);
                        ComMngPopulationPensionMistakeExcelVO mistake = new ComMngPopulationPensionMistakeExcelVO();
                        BeanUtils.copyProperties(vo, mistake);
                        setPensionMistake(mistake, vo);
                        mistake.setMistake("该实有人口已存在于该社区,执行更新");
                        mistakes.add(mistake);
                    }
                }
                log.info("查询实有人口存在社区信息完成");
            }
        } catch (Exception e) {
            log.info("出现错误,错误原因:" + e.getMessage());
        }
        log.info("处理完成导入数据");
        log.info("开始执行数据库导入");
        if (!houseList.isEmpty()) {
            log.info("执行数据库导入房屋");
            comMngPopulationHouseDAO.insertAll(houseList);
            log.info("执行数据库导入房屋完成");
        }
        if (!saveList.isEmpty()) {
            log.info("执行数据库导入人口");
            this.baseMapper.insertAll(saveList);
            log.info("执行数据库导入人口完成");
        }
        if (!updateList.isEmpty()) {
            log.info("执行数据库更新人口");
            this.baseMapper.updateAll(updateList);
            // this.updateBatchById(updateList);
            log.info("执行数据库更新人口完成");
        }
        if (!houseUserList.isEmpty()) {
            log.info("执行数据库导入人口房屋关系");
            comMngPopulationHouseUserService.saveBatch(houseUserList);
            log.info("执行数据库导入人口房屋关系完成");
        }
        if (!savePopulationCommunityList.isEmpty()) {
            log.info("执行数据库导入人口社区关系");
            comMngPopulationCommunityTagsService.saveBatch(savePopulationCommunityList);
            log.info("数据库导入人口社区关系完成");
        }
        if (!updatePopulationCommunityList.isEmpty()) {
            log.info("执行数据库更新人口社区关系");
            comMngPopulationCommunityTagsDAO.updateAll(updatePopulationCommunityList);
            log.info("数据库更新人口社区关系完成");
        }
        log.info("执行数据库导入完成");
        if (!mistakes.isEmpty()) {
            log.info("返回错误数据");
            return R.fail(mistakes);
        }
        return R.ok(mistakes);
    }
    private ComMngPopulationDO updatePopulationDO(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO,
        Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        populationDO.setUpdateBy(userId);
        return populationDO;
    }
    private ComMngPopulationDO updateDrugPopulationDO(ComMngPopulationDrugExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateDrugPopulationDO(ComMngPopulationDrugExcelVO vo, ComMngPopulationDO populationDO,
        Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComDrugPopulationDO comDrugPopulationDO = comDrugPopulationDAO.selectOne(new QueryWrapper<ComDrugPopulationDO>().lambda()
                .eq(ComDrugPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comDrugPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComDrugPopulationDO comDrugPopulationDO = comDrugPopulationDAO.selectOne(new QueryWrapper<ComDrugPopulationDO>()
            .lambda().eq(ComDrugPopulationDO::getPopulationId, populationDO.getId()).eq(ComDrugPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comDrugPopulationDO.setCardNo(cardNoAES);
        comDrugPopulationDAO.updateById(comDrugPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comDrugPopulationDO != null) {
            BeanUtils.copyProperties(vo, comDrugPopulationDO);
            comDrugPopulationDO.setCardNo(cardNoAES);
            comDrugPopulationDAO.updateById(comDrugPopulationDO);
        } else {
            comDrugPopulationDO = new ComDrugPopulationDO();
            BeanUtils.copyProperties(vo, comDrugPopulationDO);
            comDrugPopulationDO.setId(Snowflake.getId());
            comDrugPopulationDO.setPopulationId(populationDO.getId());
            comDrugPopulationDO.setCommunityId(communityId);
            comDrugPopulationDO.setStreetId(populationDO.getStreetId());
            comDrugPopulationDAO.insert(comDrugPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateCorrectPopulationDO(ComMngPopulationCorrectExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateCorrectPopulationDO(ComMngPopulationCorrectExcelVO vo,
        ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComCorrectPopulationDO comCorrectPopulationDO = comCorrectPopulationDAO.selectOne(new QueryWrapper<ComCorrectPopulationDO>().lambda()
                .eq(ComCorrectPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comCorrectPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComCorrectPopulationDO comCorrectPopulationDO =
            comCorrectPopulationDAO.selectOne(new QueryWrapper<ComCorrectPopulationDO>().lambda()
                .eq(ComCorrectPopulationDO::getPopulationId, populationDO.getId()).eq(ComCorrectPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comCorrectPopulationDO.setCardNo(cardNoAES);
        comCorrectPopulationDAO.updateById(comCorrectPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comCorrectPopulationDO != null) {
            BeanUtils.copyProperties(vo, comCorrectPopulationDO);
            comCorrectPopulationDO.setCardNo(cardNoAES);
            comCorrectPopulationDAO.updateById(comCorrectPopulationDO);
        } else {
            comCorrectPopulationDO = new ComCorrectPopulationDO();
            BeanUtils.copyProperties(vo, comCorrectPopulationDO);
            comCorrectPopulationDO.setId(Snowflake.getId());
            comCorrectPopulationDO.setPopulationId(populationDO.getId());
            comCorrectPopulationDO.setCommunityId(communityId);
            comCorrectPopulationDO.setStreetId(populationDO.getStreetId());
            comCorrectPopulationDAO.insert(comCorrectPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateMajorPopulationDO(ComMngPopulationMajorExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateMajorPopulationDO(ComMngPopulationMajorExcelVO vo, ComMngPopulationDO populationDO,
        Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComMajorPopulationDO comMajorPopulationDO = comMajorPopulationDAO.selectOne(new QueryWrapper<ComMajorPopulationDO>().lambda()
                .eq(ComMajorPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comMajorPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComMajorPopulationDO comMajorPopulationDO =
            comMajorPopulationDAO.selectOne(new QueryWrapper<ComMajorPopulationDO>().lambda()
                .eq(ComMajorPopulationDO::getPopulationId, populationDO.getId()).eq(ComMajorPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comMajorPopulationDO.setCardNo(cardNoAES);
        comMajorPopulationDAO.updateById(comMajorPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comMajorPopulationDO != null) {
            BeanUtils.copyProperties(vo, comMajorPopulationDO);
            comMajorPopulationDO.setCardNo(cardNoAES);
            comMajorPopulationDAO.updateById(comMajorPopulationDO);
        } else {
            comMajorPopulationDO = new ComMajorPopulationDO();
            BeanUtils.copyProperties(vo, comMajorPopulationDO);
            comMajorPopulationDO.setId(Snowflake.getId());
            comMajorPopulationDO.setPopulationId(populationDO.getId());
            comMajorPopulationDO.setCommunityId(communityId);
            comMajorPopulationDO.setStreetId(populationDO.getStreetId());
            comMajorPopulationDAO.insert(comMajorPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateCultPopulationDO(ComMngPopulationCultExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateCultPopulationDO(ComMngPopulationCultExcelVO vo, ComMngPopulationDO populationDO,
        Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComCultPopulationDO comCultPopulationDO = comCultPopulationDAO.selectOne(new QueryWrapper<ComCultPopulationDO>().lambda().
                eq(ComCultPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comCultPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComCultPopulationDO comCultPopulationDO = comCultPopulationDAO.selectOne(new QueryWrapper<ComCultPopulationDO>()
            .lambda().eq(ComCultPopulationDO::getPopulationId, populationDO.getId()).eq(ComCultPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comCultPopulationDO.setCardNo(cardNoAES);
        comCultPopulationDAO.updateById(comCultPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comCultPopulationDO != null) {
            BeanUtils.copyProperties(vo, comCultPopulationDO);
            comCultPopulationDO.setCardNo(cardNoAES);
            comCultPopulationDAO.updateById(comCultPopulationDO);
        } else {
            comCultPopulationDO = new ComCultPopulationDO();
            BeanUtils.copyProperties(vo, comCultPopulationDO);
            comCultPopulationDO.setId(Snowflake.getId());
            comCultPopulationDO.setPopulationId(populationDO.getId());
            comCultPopulationDO.setCommunityId(communityId);
            comCultPopulationDO.setStreetId(populationDO.getStreetId());
            comCultPopulationDAO.insert(comCultPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateRehabilitationPopulationDO(ComMngPopulationRehabilitationExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateRehabilitationPopulationDO(ComMngPopulationRehabilitationExcelVO vo,
        ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComRehabilitationPopulationDO comRehabilitationPopulationDO = comRehabilitationPopulationDAO.selectOne(new QueryWrapper<ComRehabilitationPopulationDO>().lambda().
                eq(ComRehabilitationPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comRehabilitationPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComRehabilitationPopulationDO comRehabilitationPopulationDO =
            comRehabilitationPopulationDAO.selectOne(new QueryWrapper<ComRehabilitationPopulationDO>().lambda()
                .eq(ComRehabilitationPopulationDO::getPopulationId, populationDO.getId()).eq(ComRehabilitationPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comRehabilitationPopulationDO.setCardNo(cardNoAES);
        comRehabilitationPopulationDAO.updateById(comRehabilitationPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comRehabilitationPopulationDO != null) {
            BeanUtils.copyProperties(vo, comRehabilitationPopulationDO);
            comRehabilitationPopulationDO.setCardNo(cardNoAES);
            comRehabilitationPopulationDAO.updateById(comRehabilitationPopulationDO);
        } else {
            comRehabilitationPopulationDO = new ComRehabilitationPopulationDO();
            BeanUtils.copyProperties(vo, comRehabilitationPopulationDO);
            comRehabilitationPopulationDO.setId(Snowflake.getId());
            comRehabilitationPopulationDO.setPopulationId(populationDO.getId());
            comRehabilitationPopulationDO.setCommunityId(communityId);
            comRehabilitationPopulationDO.setStreetId(populationDO.getStreetId());
            comRehabilitationPopulationDAO.insert(comRehabilitationPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComMngPopulationDO populationDO,
        Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComKeyPopulationDO comKeyPopulationDO = comKeyPopulationDAO.selectOne(new QueryWrapper<ComKeyPopulationDO>().lambda().
                eq(ComKeyPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comKeyPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComKeyPopulationDO comKeyPopulationDO = comKeyPopulationDAO.selectOne(new QueryWrapper<ComKeyPopulationDO>()
            .lambda().eq(ComKeyPopulationDO::getPopulationId, populationDO.getId()).eq(ComKeyPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comKeyPopulationDO.setCardNo(cardNoAES);
        comKeyPopulationDAO.updateById(comKeyPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comKeyPopulationDO != null) {
            BeanUtils.copyProperties(vo, comKeyPopulationDO);
            comKeyPopulationDO.setCardNo(cardNoAES);
            comKeyPopulationDAO.updateById(comKeyPopulationDO);
        } else {
            comKeyPopulationDO = new ComKeyPopulationDO();
            BeanUtils.copyProperties(vo, comKeyPopulationDO);
            comKeyPopulationDO.setId(Snowflake.getId());
            comKeyPopulationDO.setPopulationId(populationDO.getId());
            comKeyPopulationDO.setCommunityId(communityId);
            comKeyPopulationDO.setStreetId(populationDO.getStreetId());
            comKeyPopulationDAO.insert(comKeyPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateSentencePopulationDO(ComMngPopulationSentenceExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateSentencePopulationDO(ComMngPopulationSentenceExcelVO vo,
        ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComSentencePopulationDO comSentencePopulationDO = comSentencePopulationDAO.selectOne(new QueryWrapper<ComSentencePopulationDO>().lambda().
                eq(ComSentencePopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comSentencePopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComSentencePopulationDO comSentencePopulationDO =
            comSentencePopulationDAO.selectOne(new QueryWrapper<ComSentencePopulationDO>().lambda()
                .eq(ComSentencePopulationDO::getPopulationId, populationDO.getId()).eq(ComSentencePopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comSentencePopulationDO.setCardNo(cardNoAES);
        comSentencePopulationDAO.updateById(comSentencePopulationDO);
        populationDO.setUpdateBy(userId);
        if (comSentencePopulationDO != null) {
            BeanUtils.copyProperties(vo, comSentencePopulationDO);
            comSentencePopulationDO.setCardNo(cardNoAES);
            comSentencePopulationDAO.updateById(comSentencePopulationDO);
        } else {
            comSentencePopulationDO = new ComSentencePopulationDO();
            BeanUtils.copyProperties(vo, comSentencePopulationDO);
            comSentencePopulationDO.setId(Snowflake.getId());
            comSentencePopulationDO.setPopulationId(populationDO.getId());
            comSentencePopulationDO.setCommunityId(communityId);
            comSentencePopulationDO.setStreetId(populationDO.getStreetId());
            comSentencePopulationDAO.insert(comSentencePopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateVeteransPopulationDO(ComMngPopulationVeteransExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateVeteransPopulationDO(ComMngPopulationVeteransExcelVO vo,
        ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComVeteransPopulationDO comVeteransPopulationDO = comVeteransPopulationDAO.selectOne(new QueryWrapper<ComVeteransPopulationDO>().lambda().
                eq(ComVeteransPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comVeteransPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComVeteransPopulationDO comVeteransPopulationDO =
            comVeteransPopulationDAO.selectOne(new QueryWrapper<ComVeteransPopulationDO>().lambda()
                .eq(ComVeteransPopulationDO::getPopulationId, populationDO.getId()).eq(ComVeteransPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comVeteransPopulationDO.setCardNo(cardNoAES);
        comVeteransPopulationDAO.updateById(comVeteransPopulationDO);
        return populationDO;
    }
    private ComMngPopulationDO updateDisabilityPopulationDO(ComMngPopulationDisabilityExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
        BeanUtils.copyProperties(vo, populationDO);
        ComDisabilityPopulationDO comDisabilityPopulationDO = comDisabilityPopulationDAO.selectOne(new QueryWrapper<ComDisabilityPopulationDO>().lambda().
                eq(ComDisabilityPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comDisabilityPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        populationDO.setUpdateBy(userId);
        if (comVeteransPopulationDO != null) {
            BeanUtils.copyProperties(vo, comVeteransPopulationDO);
            comVeteransPopulationDO.setCardNo(cardNoAES);
            comVeteransPopulationDAO.updateById(comVeteransPopulationDO);
        } else {
            comVeteransPopulationDO = new ComVeteransPopulationDO();
            BeanUtils.copyProperties(vo, comVeteransPopulationDO);
            comVeteransPopulationDO.setId(Snowflake.getId());
            comVeteransPopulationDO.setPopulationId(populationDO.getId());
            comVeteransPopulationDO.setCommunityId(communityId);
            comVeteransPopulationDO.setStreetId(populationDO.getStreetId());
            comVeteransPopulationDAO.insert(comVeteransPopulationDO);
        }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setCardNo(cardNoAES);
        comDisabilityPopulationDO.setCardNo(cardNoAES);
        comDisabilityPopulationDAO.updateById(comDisabilityPopulationDO);
        return populationDO;
    }
    private ComMngPopulationDO updateLowSecurityPopulationDO(ComMngPopulationLowSecurityExcelVO vo, ComMngPopulationDO populationDO,List<String> labelList){
    private ComMngPopulationDO updateDisabilityPopulationDO(ComMngPopulationDisabilityExcelVO vo,
        ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComLowSecurityPopulationDO comLowSecurityPopulationDO = comLowSecurityPopulationDAO.selectOne(new QueryWrapper<ComLowSecurityPopulationDO>().lambda().
                eq(ComLowSecurityPopulationDO::getPopulationId, populationDO.getId()));
        BeanUtils.copyProperties(vo, comLowSecurityPopulationDO);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        ComDisabilityPopulationDO comDisabilityPopulationDO =
            comDisabilityPopulationDAO.selectOne(new QueryWrapper<ComDisabilityPopulationDO>().lambda()
                .eq(ComDisabilityPopulationDO::getPopulationId, populationDO.getId()).eq(ComDisabilityPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        comLowSecurityPopulationDO.setCardNo(cardNoAES);
        comLowSecurityPopulationDAO.updateById(comLowSecurityPopulationDO);
        populationDO.setUpdateBy(userId);
        if (comDisabilityPopulationDO != null) {
            BeanUtils.copyProperties(vo, comDisabilityPopulationDO);
            comDisabilityPopulationDO.setCardNo(cardNoAES);
            comDisabilityPopulationDAO.updateById(comDisabilityPopulationDO);
        } else {
            comDisabilityPopulationDO = new ComDisabilityPopulationDO();
            BeanUtils.copyProperties(vo, comDisabilityPopulationDO);
            comDisabilityPopulationDO.setId(Snowflake.getId());
            comDisabilityPopulationDO.setPopulationId(populationDO.getId());
            comDisabilityPopulationDO.setCommunityId(communityId);
            comDisabilityPopulationDO.setStreetId(populationDO.getStreetId());
            comDisabilityPopulationDAO.insert(comDisabilityPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO savePopulationDO(ComMngPopulationServeExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO updateLowSecurityPopulationDO(ComMngPopulationLowSecurityExcelVO vo,
        ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComLowSecurityPopulationDO comLowSecurityPopulationDO =
            comLowSecurityPopulationDAO.selectOne(new QueryWrapper<ComLowSecurityPopulationDO>().lambda()
                .eq(ComLowSecurityPopulationDO::getPopulationId, populationDO.getId()).eq(ComLowSecurityPopulationDO::getCommunityId, communityId));
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        populationDO.setUpdateBy(userId);
        if (comLowSecurityPopulationDO != null) {
            BeanUtils.copyProperties(vo, comLowSecurityPopulationDO);
            comLowSecurityPopulationDO.setCardNo(cardNoAES);
            comLowSecurityPopulationDAO.updateById(comLowSecurityPopulationDO);
        } else {
            comLowSecurityPopulationDO = new ComLowSecurityPopulationDO();
            BeanUtils.copyProperties(vo, comLowSecurityPopulationDO);
            comLowSecurityPopulationDO.setId(Snowflake.getId());
            comLowSecurityPopulationDO.setPopulationId(populationDO.getId());
            comLowSecurityPopulationDO.setCommunityId(communityId);
            comLowSecurityPopulationDO.setStreetId(populationDO.getStreetId());
            comLowSecurityPopulationDAO.insert(comLowSecurityPopulationDO);
        }
        return populationDO;
    }
    private ComMngPopulationDO updateElderPopulationDO(ComMngPopulationElderExcelVO vo,
                                                             ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComElderAuthElderliesDO comElderAuthElderliesDO =
                comElderAuthElderliesDAO.selectOne(new QueryWrapper<ComElderAuthElderliesDO>().lambda()
                        .eq(ComElderAuthElderliesDO::getPopulationId, populationDO.getId()).eq(ComElderAuthElderliesDO::getCommunityId, communityId));
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        populationDO.setUpdateBy(userId);
        if (comElderAuthElderliesDO != null) {
            BeanUtils.copyProperties(vo, comElderAuthElderliesDO);
            comElderAuthElderliesDO.setIdCard(cardNoAES);
            comElderAuthElderliesDO.setAddress(vo.getNowAddress());
            if (StringUtils.isNotEmpty(vo.getBirthday())) {
                int age = AgeUtils.getAgeFromBirthTimes(vo.getBirthday());
                if (age >= 80 && age < 90) {
                    comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.under90);
                }else if (age >= 90 && age < 100){
                    comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.under100);
                }else if (age >= 100){
                    comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.above100);
                }
            }
            comElderAuthElderliesDAO.updateById(comElderAuthElderliesDO);
        } else {
            comElderAuthElderliesDO = new ComElderAuthElderliesDO();
            BeanUtils.copyProperties(vo, comElderAuthElderliesDO);
            comElderAuthElderliesDO.setId(Snowflake.getId());
            comElderAuthElderliesDO.setPopulationId(populationDO.getId());
            comElderAuthElderliesDO.setCommunityId(communityId);
            comElderAuthElderliesDO.setStreetId(populationDO.getStreetId());
            comElderAuthElderliesDO.setIdCard(vo.getCardNo());
            comElderAuthElderliesDO.setAddress(vo.getNowAddress());
            if (StringUtils.isNotEmpty(vo.getBirthday())) {
                int age = AgeUtils.getAgeFromBirthTimes(vo.getBirthday());
                if (age >= 80 && age < 90) {
                    comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.under90);
                }else if (age >= 90 && age < 100){
                    comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.under100);
                }else if (age >= 100){
                    comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.above100);
                }
            }
            comElderAuthElderliesDAO.insert(comElderAuthElderliesDO);
        }
        //维护养老认证健在状态
        comPensionAuthPensionerDAO.editPensionIsAlive(populationDO.getId(),vo.getIsAlive());
        return populationDO;
    }
    private ComMngPopulationDO updatePensionPopulationDO(ComMngPopulationPensionExcelVO vo,
                                                       ComMngPopulationDO populationDO, Long communityId, Long userId) {
        BeanUtils.copyProperties(vo, populationDO);
        ComPensionAuthPensionerDO comPensionAuthPensionerDO =
                comPensionAuthPensionerDAO.selectOne(new QueryWrapper<ComPensionAuthPensionerDO>().lambda()
                        .eq(ComPensionAuthPensionerDO::getPopulationId, populationDO.getId())
                        .eq(ComPensionAuthPensionerDO::getCommunityId, communityId));
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setActId(communityId);
        populationDO.setCardNo(cardNoAES);
        populationDO.setUpdateBy(userId);
        if (comPensionAuthPensionerDO != null) {
            BeanUtils.copyProperties(vo, comPensionAuthPensionerDO);
            comPensionAuthPensionerDO.setIdCard(cardNoAES);
            comPensionAuthPensionerDO.setAddress(vo.getNowAddress());
            comPensionAuthPensionerDAO.updateById(comPensionAuthPensionerDO);
        } else {
            comPensionAuthPensionerDO = new ComPensionAuthPensionerDO();
            BeanUtils.copyProperties(vo, comPensionAuthPensionerDO);
            comPensionAuthPensionerDO.setId(Snowflake.getId());
            comPensionAuthPensionerDO.setPopulationId(populationDO.getId());
            comPensionAuthPensionerDO.setCommunityId(populationDO.getActId());
            comPensionAuthPensionerDO.setStreetId(populationDO.getStreetId());
            comPensionAuthPensionerDO.setIdCard(vo.getCardNo());
            comPensionAuthPensionerDO.setAddress(vo.getNowAddress());
            comPensionAuthPensionerDAO.insert(comPensionAuthPensionerDO);
        }
        //维护高龄老人健在状态
        comElderAuthElderliesDAO.editEditIsAlive(populationDO.getId(),vo.getIsAlive());
        return populationDO;
    }
    private ComMngPopulationDO savePopulationDO(ComMngPopulationServeExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        populationDO.setId(Snowflake.getId());
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
        populationDO.setDeath(vo.getDeath().toString());
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        return populationDO;
    }
    private ComMngPopulationDO saveDrugPopulationDO(ComMngPopulationDrugExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveDrugPopulationDO(ComMngPopulationDrugExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComDrugPopulationDO comDrugPopulationDO = new ComDrugPopulationDO();
@@ -3203,19 +5037,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comDrugPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3223,19 +5058,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comDrugPopulationDO.setId(Snowflake.getId());
        comDrugPopulationDO.setCommunityId(comActDO.getCommunityId());
        comDrugPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3243,7 +5079,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveCorrectPopulationDO(ComMngPopulationCorrectExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveCorrectPopulationDO(ComMngPopulationCorrectExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComCorrectPopulationDO comCorrectPopulationDO = new ComCorrectPopulationDO();
@@ -3251,19 +5088,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comCorrectPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3271,19 +5109,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comCorrectPopulationDO.setId(Snowflake.getId());
        comCorrectPopulationDO.setCommunityId(comActDO.getCommunityId());
        comCorrectPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3291,7 +5130,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveMajorPopulationDO(ComMngPopulationMajorExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveMajorPopulationDO(ComMngPopulationMajorExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComMajorPopulationDO comMajorPopulationDO = new ComMajorPopulationDO();
@@ -3299,19 +5139,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comMajorPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3319,19 +5160,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comMajorPopulationDO.setId(Snowflake.getId());
        comMajorPopulationDO.setCommunityId(comActDO.getCommunityId());
        comMajorPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3339,7 +5181,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveCultPopulationDO(ComMngPopulationCultExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveCultPopulationDO(ComMngPopulationCultExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComCultPopulationDO comCultPopulationDO = new ComCultPopulationDO();
@@ -3347,19 +5190,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comCultPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3367,19 +5211,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comCultPopulationDO.setId(Snowflake.getId());
        comCultPopulationDO.setCommunityId(comActDO.getCommunityId());
        comCultPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3387,7 +5232,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveRehabilitationPopulationDO(ComMngPopulationRehabilitationExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveRehabilitationPopulationDO(ComMngPopulationRehabilitationExcelVO vo,
        ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComRehabilitationPopulationDO comRehabilitationPopulationDO = new ComRehabilitationPopulationDO();
@@ -3395,19 +5241,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comRehabilitationPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3415,19 +5262,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comRehabilitationPopulationDO.setId(Snowflake.getId());
        comRehabilitationPopulationDO.setCommunityId(comActDO.getCommunityId());
        comRehabilitationPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3435,7 +5283,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComKeyPopulationDO comKeyPopulationDO = new ComKeyPopulationDO();
@@ -3443,19 +5292,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comKeyPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3463,19 +5313,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comKeyPopulationDO.setId(Snowflake.getId());
        comKeyPopulationDO.setCommunityId(comActDO.getCommunityId());
        comKeyPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3483,7 +5334,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveSentencePopulationDO(ComMngPopulationSentenceExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveSentencePopulationDO(ComMngPopulationSentenceExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComSentencePopulationDO comSentencePopulationDO = new ComSentencePopulationDO();
@@ -3491,19 +5343,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comSentencePopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3511,19 +5364,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comSentencePopulationDO.setId(Snowflake.getId());
        comSentencePopulationDO.setCommunityId(comActDO.getCommunityId());
        comSentencePopulationDO.setStreetId(comActDO.getStreetId());
@@ -3531,7 +5385,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveVeteransPopulationDO(ComMngPopulationVeteransExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveVeteransPopulationDO(ComMngPopulationVeteransExcelVO vo, ComPopulationActVO comActDO,
        ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComVeteransPopulationDO comVeteransPopulationDO = new ComVeteransPopulationDO();
@@ -3539,19 +5394,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comVeteransPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3559,19 +5415,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comVeteransPopulationDO.setId(Snowflake.getId());
        comVeteransPopulationDO.setCommunityId(comActDO.getCommunityId());
        comVeteransPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3579,7 +5436,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveDisabilityPopulationDO(ComMngPopulationDisabilityExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveDisabilityPopulationDO(ComMngPopulationDisabilityExcelVO vo,
        ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
        ComDisabilityPopulationDO comDisabilityPopulationDO = new ComDisabilityPopulationDO();
@@ -3587,19 +5445,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comDisabilityPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3607,19 +5466,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comDisabilityPopulationDO.setId(Snowflake.getId());
        comDisabilityPopulationDO.setCommunityId(comActDO.getCommunityId());
        comDisabilityPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3627,7 +5487,8 @@
        return populationDO;
    }
    private ComMngPopulationDO saveLowSecurityPopulationDO(ComMngPopulationLowSecurityExcelVO vo, ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO,List<String> labelList) {
    private ComMngPopulationDO saveLowSecurityPopulationDO(ComMngPopulationLowSecurityExcelVO vo,
        ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        ComLowSecurityPopulationDO comLowSecurityPopulationDO = new ComLowSecurityPopulationDO();
        BeanUtils.copyProperties(vo, populationDO);
@@ -3635,19 +5496,20 @@
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comLowSecurityPopulationDO.setPopulationId(populationId);
        List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        Iterator<String> iterator = userTag.iterator();
        while (iterator.hasNext()) {
            String s = iterator.next();
            if (!labelList.contains(s))
                iterator.remove();
        }
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        populationDO.setLabel(Joiner.on(",").join(userTag));
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
@@ -3655,19 +5517,20 @@
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        }catch (Exception e){
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        //新增的时候默认绑定房屋id
//        if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
//                (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
//            populationDO.setHouseId(vo.getHouseId());
//        }else{
//            populationDO.setHouseId(null);
//        }
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
//        this.baseMapper.insert(populationDO);
        // this.baseMapper.insert(populationDO);
        comLowSecurityPopulationDO.setId(Snowflake.getId());
        comLowSecurityPopulationDO.setCommunityId(comActDO.getCommunityId());
        comLowSecurityPopulationDO.setStreetId(comActDO.getStreetId());
@@ -3675,8 +5538,115 @@
        return populationDO;
    }
    private ComMngPopulationHouseDO savePopulationHouse(ComMngPopulationServeExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationDO saveElderPopulationDO(ComMngPopulationElderExcelVO vo,
                                                           ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId, Long communityId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        ComElderAuthElderliesDO comElderAuthElderliesDO = new ComElderAuthElderliesDO();
        BeanUtils.copyProperties(vo, populationDO);
        BeanUtils.copyProperties(vo, comElderAuthElderliesDO);
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comElderAuthElderliesDO.setPopulationId(populationId);
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
        // this.baseMapper.insert(populationDO);
        comElderAuthElderliesDO.setId(Snowflake.getId());
        comElderAuthElderliesDO.setCommunityId(comActDO.getCommunityId());
        comElderAuthElderliesDO.setStreetId(comActDO.getStreetId());
        comElderAuthElderliesDO.setIdCard(vo.getCardNo());
        comElderAuthElderliesDO.setAddress(vo.getNowAddress());
        if (StringUtils.isNotEmpty(vo.getBirthday())) {
            int age = AgeUtils.getAgeFromBirthTimes(vo.getBirthday());
            if (age >= 80 && age < 90) {
                comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.under90);
            }else if (age >= 90 && age < 100){
                comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.under100);
            }else if (age >= 100){
                comElderAuthElderliesDO.setPersonnelCategory(ComElderAuthElderliesDO.personnelCategory.above100);
            }
        }
        comElderAuthElderliesDAO.insert(comElderAuthElderliesDO);
        return populationDO;
    }
    private ComMngPopulationDO savePensionPopulationDO(ComMngPopulationPensionExcelVO vo,
                                                     ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
        ComMngPopulationDO populationDO = new ComMngPopulationDO();
        ComPensionAuthPensionerDO comPensionAuthPensionerDO = new ComPensionAuthPensionerDO();
        BeanUtils.copyProperties(vo, populationDO);
        BeanUtils.copyProperties(vo, comPensionAuthPensionerDO);
        Long populationId = Snowflake.getId();
        populationDO.setId(populationId);
        comPensionAuthPensionerDO.setPopulationId(populationId);
        // List<String> userTag = vo.getUserTagStr().stream().map(userTagStr ->
        // userTagStr.split("\\(")[0]).collect(Collectors.toList());
        //
        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
        // Iterator<String> iterator = userTag.iterator();
        // while (iterator.hasNext()) {
        // String s = iterator.next();
        // if (!labelList.contains(s))
        // iterator.remove();
        // }
        populationDO.setVillageId(comMngVillageDO.getVillageId());
        populationDO.setActId(comActDO.getCommunityId());
        populationDO.setStreetId(comActDO.getStreetId());
        // populationDO.setLabel(Joiner.on(",").join(userTag));
        populationDO.setVillageName(comMngVillageDO.getGroupAt());
        populationDO.setCardNoStr(vo.getCardNo());
        populationDO.setUpdateAt(new Date());
        String cardNoAES = populationDO.getCardNo();
        try {
            cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
        } catch (Exception e) {
            log.error("身份证加密失败");
        }
        populationDO.setCardNo(cardNoAES);
        populationDO.setCreateBy(userId);
        // 新增的时候默认绑定房屋id
        // if ((vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) ||
        // (vo.getIsResidence() != null && vo.getIsResidence().intValue() == 1)) {
        // populationDO.setHouseId(vo.getHouseId());
        // }else{
        // populationDO.setHouseId(null);
        // }
        // this.baseMapper.insert(populationDO);
        comPensionAuthPensionerDO.setId(Snowflake.getId());
        comPensionAuthPensionerDO.setCommunityId(comActDO.getCommunityId());
        comPensionAuthPensionerDO.setStreetId(comActDO.getStreetId());
        comPensionAuthPensionerDO.setIdCard(vo.getCardNo());
        comPensionAuthPensionerDO.setAddress(vo.getNowAddress());
        comPensionAuthPensionerDAO.insert(comPensionAuthPensionerDO);
        return populationDO;
    }
    private ComMngPopulationHouseDO savePopulationHouse(ComMngPopulationServeExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3693,7 +5663,8 @@
        populationHouseDO.setUpdateAt(new Date());
        populationHouseDO.setConstructPurpose(vo.getBuildPurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
        try {
            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
@@ -3712,12 +5683,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveDrugPopulationHouse(ComMngPopulationDrugExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveDrugPopulationHouse(ComMngPopulationDrugExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3732,14 +5704,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3753,12 +5726,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveCorrectPopulationHouse(ComMngPopulationCorrectExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveCorrectPopulationHouse(ComMngPopulationCorrectExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3773,14 +5747,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3794,12 +5769,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveMajorPopulationHouse(ComMngPopulationMajorExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveMajorPopulationHouse(ComMngPopulationMajorExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3814,14 +5790,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3835,12 +5812,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveCultPopulationHouse(ComMngPopulationCultExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveCultPopulationHouse(ComMngPopulationCultExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3855,14 +5833,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3876,12 +5855,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveRehabilitationPopulationHouse(ComMngPopulationRehabilitationExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveRehabilitationPopulationHouse(ComMngPopulationRehabilitationExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3896,14 +5876,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3917,12 +5898,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveKeyPopulationHouse(ComMngPopulationKeyExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveKeyPopulationHouse(ComMngPopulationKeyExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3937,14 +5919,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3958,12 +5941,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveSentencePopulationHouse(ComMngPopulationSentenceExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveSentencePopulationHouse(ComMngPopulationSentenceExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -3978,14 +5962,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -3999,12 +5984,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveVeteransPopulationHouse(ComMngPopulationVeteransExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveVeteransPopulationHouse(ComMngPopulationVeteransExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -4019,14 +6005,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -4040,12 +6027,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveDisabilityPopulationHouse(ComMngPopulationDisabilityExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveDisabilityPopulationHouse(ComMngPopulationDisabilityExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -4060,14 +6048,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -4081,12 +6070,13 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO saveLowSecurityPopulationHouse(ComMngPopulationLowSecurityExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveLowSecurityPopulationHouse(ComMngPopulationLowSecurityExcelVO vo,
        ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
@@ -4101,14 +6091,15 @@
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//        populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        // populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">").append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
            .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
//        try {
//            populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
//        } catch (Exception e) {
//        }
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
@@ -4122,12 +6113,99 @@
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
//        comMngPopulationHouseDAO.insert(populationHouseDO);
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseUserDO savePopulationHouseUser(ComMngPopulationServeExcelVO vo, ComMngPopulationDO comMngPopulationDO, ComMngPopulationHouseDO comMngPopulationHouseDO) {
        //查询该房屋未建立,执行建立房屋信息
    private ComMngPopulationHouseDO saveElderPopulationHouse(ComMngPopulationElderExcelVO vo,
                                                                   ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
        populationHouseDO.setVillageId(comMngVillageDO.getVillageId());
        populationHouseDO.setAlley(vo.getRoad());
        populationHouseDO.setHouseNum(vo.getDoorNo());
        populationHouseDO.setStatus(vo.getIsRent());
        populationHouseDO.setCommunityId(communityId);
        populationHouseDO.setFloor(vo.getFloor());
        populationHouseDO.setUnitNo(vo.getUnitNo());
        populationHouseDO.setHouseNo(vo.getHouseNo());
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//         populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
                .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
        }
        if (vo.getHouseStatus() != null) {
            populationHouseDO.setStatus(vo.getHouseStatus());
        }
        if (vo.getHousePurpose() != null) {
            populationHouseDO.setPurpose(vo.getHousePurpose());
        }
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseDO savePensionPopulationHouse(ComMngPopulationPensionExcelVO vo,
                                                             ComMngVillageDO comMngVillageDO, Long communityId, StringBuilder areaPath, String actName) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
        populationHouseDO.setId(Snowflake.getId());
        populationHouseDO.setStreetId(comMngVillageDO.getStreetId());
        populationHouseDO.setVillageId(comMngVillageDO.getVillageId());
        populationHouseDO.setAlley(vo.getRoad());
        populationHouseDO.setHouseNum(vo.getDoorNo());
        populationHouseDO.setStatus(vo.getIsRent());
        populationHouseDO.setCommunityId(communityId);
        populationHouseDO.setFloor(vo.getFloor());
        populationHouseDO.setUnitNo(vo.getUnitNo());
        populationHouseDO.setHouseNo(vo.getHouseNo());
        populationHouseDO.setCode(vo.getHouseNo());
        populationHouseDO.setAddress(vo.getAddress());
        populationHouseDO.setUpdateAt(new Date());
//         populationHouseDO.setConstructPurpose(vo.getHousePurpose());
        StringBuilder housePath = new StringBuilder();
        housePath.append(populationHouseDO.getAlley()).append(">").append(actName).append(">")
                .append(comMngVillageDO.getName()).append(">").append(vo.getAddress());
        populationHouseDO.setPath(areaPath.toString() + housePath.toString());
        // try {
        // populationHouseDO.setConstructArea(new BigDecimal(vo.getBuildArea()));
        // } catch (Exception e) {
        // }
        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
        }
        if (vo.getHouseStatus() != null) {
            populationHouseDO.setStatus(vo.getHouseStatus());
        }
        if (vo.getHousePurpose() != null) {
            populationHouseDO.setPurpose(vo.getHousePurpose());
        }
        if (vo.getControlStatus() != null) {
            populationHouseDO.setControlStatus(vo.getControlStatus());
        }
        // comMngPopulationHouseDAO.insert(populationHouseDO);
        return populationHouseDO;
    }
    private ComMngPopulationHouseUserDO savePopulationHouseUser(ComMngPopulationServeExcelVO vo,
        ComMngPopulationDO comMngPopulationDO, ComMngPopulationHouseDO comMngPopulationHouseDO) {
        // 查询该房屋未建立,执行建立房屋信息
        ComMngPopulationHouseUserDO populationHouseUserDO = new ComMngPopulationHouseUserDO();
        populationHouseUserDO.setId(Snowflake.getId());
        populationHouseUserDO.setPopulId(comMngPopulationDO.getId());
@@ -4142,8 +6220,10 @@
    /**
     * 确认导入实有人口(有则更新,无则新建)
     *
     * @param list        用户信息
     * @param communityId 社区id
     * @param list
     *            用户信息
     * @param communityId
     *            社区id
     * @return 导入结果
     */
    @Override
@@ -4151,16 +6231,21 @@
        if (list.size() == 0) {
            return R.fail("数据为空!");
        }
        List<ComMngPopulationDO> comMngPopulationDOS = populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getActId, communityId));
        //查询该社区所有(实有房屋)小区
//        List<ComMngVillageDO> villageDOList = comActVillageDAO.selectList(new QueryWrapper<ComMngVillageDO>().lambda().eq(ComMngVillageDO::getCommunityId, communityId));
        List<ComMngPopulationDO> comMngPopulationDOS = populationDAO
            .selectList(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getActId, communityId));
        // 查询该社区所有(实有房屋)小区
        // List<ComMngVillageDO> villageDOList = comActVillageDAO.selectList(new
        // QueryWrapper<ComMngVillageDO>().lambda().eq(ComMngVillageDO::getCommunityId, communityId));
        ComActDO comActDO = comActDAO.selectById(communityId);
        ArrayList<ComMngPopulationDO> populationDOList = Lists.newArrayList();
        list.forEach(vo -> {
            ComMngPopulationDO comMngPopulationDO = new ComMngPopulationDO();
            //查询街路巷是否存在
            ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().eq("alley", vo.getRoad()).eq("house_num", vo.getDoorNo()).eq("community_id", communityId));
//            ComMngVillageDO comMngVillageDO = villageDOList.stream().filter(village -> village.getAlley().equals(vo.getRoad()) && village.getHouseNum().equals(Integer.valueOf(vo.getDoorNo()))).findFirst().orElse(null);
            // 查询街路巷是否存在
            ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>()
                .eq("alley", vo.getRoad()).eq("house_num", vo.getDoorNo()).eq("community_id", communityId));
            // ComMngVillageDO comMngVillageDO = villageDOList.stream().filter(village ->
            // village.getAlley().equals(vo.getRoad()) &&
            // village.getHouseNum().equals(Integer.valueOf(vo.getDoorNo()))).findFirst().orElse(null);
            BeanUtils.copyProperties(vo, comMngPopulationDO);
            if (comMngVillageDO == null) {
                throw new ServiceException("街道巷:" + vo.getRoad() + "不存在!");
@@ -4168,21 +6253,23 @@
            comMngPopulationDO.setVillageId(comMngVillageDO.getVillageId());
            comMngPopulationDO.setActId(comActDO.getCommunityId());
            comMngPopulationDO.setStreetId(comActDO.getStreetId());
            List<String> userTag = vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
            List<String> userTag =
                vo.getUserTagStr().stream().map(userTagStr -> userTagStr.split("\\(")[0]).collect(Collectors.toList());
            comMngPopulationDO.setLabel(Joiner.on(",").join(userTag));
            comMngPopulationDO.setVillageName(comMngVillageDO.getGroupAt());
            populationDOList.add(comMngPopulationDO);
        });
        if (!populationDOList.isEmpty()) {
            //循环遍历待导入人员信息,如果数据库存在则更新,如果不存在则新建
            // 循环遍历待导入人员信息,如果数据库存在则更新,如果不存在则新建
            populationDOList.forEach(population -> {
                try {
                    //加密身份证号码
                    // 加密身份证号码
                    String cardNo = AESUtil.encrypt128(population.getCardNo(), aesKey);
                    population.setCardNo(cardNo);
                    //查询这个用户是否存在
                    ComMngPopulationDO comMngPopulationDO = this.populationDAO.selectOne(new QueryWrapper<ComMngPopulationDO>().lambda()
                    // 查询这个用户是否存在
                    ComMngPopulationDO comMngPopulationDO =
                        this.populationDAO.selectOne(new QueryWrapper<ComMngPopulationDO>().lambda()
                            .eq(ComMngPopulationDO::getCardNo, population.getCardNo()));
                    if (comMngPopulationDO != null) {
                        population.setId(comMngPopulationDO.getId());
@@ -4212,7 +6299,8 @@
    /**
     * 根据id修改实有人口标签
     *
     * @param populationTagDTO 请求参数
     * @param populationTagDTO
     *            请求参数
     * @return 修改结果
     */
    @Override
@@ -4233,34 +6321,27 @@
    /**
     * 批量删除实有人口
     *
     * @param Ids
     * @return
     * @param ids 实有人口id集合
     * @return  删除结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deletePopulations(List<Long> Ids) {
        if (!Ids.isEmpty()) {
            Ids.forEach(id -> {
                //清除用户房屋居住信息
                comMngPopulationHouseUserDAO.deletePopulationHouseByUserId(id);
            });
        }
        int delete = populationDAO.deleteBatchIds(Ids);
        if (delete > 0) {
            return R.ok();
        }
        return R.fail();
    public R deletePopulations(List<Long> ids, Long communityId) {
        comMngPopulationCommunityTagsDAO.deletePopulationRelation(ids,communityId);
        return R.ok();
    }
    /**
     * 根据社区id查询所有实有人口
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 查询结果
     */
    @Override
    public R getPopulationListByCommunityId(Long communityId) {
        List<ComMngPopulationDO> list = populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().eq("act_id", communityId));
        List<ComMngPopulationDO> list =
            populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().eq("act_id", communityId));
        List<ComMngPopulationVO> resultList = new ArrayList<>();
        if (list.size() > 0) {
            list.forEach(populationDO -> {
@@ -4275,7 +6356,8 @@
    /**
     * 根据id集合查询实有人口
     *
     * @param Ids 实有人口id集合
     * @param Ids
     *            实有人口id集合
     * @return 查询结果
     */
    @Override
@@ -4294,7 +6376,8 @@
    @Override
    public R getPopulationListByVillageId(Long villageId) {
        List<ComMngPopulationDO> list = populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().eq("village_id", villageId));
        List<ComMngPopulationDO> list =
            populationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().eq("village_id", villageId));
        List<ComMngPopulationVO> resultList = new ArrayList<>();
        if (list.size() > 0) {
            list.forEach(populationDO -> {
@@ -4328,23 +6411,32 @@
            populationDO.setStreetId(comActDO.getStreetId());
        }
        //查询当前用户所有房屋id
        //修改人员标签
        List<ComMngPopulationCommunityTagsDO> communityTagsDOList = comMngPopulationCommunityTagsDAO
                .selectList(new QueryWrapper<ComMngPopulationCommunityTagsDO>().lambda()
                .eq(ComMngPopulationCommunityTagsDO::getCommunityId,communityId)
                .eq(ComMngPopulationCommunityTagsDO::getPopulationId,vo.getId()));
        communityTagsDOList.forEach(communityTags -> {
            communityTags.setLabel(vo.getLabel());
            comMngPopulationCommunityTagsDAO.updateById(communityTags);
        });
        // 查询当前用户所有房屋id
        List<Long> houseIds = comMngPopulationHouseUserDAO.getPopulationHouseIdByUserId(vo.getId());
        //清除用户房屋居住信息
        // 清除用户房屋居住信息
        comMngPopulationHouseUserDAO.deletePopulationHouseByUserId(vo.getId());
        if (!houseIds.isEmpty()) {
            houseIds.forEach(houseId -> {
                //查询当前房屋下是否有人口信息,如果没有则将房屋设置为空户
                // 查询当前房屋下是否有人口信息,如果没有则将房屋设置为空户
                List<Long> oldHouseIds = comMngPopulationHouseUserDAO.getPopulationHouseIdByhHosueId(houseId);
                if (oldHouseIds.isEmpty()) {
                    //修改房屋信息为空户
                    // 修改房屋信息为空户
                    comMngPopulationHouseDAO.updateHouseByIsEmpty(houseId, 1);
                }
            });
        }
        //更新用户的房屋信息
        // 更新用户的房屋信息
        Long houseId = null;
        List<ComMngPopulationHouseUserDO> populationHouseUserDOList = new ArrayList<>();
        if (!vo.getHouseEditDTOList().isEmpty()) {
@@ -4355,20 +6447,20 @@
                populationHouseUserDO.setHouseId(houseEditDto.getId());
                populationHouseUserDO.setRelation(houseEditDto.getRelation());
                if (houseEditDto.getIsResidence().equals(ComMngPopulationHouseEditDTO.isResidence.yes)) {
                    houseId = houseEditDto.getId();//居住地
                    houseId = houseEditDto.getId();// 居住地
                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.yes);
                }else {
                } else {
                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.no);
                }
                populationHouseUserDOList.add(populationHouseUserDO);
                //修改房屋信息不为空户
                // 修改房屋信息不为空户
                comMngPopulationHouseDAO.updateHouseByIsEmpty(houseEditDto.getId(), 2);
            }
        }
        comMngPopulationHouseUserService.saveBatch(populationHouseUserDOList);
        if (houseId != null) {//居住地更新
        if (houseId != null) {// 居住地更新
            ComMngPopulationHouseDO houseDO = comMngPopulationHouseDAO.selectById(houseId);
            if (houseDO != null) {
                populationDO.setRoad(houseDO.getAlley());
@@ -4376,8 +6468,9 @@
                populationDO.setFloor(houseDO.getFloor());
                populationDO.setUnitNo(houseDO.getUnitNo());
                populationDO.setHouseNo(houseDO.getHouseNo());
                ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().lambda()
                        .eq(ComMngVillageDO::getAlley, houseDO.getAlley()).eq(ComMngVillageDO::getHouseNum, houseDO.getHouseNum())
                ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(
                    new QueryWrapper<ComMngVillageDO>().lambda().eq(ComMngVillageDO::getAlley, houseDO.getAlley())
                        .eq(ComMngVillageDO::getHouseNum, houseDO.getHouseNum())
                        .eq(ComMngVillageDO::getCommunityId, communityId));
                if (comMngVillageDO != null) {
                    populationDO.setVillageId(comMngVillageDO.getVillageId());
@@ -4388,19 +6481,97 @@
            }
        }
//        ComMngPopulationHouseUserDO comMngPopulationHouseUserDO = comMngPopulationHouseUserDAO.selectOne(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
//                .eq(ComMngPopulationHouseUserDO::getPopulId, vo.getId()));
//        if (comMngPopulationHouseUserDO != null) {
//            comMngPopulationHouseUserDO.setRelation(vo.getRelation());
//            comMngPopulationHouseUserDAO.updateById(comMngPopulationHouseUserDO);
//        }else {
//            comMngPopulationHouseUserDO = new ComMngPopulationHouseUserDO();
//            comMngPopulationHouseUserDO.setId(Snowflake.getId());
//            comMngPopulationHouseUserDO.setPopulId(vo.getId());
//            comMngPopulationHouseUserDO.setRelation(vo.getRelation());
//            comMngPopulationHouseUserDO.setCreateAt(new Date());
//            comMngPopulationHouseUserDAO.insert(comMngPopulationHouseUserDO);
//        }
        // ComMngPopulationHouseUserDO comMngPopulationHouseUserDO = comMngPopulationHouseUserDAO.selectOne(new
        // QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
        // .eq(ComMngPopulationHouseUserDO::getPopulId, vo.getId()));
        // if (comMngPopulationHouseUserDO != null) {
        // comMngPopulationHouseUserDO.setRelation(vo.getRelation());
        // comMngPopulationHouseUserDAO.updateById(comMngPopulationHouseUserDO);
        // }else {
        // comMngPopulationHouseUserDO = new ComMngPopulationHouseUserDO();
        // comMngPopulationHouseUserDO.setId(Snowflake.getId());
        // comMngPopulationHouseUserDO.setPopulId(vo.getId());
        // comMngPopulationHouseUserDO.setRelation(vo.getRelation());
        // comMngPopulationHouseUserDO.setCreateAt(new Date());
        // comMngPopulationHouseUserDAO.insert(comMngPopulationHouseUserDO);
        // }
        //修改吸毒人员信息
        if (null != vo.getComDrugPopulationVO()) {
            ComDrugPopulationVO comDrugPopulationVO = vo.getComDrugPopulationVO();
            ComDrugPopulationDO comDrugPopulationDO = comDrugPopulationDAO.selectById(comDrugPopulationVO.getId());
            BeanUtils.copyProperties(comDrugPopulationVO, comDrugPopulationDO);
            comDrugPopulationDAO.updateById(comDrugPopulationDO);
        }
        //修改社区矫正人员信息
        if (null != vo.getComCorrectPopulationVO()) {
            ComCorrectPopulationVO comCorrectPopulationVO = vo.getComCorrectPopulationVO();
            ComCorrectPopulationDO comCorrectPopulationDO = comCorrectPopulationDAO.selectById(comCorrectPopulationVO.getId());
            BeanUtils.copyProperties(comCorrectPopulationVO, comCorrectPopulationDO);
            comCorrectPopulationDAO.updateById(comCorrectPopulationDO);
        }
        //修改精神障碍信息
        if (null != vo.getComMajorPopulationVO()) {
            ComMajorPopulationVO comMajorPopulationVO = vo.getComMajorPopulationVO();
            ComMajorPopulationDO comCorrectPopulationDO = comMajorPopulationDAO.selectById(comMajorPopulationVO.getId());
            BeanUtils.copyProperties(comMajorPopulationVO, comCorrectPopulationDO);
            comMajorPopulationDAO.updateById(comCorrectPopulationDO);
        }
        //修改邪教信息
        if (null != vo.getComCultPopulationVO()) {
            ComCultPopulationVO comCultPopulationVO = vo.getComCultPopulationVO();
            ComCultPopulationDO comCultPopulationDO = comCultPopulationDAO.selectById(comCultPopulationVO.getId());
            BeanUtils.copyProperties(comCultPopulationVO, comCultPopulationDO);
            comCultPopulationDAO.updateById(comCultPopulationDO);
        }
        //修改刑释信息
        if (null != vo.getComRehabilitationPopulationVO()) {
            ComRehabilitationPopulationVO comRehabilitationPopulationVO = vo.getComRehabilitationPopulationVO();
            ComRehabilitationPopulationDO comRehabilitationPopulationDO = comRehabilitationPopulationDAO.selectById(comRehabilitationPopulationVO.getId());
            BeanUtils.copyProperties(comRehabilitationPopulationVO, comRehabilitationPopulationDO);
            comRehabilitationPopulationDAO.updateById(comRehabilitationPopulationDO);
        }
        //修改上访信息
        if (null != vo.getComKeyPopulationVO()) {
            ComKeyPopulationVO comKeyPopulationVO = vo.getComKeyPopulationVO();
            ComKeyPopulationDO comKeyPopulationDO = comKeyPopulationDAO.selectById(comKeyPopulationVO.getId());
            BeanUtils.copyProperties(comKeyPopulationVO, comKeyPopulationDO);
            comKeyPopulationDAO.updateById(comKeyPopulationDO);
        }
        //修改退役军人信息
        if (null != vo.getComVeteransPopulationVO()) {
            ComVeteransPopulationVO comVeteransPopulationVO = vo.getComVeteransPopulationVO();
            ComVeteransPopulationDO comVeteransPopulationDO = comVeteransPopulationDAO.selectById(comVeteransPopulationVO.getId());
            BeanUtils.copyProperties(comVeteransPopulationVO, comVeteransPopulationDO);
            comVeteransPopulationDAO.updateById(comVeteransPopulationDO);
        }
        //修改残疾人信息
        if (null != vo.getComDisabilityPopulationVO()) {
            ComDisabilityPopulationVO comDisabilityPopulationVO = vo.getComDisabilityPopulationVO();
            ComDisabilityPopulationDO comDisabilityPopulationDO = comDisabilityPopulationDAO.selectById(comDisabilityPopulationVO.getId());
            BeanUtils.copyProperties(comDisabilityPopulationVO, comDisabilityPopulationDO);
            comDisabilityPopulationDAO.updateById(comDisabilityPopulationDO);
        }
        //修改低保户信息
        if (null != vo.getComLowSecurityPopulationVO()) {
            ComLowSecurityPopulationVO comLowSecurityPopulationVO = vo.getComLowSecurityPopulationVO();
            ComLowSecurityPopulationDO comLowSecurityPopulationDO = comLowSecurityPopulationDAO.selectById(comLowSecurityPopulationVO.getId());
            BeanUtils.copyProperties(comLowSecurityPopulationVO, comLowSecurityPopulationDO);
            comLowSecurityPopulationDAO.updateById(comLowSecurityPopulationDO);
        }
        //修改高龄老人信息
        if (null != vo.getComElderAuthElderliesVO()) {
            ComElderAuthElderliesVO comElderAuthElderliesVO = vo.getComElderAuthElderliesVO();
            ComElderAuthElderliesDO comElderAuthElderliesDO = comElderAuthElderliesDAO.selectById(comElderAuthElderliesVO.getId());
            BeanUtils.copyProperties(comElderAuthElderliesVO, comElderAuthElderliesDO);
            comElderAuthElderliesDAO.updateById(comElderAuthElderliesDO);
        }
        //修改养老人员信息
        if (null != vo.getComPensionAuthPensionerVO()) {
            ComPensionAuthPensionerVO comPensionAuthPensionerVO = vo.getComPensionAuthPensionerVO();
            ComPensionAuthPensionerDO comPensionAuthPensionerDO = comPensionAuthPensionerDAO.selectById(comPensionAuthPensionerVO.getId());
            BeanUtils.copyProperties(comPensionAuthPensionerVO, comPensionAuthPensionerDO);
            comPensionAuthPensionerDAO.updateById(comPensionAuthPensionerDO);
        }
        if (populationDAO.updateById(populationDO) > 0) {
            return R.ok();
        } else {
@@ -4410,25 +6581,50 @@
    @Override
    public R specialInputUser(PageInputUserDTO pageInputUserDTO) {
        IPage<InputUserInfoVO> iPage = populationDAO.specialInputUser(new Page<>(pageInputUserDTO.getPageNum()
                , pageInputUserDTO.getPageSize()), pageInputUserDTO);
        IPage<InputUserInfoVO> iPage = populationDAO.specialInputUser(
            new Page<>(pageInputUserDTO.getPageNum(), pageInputUserDTO.getPageSize()), pageInputUserDTO);
        if(iPage!=null){
            iPage.getRecords().forEach(page -> {
                if(page.getAreaName() == null || StringUtils.isEmpty(page.getAreaName())){
                    StringBuilder sb = new StringBuilder();
                    sb.append(page.getAlley());
                    if(!page.getHouseNum().contains("号")){
                        sb.append(page.getHouseNum() + "号");
                    }
                    page.setAreaName(sb.toString());
                }
            });
        }
        return R.ok(iPage);
    }
    /**
     * 删除特殊群体人员
     *
     * @param id 特殊群体id
     * @param id
     *            特殊群体id
     * @return 删除结果
     */
    @Override
    public R deleteSpecialInputUser(Long id) {
        //查询特殊群体人员
    public R deleteSpecialInputUser(Long id,Long communityId) {
        // 查询特殊群体人员
        ComMngPopulationDO populationDO = this.baseMapper.selectById(id);
        if (populationDO == null) {
            return R.fail("未查询到该记录");
        }
        populationDO.setLabel(null);
        //  清理社区与人口关联信息的label信息
        List<ComMngPopulationCommunityTagsDO> communityTagsDOList = comMngPopulationCommunityTagsDAO.selectList(new QueryWrapper<ComMngPopulationCommunityTagsDO>()
                .lambda().eq(ComMngPopulationCommunityTagsDO::getPopulationId,id).eq(ComMngPopulationCommunityTagsDO::getCommunityId,communityId));
        if(communityTagsDOList != null && communityTagsDOList.size() > 0){
            communityTagsDOList.forEach(communityTags -> {
                communityTags.setLabel(null);
                comMngPopulationCommunityTagsDAO.updateById(communityTags);
            });
        }
        if (this.baseMapper.updateById(populationDO) > 0) {
            return R.ok();
        } else {
@@ -4438,21 +6634,22 @@
    @Override
    public R specialInputUserTags(PageInputUserDTO comMngUserTagDTO) {
        IPage<ComMngTagVO> iPage = populationDAO.specialInputUserTags(new Page<>(comMngUserTagDTO.getPageNum()
                , comMngUserTagDTO.getPageSize()), comMngUserTagDTO);
        IPage<ComMngTagVO> iPage = populationDAO.specialInputUserTags(
            new Page<>(comMngUserTagDTO.getPageNum(), comMngUserTagDTO.getPageSize()), comMngUserTagDTO);
        return R.ok(iPage);
    }
    @Override
    public R saveSpecialInputUserTags(ComMngTagVO comMngTagVO) {
        if (null != comMngTagVO.getId() && comMngTagVO.getId() != 0) {
            //修改
            // 修改
            ComMngUserTagDO comMngUserTagDO = comMngUserTagDAO.selectById(comMngTagVO.getId());
            if (null == comMngUserTagDO) {
                return R.fail("该标签不存在");
            }
            ComMngUserTagDO checkCreditCode = comMngUserTagDAO.selectOne(new QueryWrapper<ComMngUserTagDO>().lambda().eq(ComMngUserTagDO::getTagName, comMngTagVO.getTagName()));
            if (null != checkCreditCode && comMngUserTagDO.getId() != checkCreditCode.getId()) {
            ComMngUserTagDO checkCreditCode = comMngUserTagDAO.selectOne(
                new QueryWrapper<ComMngUserTagDO>().lambda().eq(ComMngUserTagDO::getTagName, comMngTagVO.getTagName()));
            if (null != checkCreditCode && !comMngUserTagDO.getId().equals(checkCreditCode.getId())) {
                return R.fail("该标签已存在,标签名称重复");
            }
@@ -4462,8 +6659,9 @@
                return R.ok();
            }
        } else {
            //新增
            Integer count = comMngUserTagDAO.selectCount(new QueryWrapper<ComMngUserTagDO>().lambda().eq(ComMngUserTagDO::getTagName, comMngTagVO.getTagName()));
            // 新增
            Integer count = comMngUserTagDAO.selectCount(
                new QueryWrapper<ComMngUserTagDO>().lambda().eq(ComMngUserTagDO::getTagName, comMngTagVO.getTagName()));
            if (count > 0) {
                return R.fail("该标签已存在,标签名称重复");
            }
@@ -4480,7 +6678,7 @@
    @Override
    public R deleteSpecialInputUserTags(Long id) {
        //查询特殊群体人员
        // 查询特殊群体人员
        ComMngUserTagDO comMngUserTagDO = comMngUserTagDAO.selectById(id);
        if (comMngUserTagDO == null) {
            return R.fail("该标签不存在");
@@ -4495,7 +6693,8 @@
    /**
     * 查询实有人口电子档信息
     *
     * @param populationId 实有人口id
     * @param populationId
     *            实有人口id
     * @return 实有人口电子档信息
     */
    @Override
@@ -4504,9 +6703,10 @@
        if (ObjectUtils.isEmpty(comMngPopulationDO)) {
            return R.fail("用户信息不存在");
        }
        //查询当前用户电子档信息
        // 查询当前用户电子档信息
        if (!StringUtils.isEmpty(comMngPopulationDO.getCardNo())) {
            UserElectronicFileVO electronicFileVO = populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
            UserElectronicFileVO electronicFileVO =
                populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
            if (electronicFileVO != null) {
                return R.ok(electronicFileVO);
            }
@@ -4527,7 +6727,8 @@
    /**
     * 实有人口统计
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 统计结果
     */
    @Override
@@ -4544,7 +6745,8 @@
        ComMngPopulationDO comMngPopulation = new ComMngPopulationDO();
        if (comMngPopulationDO.getLabel() != null) {
            if (!comMngPopulationDO.getLabel().contains(comMngPopulationTagCardNoDTO.getLabel())) {
                comMngPopulation.setLabel(comMngPopulationTagCardNoDTO.getLabel().concat(",").concat(comMngPopulationDO.getLabel()));
                comMngPopulation.setLabel(
                    comMngPopulationTagCardNoDTO.getLabel().concat(",").concat(comMngPopulationDO.getLabel()));
            }
        } else {
            comMngPopulation.setLabel(comMngPopulationTagCardNoDTO.getLabel());
@@ -4562,10 +6764,7 @@
    public ComMngPopulationDO getPopulationByCardNo(String cardNo) {
        try {
            String aesCardNo = AESUtil.encrypt128(cardNo, aesKey);
            return baseMapper.selectOne(
                    new QueryWrapper<ComMngPopulationDO>()
                            .eq("card_no", aesCardNo)
            );
            return baseMapper.selectOne(new QueryWrapper<ComMngPopulationDO>().eq("card_no", aesCardNo));
        } catch (Exception e) {
            log.error("根据身份证查询业务-加密证件信息出错:{}", e.getCause());
        }
@@ -4575,52 +6774,57 @@
    /**
     * 首页大屏统计接口
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 统计结果
     */
    @Override
    public R getScreenIndex(Long communityId) {
        //创建统计返回参数
        // 创建统计返回参数
        IndexStatisticsVO statisticsVO = new IndexStatisticsVO();
        //查询基础数据模块
        // 查询基础数据模块
        IndexBasicsStatisticsVO basicsStatisticsVO = comMngPopulationDAO.getScreenIndexByBasics(communityId);
        statisticsVO.setBasicsStatistics(basicsStatisticsVO);
        //查询实有人口统计模块
        // 查询实有人口统计模块
        IndexPopulationStatisticsVO populationStatisticsVO = new IndexPopulationStatisticsVO();
        //查询实有人口性别统计
        List<IndexPopulationSexStatisticsVO> sexPopulationList = comMngPopulationDAO.getScreenIndexByPopulationSex(communityId);
        // 查询实有人口性别统计
        List<IndexPopulationSexStatisticsVO> sexPopulationList =
            comMngPopulationDAO.getScreenIndexByPopulationSex(communityId);
        populationStatisticsVO.setSexPopulationList(sexPopulationList);
        //查询实有人口年龄统计
        // 查询实有人口年龄统计
        List<IndexPopulationAgeStatisticsVO> agePopulationList = statisticsAge(communityId);
        populationStatisticsVO.setAgePopulationList(agePopulationList);
        statisticsVO.setPopulationStatisticsVO(populationStatisticsVO);
        //查询实有人口实时治理信息
        List<IndexEventListStatisticsVO> eventListStatisticsList = comMngPopulationDAO.getScreenIndexByEventList(communityId);
        // 查询实有人口实时治理信息
        List<IndexEventListStatisticsVO> eventListStatisticsList =
            comMngPopulationDAO.getScreenIndexByEventList(communityId);
        statisticsVO.setEventListStatisticsList(eventListStatisticsList);
        //查询社区治理动态信息
        // 查询社区治理动态信息
        IndexDynamicStatisticsVO dynamicStatisticsVO = comMngPopulationDAO.getScreenIndexByDynamic(communityId);
        dynamicStatisticsVO.setCultureActivityTotal(dynamicStatisticsVO.getPbTotal() + dynamicStatisticsVO.getActTotal());
        dynamicStatisticsVO
            .setCultureActivityTotal(dynamicStatisticsVO.getPbTotal() + dynamicStatisticsVO.getActTotal());
        statisticsVO.setDynamicStatisticsVO(dynamicStatisticsVO);
        //查询网格化治理
        // 查询网格化治理
        IndexEventGridStatisticsVO eventGridStatisticsVO = new IndexEventGridStatisticsVO();
        List<IndexGridStatisticsVO> gridStatisticsList = new ArrayList<>();
        //查询网格化事件数据
        // 查询网格化事件数据
        IndexGridEventStatisticsVO gridEventStatistics = comMngPopulationDAO.getGridEventStatisticsList(communityId);
        eventGridStatisticsVO.setGridEventStatisticsList(gridEventStatistics);
        //查询网格数据
        // 查询网格数据
        List<EventGridDataVO> gridDataList = comMngPopulationDAO.getGridDataListByCommunityId(communityId);
        if (!gridDataList.isEmpty()) {
            gridDataList.forEach(gridData -> {
                if (gridData != null) {
                    IndexGridStatisticsVO gridStatisticsVO = new IndexGridStatisticsVO();
                    gridStatisticsVO.setEventData(gridData.getGridName());
                    //根据网格id查询网格事件列表
                    IndexGridEventStatisticsVO gridEventList = comMngPopulationDAO.getGridEventByGirdId(gridData.getId());
                    // 根据网格id查询网格事件列表
                    IndexGridEventStatisticsVO gridEventList =
                        comMngPopulationDAO.getGridEventByGirdId(gridData.getId());
                    gridStatisticsVO.setGridEventStatisticsList(gridEventList);
                    gridStatisticsList.add(gridStatisticsVO);
                }
@@ -4629,14 +6833,14 @@
        eventGridStatisticsVO.setGridStatisticsList(gridStatisticsList);
        statisticsVO.setEventGridStatisticsVO(eventGridStatisticsVO);
        //查询党建数据
        // 查询党建数据
        BigScreenStatisticPartyBuild statisticPartyBuild = bigScreenDAO.partybuild(communityId);
        statisticsVO.setStatisticPartyBuild(statisticPartyBuild);
        //查询特殊人群统计
        // 查询特殊人群统计
        List<IndexSpecialStatisticsVO> specialStatisticsVOList = new ArrayList<>();
        //查询特殊人群标签列表
        // 查询特殊人群标签列表
        List<ComMngUserTagVO> userTagList = comMngPopulationDAO.getUserTagListByCommunityId(communityId);
        IndexSpecialStatisticsVO otherSpecialVO = new IndexSpecialStatisticsVO();
        otherSpecialVO.setTitle("其他");
@@ -4645,7 +6849,7 @@
            userTagList.forEach(userTag -> {
                if (userTag != null) {
                    if (userTag.getSysFlag().equals(0)) {
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                        otherSpecialVO.setSum(otherSpecialVO.getSum() + count);
                    } else {
                        if (StringUtils.isNotEmpty(userTag.getTagName())) {
@@ -4669,15 +6873,15 @@
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(264);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else if(userTag.getTagName().equals("高龄老人")){
                            } else if (userTag.getTagName().equals("高龄老人")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else{
                            } else {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                                specialStatisticsVO.setSum(count);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }
@@ -4715,12 +6919,20 @@
            ageStatisticsVO5.setSum(0);
            ageStatisticsVO6.setSum(0);
        } else {
            int count=ageMap.get("age16").intValue()+ageMap.get("age27").intValue()+ageMap.get("age35").intValue()
                    +ageMap.get("age45").intValue()+ageMap.get("age55").intValue()+ageMap.get("age55over").intValue();
            ageStatisticsVO1.setSum(ageMap.get("age16").intValue());
            ageStatisticsVO1.setPercent(ageMap.get("age16").intValue()*100/count);
            ageStatisticsVO2.setSum(ageMap.get("age27").intValue());
            ageStatisticsVO2.setPercent(ageMap.get("age27").intValue()*100/count);
            ageStatisticsVO3.setSum(ageMap.get("age35").intValue());
            ageStatisticsVO3.setPercent(ageMap.get("age35").intValue()*100/count);
            ageStatisticsVO4.setSum(ageMap.get("age45").intValue());
            ageStatisticsVO4.setPercent(ageMap.get("age45").intValue()*100/count);
            ageStatisticsVO5.setSum(ageMap.get("age55").intValue());
            ageStatisticsVO5.setPercent(ageMap.get("age55").intValue()*100/count);
            ageStatisticsVO6.setSum(ageMap.get("age55over").intValue());
            ageStatisticsVO6.setPercent(ageMap.get("age55over").intValue()*100/count);
        }
        agePopulationList.add(ageStatisticsVO1);
@@ -4735,38 +6947,37 @@
    /**
     * 事件大屏统计接口
     *
     * @param screenEventDTO 请求参数
     * @param screenEventDTO
     *            请求参数
     * @return 统计结果
     */
    @Override
    public R getScreenEvent(BigScreenEventDTO screenEventDTO) {
        Long communityId = screenEventDTO.getCommunityId();
        //创建统计返回参数
        // 创建统计返回参数
        EventStatisticsVO statisticsVO = new EventStatisticsVO();
        //查询页面左边数据
        // 查询页面左边数据
        EventLeftStatisticsVO leftStatisticsVO = new EventLeftStatisticsVO();
        //查询左上数据
        // 查询左上数据
        EventLeftTopStatisticsVO leftTopStatisticsVO = this.baseMapper.getEventScreenLeftTop(screenEventDTO);
        //查询时间频发月份
        // 查询时间频发月份
        List<Integer> monthList = this.baseMapper.getFrequentlyEventMonth(communityId);
        leftTopStatisticsVO.setOftenMonth(monthList);
        leftStatisticsVO.setLeftTopStatisticsVO(leftTopStatisticsVO);
        //查询左下数据
        // 查询左下数据
        EventLeftDownStatisticsVO leftDownStatisticsVO = this.baseMapper.getEventScreenLeftDown(screenEventDTO);
        leftStatisticsVO.setLeftDownStatisticsVO(leftDownStatisticsVO);
        statisticsVO.setLeftStatisticsVO(leftStatisticsVO);
        //查询事件播报模块数据
        // 查询事件播报模块数据
        EventNewStatisticsVO newStatisticsVO = this.baseMapper.getEventScreenRightTop(communityId);
        if (newStatisticsVO != null) {
            //查询事件资源文件
            // 查询事件资源文件
            List<EventResourceDO> eventResourceDOList =
                    eventResourceService.getBaseMapper().selectList(new LambdaQueryWrapper<EventResourceDO>()
                            .eq(EventResourceDO::getClassification, 1)
                            .eq(EventResourceDO::getRefId, newStatisticsVO.getId())
                    );
                eventResourceService.getBaseMapper().selectList(new LambdaQueryWrapper<EventResourceDO>()
                    .eq(EventResourceDO::getClassification, 1).eq(EventResourceDO::getRefId, newStatisticsVO.getId()));
            List<EventResourceVO> picList = new ArrayList<>();
            List<EventResourceVO> audioList = new ArrayList<>();
            List<EventResourceVO> videoList = new ArrayList<>();
@@ -4793,39 +7004,41 @@
            newStatisticsVO.setPics(picList);
            newStatisticsVO.setVideos(videoList);
            //查询事件流转记录
            List<EventTransferRecordVO> transferRecordList = this.baseMapper.getEventScreenEventTransList(newStatisticsVO.getId());
            // 查询事件流转记录
            List<EventTransferRecordVO> transferRecordList =
                this.baseMapper.getEventScreenEventTransList(newStatisticsVO.getId());
            newStatisticsVO.setTransferRecordList(transferRecordList);
        }
        statisticsVO.setNewStatisticsVO(newStatisticsVO);
        //查询网格数据
        // 查询网格数据
        List<EventGridStatisticsVO> gridStatisticsList = this.baseMapper.getEventScreenGridData(communityId);
        statisticsVO.setGridStatisticsList(gridStatisticsList);
        //查询社区事件列表
        // 查询社区事件列表
        List<EventGridIncidentStatisticsVO> gridIncidentList = this.baseMapper.getEventScreenEventList(screenEventDTO);
        statisticsVO.setGridIncidentList(gridIncidentList);
        //查询小区列表
        // 查询小区列表
        List<CivilVillageStatisticsVO> villageStatisticsList = this.baseMapper.getCivilScreenVillageList(communityId);
        if(!villageStatisticsList.isEmpty()){
        if (!villageStatisticsList.isEmpty()) {
            villageStatisticsList.forEach(village -> {
                CivilVillageStatisticsVO villageStatisticsVO = this.baseMapper.getCivilScreenVillageStatistics(village.getVillageId());
                if(villageStatisticsVO != null){
                CivilVillageStatisticsVO villageStatisticsVO =
                    this.baseMapper.getCivilScreenVillageStatistics(village.getVillageId());
                if (villageStatisticsVO != null) {
                    village.setPeopleNum(villageStatisticsVO.getPeopleNum());
                    village.setHouseNum(villageStatisticsVO.getHouseNum());
                    village.setRegisterNum(villageStatisticsVO.getRegisterNum());
                    village.setFlowNum(villageStatisticsVO.getFlowNum());
//                    BeanUtils.copyProperties(villageStatisticsVO,village);
                    // BeanUtils.copyProperties(villageStatisticsVO,village);
                }
            });
        }
        statisticsVO.setVillageStatisticsList(villageStatisticsList);
        //查询统计人口数据
        // 查询统计人口数据
        ComMngPopulationTotalVO populationTotalVO = populationDAO.getPopulationTotalByAdmin(communityId);
        if(communityId.equals(2L)){
        if (communityId.equals(2L)) {
            populationTotalVO.setSpecialTotal(36);
        }
        statisticsVO.setPopulationTotalVO(populationTotalVO);
@@ -4836,15 +7049,16 @@
    /**
     * 民生大屏统计接口
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 统计结果
     */
    @Override
    public R getScreenCivil(Long communityId) {
        //创建统计返回参数
        // 创建统计返回参数
        CivilStatisticsVO civilStatisticsVO = new CivilStatisticsVO();
        //查询特殊人群统计
        // 查询特殊人群统计
        List<IndexSpecialStatisticsVO> specialStatisticsVOList = new ArrayList<>();
        //查询特殊人群标签列表
@@ -4856,7 +7070,7 @@
            userTagList.forEach(userTag -> {
                if (userTag != null) {
                    if (userTag.getSysFlag().equals(0)) {
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                        otherSpecialVO.setSum(otherSpecialVO.getSum() + count);
                    } else {
                        if (StringUtils.isNotEmpty(userTag.getTagName())) {
@@ -4880,15 +7094,15 @@
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(264);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else if(userTag.getTagName().equals("高龄老人")){
                            } else if (userTag.getTagName().equals("高龄老人")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else{
                            } else {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                                specialStatisticsVO.setSum(count);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }
@@ -4897,7 +7111,7 @@
                }
            });
        }
        //计算特殊人群总数
        // 计算特殊人群总数
        specialStatisticsVOList.add(otherSpecialVO);
        Integer specialNum = 0;
        if (!specialStatisticsVOList.isEmpty()) {
@@ -4908,26 +7122,72 @@
        civilStatisticsVO.setSpecialNum(specialNum);
        civilStatisticsVO.setSpecialStatisticsList(specialStatisticsVOList);
        //计算环比上月增长率
        // 计算环比上月增长率
        BigDecimal rate = BigDecimal.ZERO;
        CivilPopulationStatisticsVO populationStatisticsVO = this.baseMapper.getCivilScreenPopulation(communityId, DateUtils.getFirstDayOfMonth());
        CivilPopulationStatisticsVO populationStatisticsVO =
            this.baseMapper.getCivilScreenPopulation(communityId, DateUtils.getFirstDayOfMonth());
        if (populationStatisticsVO != null) {
            if (populationStatisticsVO.getToMonthSpecialTotal().equals(0)) {
                rate = BigDecimal.valueOf(100);
            } else {
                rate = BigDecimal.valueOf(populationStatisticsVO.getSpecialTotal() - populationStatisticsVO.getToMonthSpecialTotal()).divide(BigDecimal.valueOf(populationStatisticsVO.getToMonthSpecialTotal()), 3, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
                rate = BigDecimal
                    .valueOf(populationStatisticsVO.getSpecialTotal() - populationStatisticsVO.getToMonthSpecialTotal())
                    .divide(BigDecimal.valueOf(populationStatisticsVO.getToMonthSpecialTotal()), 3,
                        BigDecimal.ROUND_HALF_UP)
                    .multiply(BigDecimal.valueOf(100));
            }
        }
        civilStatisticsVO.setRate(rate);
        //查询网格数据
        // 查询网格数据
        List<EventGridStatisticsVO> gridStatisticsList = this.baseMapper.getEventScreenGridData(communityId);
        civilStatisticsVO.setGridStatisticsList(gridStatisticsList);
        //查询小区列表
        // 查询小区列表
        List<CivilVillageStatisticsVO> villageStatisticsList = this.baseMapper.getCivilScreenVillageList(communityId);
//        villageStatisticsList.forEach(civilVillageStatisticsVO -> {
//            civilVillageStatisticsVO.setUserSum(comMngPopulationDAO.selectCount(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getVillageId,civilVillageStatisticsVO.getVillageId())));
//            List<IndexSpecialStatisticsVO> specialStatisticsVOS = new ArrayList<>();
//            IndexSpecialStatisticsVO otherSpecial = new IndexSpecialStatisticsVO();
//            otherSpecial.setTitle("其他");
//            otherSpecial.setSum(0);
//            // 查询特殊人群标签列表
//            List<ComMngUserTagVO> userTagVOS = comMngPopulationDAO.getUserTagListByCommunityId(communityId);
//
//            userTagVOS.forEach(comMngUserTagVO -> {
//              Integer count=comMngPopulationDAO.selectCountByVillageId(civilVillageStatisticsVO.getVillageId(),comMngUserTagVO.getTagName());
//              IndexSpecialStatisticsVO indexSpecialStatisticsVO=new IndexSpecialStatisticsVO();
//              indexSpecialStatisticsVO.setTitle(comMngUserTagVO.getTagName());
//              indexSpecialStatisticsVO.setSum(count);
//              otherSpecial.setSum(otherSpecial.getSum()+count);
//              specialStatisticsVOS.add(indexSpecialStatisticsVO);
//            });
//            otherSpecial.setSum(civilVillageStatisticsVO.getUserSum()-otherSpecial.getSum());
//            specialStatisticsVOS.add(otherSpecial);
//            civilVillageStatisticsVO.setSpecialStatisticsList(specialStatisticsVOS);
//        });
        civilStatisticsVO.setVillageStatisticsList(villageStatisticsList);
        //查询党建引领数据
        CivilPartyStatisticsVO civilParty = this.baseMapper.getCivilParty(communityId);
        if(civilParty != null){
            civilStatisticsVO.setCivilPartyStatisticsVO(civilParty);
        }
        //查询社区治理数据
        CivilGovernmentStatisticsVO civilGovernment = this.baseMapper.getCivilGovernment(communityId);
        if(civilGovernment != null){
            civilStatisticsVO.setCivilGovernmentStatisticsVO(civilGovernment);
        }
        //查询网格管理数据
        CivilGridStatisticsVO civilGrid = this.baseMapper.getCivilGrid(communityId);
        if(civilGrid != null){
            civilStatisticsVO.setCivilGridStatisticsVO(civilGrid);
        }
        //查询便民服务数据
        CivilConvenienceStatisticsVO civilConvenience = this.baseMapper.getCivilConvenience(communityId);
        if(civilConvenience != null){
            civilStatisticsVO.setCivilConvenienceStatisticsVO(civilConvenience);
        }
        return R.ok(civilStatisticsVO);
    }
@@ -4939,51 +7199,51 @@
        comActPopulationScreenVO.setLocalNum(vo.getLocalTotal() == null ? 0 : vo.getLocalTotal().longValue());
        comActPopulationScreenVO.setOutNum(vo.getOutTotal() == null ? 0 : vo.getOutTotal().longValue());
        //查询特殊人群统计
        // 查询特殊人群统计
        List<IndexSpecialStatisticsVO> specialStatisticsVOList = new ArrayList<>();
        //查询特殊人群标签列表
        // 查询特殊人群标签列表
        List<ComMngUserTagVO> userTagList = comMngPopulationDAO.getUserTagListByCommunityId(communityId);
        IndexSpecialStatisticsVO otherSpecialVO = new IndexSpecialStatisticsVO();
        otherSpecialVO.setTitle("其他");
        otherSpecialVO.setSum(0);
        if(!userTagList.isEmpty()){
        if (!userTagList.isEmpty()) {
            userTagList.forEach(userTag -> {
                if(userTag != null){
                    if(userTag.getSysFlag().equals(0)){
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
                if (userTag != null) {
                    if (userTag.getSysFlag().equals(0)) {
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                        otherSpecialVO.setSum(otherSpecialVO.getSum() + count);
                    }else{
                        if(StringUtils.isNotEmpty(userTag.getTagName())){
                            if(userTag.getTagName().equals("特扶家庭")){
                    } else {
                        if (StringUtils.isNotEmpty(userTag.getTagName())) {
                            if (userTag.getTagName().equals("特扶家庭")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(22);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else if(userTag.getTagName().equals("低保户")){
                            } else if (userTag.getTagName().equals("低保户")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(94);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else if(userTag.getTagName().equals("低收入人群")){
                            } else if (userTag.getTagName().equals("低收入人群")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(2);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else if(userTag.getTagName().equals("退役军人")){
                            } else if (userTag.getTagName().equals("退役军人")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(264);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else if(userTag.getTagName().equals("高龄老人")){
                            } else if (userTag.getTagName().equals("高龄老人")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }else{
                            } else {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                                specialStatisticsVO.setSum(count);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }
@@ -4992,44 +7252,45 @@
                }
            });
        }
        //计算特殊人群总数
        // 计算特殊人群总数
        specialStatisticsVOList.add(otherSpecialVO);
        Integer specialNum = 0;
        if(!specialStatisticsVOList.isEmpty()){
            for (IndexSpecialStatisticsVO special:specialStatisticsVOList) {
        if (!specialStatisticsVOList.isEmpty()) {
            for (IndexSpecialStatisticsVO special : specialStatisticsVOList) {
                specialNum += special.getSum();
            }
        }
        comActPopulationScreenVO.setSpecialNum(specialNum.longValue());
        //统计已使用社区通人数
        // 统计已使用社区通人数
        Long count = populationDAO.countUsedCommunityPopulation(communityId);
        comActPopulationScreenVO.setUsedCommunityNum(count == null ? 0 : count);
//        comActPopulationScreenVO.setUsedCommunityNum(1183L);
        // comActPopulationScreenVO.setUsedCommunityNum(1183L);
        //统计性别
        // 统计性别
        Map<String, Long> sexMap = populationDAO.countBySex(communityId);
        comActPopulationScreenVO.setWoman(sexMap.get("woman") == null ? 0L : sexMap.get("woman"));
        comActPopulationScreenVO.setManNum(sexMap.get("man") == null ? 0L : sexMap.get("man"));
        int manPoint = (int) (((double) comActPopulationScreenVO.getManNum() / (double) comActPopulationScreenVO.getTotalNum()) * 100);
        int manPoint =
            (int)(((double)comActPopulationScreenVO.getManNum() / (double)comActPopulationScreenVO.getTotalNum())
                * 100);
        comActPopulationScreenVO.setManPoint(manPoint);
        comActPopulationScreenVO.setWomanPoint(100 - manPoint);
        //统计年龄结构
        // 统计年龄结构
        setAgeGroup(comActPopulationScreenVO, communityId);
        //统计学历
        // 统计学历
        setCultureGroup(comActPopulationScreenVO, communityId);
        //查询网格数据
        // 查询网格数据
        List<EventGridStatisticsVO> gridStatisticsList = this.baseMapper.getEventScreenGridData(communityId);
        comActPopulationScreenVO.setGridStatisticsList(gridStatisticsList);
        //查询小区列表
        // 查询小区列表
        List<CivilVillageStatisticsVO> villageStatisticsList = this.baseMapper.getCivilScreenVillageList(communityId);
        comActPopulationScreenVO.setVillageStatisticsList(villageStatisticsList);
        return R.ok(comActPopulationScreenVO);
    }
    private void setCultureGroup(ComActPopulationScreenVO comActPopulationScreenVO, Long communityId) {
        Map<String, Long> cultureMap = populationDAO.countByCulture(communityId);
@@ -5116,7 +7377,8 @@
    /**
     * 获取社区网格
     *
     * @param communityId 社区id
     * @param communityId
     *            社区id
     * @return 网格数据
     */
    @Override
@@ -5127,20 +7389,25 @@
    /**
     * 事件大屏查询事件详情
     *
     * @param eventDetailDTO 请求参数
     * @param eventDetailDTO
     *            请求参数
     * @return 事件详情
     */
    @Override
    public R getScreenEventDetail(BigScreenEventDetailDTO eventDetailDTO) {
        EventNewStatisticsVO statisticsVO = new EventNewStatisticsVO();
        if (eventDetailDTO.getType().equals(7)) {//随手拍详情
        Integer eventType = eventDetailDTO.getEventType();
        if (eventDetailDTO.getType().equals(7) || (nonNull(eventType) && eventType.equals(2))) {// 随手拍详情
            statisticsVO = this.baseMapper.getEventScreenSSPDateil(eventDetailDTO.getEventId());
            if (statisticsVO != null && StringUtils.isNotEmpty(statisticsVO.getPhotoPathList())) {
                statisticsVO.setDangerLevel("0");
                statisticsVO.setMajor(false);
                statisticsVO.setUrgent(false);
                if (statisticsVO.getEventDealStatus().equals(2)) {
                    statisticsVO.setEventDealStatus(4);
                if (statisticsVO.getEventDealStatus().equals(2)||statisticsVO.getEventDealStatus().equals(1)) {
                    statisticsVO.setEventDealStatus(1);
                }
                else {
                    statisticsVO.setEventDealStatus(2);
                }
                List<EventResourceVO> picList = new ArrayList<>();
                String[] pics = statisticsVO.getPhotoPathList().split(",");
@@ -5154,15 +7421,13 @@
                }
                statisticsVO.setPics(picList);
            }
        } else {//事件详情
        } else {// 事件详情
            statisticsVO = this.baseMapper.getEventScreenEventDetail(eventDetailDTO.getEventId());
            if (statisticsVO != null) {
                //查询事件资源文件
                // 查询事件资源文件
                List<EventResourceDO> eventResourceDOList =
                        eventResourceService.getBaseMapper().selectList(new LambdaQueryWrapper<EventResourceDO>()
                                .eq(EventResourceDO::getClassification, 1)
                                .eq(EventResourceDO::getRefId, statisticsVO.getId())
                        );
                    eventResourceService.getBaseMapper().selectList(new LambdaQueryWrapper<EventResourceDO>()
                        .eq(EventResourceDO::getClassification, 1).eq(EventResourceDO::getRefId, statisticsVO.getId()));
                List<EventResourceVO> picList = new ArrayList<>();
                List<EventResourceVO> audioList = new ArrayList<>();
                List<EventResourceVO> videoList = new ArrayList<>();
@@ -5189,20 +7454,24 @@
                statisticsVO.setPics(picList);
                statisticsVO.setVideos(videoList);
                //查询事件流转记录
                List<EventTransferRecordVO> transferRecordList = this.baseMapper.getEventScreenEventTransList(eventDetailDTO.getEventId());
                if(!transferRecordList.isEmpty()){
                // 查询事件流转记录
                List<EventTransferRecordVO> transferRecordList =
                    this.baseMapper.getEventScreenEventTransList(eventDetailDTO.getEventId());
                if (!transferRecordList.isEmpty()) {
                    transferRecordList.forEach(transfer -> {
                        if(transfer.getFromType().equals(EventTransferRecordVO.fromType.wgy)){
                            //查询上级网格信息
                            EventTransferRecordDetailVO transferRecordDetailVO = this.baseMapper.getEventScreenEventTransDetail(transfer.getEventId());
                        if (transfer.getFromType().equals(EventTransferRecordVO.fromType.wgy)) {
                            // 查询上级网格信息
                            EventTransferRecordDetailVO transferRecordDetailVO =
                                this.baseMapper.getEventScreenEventTransDetail(transfer.getEventId());
                            transfer.setSuperiorRelationship(
                                transferRecordDetailVO.getStreetName() + "-" + transferRecordDetailVO.getCommunityName()
                                    + "-" + transferRecordDetailVO.getGridName());
                        } else if (transfer.getFromType().equals(EventTransferRecordVO.fromType.sq)) {
                            // 查询上级社区信息
                            EventTransferRecordDetailVO transferRecordDetailVO =
                                this.baseMapper.getEventScreenEventTransDetailByCommunityId(transfer.getFromId());
                            transfer.setSuperiorRelationship(transferRecordDetailVO.getStreetName() + "-"
                                    + transferRecordDetailVO.getCommunityName() + "-" + transferRecordDetailVO.getGridName());
                        }else if(transfer.getFromType().equals(EventTransferRecordVO.fromType.sq)){
                            //查询上级社区信息
                            EventTransferRecordDetailVO transferRecordDetailVO = this.baseMapper.getEventScreenEventTransDetailByCommunityId(transfer.getFromId());
                            transfer.setSuperiorRelationship(transferRecordDetailVO.getStreetName() + "-"
                                    + transferRecordDetailVO.getCommunityName());
                                + transferRecordDetailVO.getCommunityName());
                        }
                    });
                }
@@ -5215,13 +7484,23 @@
    /**
     * 获取人口数据信息
     *
     * @param populationListDTO 请求参数
     * @param populationListDTO
     *            请求参数
     * @return 人口数据
     */
    @Override
    public R pagePopulationListApp(PagePopulationListDTO populationListDTO){
        IPage<PopulationListVO> pagePopulationList = this.baseMapper.pagePopulationListApp(new Page(populationListDTO.getPageNum(),populationListDTO.getPageSize()),populationListDTO);
        if(!pagePopulationList.getRecords().isEmpty()){
    public R pagePopulationListApp(PagePopulationListDTO populationListDTO) {
        if(populationListDTO.getLabel() != null && "户籍人口".equals(populationListDTO.getLabel())){
            populationListDTO.setLabel(null);
            populationListDTO.setOutOrLocal(PagePopulationListDTO.outOrLocal.bd);
        }
        if(populationListDTO.getLabel() != null && "流动人口".equals(populationListDTO.getLabel())){
            populationListDTO.setLabel(null);
            populationListDTO.setOutOrLocal(PagePopulationListDTO.outOrLocal.wd);
        }
        IPage<PopulationListVO> pagePopulationList = this.baseMapper.pagePopulationListApp(
            new Page(populationListDTO.getPageNum(), populationListDTO.getPageSize()), populationListDTO);
        if (!pagePopulationList.getRecords().isEmpty()) {
            pagePopulationList.getRecords().forEach(population -> {
                population.setAge(IdcardUtil.getAgeByIdCard(population.getCardNo()));
            });
@@ -5232,20 +7511,26 @@
    /**
     * 根据人口id获取人口详情
     *
     * @param populationId  人口id
     * @return  人口详情
     * @param populationId
     *            人口id
     * @return 人口详情
     */
    @Override
    public R getPopulationDetailApp(Long populationId){
    public R getPopulationDetailApp(Long populationId) {
        PopulationDetailVO detail = this.baseMapper.getPopulationDetailApp(populationId);
        if(detail != null){
        if (detail != null) {
            detail.setAge(IdcardUtil.getAgeByIdCard(detail.getCardNo()));
            if(StringUtils.isNotEmpty(detail.getCultureLevel())){
                detail.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(Integer.parseInt(detail.getCultureLevel())));
            if (StringUtils.isNotEmpty(detail.getCultureLevel())) {
                detail
                    .setCultureLevel(PopulCultureLevelEnum.getCnDescByName(Integer.parseInt(detail.getCultureLevel())));
            }
            if(StringUtils.isNotEmpty(detail.getMarriage())){
            if (StringUtils.isNotEmpty(detail.getMarriage())) {
                detail.setMarriage(PopulMarriageEnum.getCnDescByName(Integer.parseInt(detail.getMarriage())));
            }
            //查询该人口的标签
            List<ComMngPopulationCommunityTagsVo> communityTagsList = this.baseMapper.getCommunityTagList(populationId);
            String label = LabelUtils.assembleLabel(communityTagsList);
            detail.setLabel(label);
        }
        return R.ok(detail);
    }
@@ -5257,13 +7542,13 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R getPopulationRepairByApp(){
    public R getPopulationRepairByApp() {
        List<ComMngPopulationDO> populationDOList = this.baseMapper.selectList(new QueryWrapper<ComMngPopulationDO>());
        if(!populationDOList.isEmpty()){
        if (!populationDOList.isEmpty()) {
            populationDOList.forEach(population -> {
                try {
                    population.setCardNo(AESUtil.encrypt128(population.getCardNoStr(),aesKey));
                }catch (Exception e){
                    population.setCardNo(AESUtil.encrypt128(population.getCardNoStr(), aesKey));
                } catch (Exception e) {
                }
                this.baseMapper.updateById(population);
@@ -5274,33 +7559,37 @@
    /**
     * 综治后台-居民列表
     * @param populationListDTO 请求参数
     * @return  居民列表
     *
     * @param populationListDTO
     *            请求参数
     * @return 居民列表
     */
    @Override
    public R getGridPopulationAdminList(ComMngPopulationListDTO populationListDTO){
        if(StringUtils.isNotEmpty(populationListDTO.getKeyWord())){
    public R getGridPopulationAdminList(ComMngPopulationListDTO populationListDTO) {
        if (StringUtils.isNotEmpty(populationListDTO.getKeyWord())) {
            try {
                populationListDTO.setCardNo(AESUtil.encrypt128(populationListDTO.getKeyWord(),aesKey));
            }catch (Exception e){
                populationListDTO.setCardNo(AESUtil.encrypt128(populationListDTO.getKeyWord(), aesKey));
            } catch (Exception e) {
                log.error("转换身份证号码失败");
            }
        }
        IPage<ComMngPopulationListVO> populationListIPage = this.baseMapper.getGridPopulationAdminList(new Page(populationListDTO.getPageNum(),populationListDTO.getPageSize()),populationListDTO);
        if(!populationListIPage.getRecords().isEmpty()){
        IPage<ComMngPopulationListVO> populationListIPage = this.baseMapper.getGridPopulationAdminList(
            new Page(populationListDTO.getPageNum(), populationListDTO.getPageSize()), populationListDTO);
        if (!populationListIPage.getRecords().isEmpty()) {
            populationListIPage.getRecords().forEach(population -> {
                try {
                    Integer age = IdcardUtil.getAgeByIdCard(population.getCardNo());
                    population.setAge(age);
                }catch (Exception e){
                } catch (Exception e) {
                    log.error("当前人口身份证获取年龄失败,实有人口id:" + population.getId());
                }
                //查询此用户在当前房屋是否是户主
                Integer relation = this.baseMapper.getPopulationRelationByHouseId(population.getHouseId(),population.getId());
                if(relation == null || relation != 1){
                // 查询此用户在当前房屋是否是户主
                Integer relation =
                    this.baseMapper.getPopulationRelationByHouseId(population.getHouseId(), population.getId());
                if (relation == null || relation != 1) {
                    population.setIsRelation(2);
                }else{
                } else {
                    population.setIsRelation(1);
                }
            });
@@ -5310,17 +7599,21 @@
    /**
     * 综治后台-删除居民
     * @param ids   居民id集合
     * @return  删除结果
     *
     * @param ids
     *            居民id集合
     * @return 删除结果
     */
    @Override
    public R delGridPopulationAdmin(List<Long> ids){
    public R delGridPopulationAdmin(List<Long> ids) {
        Integer count = this.baseMapper.getPopulationVisitingCount(ids);
        if(count > 0){
            return R.ok("您选择的数据中存在被引用的,无法删除");
        if (count > 0) {
            return R.fail("您选择的数据中存在被引用的,无法删除");
        }
        this.baseMapper.deleteBatchIds(ids);
        return R.ok();
        //删除人口并删除人口和社区关联关系
        this.baseMapper.deletePopulaitonRelation(ids);
        return R.ok("删除成功");
    }
    @Override
@@ -5328,20 +7621,19 @@
        QueryWrapper<ComMngPopulationDO> query = new QueryWrapper<>();
        query.isNull("house_id");
        List<ComMngPopulationDO> list = baseMapper.selectList(query);
        list.forEach(e->{
        list.forEach(e -> {
            QueryWrapper<ComMngPopulationHouseDO> houseQuery = new QueryWrapper<>();
            houseQuery.lambda().eq(ComMngPopulationHouseDO::getCommunityId,e.getActId())
                    .eq(ComMngPopulationHouseDO::getAlley,e.getRoad())
                    .eq(ComMngPopulationHouseDO::getFloor,e.getFloor())
                    .eq(ComMngPopulationHouseDO::getUnitNo,e.getUnitNo())
                    .eq(ComMngPopulationHouseDO::getHouseNo,e.getHouseNo());
            houseQuery.lambda().eq(ComMngPopulationHouseDO::getCommunityId, e.getActId())
                .eq(ComMngPopulationHouseDO::getAlley, e.getRoad()).eq(ComMngPopulationHouseDO::getFloor, e.getFloor())
                .eq(ComMngPopulationHouseDO::getUnitNo, e.getUnitNo())
                .eq(ComMngPopulationHouseDO::getHouseNo, e.getHouseNo());
            List<ComMngPopulationHouseDO> houseList = comMngPopulationHouseDAO.selectList(houseQuery);
            if(!CollectionUtils.isEmpty(houseList)){
            if (!CollectionUtils.isEmpty(houseList)) {
                UpdateWrapper<ComMngPopulationDO> updateWrapper = new UpdateWrapper();
                updateWrapper.eq("id",e.getId());
                updateWrapper.eq("id", e.getId());
                ComMngPopulationDO populationDO = new ComMngPopulationDO();
                populationDO.setHouseId(houseList.get(0).getId());
                baseMapper.update(populationDO,updateWrapper);
                baseMapper.update(populationDO, updateWrapper);
            }
        });
        return R.ok();
@@ -5349,19 +7641,22 @@
    /**
     * 查询平台人口列表
     * @param populationDTO 请求参数
     * @return  人口列表
     *
     * @param populationDTO
     *            请求参数
     * @return 人口列表
     */
    @Override
    public R getBuildingHousePopulationList(PageComMngPopulationDTO populationDTO){
    public R getBuildingHousePopulationList(PageComMngPopulationDTO populationDTO) {
        IPage<EventSpecialPopulationVO> populationVOIPage = this.baseMapper.getBuildingHousePopulationList(new Page(populationDTO.getPageNum(),populationDTO.getPageSize()),populationDTO);
        if(!populationVOIPage.getRecords().isEmpty()){
        IPage<EventSpecialPopulationVO> populationVOIPage = this.baseMapper.getBuildingHousePopulationList(
            new Page(populationDTO.getPageNum(), populationDTO.getPageSize()), populationDTO);
        if (!populationVOIPage.getRecords().isEmpty()) {
            populationVOIPage.getRecords().forEach(population -> {
                try {
                    Integer age = IdcardUtil.getAgeByIdCard(population.getIdCard());
                    population.setAge(age);
                }catch (Exception e){
                } catch (Exception e) {
                    log.error("人员身份证转换年龄失败,人员id:" + population.getId());
                }
            });
@@ -5371,48 +7666,54 @@
    /**
     * 综治后台-居民标签栏统计
     * @return  居民统计
     *
     * @return 居民统计
     */
    @Override
    public R getGridPopulationStatistics(Long communityId){
    public R getGridPopulationStatistics(Long communityId) {
        return R.ok(this.baseMapper.getGridPopulationStatistics(communityId));
    }
    /**
     * 综治后台-居民导出查询居民数据
     * @param populationExportDTO   请求参数
     * @return  导出结果
     *
     * @param populationExportDTO
     *            请求参数
     * @return 导出结果
     */
    @Override
    public R getGridPopulationExport(ComMngPopulationExportDTO populationExportDTO){
        //结果集
    public R getGridPopulationExport(ComMngPopulationExportDTO populationExportDTO) {
        // 结果集
        List<ComMngPopulationExportExcelVO> resultPopulationList = new ArrayList<>();
        //查询人口信息
        List<ComMngPopulationListVO> populationListVOList = this.baseMapper.getGridPopulationAdminLists(populationExportDTO);
        if(!populationListVOList.isEmpty()){
        // 查询人口信息
        List<ComMngPopulationListVO> populationListVOList =
            this.baseMapper.getGridPopulationAdminLists(populationExportDTO);
        if (!populationListVOList.isEmpty()) {
            populationListVOList.forEach(population -> {
                ComMngPopulationExportExcelVO populationExportExcelVO = new ComMngPopulationExportExcelVO();
                BeanUtils.copyProperties(population,populationExportExcelVO);
                if(population.getSex() != null){
                BeanUtils.copyProperties(population, populationExportExcelVO);
                if (population.getSex() != null) {
                    populationExportExcelVO.setSex(PopulSexEnum.getCnDescByName(population.getSex()));
                }
                if(population.getPoliticalOutlook() != null){
                    populationExportExcelVO.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(population.getPoliticalOutlook()));
                if (population.getPoliticalOutlook() != null) {
                    populationExportExcelVO.setPoliticalOutlook(
                        PopulPoliticalOutlookEnum.getCnDescByName(population.getPoliticalOutlook()));
                }
                if(population.getIsHouse() != null){
                    if(!population.getIsHouse().equals(0L)){
                if (population.getIsHouse() != null) {
                    if (!population.getIsHouse().equals(0L)) {
                        populationExportExcelVO.setIsHouse("是");
                    }else{
                    } else {
                        populationExportExcelVO.setIsHouse("否");
                    }
                }
                if(population.getEventStatus() != null){
                    populationExportExcelVO.setEventStatus(EventStatusEnum.getCnDescByName(population.getEventStatus()));
                if (population.getEventStatus() != null) {
                    populationExportExcelVO
                        .setEventStatus(EventStatusEnum.getCnDescByName(population.getEventStatus()));
                }
                try {
                    Integer age = IdcardUtil.getAgeByIdCard(population.getCardNo());
                    populationExportExcelVO.setAge(age);
                }catch (Exception e){
                } catch (Exception e) {
                    log.error("当前人口身份证获取年龄失败,实有人口id:" + population.getId());
                }
                resultPopulationList.add(populationExportExcelVO);
@@ -5423,22 +7724,24 @@
    /**
     * 综治后台-居民管理小区列表
     * @param name  小区名字
     * @return  小区列表
     *
     * @param name
     *            小区名字
     * @return 小区列表
     */
    @Override
    public R relationVillage(String name){
    public R relationVillage(String name) {
        List<ComMngPopulationVillageVO> populationVillageList = new ArrayList<>();
        QueryWrapper<ComMngVillageDO> villageQuery = new QueryWrapper<>();
        if(StringUtils.isNotEmpty(name)){
            villageQuery.lambda().like(ComMngVillageDO::getName,name);
        if (StringUtils.isNotEmpty(name)) {
            villageQuery.lambda().like(ComMngVillageDO::getName, name);
        }
        List<ComMngVillageDO> villageList = comActVillageDAO.selectList(villageQuery);
        if(!villageList.isEmpty()){
        if (!villageList.isEmpty()) {
            villageList.forEach(village -> {
                ComMngPopulationVillageVO populationVillageVO = new ComMngPopulationVillageVO();
                BeanUtils.copyProperties(village,populationVillageVO);
                BeanUtils.copyProperties(village, populationVillageVO);
                populationVillageList.add(populationVillageVO);
            });
        }
@@ -5446,11 +7749,178 @@
    }
    @Override
    public R getVillagePopulationAdmin(PageComMngVillagePopulationDTO villagePopulationDTO){
        return R.ok(this.baseMapper.getVillagePopulationAdmin(new Page(villagePopulationDTO.getPageNum(),villagePopulationDTO.getPageSize()),villagePopulationDTO));
    public R getVillagePopulationAdmin(PageComMngVillagePopulationDTO villagePopulationDTO) {
        return R.ok(this.baseMapper.getVillagePopulationAdmin(
            new Page(villagePopulationDTO.getPageNum(), villagePopulationDTO.getPageSize()), villagePopulationDTO));
    }
    private void setMistake(ComMngPopulationMistakeExcelVO mvo, ComMngPopulationServeExcelVO vo){
    @Override
    public R specialInputUserExport(PageInputUserDTO pageInputUserDTO) {
        return R.ok(this.comMngPopulationDAO.specialInputUserExport(pageInputUserDTO));
    }
    @Override
    public R westScreenStatics() {
        WestScreenStatics westScreenStatics=this.comMngPopulationDAO.westScreenStatics();
        WxDataUtil wxDataUtil=new WxDataUtil();
        westScreenStatics.setDayUser(wxDataUtil.getDayUser());
        westScreenStatics.setCountUser(wxDataUtil.getMonthUser());
        return R.ok(westScreenStatics);
    }
    @Override
    public R getComprehensivePopulationStatics(Long streetId){
        EventPopulationStatisticsVO statisticsVo = new EventPopulationStatisticsVO();
        //查询人口数据
        List<EventPopulationBasicsStatisticsVO> basicsList = comMngPopulationDAO.getBasicsList(streetId);
        if(basicsList != null){
            for (EventPopulationBasicsStatisticsVO basics : basicsList) {
                statisticsVo.setPopulationNum(statisticsVo.getPopulationNum() + basics.getPopulationNum());
                statisticsVo.setVillageNum(statisticsVo.getVillageNum() + basics.getVillageNum());
                statisticsVo.setHouseNum(statisticsVo.getHouseNum() + basics.getHouseNum());
            }
            statisticsVo.setBasicsList(basicsList);
        }
        //查询特殊人群数据
        EventPopulationSpecialStatisticsVO populationSpecial = comMngPopulationDAO.getPopulationSpecial(streetId);
        if(populationSpecial != null){
            populationSpecial.setOtherTotal(populationSpecial.getZjTotal() + populationSpecial.getSfTotal()
                    + populationSpecial.getXsTotal() + populationSpecial.getXjTotal()
                    + populationSpecial.getJzTotal() + populationSpecial.getXdTotal());
            populationSpecial.setLnTotal(comMngPopulationDAO.getPopulationAge(streetId,60));
            populationSpecial.setGlTotal(comMngPopulationDAO.getPopulationAge(streetId,80));
            statisticsVo.setSpecialStatisticsVo(populationSpecial);
        }
        return R.ok(statisticsVo);
    }
    @Override
    public R getComprehensiveStreetList(){
        return R.ok(comMngPopulationDAO.getComprehensiveStreetList());
    }
    @Override
    public R indexInfo(Long communityId) {
        IndexInfo indexInfo=new IndexInfo();
        //基础数据
        BaseInfo baseInfo=this.comMngPopulationDAO.baseInfo(communityId);
        indexInfo.setBaseInfo(baseInfo);
        // 查询实有人口统计模块
        IndexPopulationStatisticsVO populationStatisticsVO = new IndexPopulationStatisticsVO();
        // 查询实有人口性别统计
        List<IndexPopulationSexStatisticsVO> sexPopulationList =
                comMngPopulationDAO.getScreenIndexByPopulationSex(communityId);
        populationStatisticsVO.setSexPopulationList(sexPopulationList);
        // 查询实有人口年龄统计
        List<IndexPopulationAgeStatisticsVO> agePopulationList = statisticsAge(communityId);
        populationStatisticsVO.setAgePopulationList(agePopulationList);
        indexInfo.setIndexPopulationStatisticsVO(populationStatisticsVO);
        // 查询特殊人群统计
        List<IndexSpecialStatisticsVO> specialStatisticsVOList = new ArrayList<>();
        // 查询特殊人群标签列表
        List<ComMngUserTagVO> userTagList = comMngPopulationDAO.getUserTagListByCommunityId(communityId);
        IndexSpecialStatisticsVO otherSpecialVO = new IndexSpecialStatisticsVO();
        otherSpecialVO.setTitle("其他");
        otherSpecialVO.setSum(0);
        int countAll=comMngPopulationDAO.getSpecialStatistics(communityId);
        if (!userTagList.isEmpty()) {
            userTagList.forEach(userTag -> {
                if (userTag != null) {
                    if (userTag.getSysFlag().equals(0)) {
                        Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                        otherSpecialVO.setSum(otherSpecialVO.getSum() + count);
                        otherSpecialVO.setPercent(otherSpecialVO.getSum()*100/countAll);
                    } else {
                        if (StringUtils.isNotEmpty(userTag.getTagName())) {
                            if (userTag.getTagName().equals("高龄老人")) {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
                                specialStatisticsVO.setPercent(specialStatisticsVO.getSum()*100/countAll);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            } else {
                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                specialStatisticsVO.setTitle(userTag.getTagName());
                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                                specialStatisticsVO.setSum(count);
                                specialStatisticsVO.setPercent(specialStatisticsVO.getSum()*100/countAll);
                                specialStatisticsVOList.add(specialStatisticsVO);
                            }
                        }
                    }
                }
            });
        }
        specialStatisticsVOList.add(otherSpecialVO);
        indexInfo.setSpecialStatisticsVOList(specialStatisticsVOList);
        // 查询网格化治理
        IndexEventGridStatisticsVO eventGridStatisticsVO = new IndexEventGridStatisticsVO();
        List<IndexGridStatisticsVO> gridStatisticsList = new ArrayList<>();
        // 查询网格化事件数据
        IndexGridEventStatisticsVO gridEventStatistics = comMngPopulationDAO.getGridEventStatisticsList(communityId);
        int count=gridEventStatistics.getEventGGTotal()+gridEventStatistics.getEventBWDTotal()+gridEventStatistics.getEventMDTotal()+gridEventStatistics.getEventTFTotal()+gridEventStatistics.getEventTSTotal()+gridEventStatistics.getEventZATotal();
        gridEventStatistics.setGgPercent(gridEventStatistics.getEventGGTotal()*100/count);
        gridEventStatistics.setBwdPercent(gridEventStatistics.getEventBWDTotal()*100/count);
        gridEventStatistics.setMdPercent(gridEventStatistics.getEventMDTotal()*100/count);
        gridEventStatistics.setTfPercent(gridEventStatistics.getEventTFTotal()*100/count);
        gridEventStatistics.setTsPercent(gridEventStatistics.getEventTSTotal()*100/count);
        gridEventStatistics.setZaPercent(gridEventStatistics.getEventZATotal()*100/count);
        eventGridStatisticsVO.setGridEventStatisticsList(gridEventStatistics);
        // 查询网格数据
        List<EventGridDataVO> gridDataList = comMngPopulationDAO.getGridDataListByCommunityId(communityId);
        if (!gridDataList.isEmpty()) {
            gridDataList.forEach(gridData -> {
                if (gridData != null) {
                    IndexGridStatisticsVO gridStatisticsVO = new IndexGridStatisticsVO();
                    gridStatisticsVO.setEventData(gridData.getGridName());
                    // 根据网格id查询网格事件列表
                    IndexGridEventStatisticsVO gridEventList =
                            comMngPopulationDAO.getGridEventByGirdId(gridData.getId());
                    gridStatisticsVO.setGridEventStatisticsList(gridEventList);
                    gridStatisticsList.add(gridStatisticsVO);
                }
            });
        }
        eventGridStatisticsVO.setGridStatisticsList(gridStatisticsList);
        indexInfo.setEventGridStatisticsVO(eventGridStatisticsVO);
        //首页业务统计
        IndexDynamic indexDynamic=this.populationDAO.indexDynamic(communityId);
        indexInfo.setIndexDynamic(indexDynamic);
        //返攀登记居家隔离数据统计
        IndexReserve indexReserve=new IndexReserve();
        IndexBackReserve indexBackReserve=new IndexBackReserve();
        indexBackReserve.setCount(comActReserveMapper.indexBackReserve(communityId));
        indexBackReserve.setIndexReserveSubList(comActReserveMapper.indexBackReserveSub(communityId));
        indexBackReserve.getIndexReserveSubList().forEach(indexReserveSub -> {
            if(indexReserveSub.getAllCount()!=0){
                indexReserveSub.setPercent(indexReserveSub.getNum()*100/indexReserveSub.getAllCount());
            }
            else {
                indexReserveSub.setPercent(0);
            }
        });
        IndexHomeQuarantine indexHomeQuarantine=new IndexHomeQuarantine();
        indexHomeQuarantine.setCount(comActReserveMapper.indexHomeQuarantine(communityId));
        indexHomeQuarantine.setIndexReserveSubList(comActReserveMapper.IndexHomeQuarantineSub(communityId));
        indexHomeQuarantine.getIndexReserveSubList().forEach(indexReserveSub -> {
            if(indexReserveSub.getAllCount()!=0){
                indexReserveSub.setPercent(indexReserveSub.getNum()*100/indexReserveSub.getAllCount());
            }
            else {
                indexReserveSub.setPercent(0);
            }
        });
        indexReserve.setIndexBackReserve(indexBackReserve);
        indexReserve.setIndexHomeQuarantine(indexHomeQuarantine);
        indexInfo.setIndexReserve(indexReserve);
        BigscreenGridsGovernanceStatisticsVO bigscreenGridsGovernanceStatisticsVO=comActEasyPhotoDAO.selectBigscreenGridsGovern(communityId);
        indexInfo.setBigScreenGridStaticsReturn(setData(bigscreenGridsGovernanceStatisticsVO));
        return R.ok(indexInfo);
    }
    private void setMistake(ComMngPopulationMistakeExcelVO mvo, ComMngPopulationServeExcelVO vo) {
        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
@@ -5465,62 +7935,62 @@
        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setDrugMistake(ComMngPopulationDrugMistakeExcelVO mvo, ComMngPopulationDrugExcelVO vo){
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setDrugMistake(ComMngPopulationDrugMistakeExcelVO mvo, ComMngPopulationDrugExcelVO vo) {
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        // mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
        // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setCorrectMistake(ComMngPopulationCorrectMistakeExcelVO mvo, ComMngPopulationCorrectExcelVO vo) {
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
        // mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
//        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setCorrectMistake(ComMngPopulationCorrectMistakeExcelVO mvo, ComMngPopulationCorrectExcelVO vo){
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        mvo.setIsCorrectGroup(PopulHouseUseEnum.getCnDescByName(vo.getIsCorrectGroup()));
        mvo.setIsMissControl(PopulHouseUseEnum.getCnDescByName(vo.getIsMissControl()));
        mvo.setIsAgainCrime(PopulHouseUseEnum.getCnDescByName(vo.getIsAgainCrime()));
        mvo.setIsOutControl(PopulHouseUseEnum.getCnDescByName(vo.getIsOutControl()));
        mvo.setIsRecidivist(PopulHouseUseEnum.getCnDescByName(vo.getIsRecidivist()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setMajorMistake(ComMngPopulationMajorMistakeExcelVO mvo, ComMngPopulationMajorExcelVO vo){
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setMajorMistake(ComMngPopulationMajorMistakeExcelVO mvo, ComMngPopulationMajorExcelVO vo) {
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
        mvo.setCustodyRelation(PopulRelationEnum.getCnDescByName(vo.getCustodyRelation()));
//        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
//        mvo.setCustodyRelation(PopulRelationEnum.getCnDescByName(vo.getCustodyRelation()));
        // mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        mvo.setIsCrime(PopulHouseUseEnum.getCnDescByName(vo.getIsCrime()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setCultMistake(ComMngPopulationCultMistakeExcelVO mvo, ComMngPopulationCultExcelVO vo){
    private void setCultMistake(ComMngPopulationCultMistakeExcelVO mvo, ComMngPopulationCultExcelVO vo) {
        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        // mvo.setRelation(PopulRelationEnum.getCnDescByName(vo.getRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
@@ -5528,126 +7998,220 @@
        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        mvo.setIsExternalPublicity(PopulHouseUseEnum.getCnDescByName(vo.getIsExternalPublicity()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setRehabilitationMistake(ComMngPopulationRehabilitationMistakeExcelVO mvo, ComMngPopulationRehabilitationExcelVO vo){
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setRehabilitationMistake(ComMngPopulationRehabilitationMistakeExcelVO mvo,
        ComMngPopulationRehabilitationExcelVO vo) {
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
//        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
        mvo.setIsRecidivist(PopulHouseUseEnum.getCnDescByName(vo.getIsRecidivist()));
        mvo.setIsAgainCrime(PopulHouseUseEnum.getCnDescByName(vo.getIsAgainCrime()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setKeyMistake(ComMngPopulationKeyMistakeExcelVO mvo, ComMngPopulationKeyExcelVO vo){
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setKeyMistake(ComMngPopulationKeyMistakeExcelVO mvo, ComMngPopulationKeyExcelVO vo) {
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
//        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
//        mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setSentenceMistake(ComMngPopulationSentenceMistakeExcelVO mvo, ComMngPopulationSentenceExcelVO vo){
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setSentenceMistake(ComMngPopulationSentenceMistakeExcelVO mvo, ComMngPopulationSentenceExcelVO vo) {
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
//        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
//        mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setVeteransMistake(ComMngPopulationVeteransMistakeExcelVO mvo, ComMngPopulationVeteransExcelVO vo){
        mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
    private void setVeteransMistake(ComMngPopulationVeteransMistakeExcelVO mvo, ComMngPopulationVeteransExcelVO vo) {
//        mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
//        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        mvo.setIsVeteransTraining(PopulHouseUseEnum.getCnDescByName(vo.getIsVeteransTraining()));
        mvo.setIsBusiness(PopulHouseUseEnum.getCnDescByName(vo.getIsBusiness()));
//        mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setDisabilityMistake(ComMngPopulationDisabilityMistakeExcelVO mvo, ComMngPopulationDisabilityExcelVO vo){
//        mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setDisabilityMistake(ComMngPopulationDisabilityMistakeExcelVO mvo,
        ComMngPopulationDisabilityExcelVO vo) {
        // mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
//        mvo.setIsVeteransTraining(PopulHouseUseEnum.getCnDescByName(vo.getIsVeteransTraining()));
//        mvo.setIsBusiness(PopulHouseUseEnum.getCnDescByName(vo.getIsBusiness()));
//        mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setIsVeteransTraining(PopulHouseUseEnum.getCnDescByName(vo.getIsVeteransTraining()));
        // mvo.setIsBusiness(PopulHouseUseEnum.getCnDescByName(vo.getIsBusiness()));
        // mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setLowSecurityMistake(ComMngPopulationLowSecurityMistakeExcelVO mvo, ComMngPopulationLowSecurityExcelVO vo){
//        mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
//        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
    private void setLowSecurityMistake(ComMngPopulationLowSecurityMistakeExcelVO mvo,
        ComMngPopulationLowSecurityExcelVO vo) {
        // mvo.setRegiterNature(PopulRegiterNatureEnum.getCnDescByName(vo.getRegiterNature()));
        // mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
//        mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        // mvo.setPatientRelation(PopulRelationEnum.getCnDescByName(vo.getPatientRelation()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
//        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
//        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        // mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        // mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
//        mvo.setIsVeteransTraining(PopulHouseUseEnum.getCnDescByName(vo.getIsVeteransTraining()));
//        mvo.setIsBusiness(PopulHouseUseEnum.getCnDescByName(vo.getIsBusiness()));
//        mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
//        mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
//        mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
//        mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
        // mvo.setIsVeteransTraining(PopulHouseUseEnum.getCnDescByName(vo.getIsVeteransTraining()));
        // mvo.setIsBusiness(PopulHouseUseEnum.getCnDescByName(vo.getIsBusiness()));
        // mvo.setIsRehab(PopulHouseUseEnum.getCnDescByName(vo.getIsRehab()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setElderMistake(ComMngPopulationElderMistakeExcelVO mvo,
                                       ComMngPopulationElderExcelVO vo) {
        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
         mvo.setIsRegister(PopulHouseUseEnum.getCnDescByName(vo.getIsRegister()));
         mvo.setIsAlive(PopulHouseUseEnum.getCnDescByName(vo.getIsAlive()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    private void setPensionMistake(ComMngPopulationPensionMistakeExcelVO mvo,
                                 ComMngPopulationPensionExcelVO vo) {
        mvo.setPoliticalOutlook(PopulPoliticalOutlookEnum.getCnDescByName(vo.getPoliticalOutlook()));
        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
        mvo.setHouseStatus(PopulHouseStatusEnum.getCnDescByName(vo.getHouseStatus()));
        mvo.setHousePurpose(PopulHousePurposeEnum.getCnDescByName(vo.getHousePurpose()));
        mvo.setControlStatus(PopulHouseControlStatusEnum.getCnDescByName(vo.getControlStatus()));
        mvo.setCultureLevel(PopulCultureLevelEnum.getCnDescByName(vo.getCultureLevel()));
        mvo.setMarriage(PopulMarriageEnum.getCnDescByName(vo.getMarriage()));
        mvo.setOutOrLocal(PopulOutOrLocalEnum.getCnDescByName(vo.getOutOrLocal()));
        mvo.setIsRegister(PopulHouseUseEnum.getCnDescByName(vo.getIsRegister()));
        mvo.setIsAlive(PopulHouseUseEnum.getCnDescByName(vo.getIsAlive()));
        // mvo.setResidence(PopulRelationEnum.getCnDescByName(vo.getResidence()));
        // mvo.setPersonType(PopulPersonTypeEnum.getCnDescByName(vo.getPersonType()));
        // mvo.setDeath(PopulOutOrLocalEnum.getCnDescByName(vo.getDeath()));
    }
    /**
     * 判重方法
     * @param key   主键
     * @param hashMap   数据集
     * @return  存在即为false 不存在则为true
     *
     * @param key
     *            主键
     * @param hashMap
     *            数据集
     * @return 存在即为false 不存在则为true
     */
    private boolean isOnly(String key,HashMap<String,Object> hashMap){
    private boolean isOnly(String key, HashMap<String, Object> hashMap) {
        return ObjectUtils.isEmpty(hashMap.get(key));
    }
    private BigScreenGridStaticsReturn setData(BigscreenGridsGovernanceStatisticsVO bigscreenGridsGovernanceStatisticsVO){
        List<BigScreenGridStaticsReturn> bigScreenGridStaticsReturnList=new ArrayList<>();
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn.setCount(bigscreenGridsGovernanceStatisticsVO.getEventTotal()+bigscreenGridsGovernanceStatisticsVO.getOtherTotal()+bigscreenGridsGovernanceStatisticsVO.getSafety());
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn1=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn1.setTitle("突发事件报告");
        bigScreenGridStaticsReturn1.setNum(bigscreenGridsGovernanceStatisticsVO.getEventTFTotal());
        bigScreenGridStaticsReturn1.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventTFTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn1);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn2=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn2.setTitle("特殊人群服务");
        bigScreenGridStaticsReturn2.setNum(bigscreenGridsGovernanceStatisticsVO.getEventTSTotal());
        bigScreenGridStaticsReturn2.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventTSTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn2);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn3=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn3.setTitle("治安防控");
        bigScreenGridStaticsReturn3.setNum(bigscreenGridsGovernanceStatisticsVO.getEventZATotal());
        bigScreenGridStaticsReturn3.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventZATotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn3);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn4=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn4.setTitle("民生服务");
        bigScreenGridStaticsReturn4.setNum(bigscreenGridsGovernanceStatisticsVO.getEventMSTotal());
        bigScreenGridStaticsReturn4.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventMSTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn4);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn5=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn5.setTitle("矛盾劝解");
        bigScreenGridStaticsReturn5.setNum(bigscreenGridsGovernanceStatisticsVO.getEventMDTotal());
        bigScreenGridStaticsReturn5.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventMDTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn5);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn6=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn6.setTitle("防灾减灾");
        bigScreenGridStaticsReturn6.setNum(bigscreenGridsGovernanceStatisticsVO.getEventFJTotal());
        bigScreenGridStaticsReturn6.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventFJTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn6);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn7=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn7.setTitle("政策法规宣传");
        bigScreenGridStaticsReturn7.setNum(bigscreenGridsGovernanceStatisticsVO.getEventFGTotal());
        bigScreenGridStaticsReturn7.setPercent(bigscreenGridsGovernanceStatisticsVO.getEventFGTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn7);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn8=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn8.setTitle("安全巡查");
        bigScreenGridStaticsReturn8.setNum(bigscreenGridsGovernanceStatisticsVO.getSafety());
        bigScreenGridStaticsReturn8.setPercent(bigscreenGridsGovernanceStatisticsVO.getSafety()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn8);
        BigScreenGridStaticsReturn bigScreenGridStaticsReturn9=new BigScreenGridStaticsReturn();
        bigScreenGridStaticsReturn9.setTitle("其他");
        bigScreenGridStaticsReturn9.setNum(bigscreenGridsGovernanceStatisticsVO.getOtherTotal());
        bigScreenGridStaticsReturn9.setPercent(bigscreenGridsGovernanceStatisticsVO.getOtherTotal()*100/bigScreenGridStaticsReturn.getCount());
        bigScreenGridStaticsReturnList.add(bigScreenGridStaticsReturn9);
        bigScreenGridStaticsReturn.setBigScreenGridStaticsReturnList(bigScreenGridStaticsReturnList);
        return bigScreenGridStaticsReturn;
    }
}