package com.panzhihua.service_community.service.impl;
|
|
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.PopulPoliticalOutlookEnum;
|
import com.panzhihua.common.model.dtos.community.building.admin.PageBuildingListDto;
|
import com.panzhihua.common.model.dtos.community.building.admin.PageBuildingUnitHouseListDto;
|
import com.panzhihua.common.model.vos.community.ComMngVillageVO;
|
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 org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.google.common.collect.Lists;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.ComMngBuildingExcelVO;
|
import com.panzhihua.common.model.vos.community.ComMngPopulationImportErrorVO;
|
import com.panzhihua.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;
|
|
/**
|
* @author xyh
|
* @date 2021/6/10 13:46
|
*/
|
@Service
|
public class ComActBuildingServiceImpl extends ServiceImpl<ComMngBuildingDAO, ComMngBuildingDO>
|
implements ComActBuildingService {
|
|
@Resource
|
private ComActVillageDAO comActVillageDAO;
|
@Resource
|
private ComActDAO comActDAO;
|
@Resource
|
private GridBuildRelationService gridBuildRelationService;
|
|
@Override
|
public R batchSaveBuilding(List<ComMngBuildingExcelVO> newVoList, Long communityId) {
|
ArrayList<ComMngBuildingDO> list = Lists.newArrayList();
|
List<GridBuildRelationDO> keyList = new ArrayList<>();
|
List<ComMngPopulationImportErrorVO> errorList = new ArrayList<>();
|
ComMngPopulationImportErrorVO importErrorVO = new ComMngPopulationImportErrorVO();
|
importErrorVO.setErrorMsg("重复楼栋");
|
StringBuilder sb = new StringBuilder();
|
for (ComMngBuildingExcelVO vo : newVoList) {
|
ComMngVillageDO comMngVillageDO = comActVillageDAO.selectOne(new QueryWrapper<ComMngVillageDO>()
|
.eq("alley", vo.getAlley()).eq("house_num", vo.getDoorNo()).eq("community_id", communityId));
|
if (comMngVillageDO == null) {
|
continue;
|
}
|
vo.setName(vo.getName().replace("栋", ""));
|
List<ComMngBuildingDO> buildingDOList = this.baseMapper.selectList(new QueryWrapper<ComMngBuildingDO>()
|
.eq("street_id", comMngVillageDO.getStreetId()).eq("act_id", communityId)
|
.eq("village_id", comMngVillageDO.getVillageId()).eq("name", vo.getName()));
|
if (buildingDOList.size() > 0) {
|
sb.append("街路巷:").append(vo.getAlley()).append(",门牌号:").append(vo.getDoorNo()).append(",楼栋号:")
|
.append(vo.getName()).append(";");
|
continue;
|
}
|
ComMngBuildingDO comMngBuildingDO = new ComMngBuildingDO();
|
BeanUtils.copyProperties(vo, comMngBuildingDO);
|
comMngBuildingDO.setActId(comMngVillageDO.getCommunityId());
|
comMngBuildingDO.setStreetId(comMngVillageDO.getStreetId());
|
comMngBuildingDO.setVillageId(comMngVillageDO.getVillageId());
|
ComActDO actDO = comActDAO.selectById(comMngVillageDO.getCommunityId());
|
StringBuilder path = new StringBuilder();
|
path.append(vo.getAlley()).append(">").append(actDO.getName()).append(comMngVillageDO.getName()).append(">")
|
.append(vo.getName());
|
comMngBuildingDO.setPath(path.toString());
|
comMngBuildingDO.setGridId(vo.getGridId());
|
list.add(comMngBuildingDO);
|
GridBuildRelationDO gridBuildRelation =
|
getGridBuildRelationDO(communityId, comMngVillageDO.getStreetId(), vo, comMngBuildingDO);
|
keyList.add(gridBuildRelation);
|
}
|
|
if (list.size() > 0) {
|
this.saveBatch(list);
|
}
|
if (sb.length() > 0 && !StringUtils.isEmpty(sb.toString())) {
|
errorList.add(importErrorVO);
|
return R.fail(JSON.toJSONString(errorList));
|
}
|
gridBuildRelationService.saveBatchGridBuildRelation(keyList);
|
this.saveBatch(list);
|
return R.ok();
|
}
|
|
public GridBuildRelationDO getGridBuildRelationDO(Long communityId, Long streetId, ComMngBuildingExcelVO vo,
|
ComMngBuildingDO comMngBuildingDO) {
|
GridBuildRelationDO gridBuildRelation = new GridBuildRelationDO();
|
gridBuildRelation.setId(Snowflake.getId());
|
gridBuildRelation.setBuildId(comMngBuildingDO.getId());
|
gridBuildRelation.setBuildName(comMngBuildingDO.getPath());
|
gridBuildRelation.setVillageId(comMngBuildingDO.getVillageId());
|
gridBuildRelation.setGridCommunityId(communityId);
|
gridBuildRelation.setGridStreetId(streetId);
|
if (vo.getGridId() != null) {
|
gridBuildRelation.setGridId(Long.valueOf(vo.getGridId()));
|
}
|
gridBuildRelation.setGridName(vo.getGridName());
|
gridBuildRelation.setType(1);
|
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 (!villageBuilding.getFloor().contains("栋")) {
|
villageBuilding.setFloorString(villageBuilding.getFloor() + "栋");
|
} else {
|
villageBuilding.setFloorString(villageBuilding.getFloor());
|
}
|
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.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, 1, null);
|
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);
|
}
|
}
|