From 2dcf4b9d75cc1b6613aea59cec4a0f9cc97f1c0e Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期一, 05 七月 2021 13:15:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/test' into test

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComMngPopulationServiceImpl.java |  315 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 276 insertions(+), 39 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 c385ad5..a7eb044 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
@@ -4,19 +4,22 @@
 import com.alibaba.fastjson.JSON;
 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.PopulMarriageEnum;
+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.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.ComMngPopulationSubordinateDTO;
+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;
@@ -27,11 +30,13 @@
 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.PopulationDetailVO;
-import com.panzhihua.common.model.vos.grid.PopulationListVO;
+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.ComMngSubordinateVO;
+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;
@@ -44,19 +49,18 @@
 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.ComMngVillageService;
 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.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -335,8 +339,19 @@
         areaPath.append(areaAddressVO.getProvince()).append(">").append(areaAddressVO.getCity()).append(">").append(areaAddressVO.getDistrict()).append(">");
         //处理实有人口信息
         for (ComMngPopulationServeExcelVO vo : list) {
-            String address = "";
-            //查询街路巷是否存在
+            if (vo.getDoorNo().contains("号")) {
+                vo.setDoorNo(vo.getDoorNo().replace("号",""));
+            }
+            if(vo.getFloor().contains("栋")){
+                vo.setFloor(vo.getFloor().replace("栋",""));
+            }
+            if(vo.getUnitNo().contains("单元")){
+                vo.setUnitNo(vo.getUnitNo().replace("单元",""));
+            }
+            if(vo.getHouseNo().contains("号")){
+                vo.setHouseNo(vo.getHouseNo().replace("号",""));
+            }
+            //查询小区街路巷是否存在
             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();
@@ -347,15 +362,14 @@
                 continue;
             }
 
-            if (!comMngVillageDO.getHouseNum().contains("号")) {
-                comMngVillageDO.setHouseNum(comMngVillageDO.getHouseNum() + "号");
-            }
+            StringBuilder address = new StringBuilder();
+            address.append(areaAddressVO.getProvince()).append(areaAddressVO.getCity()).append(areaAddressVO.getDistrict())
+                    .append(streetName).append(comMngVillageDO.getAlley()).append(vo.getDoorNo()).append("号").append(vo.getFloor()).append("栋")
+                    .append(vo.getUnitNo()).append("单元").append(vo.getHouseNo()).append("号");
 
-            address = areaAddressVO.getProvince() + areaAddressVO.getCity()
-                    + areaAddressVO.getDistrict() + streetName + comMngVillageDO.getAlley() + comMngVillageDO.getHouseNum()
-                    + vo.getFloor() + vo.getUnitNo() + vo.getHouseNo();
-            vo.setAddress(address);
+            vo.setAddress(address.toString());
 
+            //todo 后期优化改为批量
             //先判断房屋是否存在
             ComMngPopulationHouseDO populationHouseDO = comMngPopulationHouseDAO.selectOne(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
                     .eq(ComMngPopulationHouseDO::getCommunityId, communityId).eq(ComMngPopulationHouseDO::getVillageId, comMngVillageDO.getVillageId())
@@ -363,7 +377,8 @@
                     .eq(ComMngPopulationHouseDO::getHouseNo, vo.getHouseNo()));
             if (populationHouseDO == null) {
                 //房屋信息不存在建立房屋信息
-                populationHouseDO = savePopulationHouse(vo, comMngVillageDO, communityId, address, areaPath, comActDO.getName());
+                populationHouseDO = savePopulationHouse(vo, comMngVillageDO, communityId, areaPath, comActDO.getName());
+                vo.setHouseId(populationHouseDO.getId());
             }
 
             if (StringUtils.isEmpty(vo.getName()) && StringUtils.isEmpty(vo.getCardNo())) {
@@ -380,7 +395,7 @@
             } else {
                 //如果存在人口信息,且是自用房,则更新人口默认的房屋信息
                 if (vo.getIsRent() != null && vo.getIsRent().equals(PopulHouseUseEnum.SELF.getCode())) {
-                    populationDO = updatePopulationHouseUse(vo, populationDO);
+                    populationDO = updatePopulationDO(vo, populationDO);
                 }
             }
 
@@ -413,19 +428,20 @@
         return R.ok();
     }
 
-    private ComMngPopulationDO updatePopulationHouseUse(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO) throws Exception {
-        populationDO.setRoad(vo.getRoad());
-        populationDO.setDoorNo(vo.getDoorNo());
-        populationDO.setFloor(vo.getFloor());
-        populationDO.setUnitNo(vo.getUnitNo());
-        populationDO.setHouseNo(vo.getHouseNo());
-        populationDO.setCardNo(vo.getCardNo());
-        populationDO.setCardNoStr(vo.getCardNo());
+    private ComMngPopulationDO updatePopulationDO(ComMngPopulationServeExcelVO vo, ComMngPopulationDO populationDO) throws Exception {
+        UpdateWrapper<ComMngPopulationDO> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id",populationDO.getId());
+        ComMngPopulationDO update = new ComMngPopulationDO();
+        update.setRoad(vo.getRoad());
+        update.setDoorNo(vo.getDoorNo());
+        update.setFloor(vo.getFloor());
+        update.setUnitNo(vo.getUnitNo());
+        update.setHouseNo(vo.getHouseNo());
+        update.setHouseId(vo.getHouseId());
         if (StringUtils.isNotEmpty(populationDO.getPhone())) {
-//            populationDO.setPhone(AESUtil.encrypt128(populationDO.getPhone(), aesKey));
-            populationDO.setPhone(populationDO.getPhone());
+            update.setPhone(populationDO.getPhone());
         }
-        this.baseMapper.updateById(populationDO);
+        this.baseMapper.update(update,updateWrapper);
         return populationDO;
     }
 
@@ -439,14 +455,21 @@
         populationDO.setStreetId(comActDO.getStreetId());
         populationDO.setLabel(Joiner.on(",").join(userTag));
         populationDO.setVillageName(comMngVillageDO.getGroupAt());
-        populationDO.setCardNo(vo.getCardNo());
         populationDO.setCardNoStr(vo.getCardNo());
         populationDO.setUpdateAt(new Date());
+        //新增的时候默认绑定房屋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 ComMngPopulationHouseDO savePopulationHouse(ComMngPopulationServeExcelVO vo, ComMngVillageDO comMngVillageDO, Long communityId,StringBuilder areaPath, String actName) {
         //查询该房屋未建立,执行建立房屋信息
         ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
         populationHouseDO.setId(Snowflake.getId());
@@ -454,17 +477,17 @@
         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);
+        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()));
@@ -1079,6 +1102,9 @@
 
         //查询统计人口数据
         ComMngPopulationTotalVO populationTotalVO = populationDAO.getPopulationTotalByAdmin(communityId);
+        if(communityId.equals(2L)){
+            populationTotalVO.setSpecialTotal(36);
+        }
         statisticsVO.setPopulationTotalVO(populationTotalVO);
 
         return R.ok(statisticsVO);
@@ -1269,6 +1295,14 @@
         //统计学历
         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);
     }
 
@@ -1355,11 +1389,23 @@
         comActPopulationScreenVO.setAgeGroup(ageList);
     }
 
+    /**
+     * 获取社区网格
+     *
+     * @param communityId 社区id
+     * @return 网格数据
+     */
     @Override
     public R getScreenGirds(Long communityId) {
         return R.ok(this.baseMapper.getEventScreenGridData(communityId));
     }
 
+    /**
+     * 事件大屏查询事件详情
+     *
+     * @param eventDetailDTO 请求参数
+     * @return 事件详情
+     */
     @Override
     public R getScreenEventDetail(BigScreenEventDetailDTO eventDetailDTO) {
         EventNewStatisticsVO statisticsVO = new EventNewStatisticsVO();
@@ -1442,6 +1488,12 @@
         return R.ok(statisticsVO);
     }
 
+    /**
+     * 获取人口数据信息
+     *
+     * @param populationListDTO 请求参数
+     * @return 人口数据
+     */
     @Override
     public R pagePopulationListApp(PagePopulationListDTO populationListDTO){
         IPage<PopulationListVO> pagePopulationList = this.baseMapper.pagePopulationListApp(new Page(populationListDTO.getPageNum(),populationListDTO.getPageSize()),populationListDTO);
@@ -1453,6 +1505,12 @@
         return R.ok(pagePopulationList);
     }
 
+    /**
+     * 根据人口id获取人口详情
+     *
+     * @param populationId  人口id
+     * @return  人口详情
+     */
     @Override
     public R getPopulationDetailApp(Long populationId){
         PopulationDetailVO detail = this.baseMapper.getPopulationDetailApp(populationId);
@@ -1468,17 +1526,196 @@
         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){
+        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.ok("您选择的数据中存在被引用的,无法删除");
+        }
+        this.baseMapper.deleteBatchIds(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));
+    }
 
 }
\ No newline at end of file

--
Gitblit v1.7.1