From 78d1c9ee9b0c49f77c29d0535cb93c6d62c42f3a Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 11 十一月 2021 13:58:25 +0800
Subject: [PATCH] 1111修改提交

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java | 7505 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 7,055 insertions(+), 450 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
index 6b0af8e..1a1de18 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java
@@ -1,63 +1,72 @@
 package com.panzhihua.service_community.service.impl;
 
-import cn.hutool.core.util.IdcardUtil;
-import com.alibaba.fastjson.JSON;
+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.utlis.*;
+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;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
-import com.panzhihua.common.enums.PopulCultureLevelEnum;
-import com.panzhihua.common.enums.PopulHouseUseEnum;
-import com.panzhihua.common.enums.PopulIsOksEnum;
+import com.panzhihua.common.enums.*;
 import com.panzhihua.common.exceptions.ServiceException;
 import com.panzhihua.common.model.dtos.community.*;
+import com.panzhihua.common.model.dtos.community.bigscreen.BigScreenEventDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.BigScreenEventDetailDTO;
+import com.panzhihua.common.model.dtos.grid.PageComMngPopulationDTO;
+import com.panzhihua.common.model.dtos.grid.PagePopulationListDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngPopulationExportDTO;
+import com.panzhihua.common.model.dtos.grid.admin.ComMngPopulationListDTO;
+import com.panzhihua.common.model.dtos.grid.admin.PageComMngVillagePopulationDTO;
 import com.panzhihua.common.model.dtos.user.PageInputUserDTO;
 import com.panzhihua.common.model.helper.AESUtil;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.area.AreaAddressVO;
 import com.panzhihua.common.model.vos.community.*;
-import com.panzhihua.common.model.vos.screen.ComActPopulationCultureVO;
 import com.panzhihua.common.model.vos.community.bigscreen.BigScreenStatisticPartyBuild;
 import com.panzhihua.common.model.vos.community.screen.civil.CivilPopulationStatisticsVO;
 import com.panzhihua.common.model.vos.community.screen.civil.CivilStatisticsVO;
 import com.panzhihua.common.model.vos.community.screen.civil.CivilVillageStatisticsVO;
 import com.panzhihua.common.model.vos.community.screen.event.*;
+import com.panzhihua.common.model.vos.community.screen.event.EventTransferRecordVO;
 import com.panzhihua.common.model.vos.community.screen.index.*;
-import com.panzhihua.common.model.vos.grid.EventGridDataVO;
-import com.panzhihua.common.model.vos.grid.EventResourceVO;
+import com.panzhihua.common.model.vos.grid.*;
+import com.panzhihua.common.model.vos.grid.admin.ComMngPopulationListVO;
+import com.panzhihua.common.model.vos.grid.admin.ComMngPopulationVillageVO;
+import com.panzhihua.common.model.vos.grid.admin.excel.ComMngPopulationExportExcelVO;
+import com.panzhihua.common.model.vos.screen.ComActPopulationCultureVO;
 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.utlis.*;
 import com.panzhihua.service_community.dao.*;
 import com.panzhihua.service_community.model.dos.*;
-import com.panzhihua.service_community.service.ComMngPopulationHouseUserService;
-import com.panzhihua.service_community.service.ComMngPopulationService;
-import com.panzhihua.service_community.service.EventResourceService;
-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.ObjectUtils;
+import com.panzhihua.service_community.service.*;
 
-import javax.annotation.Resource;
-import javax.crypto.BadPaddingException;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.NoSuchPaddingException;
-import java.io.UnsupportedEncodingException;
-import java.math.BigDecimal;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.util.*;
-import java.util.stream.Collectors;
+import cn.hutool.core.util.IdcardUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * 实有人口Service实现类
  */
+@Slf4j
 @Service
 public class ComMngPopulationServiceImpl extends ServiceImpl<ComMngPopulationDAO, ComMngPopulationDO> implements ComMngPopulationService {
     @Resource
@@ -75,27 +84,64 @@
     @Resource
     private ComMngPopulationHouseUserDAO comMngPopulationHouseUserDAO;
     @Resource
+    private ComMngPopulationCommunityTagsDAO comMngPopulationCommunityTagsDAO;
+    @Resource
+    private ComMngPopulationCommunityTagsService comMngPopulationCommunityTagsService;
+    @Resource
     private ComMngPopulationDAO comMngPopulationDAO;
     @Resource
     private ComMngPopulationHouseUserService comMngPopulationHouseUserService;
     @Resource
+    private ComMngPopulationHouseService comMngPopulationHouseService;
+    @Resource
     private EventResourceService eventResourceService;
     @Resource
     private BigScreenDAO bigScreenDAO;
+    @Resource
+    private ComMngUserTagDAO comMngUserTagDAO;
+    @Resource
+    private ComDrugPopulationDAO comDrugPopulationDAO;
+    @Resource
+    private ComCorrectPopulationDAO comCorrectPopulationDAO;
+    @Resource
+    private ComMajorPopulationDAO comMajorPopulationDAO;
+    @Resource
+    private ComCultPopulationDAO comCultPopulationDAO;
+    @Resource
+    private ComRehabilitationPopulationDAO comRehabilitationPopulationDAO;
+    @Resource
+    private ComKeyPopulationDAO comKeyPopulationDAO;
+    @Resource
+    private ComSentencePopulationDAO comSentencePopulationDAO;
+    @Resource
+    private ComVeteransPopulationDAO comVeteransPopulationDAO;
+    @Resource
+    private ComDisabilityPopulationDAO comDisabilityPopulationDAO;
+    @Resource
+    private ComLowSecurityPopulationDAO comLowSecurityPopulationDAO;
+    @Resource
+    private ComElderAuthElderliesDAO comElderAuthElderliesDAO;
+    @Resource
+    private ComPensionAuthPensionerDAO comPensionAuthPensionerDAO;
+    @Resource
+    private ComEldersAuthStatisticsMapper comEldersAuthStatisticsMapper;
+    @Resource
+    private ComPensionAuthStatisticsDAO comPensionAuthStatisticsDAO;
     @Value("${domain.aesKey:}")
     private String aesKey;
-
 
     /**
      * 新增实有人口
      *
-     * @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("实有人口已经存在");
         }
@@ -108,11 +154,11 @@
         return R.ok(nub);
     }
 
-
     /**
      * 编辑实有人口
      *
-     * @param comMngPopulationVO 编辑内容
+     * @param comMngPopulationVO
+     *            编辑内容
      * @return 编辑结果
      */
     @Override
@@ -133,7 +179,8 @@
     /**
      * 查询实有人口
      *
-     * @param comMngPopulationVO 查询条件
+     * @param comMngPopulationVO
+     *            查询条件
      * @return 实有人口集合
      */
     @Override
@@ -145,54 +192,249 @@
     /**
      * 实有人口详情
      *
-     * @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) {
+                comHouseMemberVo.setAge(AgeUtils.getAgeFromBirthTimes(comHouseMemberVo.getBirthDay()));
+            }
+            comMngPopulationVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS);
+        }
+        // 设置户主关系
+        List<ComMngPopulationHouseUserDO> comMngPopulationHouseUserDOS =
+            comMngPopulationHouseUserDAO.selectList((new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
+                .eq(ComMngPopulationHouseUserDO::getPopulId, populationId)));
+        if (!comMngPopulationHouseUserDOS.isEmpty()) {
+            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());
-            if(electronicFileVO != null){
+        // 查询当前用户电子档信息
+        if (!StringUtils.isEmpty(comMngPopulationDO.getCardNo())) {
+            UserElectronicFileVO electronicFileVO =
+                populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
+            if (electronicFileVO != null) {
                 comMngPopulationVO.setUserElectronicFileVO(electronicFileVO);
-                //查询家庭成员信息
-                List<ComMngFamilyInfoVO> familyInfoVOList = populationDAO.listFamilyByUserId(electronicFileVO.getUserId());
-                if(!familyInfoVOList.isEmpty()){
+                // 查询家庭成员信息
+                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 ->{
+        if (!houseList.isEmpty()) {
+            houseList.forEach(house -> {
 
             });
             comMngPopulationVO.setHouseList(houseList);
         }
 
-        //查询当前实有人口车辆信息
+        // 查询当前实有人口车辆信息
         List<ComMngPopulationCarVO> carList = comMngCarDAO.getPopulationCarListByIdCard(comMngPopulationDO.getCardNo());
-        if(!carList.isEmpty()){
+        if (!carList.isEmpty()) {
             comMngPopulationVO.setCarList(carList);
+        }
+
+        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)
+                            .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)
+                            .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)
+                            .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)
+                            .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)
+                            .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)
+                            .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)
+                            .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)
+                            .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);
     }
@@ -200,7 +442,8 @@
     /**
      * 分页查询社区
      *
-     * @param comMngPopulationVO 查询参数
+     * @param comMngPopulationVO
+     *            查询参数
      * @return 分页集合
      */
     @Override
@@ -209,42 +452,44 @@
         Long pageNum = comMngPopulationVO.getPageNum();
         Long pageSize = comMngPopulationVO.getPageSize();
         if (null == pageNum || 0 == pageNum) {
-            pageNum = 1l;
+            pageNum = 1L;
         }
         if (null == pageSize || 0 == pageSize) {
-            pageSize = 10l;
+            pageSize = 10L;
         }
         page.setSize(pageSize);
         page.setCurrent(pageNum);
 
-        if(comMngPopulationVO.getHouseId() != null){
+        if (comMngPopulationVO.getHouseId() != null) {
             ComMngPopulationHouseDO houseDO = comMngPopulationHouseDAO.selectById(comMngPopulationVO.getHouseId());
-            if(houseDO != null){
-                switch (comMngPopulationVO.getLevel()){
+            if (houseDO != null) {
+                switch (comMngPopulationVO.getLevel()) {
                     case 1:
                         comMngPopulationVO.setRoad(houseDO.getAlley());
                         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;
@@ -252,25 +497,49 @@
             }
         }
 
-        if(StringUtils.isNotEmpty(comMngPopulationVO.getAgeStart())){
-            String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(new Date(),-(Integer.parseInt(comMngPopulationVO.getAgeStart()) + 1)),"yyyy-MM-dd");
-            if(StringUtils.isNotEmpty(ageStartTime)){
+        if (StringUtils.isNotEmpty(comMngPopulationVO.getAgeStart())) {
+            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()) + 1)),"yyyy-MM-dd");
-            if(StringUtils.isNotEmpty(ageEndTime)){
+        if (StringUtils.isNotEmpty(comMngPopulationVO.getAgeEnd())) {
+            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().equals(comMngPopulationVO.getAgeEndTime())) {
+                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"));
+                String ageStartTime = DateUtils.getDateFormatString(DateUtils.yearAddNum(endAge, -1), "yyyy-MM-dd");
+                if (StringUtils.isNotEmpty(ageStartTime)) {
+                    comMngPopulationVO.setAgeEndTimeEnd(ageStartTime);
+                }
+            }
+        }
         IPage<ComMngPopulationVO> iPage = populationDAO.pagePopulation(page, comMngPopulationVO);
-        if(!iPage.getRecords().isEmpty()){
+        if (!iPage.getRecords().isEmpty()) {
             iPage.getRecords().forEach(populDO -> {
-                if(StringUtils.isNotEmpty(populDO.getBirthday())){
+                if (StringUtils.isNotEmpty(populDO.getBirthday())) {
                     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.setMarriageName(PopulMarriageEnum.getCnDescByName(populDO.getMarriage()));
                 }
             });
         }
@@ -280,7 +549,8 @@
     /**
      * 删除实有人口
      *
-     * @param populationId 实有人口id
+     * @param populationId
+     *            实有人口id
      * @return 删除结果
      */
     @Override
@@ -299,7 +569,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 -> {
@@ -313,196 +584,5658 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R listSavePopulation(List<ComMngPopulationServeExcelVO> list, Long communityId) throws Exception{
-        List<ComMngPopulationImportErrorVO> populationImportErrorVOList = new ArrayList<>();
-        //查询该社区
-        ComActDO comActDO = comActDAO.selectById(communityId);
-        //查询该社区的省市区地址
-        AreaAddressVO areaAddressVO = populationDAO.getAreaAddress(comActDO.getProvinceCode(),comActDO.getCityCode(),comActDO.getAreaCode());
-        //查询社区上街道信息
-        String streetName = "";
-        if(comActDO.getStreetId() != null){
-            ComStreetDO streetDO = comStreetDAO.selectById(comActDO.getStreetId());
-            if(streetDO != null){
-                streetName = streetDO.getName();
+    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) {
+                log.error("未查询到社区信息");
+                return R.fail("未查询到社区信息");
             }
-        }
-        StringBuilder areaPath = new StringBuilder();
-        areaPath.append(areaAddressVO.getProvince()).append(">").append(areaAddressVO.getCity()).append(">").append(areaAddressVO.getDistrict()).append(">");
-        //处理实有人口信息
-        for (ComMngPopulationServeExcelVO vo : list) {
-            String address = "";
-            //查询街路巷是否存在
-            ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>().eq("alley",vo.getRoad()).eq("house_num",vo.getDoorNo()).eq("community_id",communityId));
-            if (comMngVillageDO == null) {
-                ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
-                importErrorVO.setErrorMsg("街路巷或小区号不存在");
-                importErrorVO.setErrorPosition("街路巷:" + vo.getRoad() + ",小区号:"+vo.getDoorNo());
-                populationImportErrorVOList.add(importErrorVO);
-//                index++;
-                continue;
+            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());
             }
 
-            if(!comMngVillageDO.getHouseNum().contains("号")){
-                comMngVillageDO.setHouseNum(comMngVillageDO.getHouseNum() + "号");
-            }
+            StringBuilder areaPath = new StringBuilder();
+            areaPath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName())
+                .append(">").append(populationActVO.getDistrictName()).append(">");
+            // 处理实有人口信息
+            Integer nub = 1;
 
-            address = areaAddressVO.getProvince() + areaAddressVO.getCity()
-                    + areaAddressVO.getDistrict() + streetName + comMngVillageDO.getAlley() + comMngVillageDO.getHouseNum()
-                    + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
-            vo.setAddress(address);
+            // 查询所有人口数据放入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);
+            });
 
-            //先判断房屋是否存在
-            ComMngPopulationHouseDO populationHouseDO = comMngPopulationHouseDAO.selectOne(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
-                    .eq(ComMngPopulationHouseDO::getCommunityId,communityId).eq(ComMngPopulationHouseDO::getVillageId,comMngVillageDO.getVillageId())
-                    .eq(ComMngPopulationHouseDO::getFloor,vo.getFloor()).eq(ComMngPopulationHouseDO::getUnitNo,vo.getUnitNo())
-                    .eq(ComMngPopulationHouseDO::getHouseNo,vo.getHouseNo()));
-            if(populationHouseDO == null){
-                //房屋信息不存在建立房屋信息
-                populationHouseDO = savePopulationHouse(vo,comMngVillageDO,communityId,address,areaPath,comActDO.getName());
-            }
+            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);
+            });
 
-            if(StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())){
-                //空户处理完房屋信息,直接返回
-                continue;
-            }
-            String cardNoAES = AESUtil.encrypt128(vo.getCardNo(), aesKey);
-            //判断实有人口是否已存在
-            ComMngPopulationDO populationDO = this.baseMapper.selectOne(new QueryWrapper<ComMngPopulationDO>().lambda()
-                    .eq(ComMngPopulationDO::getCardNo,cardNoAES));
-            if(populationDO == null){
-                //不存在实有人口,则新增
-                populationDO = savePopulationDO(vo,comActDO,comMngVillageDO,cardNoAES);
-            }else {
-                //如果存在人口信息,且是自用房,则更新人口默认的房屋信息
-                if(vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())){
-                    populationDO = updatePopulationHouseUse(vo,populationDO,cardNoAES);
+            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 (ComMngPopulationServeExcelVO vo : list) {
+                if (vo.getDoorNo().contains("号")) {
+                    vo.setDoorNo(vo.getDoorNo().replace("号", ""));
                 }
-            }
-
-            //处理实有人口房屋居住信息
-            if(populationDO != null){
-                ComMngPopulationHouseUserDO populationHouseUserDO = comMngPopulationHouseUserDAO.selectOne(new QueryWrapper<ComMngPopulationHouseUserDO>()
-                        .lambda().eq(ComMngPopulationHouseUserDO::getHouseId,populationHouseDO.getId())
-                        .eq(ComMngPopulationHouseUserDO::getPopulId,populationDO.getId()));
-                if(populationHouseUserDO == null){
-                    populationHouseUserDO = new ComMngPopulationHouseUserDO();
-                    populationHouseUserDO.setId(Snowflake.getId());
-                    populationHouseUserDO.setHouseId(populationHouseDO.getId());
-                    populationHouseUserDO.setPopulId(populationDO.getId());
-                    populationHouseUserDO.setRelation(vo.getRelation());
-                    populationHouseUserDO.setRelationId(vo.getIsRent());
-                    comMngPopulationHouseUserDAO.insert(populationHouseUserDO);
+                if (StringUtils.isNotEmpty(vo.getFloor())) {
+                    if (vo.getFloor().contains("栋")) {
+                        vo.setFloor(vo.getFloor().replace("栋", ""));
+                    }
                 }
-            }
-        }
-        //如果有错误,返回错误
-        //暂时注释,等客户完成任务需要恢复
-        /*if(!populationImportErrorVOList.isEmpty()){
-            return R.fail(JSON.toJSONString(populationImportErrorVOList));
-        }
-        this.saveBatch(populationDOList);*/
+                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 {
+                    ComMngPopulationMistakeExcelVO mistake = new ComMngPopulationMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setMistake(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("查询小区街路巷是否存在完成");
 
-        if(!populationImportErrorVOList.isEmpty()){
-            return R.fail(JSON.toJSONString(populationImportErrorVOList));
+                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 =
+                            savePopulationHouse(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 = updatePopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } else {
+                    // 不存在实有人口,则新增
+                    populationDO = savePopulationDO(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 (!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) {
+            log.info("出现错误,错误原因:" + e.getMessage());
         }
-        return R.ok();
+        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 updatePopulationHouseUse(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO,String cardNoAES) throws Exception {
-        populationDO.setRoad(vo.getRoad());
-        populationDO.setDoorNo(vo.getDoorNo());
-        populationDO.setFloor(vo.getFloor());
-        populationDO.setUnitNo(vo.getUnitNo());
-        populationDO.setHouseNo(vo.getHouseNo());
-        populationDO.setCardNo(cardNoAES);
-        populationDO.setCardNoStr(vo.getCardNo());
-        if(StringUtils.isNotEmpty(populationDO.getPhone())){
-            populationDO.setPhone(AESUtil.encrypt128(populationDO.getPhone(), aesKey));
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    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) {
+                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 (ComMngPopulationDrugExcelVO 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 {
+                    ComMngPopulationDrugMistakeExcelVO mistake = new ComMngPopulationDrugMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setDrugMistake(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 = saveDrugPopulationHouse(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 =
+                        updateDrugPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            log.info("出现错误,错误原因:" + e.getMessage());
         }
-        this.baseMapper.updateById(populationDO);
+        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 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) {
+                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 (ComMngPopulationCorrectExcelVO 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 {
+                    ComMngPopulationCorrectMistakeExcelVO mistake = new ComMngPopulationCorrectMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setCorrectMistake(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 = saveCorrectPopulationHouse(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 =
+                        updateCorrectPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationMajorExcelVO 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 {
+                    ComMngPopulationMajorMistakeExcelVO mistake = new ComMngPopulationMajorMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setMajorMistake(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 = saveMajorPopulationHouse(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 =
+                        updateMajorPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationCultExcelVO 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 {
+                    ComMngPopulationCultMistakeExcelVO mistake = new ComMngPopulationCultMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setCultMistake(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 = saveCultPopulationHouse(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 =
+                        updateCultPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationRehabilitationExcelVO 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 {
+                    ComMngPopulationRehabilitationMistakeExcelVO mistake =
+                        new ComMngPopulationRehabilitationMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setRehabilitationMistake(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 = saveRehabilitationPopulationHouse(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 =
+                        updateRehabilitationPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationKeyExcelVO 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 {
+                    ComMngPopulationKeyMistakeExcelVO mistake = new ComMngPopulationKeyMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setKeyMistake(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 = saveKeyPopulationHouse(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 =
+                        updateKeyPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationSentenceExcelVO 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 {
+                    ComMngPopulationSentenceMistakeExcelVO mistake = new ComMngPopulationSentenceMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setSentenceMistake(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 = saveSentencePopulationHouse(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 =
+                        updateSentencePopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationVeteransExcelVO 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 {
+                    ComMngPopulationVeteransMistakeExcelVO mistake = new ComMngPopulationVeteransMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setVeteransMistake(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 = saveVeteransPopulationHouse(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 =
+                        updateVeteransPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationDisabilityExcelVO 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 {
+                    ComMngPopulationDisabilityMistakeExcelVO mistake = new ComMngPopulationDisabilityMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setDisabilityMistake(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 = saveDisabilityPopulationHouse(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 =
+                        updateDisabilityPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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) {
+                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 (ComMngPopulationLowSecurityExcelVO 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 {
+                    ComMngPopulationLowSecurityMistakeExcelVO mistake = new ComMngPopulationLowSecurityMistakeExcelVO();
+                    BeanUtils.copyProperties(vo, mistake);
+                    setLowSecurityMistake(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 = saveLowSecurityPopulationHouse(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 =
+                        updateLowSecurityPopulationDO(vo, populationDO, communityId, userId);
+                    updateList.add(updatePopulationDO);
+                } 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)) {
+                        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 (!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) {
+            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 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<>();
+
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        populationDO.setUpdateBy(userId);
         return populationDO;
     }
 
-    private ComMngPopulationDO savePopulationDO(ComMngPopulationServeExcelVO vo, ComActDO comActDO, ComMngVillageDO comMngVillageDO,String cardNoAES) {
+    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()).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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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, Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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,
+        Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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,
+        Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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, Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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,
+        Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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, Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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, Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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);
+        }
+        return populationDO;
+    }
+
+    private ComMngPopulationDO updateDisabilityPopulationDO(ComMngPopulationDisabilityExcelVO vo,
+        ComMngPopulationDO populationDO, Long communityId, Long userId) {
+        BeanUtils.copyProperties(vo, populationDO);
+        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) {
+            log.error("身份证加密失败");
+        }
+        // populationDO.setLabel(Joiner.on(",").join(userTag));
+        populationDO.setActId(communityId);
+        populationDO.setCardNo(cardNoAES);
+        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 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);
+        BeanUtils.copyProperties(vo, populationDO);
         populationDO.setId(Snowflake.getId());
-        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());
+        //
+        // //如果导入数据标签中有当前社区标签列表中不包含的标签,则删除
+        // 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.setCardNo(cardNoAES);
         populationDO.setCardNoStr(vo.getCardNo());
         populationDO.setUpdateAt(new Date());
-        this.baseMapper.insert(populationDO);
+        populationDO.setDeath(vo.getDeath().toString());
+
+        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);
         return populationDO;
     }
 
-    private ComMngPopulationHouseDO savePopulationHouse(ComMngPopulationServeExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId, String address, StringBuilder areaPath,String actName) {
-        //查询该房屋未建立,执行建立房屋信息
+    private ComMngPopulationDO saveDrugPopulationDO(ComMngPopulationDrugExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComDrugPopulationDO comDrugPopulationDO = new ComDrugPopulationDO();
+        BeanUtils.copyProperties(vo, comDrugPopulationDO);
+        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();
+        // }
+        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);
+        comDrugPopulationDO.setId(Snowflake.getId());
+        comDrugPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comDrugPopulationDO.setStreetId(comActDO.getStreetId());
+        comDrugPopulationDAO.insert(comDrugPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveCorrectPopulationDO(ComMngPopulationCorrectExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComCorrectPopulationDO comCorrectPopulationDO = new ComCorrectPopulationDO();
+        BeanUtils.copyProperties(vo, comCorrectPopulationDO);
+        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();
+        // }
+        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);
+        comCorrectPopulationDO.setId(Snowflake.getId());
+        comCorrectPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comCorrectPopulationDO.setStreetId(comActDO.getStreetId());
+        comCorrectPopulationDAO.insert(comCorrectPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveMajorPopulationDO(ComMngPopulationMajorExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComMajorPopulationDO comMajorPopulationDO = new ComMajorPopulationDO();
+        BeanUtils.copyProperties(vo, comMajorPopulationDO);
+        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();
+        // }
+        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);
+        comMajorPopulationDO.setId(Snowflake.getId());
+        comMajorPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comMajorPopulationDO.setStreetId(comActDO.getStreetId());
+        comMajorPopulationDAO.insert(comMajorPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveCultPopulationDO(ComMngPopulationCultExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComCultPopulationDO comCultPopulationDO = new ComCultPopulationDO();
+        BeanUtils.copyProperties(vo, comCultPopulationDO);
+        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();
+        // }
+        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);
+        comCultPopulationDO.setId(Snowflake.getId());
+        comCultPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comCultPopulationDO.setStreetId(comActDO.getStreetId());
+        comCultPopulationDAO.insert(comCultPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveRehabilitationPopulationDO(ComMngPopulationRehabilitationExcelVO vo,
+        ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComRehabilitationPopulationDO comRehabilitationPopulationDO = new ComRehabilitationPopulationDO();
+        BeanUtils.copyProperties(vo, comRehabilitationPopulationDO);
+        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();
+        // }
+        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);
+        comRehabilitationPopulationDO.setId(Snowflake.getId());
+        comRehabilitationPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comRehabilitationPopulationDO.setStreetId(comActDO.getStreetId());
+        comRehabilitationPopulationDAO.insert(comRehabilitationPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveKeyPopulationDO(ComMngPopulationKeyExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComKeyPopulationDO comKeyPopulationDO = new ComKeyPopulationDO();
+        BeanUtils.copyProperties(vo, comKeyPopulationDO);
+        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();
+        // }
+        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);
+        comKeyPopulationDO.setId(Snowflake.getId());
+        comKeyPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comKeyPopulationDO.setStreetId(comActDO.getStreetId());
+        comKeyPopulationDAO.insert(comKeyPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveSentencePopulationDO(ComMngPopulationSentenceExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComSentencePopulationDO comSentencePopulationDO = new ComSentencePopulationDO();
+        BeanUtils.copyProperties(vo, comSentencePopulationDO);
+        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();
+        // }
+        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);
+        comSentencePopulationDO.setId(Snowflake.getId());
+        comSentencePopulationDO.setCommunityId(comActDO.getCommunityId());
+        comSentencePopulationDO.setStreetId(comActDO.getStreetId());
+        comSentencePopulationDAO.insert(comSentencePopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveVeteransPopulationDO(ComMngPopulationVeteransExcelVO vo, ComPopulationActVO comActDO,
+        ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComVeteransPopulationDO comVeteransPopulationDO = new ComVeteransPopulationDO();
+        BeanUtils.copyProperties(vo, comVeteransPopulationDO);
+        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();
+        // }
+        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);
+        comVeteransPopulationDO.setId(Snowflake.getId());
+        comVeteransPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comVeteransPopulationDO.setStreetId(comActDO.getStreetId());
+        comVeteransPopulationDAO.insert(comVeteransPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveDisabilityPopulationDO(ComMngPopulationDisabilityExcelVO vo,
+        ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        ComDisabilityPopulationDO comDisabilityPopulationDO = new ComDisabilityPopulationDO();
+        BeanUtils.copyProperties(vo, comDisabilityPopulationDO);
+        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();
+        // }
+        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);
+        comDisabilityPopulationDO.setId(Snowflake.getId());
+        comDisabilityPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comDisabilityPopulationDO.setStreetId(comActDO.getStreetId());
+        comDisabilityPopulationDAO.insert(comDisabilityPopulationDO);
+        return populationDO;
+    }
+
+    private ComMngPopulationDO saveLowSecurityPopulationDO(ComMngPopulationLowSecurityExcelVO vo,
+        ComPopulationActVO comActDO, ComMngVillageDO comMngVillageDO, Long userId) {
+        ComMngPopulationDO populationDO = new ComMngPopulationDO();
+        ComLowSecurityPopulationDO comLowSecurityPopulationDO = new ComLowSecurityPopulationDO();
+        BeanUtils.copyProperties(vo, populationDO);
+        BeanUtils.copyProperties(vo, comLowSecurityPopulationDO);
+        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();
+        // }
+        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);
+        comLowSecurityPopulationDO.setId(Snowflake.getId());
+        comLowSecurityPopulationDO.setCommunityId(comActDO.getCommunityId());
+        comLowSecurityPopulationDO.setStreetId(comActDO.getStreetId());
+        comLowSecurityPopulationDAO.insert(comLowSecurityPopulationDO);
+        return populationDO;
+    }
+
+    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());
         populationHouseDO.setVillageId(comMngVillageDO.getVillageId());
         populationHouseDO.setAlley(vo.getRoad());
         populationHouseDO.setHouseNum(vo.getDoorNo());
-        populationHouseDO.setCode(vo.getDoorNo());
         populationHouseDO.setStatus(vo.getIsRent());
         populationHouseDO.setCommunityId(communityId);
         populationHouseDO.setFloor(vo.getFloor());
         populationHouseDO.setUnitNo(vo.getUnitNo());
         populationHouseDO.setHouseNo(vo.getHouseNo());
-        populationHouseDO.setAddress(address);
+        populationHouseDO.setCode(vo.getHouseNo());
+        populationHouseDO.setAddress(vo.getAddress());
         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(address);
-        populationHouseDO.setPath(areaPath.toString()+ housePath.toString());
+        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){
+        } catch (Exception e) {
         }
 
-        if(StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())){
+        if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
             populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
         }
-        if(vo.getHouseStatus() != null){
+        if (vo.getHouseStatus() != null) {
             populationHouseDO.setStatus(vo.getHouseStatus());
         }
-        if(vo.getHousePurpose() != null){
+        if (vo.getHousePurpose() != null) {
             populationHouseDO.setPurpose(vo.getHousePurpose());
         }
-        if(vo.getControlStatus() != null){
+        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) {
+        // 查询该房屋未建立,执行建立房屋信息
+        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 saveCorrectPopulationHouse(ComMngPopulationCorrectExcelVO 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 saveMajorPopulationHouse(ComMngPopulationMajorExcelVO 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 saveCultPopulationHouse(ComMngPopulationCultExcelVO 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 saveRehabilitationPopulationHouse(ComMngPopulationRehabilitationExcelVO 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 saveKeyPopulationHouse(ComMngPopulationKeyExcelVO 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 saveSentencePopulationHouse(ComMngPopulationSentenceExcelVO 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 saveVeteransPopulationHouse(ComMngPopulationVeteransExcelVO 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 saveDisabilityPopulationHouse(ComMngPopulationDisabilityExcelVO 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 saveLowSecurityPopulationHouse(ComMngPopulationLowSecurityExcelVO 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 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());
+        populationHouseUserDO.setHouseId(comMngPopulationHouseDO.getId());
+        populationHouseUserDO.setRelationId(comMngPopulationHouseDO.getStatus());
+        populationHouseUserDO.setRelation(vo.getRelation());
+        populationHouseUserDO.setCreateAt(new Date());
+        comMngPopulationHouseUserDAO.insert(populationHouseUserDO);
+        return populationHouseUserDO;
     }
 
     /**
      * 确认导入实有人口(有则更新,无则新建)
-     * @param list  用户信息
-     * @param communityId   社区id
-     * @return  导入结果
+     *
+     * @param list
+     *            用户信息
+     * @param communityId
+     *            社区id
+     * @return 导入结果
      */
     @Override
     public R listSavePopulationConfirm(List<ComMngPopulationServeExcelVO> list, Long communityId) {
         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() + "不存在!");
@@ -510,30 +6243,32 @@
             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()){
-            //循环遍历待导入人员信息,如果数据库存在则更新,如果不存在则新建
+        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){
+                    if (comMngPopulationDO != null) {
                         population.setId(comMngPopulationDO.getId());
-                        BeanUtils.copyProperties(population,comMngPopulationDO);
+                        BeanUtils.copyProperties(population, comMngPopulationDO);
                         this.populationDAO.updateById(population);
-                    }else{
+                    } else {
                         this.populationDAO.insert(population);
                     }
-                }catch (Exception e){
+                } catch (Exception e) {
                     log.error("导入实有人口失败");
                 }
             });
@@ -553,7 +6288,9 @@
 
     /**
      * 根据id修改实有人口标签
-     * @param populationTagDTO 请求参数
+     *
+     * @param populationTagDTO
+     *            请求参数
      * @return 修改结果
      */
     @Override
@@ -562,10 +6299,10 @@
         if (comMngPopulationDO == null) {
             return R.fail("未查询到人口记录");
         }
-        BeanUtils.copyProperties(populationTagDTO,comMngPopulationDO);
+        BeanUtils.copyProperties(populationTagDTO, comMngPopulationDO);
 
         int nub = populationDAO.updateById(comMngPopulationDO);
-        if(nub < 1){
+        if (nub < 1) {
             return R.fail();
         }
         return R.ok();
@@ -573,38 +6310,33 @@
 
     /**
      * 批量删除实有人口
-     * @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
-     * @return  查询结果
+     *
+     * @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){
+        if (list.size() > 0) {
             list.forEach(populationDO -> {
-                ComMngPopulationVO populationVO=new ComMngPopulationVO();
-                BeanUtils.copyProperties(populationDO,populationVO);
+                ComMngPopulationVO populationVO = new ComMngPopulationVO();
+                BeanUtils.copyProperties(populationDO, populationVO);
                 resultList.add(populationVO);
             });
         }
@@ -613,17 +6345,19 @@
 
     /**
      * 根据id集合查询实有人口
-     * @param Ids   实有人口id集合
-     * @return  查询结果
+     *
+     * @param Ids
+     *            实有人口id集合
+     * @return 查询结果
      */
     @Override
     public R getPopulationLists(List<Long> Ids) {
         List<ComMngPopulationDO> list = populationDAO.selectBatchIds(Ids);
         List<ComMngPopulationVO> resultList = new ArrayList<>();
-        if(list.size() > 0){
+        if (list.size() > 0) {
             list.forEach(populationDO -> {
                 ComMngPopulationVO populationVO = new ComMngPopulationVO();
-                BeanUtils.copyProperties(populationDO,populationVO);
+                BeanUtils.copyProperties(populationDO, populationVO);
                 resultList.add(populationVO);
             });
         }
@@ -631,131 +6365,339 @@
     }
 
     @Override
-    public R editPopulation(ComMngPopulationEditDTO vo, Long communityId) throws Exception{
+    public R getPopulationListByVillageId(Long 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 -> {
+                ComMngPopulationVO populationVO = new ComMngPopulationVO();
+                BeanUtils.copyProperties(populationDO, populationVO);
+                resultList.add(populationVO);
+            });
+        }
+        return R.ok(resultList);
+    }
+
+    @Override
+    public R editPopulation(ComMngPopulationEditDTO vo, Long communityId) throws Exception {
         ComMngPopulationDO populationDO = populationDAO.selectById(vo.getId());
-        if(populationDO == null){
+        if (populationDO == null) {
             return R.fail();
         }
-        BeanUtils.copyProperties(vo,populationDO);
-        if(StringUtils.isEmpty(vo.getLabel())){
+        BeanUtils.copyProperties(vo, populationDO);
+        if (StringUtils.isEmpty(vo.getLabel())) {
             populationDO.setLabel(null);
         }
-        if(StringUtils.isEmpty(vo.getRemark())){
+        if (StringUtils.isEmpty(vo.getRemark())) {
             populationDO.setRemark(null);
         }
         populationDO.setCardNo(null);
         populationDO.setPhone(AESUtil.encrypt128(vo.getPhone(), aesKey));
 
         ComActDO comActDO = comActDAO.selectById(communityId);
-        if(comActDO != null){
+        if (comActDO != null) {
             populationDO.setActId(comActDO.getCommunityId());
             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()){
+        if (!houseIds.isEmpty()) {
             houseIds.forEach(houseId -> {
-                //查询当前房屋下是否有人口信息,如果没有则将房屋设置为空户
+                // 查询当前房屋下是否有人口信息,如果没有则将房屋设置为空户
                 List<Long> oldHouseIds = comMngPopulationHouseUserDAO.getPopulationHouseIdByhHosueId(houseId);
-                if(oldHouseIds.isEmpty()){
-                    //修改房屋信息为空户
-                    comMngPopulationHouseDAO.updateHouseByIsEmpty(houseId,1);
+                if (oldHouseIds.isEmpty()) {
+                    // 修改房屋信息为空户
+                    comMngPopulationHouseDAO.updateHouseByIsEmpty(houseId, 1);
                 }
             });
         }
 
-
-        //更新用户的房屋信息
+        // 更新用户的房屋信息
         Long houseId = null;
         List<ComMngPopulationHouseUserDO> populationHouseUserDOList = new ArrayList<>();
-        if(!vo.getHouseEditDTOList().isEmpty()){
-            for (ComMngPopulationHouseEditDTO houseEditDto:vo.getHouseEditDTOList()) {
+        if (!vo.getHouseEditDTOList().isEmpty()) {
+            for (ComMngPopulationHouseEditDTO houseEditDto : vo.getHouseEditDTOList()) {
                 ComMngPopulationHouseUserDO populationHouseUserDO = new ComMngPopulationHouseUserDO();
+                populationHouseUserDO.setId(Snowflake.getId());
                 populationHouseUserDO.setPopulId(populationDO.getId());
                 populationHouseUserDO.setHouseId(houseEditDto.getId());
-                if(houseEditDto.getIsResidence().equals(ComMngPopulationHouseEditDTO.isResidence.yes)){
-                    houseId = houseEditDto.getId();//居住地
+                populationHouseUserDO.setRelation(houseEditDto.getRelation());
+                if (houseEditDto.getIsResidence().equals(ComMngPopulationHouseEditDTO.isResidence.yes)) {
+                    houseId = houseEditDto.getId();// 居住地
+                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.yes);
+                } else {
+                    populationHouseUserDO.setResidence(ComMngPopulationHouseEditDTO.isResidence.no);
                 }
                 populationHouseUserDOList.add(populationHouseUserDO);
 
-                //修改房屋信息不为空户
-                comMngPopulationHouseDAO.updateHouseByIsEmpty(houseEditDto.getId(),2);
+                // 修改房屋信息不为空户
+                comMngPopulationHouseDAO.updateHouseByIsEmpty(houseEditDto.getId(), 2);
             }
         }
         comMngPopulationHouseUserService.saveBatch(populationHouseUserDOList);
 
-        if(houseId != null){//居住地更新
+        if (houseId != null) {// 居住地更新
             ComMngPopulationHouseDO houseDO = comMngPopulationHouseDAO.selectById(houseId);
-            if(houseDO != null){
+            if (houseDO != null) {
                 populationDO.setRoad(houseDO.getAlley());
                 populationDO.setDoorNo(houseDO.getHouseNum());
                 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())
-                        .eq(ComMngVillageDO::getCommunityId,communityId));
+                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());
-                    if(!StringUtils.isEmpty(comMngVillageDO.getGroupAt())){
+                    if (!StringUtils.isEmpty(comMngVillageDO.getGroupAt())) {
                         populationDO.setVillageName(comMngVillageDO.getGroupAt());
                     }
                 }
             }
         }
-        populationDO.setUpdateAt(new Date());
-        if(populationDAO.updateById(populationDO) > 0){
+
+        // 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{
+        } else {
             return R.fail("修改失败");
         }
     }
 
     @Override
-    public R specialInputUser(PageInputUserDTO pageInputUserDTO){
-        IPage<InputUserInfoVO> iPage = populationDAO.specialInputUser(new Page<>(pageInputUserDTO.getPageNum()
-                ,pageInputUserDTO.getPageSize()), pageInputUserDTO);
+    public R specialInputUser(PageInputUserDTO 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
-     * @return  删除结果
+     *
+     * @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){
+        if (populationDO == null) {
             return R.fail("未查询到该记录");
         }
         populationDO.setLabel(null);
-        if(this.baseMapper.updateById(populationDO) > 0){
+
+        //  清理社区与人口关联信息的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{
+        } else {
             return R.fail();
         }
     }
 
+    @Override
+    public R specialInputUserTags(PageInputUserDTO 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().equals(checkCreditCode.getId())) {
+                return R.fail("该标签已存在,标签名称重复");
+            }
+
+            BeanUtils.copyProperties(comMngTagVO, comMngUserTagDO);
+            int update = comMngUserTagDAO.updateById(comMngUserTagDO);
+            if (update > 0) {
+                return R.ok();
+            }
+        } else {
+            // 新增
+            Integer count = comMngUserTagDAO.selectCount(
+                new QueryWrapper<ComMngUserTagDO>().lambda().eq(ComMngUserTagDO::getTagName, comMngTagVO.getTagName()));
+            if (count > 0) {
+                return R.fail("该标签已存在,标签名称重复");
+            }
+            ComMngUserTagDO comMngUserTagDO = new ComMngUserTagDO();
+            BeanUtils.copyProperties(comMngTagVO, comMngUserTagDO);
+            int insert = comMngUserTagDAO.insert(comMngUserTagDO);
+            if (insert > 0) {
+                return R.ok();
+            }
+        }
+
+        return R.fail("添加失败");
+    }
+
+    @Override
+    public R deleteSpecialInputUserTags(Long id) {
+        // 查询特殊群体人员
+        ComMngUserTagDO comMngUserTagDO = comMngUserTagDAO.selectById(id);
+        if (comMngUserTagDO == null) {
+            return R.fail("该标签不存在");
+        }
+        int delete = comMngUserTagDAO.deleteById(id);
+        if (delete > 0) {
+            return R.ok();
+        }
+        return R.fail("删除失败");
+    }
+
     /**
      * 查询实有人口电子档信息
-     * @param populationId  实有人口id
-     * @return  实有人口电子档信息
+     *
+     * @param populationId
+     *            实有人口id
+     * @return 实有人口电子档信息
      */
     @Override
-    public R electronicArchivesPopulation(Long populationId){
+    public R electronicArchivesPopulation(Long populationId) {
         ComMngPopulationDO comMngPopulationDO = populationDAO.selectById(populationId);
         if (ObjectUtils.isEmpty(comMngPopulationDO)) {
             return R.fail("用户信息不存在");
         }
-        //查询当前用户电子档信息
-        if(!StringUtils.isEmpty(comMngPopulationDO.getCardNo())){
-            UserElectronicFileVO electronicFileVO = populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
-            if(electronicFileVO != null){
+        // 查询当前用户电子档信息
+        if (!StringUtils.isEmpty(comMngPopulationDO.getCardNo())) {
+            UserElectronicFileVO electronicFileVO =
+                populationDAO.getSysUserElectronicFile(comMngPopulationDO.getCardNo());
+            if (electronicFileVO != null) {
                 return R.ok(electronicFileVO);
             }
         }
@@ -765,71 +6707,114 @@
     @Override
     public R editUserElectronicFile(UserElectronicFileVO userElectronicFileVO) {
         UserElectronicFileVO electronicFileVO = populationDAO.getSysUserById(userElectronicFileVO.getUserId());
-        if(electronicFileVO==null){
+        if (electronicFileVO == null) {
             return R.fail("id有误!");
         }
-         populationDAO.updateSysUserElectronicFile(userElectronicFileVO);
+        populationDAO.updateSysUserElectronicFile(userElectronicFileVO);
         return R.ok();
     }
 
     /**
      * 实有人口统计
-     * @param communityId   社区id
-     * @return  统计结果
+     *
+     * @param communityId
+     *            社区id
+     * @return 统计结果
      */
     @Override
-    public R getPopulationTotalByAdmin(Long communityId){
+    public R getPopulationTotalByAdmin(Long communityId) {
         return R.ok(this.baseMapper.getPopulationTotalByAdmin(communityId));
+    }
+
+    @Override
+    public R editTagPopulationByCardNo(ComMngPopulationTagCardNoDTO comMngPopulationTagCardNoDTO) {
+        ComMngPopulationDO comMngPopulationDO = getPopulationByCardNo(comMngPopulationTagCardNoDTO.getCardNo());
+        if (comMngPopulationDO == null) {
+            return R.fail("未查询到人口记录");
+        }
+        ComMngPopulationDO comMngPopulation = new ComMngPopulationDO();
+        if (comMngPopulationDO.getLabel() != null) {
+            if (!comMngPopulationDO.getLabel().contains(comMngPopulationTagCardNoDTO.getLabel())) {
+                comMngPopulation.setLabel(
+                    comMngPopulationTagCardNoDTO.getLabel().concat(",").concat(comMngPopulationDO.getLabel()));
+            }
+        } else {
+            comMngPopulation.setLabel(comMngPopulationTagCardNoDTO.getLabel());
+        }
+        comMngPopulation.setCardNo(null);
+        comMngPopulation.setId(comMngPopulationDO.getId());
+        int nub = populationDAO.updateById(comMngPopulation);
+        if (nub < 1) {
+            return R.fail();
+        }
+        return R.ok();
+    }
+
+    @Override
+    public ComMngPopulationDO getPopulationByCardNo(String cardNo) {
+        try {
+            String aesCardNo = AESUtil.encrypt128(cardNo, aesKey);
+            return baseMapper.selectOne(new QueryWrapper<ComMngPopulationDO>().eq("card_no", aesCardNo));
+        } catch (Exception e) {
+            log.error("根据身份证查询业务-加密证件信息出错:{}", e.getCause());
+        }
+        return null;
     }
 
     /**
      * 首页大屏统计接口
-     * @param communityId   社区id
-     * @return  统计结果
+     *
+     * @param communityId
+     *            社区id
+     * @return 统计结果
      */
     @Override
-    public R getScreenIndex(Long communityId){
-        //创建统计返回参数
+    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()){
+        if (!gridDataList.isEmpty()) {
             gridDataList.forEach(gridData -> {
-                if(gridData != null){
+                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);
                 }
@@ -838,50 +6823,55 @@
         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("其他");
         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{
+                            } else if (userTag.getTagName().equals("高龄老人")) {
                                 IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                 specialStatisticsVO.setTitle(userTag.getTagName());
-                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
+                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            } else {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                                 specialStatisticsVO.setSum(count);
                                 specialStatisticsVOList.add(specialStatisticsVO);
                             }
@@ -895,8 +6885,8 @@
         return R.ok(statisticsVO);
     }
 
-    private List<IndexPopulationAgeStatisticsVO> statisticsAge(Long communityId){
-        Map<String,Long> ageMap = populationDAO.indexCountByAge(communityId);
+    private List<IndexPopulationAgeStatisticsVO> statisticsAge(Long communityId) {
+        Map<String, Long> ageMap = populationDAO.indexCountByAge(communityId);
         List<IndexPopulationAgeStatisticsVO> agePopulationList = new ArrayList<>();
         IndexPopulationAgeStatisticsVO ageStatisticsVO1 = new IndexPopulationAgeStatisticsVO();
         IndexPopulationAgeStatisticsVO ageStatisticsVO2 = new IndexPopulationAgeStatisticsVO();
@@ -911,14 +6901,14 @@
         ageStatisticsVO5.setType(5);
         ageStatisticsVO6.setType(6);
 
-        if(ageMap.isEmpty()){
+        if (ageMap.isEmpty()) {
             ageStatisticsVO1.setSum(0);
             ageStatisticsVO2.setSum(0);
             ageStatisticsVO3.setSum(0);
             ageStatisticsVO4.setSum(0);
             ageStatisticsVO5.setSum(0);
             ageStatisticsVO6.setSum(0);
-        }else{
+        } else {
             ageStatisticsVO1.setSum(ageMap.get("age16").intValue());
             ageStatisticsVO2.setSum(ageMap.get("age27").intValue());
             ageStatisticsVO3.setSum(ageMap.get("age35").intValue());
@@ -938,36 +6928,38 @@
 
     /**
      * 事件大屏统计接口
-     * @param communityId   社区id
-     * @return  统计结果
+     *
+     * @param screenEventDTO
+     *            请求参数
+     * @return 统计结果
      */
     @Override
-    public R getScreenEvent(Long communityId){
-        //创建统计返回参数
+    public R getScreenEvent(BigScreenEventDTO screenEventDTO) {
+
+        Long communityId = screenEventDTO.getCommunityId();
+        // 创建统计返回参数
         EventStatisticsVO statisticsVO = new EventStatisticsVO();
 
-        //查询页面左边数据
+        // 查询页面左边数据
         EventLeftStatisticsVO leftStatisticsVO = new EventLeftStatisticsVO();
-        //查询左上数据
-        EventLeftTopStatisticsVO leftTopStatisticsVO = this.baseMapper.getEventScreenLeftTop(communityId);
-        //查询时间频发月份
+        // 查询左上数据
+        EventLeftTopStatisticsVO leftTopStatisticsVO = this.baseMapper.getEventScreenLeftTop(screenEventDTO);
+        // 查询时间频发月份
         List<Integer> monthList = this.baseMapper.getFrequentlyEventMonth(communityId);
         leftTopStatisticsVO.setOftenMonth(monthList);
         leftStatisticsVO.setLeftTopStatisticsVO(leftTopStatisticsVO);
-        //查询左下数据
-        EventLeftDownStatisticsVO leftDownStatisticsVO = this.baseMapper.getEventScreenLeftDown(communityId);
+        // 查询左下数据
+        EventLeftDownStatisticsVO leftDownStatisticsVO = this.baseMapper.getEventScreenLeftDown(screenEventDTO);
         leftStatisticsVO.setLeftDownStatisticsVO(leftDownStatisticsVO);
         statisticsVO.setLeftStatisticsVO(leftStatisticsVO);
 
-        //查询事件播报模块数据
+        // 查询事件播报模块数据
         EventNewStatisticsVO newStatisticsVO = this.baseMapper.getEventScreenRightTop(communityId);
-        if(newStatisticsVO != null){
-            //查询事件资源文件
+        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<>();
@@ -994,73 +6986,105 @@
             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(communityId);
+        // 查询社区事件列表
+        List<EventGridIncidentStatisticsVO> gridIncidentList = this.baseMapper.getEventScreenEventList(screenEventDTO);
         statisticsVO.setGridIncidentList(gridIncidentList);
+
+        // 查询小区列表
+        List<CivilVillageStatisticsVO> villageStatisticsList = this.baseMapper.getCivilScreenVillageList(communityId);
+        if (!villageStatisticsList.isEmpty()) {
+            villageStatisticsList.forEach(village -> {
+                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);
+                }
+            });
+        }
+        statisticsVO.setVillageStatisticsList(villageStatisticsList);
+
+        // 查询统计人口数据
+        ComMngPopulationTotalVO populationTotalVO = populationDAO.getPopulationTotalByAdmin(communityId);
+        if (communityId.equals(2L)) {
+            populationTotalVO.setSpecialTotal(36);
+        }
+        statisticsVO.setPopulationTotalVO(populationTotalVO);
 
         return R.ok(statisticsVO);
     }
 
     /**
      * 民生大屏统计接口
-     * @param communityId   社区id
-     * @return  统计结果
+     *
+     * @param communityId
+     *            社区id
+     * @return 统计结果
      */
     @Override
-    public R getScreenCivil(Long communityId){
-        //创建统计返回参数
+    public R getScreenCivil(Long communityId) {
+        // 创建统计返回参数
         CivilStatisticsVO civilStatisticsVO = new CivilStatisticsVO();
 
-        //查询特殊人群统计
+        // 查询特殊人群统计
         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{
+                            } else if (userTag.getTagName().equals("高龄老人")) {
                                 IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
                                 specialStatisticsVO.setTitle(userTag.getTagName());
-                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName());
+                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            } else {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
                                 specialStatisticsVO.setSum(count);
                                 specialStatisticsVOList.add(specialStatisticsVO);
                             }
@@ -1069,75 +7093,43 @@
                 }
             });
         }
-        //计算特殊人群总数
+        // 计算特殊人群总数
         specialStatisticsVOList.add(otherSpecialVO);
         Integer specialNum = 0;
-        if(!specialStatisticsVOList.isEmpty()){
-            for (IndexSpecialStatisticsVO special:specialStatisticsVOList) {
+        if (!specialStatisticsVOList.isEmpty()) {
+            for (IndexSpecialStatisticsVO special : specialStatisticsVOList) {
                 specialNum += special.getSum();
             }
         }
         civilStatisticsVO.setSpecialNum(specialNum);
         civilStatisticsVO.setSpecialStatisticsList(specialStatisticsVOList);
 
-        //计算环比上月增长率
+        // 计算环比上月增长率
         BigDecimal rate = BigDecimal.ZERO;
-        CivilPopulationStatisticsVO populationStatisticsVO = this.baseMapper.getCivilScreenPopulation(communityId,DateUtils.getFirstDayOfMonth());
-        if(populationStatisticsVO != null){
-            if(populationStatisticsVO.getToMonthSpecialTotal().equals(0)){
+        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));
+            } else {
+                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);
         civilStatisticsVO.setVillageStatisticsList(villageStatisticsList);
 
         return R.ok(civilStatisticsVO);
-    }
-
-	@Override
-    public R editTagPopulationByCardNo(ComMngPopulationTagCardNoDTO comMngPopulationTagCardNoDTO)  {
-        ComMngPopulationDO comMngPopulationDO = getPopulationByCardNo(comMngPopulationTagCardNoDTO.getCardNo());
-        if (comMngPopulationDO == null) {
-            return R.fail("未查询到人口记录");
-        }
-        ComMngPopulationDO comMngPopulation = new ComMngPopulationDO();
-        if(comMngPopulationDO.getLabel()!=null) {
-            if(!comMngPopulationDO.getLabel().contains(comMngPopulationTagCardNoDTO.getLabel())) {
-                comMngPopulation.setLabel(comMngPopulationTagCardNoDTO.getLabel().concat(",").concat(comMngPopulationDO.getLabel()));
-            }
-        }else{
-            comMngPopulation.setLabel(comMngPopulationTagCardNoDTO.getLabel());
-        }
-        comMngPopulation.setCardNo(null);
-        comMngPopulation.setId(comMngPopulationDO.getId());
-        int nub = populationDAO.updateById(comMngPopulation);
-        if (nub < 1) {
-            return R.fail();
-        }
-        return R.ok();
-    }
-
-    @Override
-    public ComMngPopulationDO getPopulationByCardNo(String cardNo) {
-        try {
-            String aesCardNo = AESUtil.encrypt128(cardNo, aesKey);
-            return baseMapper.selectOne(
-                    new QueryWrapper<ComMngPopulationDO>()
-                            .eq("card_no",aesCardNo)
-            );
-        } catch (Exception e) {
-           log.error("根据身份证查询业务-加密证件信息出错");
-        }
-        return null;
     }
 
     @Override
@@ -1147,38 +7139,102 @@
         comActPopulationScreenVO.setTotalNum(vo.getPopulationTotal() == null ? 0 : vo.getPopulationTotal());
         comActPopulationScreenVO.setLocalNum(vo.getLocalTotal() == null ? 0 : vo.getLocalTotal().longValue());
         comActPopulationScreenVO.setOutNum(vo.getOutTotal() == null ? 0 : vo.getOutTotal().longValue());
-        comActPopulationScreenVO.setSpecialNum(vo.getSpecialTotal() == null ? 0 : vo.getSpecialTotal().longValue());
-        //统计已使用社区通人数
+
+        // 查询特殊人群统计
+        List<IndexSpecialStatisticsVO> specialStatisticsVOList = new ArrayList<>();
+
+        // 查询特殊人群标签列表
+        List<ComMngUserTagVO> userTagList = comMngPopulationDAO.getUserTagListByCommunityId(communityId);
+        IndexSpecialStatisticsVO otherSpecialVO = new IndexSpecialStatisticsVO();
+        otherSpecialVO.setTitle("其他");
+        otherSpecialVO.setSum(0);
+        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);
+                    } 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("低保户")) {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                specialStatisticsVO.setSum(94);
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            } else if (userTag.getTagName().equals("低收入人群")) {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                specialStatisticsVO.setSum(2);
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            } else if (userTag.getTagName().equals("退役军人")) {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                specialStatisticsVO.setSum(264);
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            } else if (userTag.getTagName().equals("高龄老人")) {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                specialStatisticsVO.setSum(comMngPopulationDAO.getStatisticsCount(communityId));
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            } else {
+                                IndexSpecialStatisticsVO specialStatisticsVO = new IndexSpecialStatisticsVO();
+                                specialStatisticsVO.setTitle(userTag.getTagName());
+                                Integer count = comMngPopulationDAO.getSpecialStatisticsByLabel(userTag.getTagName(),communityId);
+                                specialStatisticsVO.setSum(count);
+                                specialStatisticsVOList.add(specialStatisticsVO);
+                            }
+                        }
+                    }
+                }
+            });
+        }
+        // 计算特殊人群总数
+        specialStatisticsVOList.add(otherSpecialVO);
+        Integer specialNum = 0;
+        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);
 
-        //统计性别
-        Map<String,Long> sexMap = populationDAO.countBySex(communityId);
+        // 统计性别
+        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);
+        // 统计年龄结构
+        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);
+        Map<String, Long> cultureMap = populationDAO.countByCulture(communityId);
         List<ComActPopulationCultureVO> cultureGroup = new ArrayList<>();
         ComActPopulationCultureVO xx = new ComActPopulationCultureVO();
         xx.setLevel(PopulCultureLevelEnum.XX.getName());
@@ -1228,8 +7284,8 @@
         comActPopulationScreenVO.setCultureGroup(cultureGroup);
     }
 
-    private void setAgeGroup(ComActPopulationScreenVO comActPopulationScreenVO,Long communityId) {
-        Map<String,Long> ageMap = populationDAO.countByAge(communityId);
+    private void setAgeGroup(ComActPopulationScreenVO comActPopulationScreenVO, Long communityId) {
+        Map<String, Long> ageMap = populationDAO.countByAge(communityId);
         List<ComMngPopulationAgeVO> ageList = new ArrayList<>();
         ComMngPopulationAgeVO ageVO16 = new ComMngPopulationAgeVO();
         ageVO16.setGroup("0-16岁");
@@ -1259,26 +7315,43 @@
         comActPopulationScreenVO.setAgeGroup(ageList);
     }
 
+    /**
+     * 获取社区网格
+     *
+     * @param communityId
+     *            社区id
+     * @return 网格数据
+     */
     @Override
-    public R getScreenGirds(Long communityId){
+    public R getScreenGirds(Long communityId) {
         return R.ok(this.baseMapper.getEventScreenGridData(communityId));
     }
 
+    /**
+     * 事件大屏查询事件详情
+     *
+     * @param eventDetailDTO
+     *            请求参数
+     * @return 事件详情
+     */
     @Override
-    public R getScreenEventDetail(BigScreenEventDetailDTO eventDetailDTO){
+    public R getScreenEventDetail(BigScreenEventDetailDTO eventDetailDTO) {
         EventNewStatisticsVO statisticsVO = new EventNewStatisticsVO();
-        if(eventDetailDTO.getType().equals(7)){//随手拍详情
+        if (eventDetailDTO.getType().equals(7)) {// 随手拍详情
             statisticsVO = this.baseMapper.getEventScreenSSPDateil(eventDetailDTO.getEventId());
-            if(statisticsVO != null && StringUtils.isNotEmpty(statisticsVO.getPhotoPathList())){
+            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(",");
-                if(pics.length > 0){
+                String[] pics = statisticsVO.getPhotoPathList().split(",");
+                if (pics.length > 0) {
                     for (int i = 0; i < pics.length; i++) {
                         EventResourceVO resourceVO = new EventResourceVO();
                         resourceVO.setType(1);
@@ -1288,15 +7361,13 @@
                 }
                 statisticsVO.setPics(picList);
             }
-        }else{//事件详情
+        } else {// 事件详情
             statisticsVO = this.baseMapper.getEventScreenEventDetail(eventDetailDTO.getEventId());
-            if(statisticsVO != null){
-                //查询事件资源文件
+            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<>();
@@ -1323,15 +7394,549 @@
                 statisticsVO.setPics(picList);
                 statisticsVO.setVideos(videoList);
 
-                //查询事件流转记录
-                List<EventTransferRecordVO> transferRecordList = this.baseMapper.getEventScreenEventTransList(eventDetailDTO.getEventId());
+                // 查询事件流转记录
+                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());
+                            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());
+                        }
+                    });
+                }
                 statisticsVO.setTransferRecordList(transferRecordList);
             }
         }
         return R.ok(statisticsVO);
     }
 
-    public static void main(String[] args) {
-//        List<ComMngPopulationHouseUserDO> distinctClass = populationHouseUserDOList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getPopulId() + ";" + o.getHouseId() + ";" + o.getId() + ";" + o.getRelation()))), ArrayList::new));
+    /**
+     * 获取人口数据信息
+     *
+     * @param populationListDTO
+     *            请求参数
+     * @return 人口数据
+     */
+    @Override
+    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()));
+            });
+        }
+        return R.ok(pagePopulationList);
     }
-}
+
+    /**
+     * 根据人口id获取人口详情
+     *
+     * @param populationId
+     *            人口id
+     * @return 人口详情
+     */
+    @Override
+    public R getPopulationDetailApp(Long populationId) {
+        PopulationDetailVO detail = this.baseMapper.getPopulationDetailApp(populationId);
+        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.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);
+    }
+
+    /**
+     * 修复人口加密问题
+     *
+     * @return 修复结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R getPopulationRepairByApp() {
+        List<ComMngPopulationDO> populationDOList = this.baseMapper.selectList(new QueryWrapper<ComMngPopulationDO>());
+        if (!populationDOList.isEmpty()) {
+            populationDOList.forEach(population -> {
+                try {
+                    population.setCardNo(AESUtil.encrypt128(population.getCardNoStr(), aesKey));
+                } catch (Exception e) {
+
+                }
+                this.baseMapper.updateById(population);
+            });
+        }
+        return R.ok();
+    }
+
+    /**
+     * 综治后台-居民列表
+     * 
+     * @param populationListDTO
+     *            请求参数
+     * @return 居民列表
+     */
+    @Override
+    public R getGridPopulationAdminList(ComMngPopulationListDTO populationListDTO) {
+        if (StringUtils.isNotEmpty(populationListDTO.getKeyWord())) {
+            try {
+                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()) {
+            populationListIPage.getRecords().forEach(population -> {
+                try {
+                    Integer age = IdcardUtil.getAgeByIdCard(population.getCardNo());
+                    population.setAge(age);
+                } catch (Exception e) {
+                    log.error("当前人口身份证获取年龄失败,实有人口id:" + population.getId());
+                }
+                // 查询此用户在当前房屋是否是户主
+                Integer relation =
+                    this.baseMapper.getPopulationRelationByHouseId(population.getHouseId(), population.getId());
+                if (relation == null || relation != 1) {
+                    population.setIsRelation(2);
+                } else {
+                    population.setIsRelation(1);
+                }
+            });
+        }
+        return R.ok(populationListIPage);
+    }
+
+    /**
+     * 综治后台-删除居民
+     * 
+     * @param ids
+     *            居民id集合
+     * @return 删除结果
+     */
+    @Override
+    public R delGridPopulationAdmin(List<Long> ids) {
+        Integer count = this.baseMapper.getPopulationVisitingCount(ids);
+        if (count > 0) {
+            return R.fail("您选择的数据中存在被引用的,无法删除");
+        }
+        this.baseMapper.deleteBatchIds(ids);
+        //删除人口并删除人口和社区关联关系
+        this.baseMapper.deletePopulaitonRelation(ids);
+        return R.ok("删除成功");
+    }
+
+    @Override
+    public R binding() {
+        QueryWrapper<ComMngPopulationDO> query = new QueryWrapper<>();
+        query.isNull("house_id");
+        List<ComMngPopulationDO> list = baseMapper.selectList(query);
+        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());
+            List<ComMngPopulationHouseDO> houseList = comMngPopulationHouseDAO.selectList(houseQuery);
+            if (!CollectionUtils.isEmpty(houseList)) {
+                UpdateWrapper<ComMngPopulationDO> updateWrapper = new UpdateWrapper();
+                updateWrapper.eq("id", e.getId());
+                ComMngPopulationDO populationDO = new ComMngPopulationDO();
+                populationDO.setHouseId(houseList.get(0).getId());
+                baseMapper.update(populationDO, updateWrapper);
+            }
+        });
+        return R.ok();
+    }
+
+    /**
+     * 查询平台人口列表
+     * 
+     * @param populationDTO
+     *            请求参数
+     * @return 人口列表
+     */
+    @Override
+    public R getBuildingHousePopulationList(PageComMngPopulationDTO populationDTO) {
+
+        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) {
+                    log.error("人员身份证转换年龄失败,人员id:" + population.getId());
+                }
+            });
+        }
+        return R.ok(populationVOIPage);
+    }
+
+    /**
+     * 综治后台-居民标签栏统计
+     * 
+     * @return 居民统计
+     */
+    @Override
+    public R getGridPopulationStatistics(Long communityId) {
+        return R.ok(this.baseMapper.getGridPopulationStatistics(communityId));
+    }
+
+    /**
+     * 综治后台-居民导出查询居民数据
+     * 
+     * @param populationExportDTO
+     *            请求参数
+     * @return 导出结果
+     */
+    @Override
+    public R getGridPopulationExport(ComMngPopulationExportDTO populationExportDTO) {
+        // 结果集
+        List<ComMngPopulationExportExcelVO> resultPopulationList = new ArrayList<>();
+        // 查询人口信息
+        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) {
+                    populationExportExcelVO.setSex(PopulSexEnum.getCnDescByName(population.getSex()));
+                }
+                if (population.getPoliticalOutlook() != null) {
+                    populationExportExcelVO.setPoliticalOutlook(
+                        PopulPoliticalOutlookEnum.getCnDescByName(population.getPoliticalOutlook()));
+                }
+                if (population.getIsHouse() != null) {
+                    if (!population.getIsHouse().equals(0L)) {
+                        populationExportExcelVO.setIsHouse("是");
+                    } else {
+                        populationExportExcelVO.setIsHouse("否");
+                    }
+                }
+                if (population.getEventStatus() != null) {
+                    populationExportExcelVO
+                        .setEventStatus(EventStatusEnum.getCnDescByName(population.getEventStatus()));
+                }
+                try {
+                    Integer age = IdcardUtil.getAgeByIdCard(population.getCardNo());
+                    populationExportExcelVO.setAge(age);
+                } catch (Exception e) {
+                    log.error("当前人口身份证获取年龄失败,实有人口id:" + population.getId());
+                }
+                resultPopulationList.add(populationExportExcelVO);
+            });
+        }
+        return R.ok(resultPopulationList);
+    }
+
+    /**
+     * 综治后台-居民管理小区列表
+     * 
+     * @param name
+     *            小区名字
+     * @return 小区列表
+     */
+    @Override
+    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);
+        }
+
+        List<ComMngVillageDO> villageList = comActVillageDAO.selectList(villageQuery);
+        if (!villageList.isEmpty()) {
+            villageList.forEach(village -> {
+                ComMngPopulationVillageVO populationVillageVO = new ComMngPopulationVillageVO();
+                BeanUtils.copyProperties(village, populationVillageVO);
+                populationVillageList.add(populationVillageVO);
+            });
+        }
+        return R.ok(populationVillageList);
+    }
+
+    @Override
+    public R getVillagePopulationAdmin(PageComMngVillagePopulationDTO villagePopulationDTO) {
+        return R.ok(this.baseMapper.getVillagePopulationAdmin(
+            new Page(villagePopulationDTO.getPageNum(), villagePopulationDTO.getPageSize()), villagePopulationDTO));
+    }
+
+    @Override
+    public R specialInputUserExport(PageInputUserDTO pageInputUserDTO) {
+        return R.ok(this.comMngPopulationDAO.specialInputUserExport(pageInputUserDTO));
+    }
+
+    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()));
+        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 setDrugMistake(ComMngPopulationDrugMistakeExcelVO mvo, ComMngPopulationDrugExcelVO 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.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()));
+    }
+
+    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.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.setIsCrime(PopulHouseUseEnum.getCnDescByName(vo.getIsCrime()));
+        // 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) {
+        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.setIsExternalPublicity(PopulHouseUseEnum.getCnDescByName(vo.getIsExternalPublicity()));
+        // 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()));
+        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
+//        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.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()));
+    }
+
+    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.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.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()));
+        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
+        // 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.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()));
+    }
+
+    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.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.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 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.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.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()));
+        mvo.setIsRent(PopulHouseUseEnum.getCnDescByName(vo.getIsRent()));
+        // 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.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()));
+    }
+
+    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
+     */
+    private boolean isOnly(String key, HashMap<String, Object> hashMap) {
+        return ObjectUtils.isEmpty(hashMap.get(key));
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.7.1