From 25af58aee8358a3396f119aadca1db6b99b1e94f Mon Sep 17 00:00:00 2001
From: 罗元桥 <2376770955@qq.com>
Date: 星期四, 14 十月 2021 08:59:19 +0800
Subject: [PATCH] Merge branch 'lyq' into 'test'

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java |  525 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 518 insertions(+), 7 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java
index 039d939..e3bdc70 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActBuildingServiceImpl.java
@@ -1,11 +1,29 @@
 package com.panzhihua.service_community.service.impl;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 
+import cn.hutool.core.util.IdcardUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.panzhihua.common.enums.PopulIsOksEnum;
+import com.panzhihua.common.enums.PopulPoliticalOutlookEnum;
+import com.panzhihua.common.model.dtos.community.building.admin.*;
+import com.panzhihua.common.model.vos.community.ComMngVillageVO;
+import com.panzhihua.common.model.vos.community.ComPopulationActVO;
+import com.panzhihua.common.model.vos.community.building.admin.BuildingUnitHouseListAdminVo;
+import com.panzhihua.common.model.vos.community.building.admin.PageBuildingListAdminVo;
+import com.panzhihua.common.model.vos.grid.ComMngVillageBuildingHouseDetailVO;
+import com.panzhihua.common.model.vos.grid.ComMngVillageBuildingHouseVO;
+import com.panzhihua.common.model.vos.grid.ComMngVillageBuildingVO;
+import com.panzhihua.common.model.vos.grid.PopulationListVO;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -18,13 +36,6 @@
 import com.panzhihua.common.model.vos.community.ComMngPopulationImportErrorVO;
 import com.panzhihua.common.utlis.Snowflake;
 import com.panzhihua.common.utlis.StringUtils;
-import com.panzhihua.service_community.dao.ComActDAO;
-import com.panzhihua.service_community.dao.ComActVillageDAO;
-import com.panzhihua.service_community.dao.ComMngBuildingDAO;
-import com.panzhihua.service_community.model.dos.ComActDO;
-import com.panzhihua.service_community.model.dos.ComMngBuildingDO;
-import com.panzhihua.service_community.model.dos.ComMngVillageDO;
-import com.panzhihua.service_community.model.dos.GridBuildRelationDO;
 import com.panzhihua.service_community.service.ComActBuildingService;
 import com.panzhihua.service_community.service.GridBuildRelationService;
 
@@ -42,6 +53,12 @@
     private ComActDAO comActDAO;
     @Resource
     private GridBuildRelationService gridBuildRelationService;
+    @Resource
+    private ComMngPopulationHouseDAO comMngPopulationHouseDAO;
+    @Resource
+    private ComMngPopulationDAO comMngPopulationDAO;
+    @Resource
+    private ComMngPopulationHouseUserDAO comMngPopulationHouseUserDAO;
 
     @Override
     public R batchSaveBuilding(List<ComMngBuildingExcelVO> newVoList, Long communityId) {
@@ -112,4 +129,498 @@
         gridBuildRelation.setCreateAt(new Date());
         return gridBuildRelation;
     }
+
+    /**
+     * 社区后台-分页查询楼栋列表
+     * @param pageBuildingListDto   请求参数
+     * @return  楼栋列表
+     */
+    @Override
+    public R pageBuildingAdmin(PageBuildingListDto pageBuildingListDto){
+        IPage<PageBuildingListAdminVo> pageBuildingList = this.baseMapper.pageBuildingAdmin(
+                new Page(pageBuildingListDto.getPageNum(),pageBuildingListDto.getPageSize()),pageBuildingListDto);
+        return R.ok(pageBuildingList);
+    }
+
+    /**
+     * 社区后台-查询楼栋列表表头统计数据
+     * @param communityId   社区id
+     * @return  楼栋列表表头统计数据
+     */
+    @Override
+    public R buildingListHeaderStatisticsAdmin(Long communityId){
+        return R.ok(this.baseMapper.buildingListHeaderStatisticsAdmin(communityId));
+    }
+
+    /**
+     * 社区后台-查询楼栋详情
+     * @param id    楼栋id
+     * @return  楼栋详情
+     */
+    @Override
+    public R detailBuildAdmin(Long id){
+        return R.ok(this.baseMapper.detailBuildAdmin(id));
+    }
+
+    /**
+     * 查询楼栋下单元列表
+     * @param id    楼栋id
+     * @return  单元列表
+     */
+    @Override
+    public R buildingUnitListAdmin(Long id){
+        //查询该楼栋信息
+        ComMngBuildingDO buildingDO = this.baseMapper.selectById(id);
+        if(buildingDO == null){
+            return R.fail("未查询到该楼栋信息");
+        }
+        List<ComMngVillageBuildingVO> buildList = new ArrayList<>();
+        if(StringUtils.isNotEmpty(buildingDO.getName())){
+            buildList = this.baseMapper.buildingUnitList(buildingDO.getVillageId(),buildingDO.getName());
+            buildList.forEach(villageBuilding -> {
+                if(StringUtils.isNotEmpty(villageBuilding.getFloor())){
+                    if (!villageBuilding.getFloor().contains("栋")) {
+                        villageBuilding.setFloorString(villageBuilding.getFloor() + "栋");
+                    } else {
+                        villageBuilding.setFloorString(villageBuilding.getFloor());
+                    }
+                }
+                if(StringUtils.isNotEmpty(villageBuilding.getUnitNo())){
+                    if (!villageBuilding.getUnitNo().contains("单元")) {
+                        villageBuilding.setUnitNoString(villageBuilding.getUnitNo() + "单元");
+                    } else {
+                        villageBuilding.setUnitNoString(villageBuilding.getUnitNo());
+                    }
+                }
+            });
+        }
+        return R.ok(buildList);
+    }
+
+    /**
+     * 查询楼栋单元下房屋列表
+     * @param unitHouseListDto    请求参数
+     * @return  单元列表
+     */
+    @Override
+    public R buildingUnitHouseListAdmin(PageBuildingUnitHouseListDto unitHouseListDto){
+
+        BuildingUnitHouseListAdminVo houseListAdminVo = new BuildingUnitHouseListAdminVo();
+        //查询该楼栋信息
+        ComMngBuildingDO buildingDO = this.baseMapper.selectById(unitHouseListDto.getId());
+        if(buildingDO == null){
+            return R.fail("未查询到该楼栋信息");
+        }
+        unitHouseListDto.setVillageId(buildingDO.getVillageId());
+        unitHouseListDto.setFloor(buildingDO.getName());
+        List<ComMngVillageBuildingHouseVO> buildHouseList = new ArrayList<>();
+        if(StringUtils.isNotEmpty(buildingDO.getName())){
+            IPage<ComMngVillageBuildingHouseVO> buildingHousePage = this.baseMapper.getBuildingUnitHouseList(new Page(unitHouseListDto.getPageNum(),unitHouseListDto.getPageSize()),unitHouseListDto);
+            buildingHousePage.getRecords().forEach(house -> {
+                if(StringUtils.isEmpty(house.getBuildingNum())){
+                    if(StringUtils.isNotEmpty(house.getHouseNo())){
+                        boolean result = house.getHouseNo().matches("[0-9]+");
+                        if (result) {// 该字段为纯数字
+                            if (house.getHouseNo().length() == 4) {
+                                house.setBuildingNum(house.getHouseNo().substring(0, 2).replaceAll("^(0+)", ""));
+                            } else if (house.getHouseNo().length() == 3) {
+                                house.setBuildingNum(house.getHouseNo().substring(0, 1).replaceAll("^(0+)", ""));
+                            }
+                        } else {
+                            house.setBuildingNum("-");
+                        }
+                    } else {
+                        house.setBuildingNum("-");
+                    }
+                }
+            });
+            buildHouseList = buildingHousePage.getRecords();
+
+            //查询统计数据
+            Map<String,Object> statisticsMap = this.baseMapper.getBuildingUnitHouseStatistics(buildingDO.getVillageId(),buildingDO.getName(),unitHouseListDto.getUnit());
+            if(statisticsMap != null){
+                houseListAdminVo.setHouseNum(Integer.parseInt(statisticsMap.get("houseNum").toString()));
+                houseListAdminVo.setLiveTotal(Integer.parseInt(statisticsMap.get("liveTotal").toString()));
+                houseListAdminVo.setLeaseTotal(Integer.parseInt(statisticsMap.get("leaseTotal").toString()));
+                houseListAdminVo.setVacantNum(Integer.parseInt(statisticsMap.get("vacantNum").toString()));
+            }
+        }
+        houseListAdminVo.setHouseList(buildHouseList);
+
+        return R.ok(houseListAdminVo);
+    }
+
+    @Override
+    public R buildingUnitHouseDetailAdmin(Long houseId,Long communityId){
+        ComMngVillageBuildingHouseDetailVO buildingHouseDetailVO =
+                this.baseMapper.buildingUnitHouseDetailAdmin(houseId);
+        if (buildingHouseDetailVO != null) {
+
+            // 转换楼层数
+            String houseNo = buildingHouseDetailVO.getHouseNo();
+            boolean result = houseNo.matches("[0-9]+");
+            if (result) {// 该字段为纯数字
+                if (houseNo.length() == 4) {
+                    buildingHouseDetailVO.setBuildingNum(houseNo.substring(0, 2).replaceAll("^(0+)", ""));
+                } else if (houseNo.length() == 3) {
+                    buildingHouseDetailVO.setBuildingNum(houseNo.substring(0, 1).replaceAll("^(0+)", ""));
+                }
+            } else {
+                buildingHouseDetailVO.setBuildingNum("-");
+            }
+
+            // 查询该房屋的户主信息
+            List<PopulationListVO> householderList =
+                    this.baseMapper.getGridVillageBuildingPopulationList(buildingHouseDetailVO.getId(),communityId, null, 1);
+            if (!householderList.isEmpty()) {
+                householderList.forEach(householder -> {
+                    if(householder.getPoliticalOutlook() != null){
+                        householder.setOutlook(PopulPoliticalOutlookEnum.getCnDescByName(householder.getPoliticalOutlook()));
+                    }else{
+                        householder.setOutlook("暂无");
+                    }
+                    try {
+                        Integer age = IdcardUtil.getAgeByIdCard(householder.getCardNo());
+                        householder.setAge(age);
+                    } catch (Exception e) {
+                        log.error("身份证号码转换年龄失败,人员id:" + householder.getId());
+                    }
+                });
+                buildingHouseDetailVO.setHouseholderList(householderList);
+            }
+            // 查询该房屋的住户信息
+            List<PopulationListVO> populationList =
+                    this.baseMapper.getGridVillageBuildingPopulationList(buildingHouseDetailVO.getId(),communityId, null, null);
+            if (!populationList.isEmpty()) {
+                populationList.forEach(population -> {
+                    if(population.getPoliticalOutlook() != null){
+                        population.setOutlook(PopulPoliticalOutlookEnum.getCnDescByName(population.getPoliticalOutlook()));
+                    }else{
+                        population.setOutlook("暂无");
+                    }
+                    try {
+                        Integer age = IdcardUtil.getAgeByIdCard(population.getCardNo());
+                        population.setAge(age);
+                    } catch (Exception e) {
+                        log.error("身份证号码转换年龄失败,人员id:" + population.getId());
+                    }
+                });
+                buildingHouseDetailVO.setPopulationList(populationList);
+            }
+        }
+        return R.ok(buildingHouseDetailVO);
+    }
+
+    @Override
+    public R buildingVillageListAdmin(Long communityId){
+        List<ComMngVillageVO> villageList = this.baseMapper.buildingVillageListAdmin(communityId);
+        villageList.forEach(village -> {
+            if(StringUtils.isEmpty(village.getName())){
+                village.setName(village.getAlley() + village.getHouseNum());
+            }
+        });
+        return R.ok(villageList);
+    }
+
+    @Override
+    public R addBuildingUnitAdmin(AddBuildingUnitDto addBuildingUnitDto){
+        //查询该楼栋信息
+        ComMngBuildingDO buildingDO = this.baseMapper.selectById(addBuildingUnitDto.getId());
+        if(buildingDO == null){
+            return R.fail("未查询到该楼栋信息");
+        }
+
+        Integer count = comMngPopulationHouseDAO.selectCount(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
+                .eq(ComMngPopulationHouseDO::getVillageId,buildingDO.getVillageId())
+                .eq(ComMngPopulationHouseDO::getFloor,buildingDO.getName())
+                .eq(ComMngPopulationHouseDO::getUnitNo,addBuildingUnitDto.getUnitNo()));
+        if(count > 0){
+            return R.fail("该单元号已存在");
+        }
+
+        //查询小区信息
+        ComMngVillageDO villageDO = comActVillageDAO.selectById(buildingDO.getVillageId());
+        if(villageDO != null){
+            StringBuilder address = new StringBuilder();
+            StringBuilder housePath = new StringBuilder();
+            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(addBuildingUnitDto.getCommunityId());
+            if(populationActVO != null){
+                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
+                        .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
+                        .append(villageDO.getAlley()).append(villageDO.getHouseNum()).append("号");
+                if (StringUtils.isNotEmpty(buildingDO.getName())) {
+                    address.append(buildingDO.getName()).append("栋");
+                }
+                if (StringUtils.isNotEmpty(addBuildingUnitDto.getUnitNo())) {
+                    address.append(addBuildingUnitDto.getUnitNo()).append("单元");
+                }
+                housePath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">")
+                        .append(villageDO.getAlley()).append(">").append(populationActVO.getName()).append(">").append(villageDO.getName()).append(">").append(address.toString());
+            }
+            ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
+            populationHouseDO.setId(Snowflake.getId());
+            populationHouseDO.setStreetId(buildingDO.getStreetId());
+            populationHouseDO.setVillageId(buildingDO.getVillageId());
+            populationHouseDO.setAlley(villageDO.getAlley());
+            populationHouseDO.setHouseNum(villageDO.getHouseNum());
+            populationHouseDO.setStatus(ComMngPopulationHouseDO.status.kongzhi);
+            populationHouseDO.setCommunityId(addBuildingUnitDto.getCommunityId());
+            populationHouseDO.setFloor(buildingDO.getName());
+            populationHouseDO.setUnitNo(addBuildingUnitDto.getUnitNo());
+            populationHouseDO.setAddress(address.toString());
+            populationHouseDO.setUpdateAt(new Date());
+            populationHouseDO.setPath(housePath.toString());
+            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
+            comMngPopulationHouseDAO.insert(populationHouseDO);
+        }else{
+            return R.fail();
+        }
+        return R.ok();
+    }
+
+    @Override
+    public R editBuildingUnitAdmin(EditBuildingUnitDto editBuildingUnitDto){
+        //查询该楼栋信息
+        ComMngBuildingDO buildingDO = this.baseMapper.selectById(editBuildingUnitDto.getId());
+        if(buildingDO == null){
+            return R.fail("未查询到该楼栋信息");
+        }
+
+        Integer oldCount = comMngPopulationHouseDAO.selectCount(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
+                .eq(ComMngPopulationHouseDO::getVillageId,buildingDO.getVillageId())
+                .eq(ComMngPopulationHouseDO::getFloor,buildingDO.getName())
+                .eq(ComMngPopulationHouseDO::getUnitNo,editBuildingUnitDto.getOldUnitNo()));
+        if(oldCount <= 0){
+            return R.fail("原单元号不存在");
+        }
+
+        Integer newCount = comMngPopulationHouseDAO.selectCount(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
+                .eq(ComMngPopulationHouseDO::getVillageId,buildingDO.getVillageId())
+                .eq(ComMngPopulationHouseDO::getFloor,buildingDO.getName())
+                .eq(ComMngPopulationHouseDO::getUnitNo,editBuildingUnitDto.getNewUnitNo()));
+        if(newCount > 0){
+            return R.fail("新单元号已存在");
+        }
+
+        //查询小区信息
+        ComMngVillageDO villageDO = comActVillageDAO.selectById(buildingDO.getVillageId());
+        if(villageDO != null){
+            String unitString = editBuildingUnitDto.getNewUnitNo() + "单元";
+
+            List<ComMngPopulationHouseDO> editHouseList = new ArrayList<>();
+            //查询需要修改的房屋列表信息
+            List<ComMngPopulationHouseDO> houseList = comMngPopulationHouseDAO.selectList(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
+                    .eq(ComMngPopulationHouseDO::getVillageId,villageDO.getVillageId())
+                    .eq(ComMngPopulationHouseDO::getFloor,buildingDO.getName())
+                    .eq(ComMngPopulationHouseDO::getUnitNo,editBuildingUnitDto.getOldUnitNo()));
+            houseList.forEach(house -> {
+                ComMngPopulationHouseDO houseDO = new ComMngPopulationHouseDO();
+                houseDO.setId(house.getId());
+                houseDO.setAddress(house.getAddress().replace(house.getUnitNo() + "单元", unitString));
+                houseDO.setPath(house.getPath().replace(house.getUnitNo() + "单元", unitString));
+                houseDO.setUnitNo(editBuildingUnitDto.getNewUnitNo());
+                editHouseList.add(houseDO);
+            });
+
+            List<ComMngPopulationDO> editPopulationList = new ArrayList<>();
+            //查询需要修改的人口信息
+            List<ComMngPopulationDO> populationList = comMngPopulationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda()
+                    .eq(ComMngPopulationDO::getVillageId,villageDO.getVillageId())
+                    .eq(ComMngPopulationDO::getFloor,buildingDO.getName())
+                    .eq(ComMngPopulationDO::getUnitNo,editBuildingUnitDto.getOldUnitNo()));
+            populationList.forEach(population -> {
+                ComMngPopulationDO populationDO = new ComMngPopulationDO();
+                populationDO.setId(population.getId());
+                populationDO.setAddress(population.getAddress().replace(population.getUnitNo() + "单元", unitString));
+                populationDO.setUnitNo(editBuildingUnitDto.getNewUnitNo());
+                editPopulationList.add(populationDO);
+            });
+
+            if(!editHouseList.isEmpty()){
+                comMngPopulationHouseDAO.updateUnitAll(editHouseList);
+            }
+
+            if(!editPopulationList.isEmpty()){
+                comMngPopulationDAO.updateAll(editPopulationList);
+            }
+        }else{
+            return R.fail();
+        }
+        return R.ok();
+    }
+
+    @Override
+    public R addBuildingHouseAdmin(AddBuildingHouseDto addBuildingHouseDto){
+
+        //查询该楼栋信息
+        ComMngBuildingDO buildingDO = this.baseMapper.selectById(addBuildingHouseDto.getId());
+        if(buildingDO == null){
+            return R.fail("未查询到该楼栋信息");
+        }
+
+        Integer count = comMngPopulationHouseDAO.selectCount(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
+                .eq(ComMngPopulationHouseDO::getVillageId,buildingDO.getVillageId())
+                .eq(ComMngPopulationHouseDO::getFloor,buildingDO.getName())
+                .eq(ComMngPopulationHouseDO::getUnitNo,addBuildingHouseDto.getUnitNo())
+                .eq(ComMngPopulationHouseDO::getHouseNo,addBuildingHouseDto.getHouseNo()));
+        if(count > 0){
+            return R.fail("该房间已存在");
+        }
+
+        //查询小区信息
+        ComMngVillageDO villageDO = comActVillageDAO.selectById(buildingDO.getVillageId());
+        if(villageDO != null){
+            StringBuilder address = new StringBuilder();
+            StringBuilder housePath = new StringBuilder();
+            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(addBuildingHouseDto.getCommunityId());
+            if(populationActVO != null){
+                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
+                        .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
+                        .append(villageDO.getAlley()).append(villageDO.getHouseNum()).append("号");
+                if (StringUtils.isNotEmpty(buildingDO.getName())) {
+                    address.append(buildingDO.getName()).append("栋");
+                }
+                if (StringUtils.isNotEmpty(addBuildingHouseDto.getUnitNo())) {
+                    address.append(addBuildingHouseDto.getUnitNo()).append("单元");
+                }
+                if (StringUtils.isNotEmpty(addBuildingHouseDto.getHouseNo())) {
+                    address.append(addBuildingHouseDto.getHouseNo()).append("号");
+                }
+                housePath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">")
+                        .append(villageDO.getAlley()).append(">").append(populationActVO.getName()).append(">").append(villageDO.getName()).append(">").append(address.toString());
+            }
+            ComMngPopulationHouseDO populationHouseDO = new ComMngPopulationHouseDO();
+            populationHouseDO.setId(Snowflake.getId());
+            populationHouseDO.setStreetId(buildingDO.getStreetId());
+            populationHouseDO.setVillageId(buildingDO.getVillageId());
+            populationHouseDO.setAlley(villageDO.getAlley());
+            populationHouseDO.setHouseNum(villageDO.getHouseNum());
+            populationHouseDO.setStatus(ComMngPopulationHouseDO.status.kongzhi);
+            populationHouseDO.setCommunityId(addBuildingHouseDto.getCommunityId());
+            populationHouseDO.setFloor(buildingDO.getName());
+            populationHouseDO.setUnitNo(addBuildingHouseDto.getUnitNo());
+            populationHouseDO.setHouseNo(addBuildingHouseDto.getHouseNo());
+            populationHouseDO.setFloorNum(addBuildingHouseDto.getFloorNum());
+            populationHouseDO.setAddress(address.toString());
+            populationHouseDO.setUpdateAt(new Date());
+            populationHouseDO.setPath(housePath.toString());
+            populationHouseDO.setIsEmpty(PopulIsOksEnum.YES.getCode());
+            comMngPopulationHouseDAO.insert(populationHouseDO);
+        }else{
+            return R.fail();
+        }
+        return R.ok();
+    }
+
+    @Override
+    public R editBuildingHouseAdmin(EditBuildingHouseDto editBuildingHouseDto){
+
+        ComMngPopulationHouseDO houseDO = comMngPopulationHouseDAO.selectById(editBuildingHouseDto.getHouseId());
+        if(houseDO == null){
+            return R.fail("未查询到该户室");
+        }
+
+        Integer count = comMngPopulationHouseDAO.selectCount(new QueryWrapper<ComMngPopulationHouseDO>().lambda()
+                .eq(ComMngPopulationHouseDO::getVillageId,houseDO.getVillageId())
+                .eq(ComMngPopulationHouseDO::getFloor,houseDO.getFloor())
+                .eq(ComMngPopulationHouseDO::getUnitNo,houseDO.getUnitNo())
+                .eq(ComMngPopulationHouseDO::getHouseNo,editBuildingHouseDto.getHouseNo()));
+        if(count > 0){
+            return R.fail("该房间已存在");
+        }
+
+        //查询小区信息
+        ComMngVillageDO villageDO = comActVillageDAO.selectById(houseDO.getVillageId());
+        if(villageDO != null){
+            StringBuilder address = new StringBuilder();
+            StringBuilder housePath = new StringBuilder();
+            ComPopulationActVO populationActVO = comActDAO.getPopulationActById(editBuildingHouseDto.getCommunityId());
+            if(populationActVO != null){
+                address.append(populationActVO.getProvinceName()).append(populationActVO.getCityName())
+                        .append(populationActVO.getDistrictName()).append(populationActVO.getStreetName())
+                        .append(villageDO.getAlley()).append(villageDO.getHouseNum()).append("号");
+                if (StringUtils.isNotEmpty(houseDO.getFloor())) {
+                    address.append(houseDO.getFloor()).append("栋");
+                }
+                if (StringUtils.isNotEmpty(houseDO.getUnitNo())) {
+                    address.append(houseDO.getUnitNo()).append("单元");
+                }
+                if (StringUtils.isNotEmpty(editBuildingHouseDto.getHouseNo())) {
+                    address.append(editBuildingHouseDto.getHouseNo()).append("号");
+                }
+                housePath.append(populationActVO.getProvinceName()).append(">").append(populationActVO.getCityName()).append(">")
+                        .append(villageDO.getAlley()).append(">").append(populationActVO.getName()).append(">").append(villageDO.getName()).append(">").append(address.toString());
+                houseDO.setAddress(address.toString());
+                houseDO.setPath(housePath.toString());
+            }
+            List<ComMngPopulationDO> editPopulationList = new ArrayList<>();
+            //查询需要修改的人口信息
+            List<ComMngPopulationDO> populationList = comMngPopulationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda()
+                    .eq(ComMngPopulationDO::getVillageId,villageDO.getVillageId())
+                    .eq(ComMngPopulationDO::getFloor,houseDO.getFloor())
+                    .eq(ComMngPopulationDO::getUnitNo,houseDO.getUnitNo())
+                    .eq(ComMngPopulationDO::getHouseNo,houseDO.getHouseNo()));
+            populationList.forEach(population -> {
+                ComMngPopulationDO populationDO = new ComMngPopulationDO();
+                populationDO.setId(population.getId());
+                populationDO.setAddress(address.toString());
+                populationDO.setHouseNo(editBuildingHouseDto.getHouseNo());
+                editPopulationList.add(populationDO);
+            });
+
+            houseDO.setHouseNo(editBuildingHouseDto.getHouseNo());
+            houseDO.setFloorNum(editBuildingHouseDto.getFloorNum());
+            comMngPopulationHouseDAO.updateById(houseDO);
+
+            if(!editPopulationList.isEmpty()){
+                comMngPopulationDAO.updateAll(editPopulationList);
+            }
+        }else{
+            return R.fail();
+        }
+        return R.ok();
+    }
+
+    @Override
+    public R deleteBuildingHousePopulationAdmin(DeleteBuildingHousePopulationDto housePopulationDto){
+
+        ComMngPopulationHouseDO houseDO = comMngPopulationHouseDAO.selectById(housePopulationDto.getHouseId());
+        if(houseDO == null){
+            return R.fail("未查询到该户室");
+        }
+
+        if(housePopulationDto.getType().equals(DeleteBuildingHousePopulationDto.type.yz)){
+            ComMngPopulationHouseUserDO houseUserDO = comMngPopulationHouseUserDAO.selectOne(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
+                    .eq(ComMngPopulationHouseUserDO::getHouseId,housePopulationDto.getHouseId())
+                    .eq(ComMngPopulationHouseUserDO::getPopulId,housePopulationDto.getPopulationId()));
+            if(houseUserDO != null){
+                houseUserDO.setRelationId(ComMngPopulationHouseUserDO.relationId.zuzhu);
+                houseUserDO.setUpdateAt(new Date());
+                comMngPopulationHouseUserDAO.updateById(houseUserDO);
+            }
+        }else if(housePopulationDto.getType().equals(DeleteBuildingHousePopulationDto.type.jzr)){
+            //清理人员和房屋关联关系
+            comMngPopulationHouseUserDAO.delete(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
+                    .eq(ComMngPopulationHouseUserDO::getHouseId,housePopulationDto.getHouseId())
+                    .eq(ComMngPopulationHouseUserDO::getPopulId,housePopulationDto.getPopulationId()));
+
+            //查询该房屋是否还有人居住
+            Integer count = comMngPopulationHouseUserDAO.selectCount(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
+                    .eq(ComMngPopulationHouseUserDO::getHouseId,housePopulationDto.getHouseId()));
+            if(count <= 0){
+                houseDO.setStatus(ComMngPopulationHouseDO.status.kongzhi);
+                comMngPopulationHouseDAO.updateById(houseDO);
+            }else{
+                //查询该房屋的居住人中是否还有租住的人
+                Integer zCount = comMngPopulationHouseUserDAO.selectCount(new QueryWrapper<ComMngPopulationHouseUserDO>().lambda()
+                        .eq(ComMngPopulationHouseUserDO::getHouseId,housePopulationDto.getHouseId())
+                        .eq(ComMngPopulationHouseUserDO::getRelationId,ComMngPopulationHouseUserDO.relationId.zuhu));
+                if(zCount <= 0){
+                    houseDO.setStatus(ComMngPopulationHouseDO.status.zizhu);
+                    comMngPopulationHouseDAO.updateById(houseDO);
+                }
+            }
+        }
+        return R.ok();
+    }
 }

--
Gitblit v1.7.1