/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.modules.doorplateAddress.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.common.node.TreeNode; import org.springblade.common.utils.NodeTreeUtil; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity; import org.springblade.modules.doorplateAddress.mapper.DoorplateAddressMapper; import org.springblade.modules.doorplateAddress.service.IDoorplateAddressService; import org.springblade.modules.doorplateAddress.vo.DoorplateAddressVO; import org.springblade.modules.doorplateAddress.vo.FuncNode; import org.springblade.modules.house.service.IHouseRentalService; import org.springblade.modules.house.service.IHouseholdLabelService; import org.springblade.modules.house.service.IHouseholdService; import org.springblade.modules.house.vo.HouseRentalVO; import org.springblade.modules.house.vo.HouseholdVO; import org.springblade.modules.place.service.IPlaceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 门牌地址表(总台账数据) 服务实现类 * * @author BladeX * @since 2023-10-28 */ @Service public class DoorplateAddressServiceImpl extends ServiceImpl implements IDoorplateAddressService { @Autowired private IPlaceService placeService; @Autowired private IHouseholdService householdService; @Autowired private IHouseRentalService houseRentalService; @Override public IPage selectDoorplateAddressPage(IPage page, DoorplateAddressVO doorplateAddress) { return page.setRecords(baseMapper.selectDoorplateAddressPage(page, doorplateAddress)); } /** * 根据角色获取功能集合数据 * @param type 1:查区域 2:查场所 3:查房屋 * @param roleName * @return */ @Override public Object getFuncList(Integer type,String roleName) { List list = new ArrayList<>(); if (null!=type) { // 如果是网格管理员,系统管理员 if (type==1){ // 查询街道 List townList = baseMapper.getRegionListByGrouyTwon(); // 查询社区 List neiList = baseMapper.getRegionListByGrouyNei(); TreeNode node = townList.get(0); node.setHasChildren(true); // 遍历 for (TreeNode treeNode : neiList) { treeNode.setHasChildren(false); node.getChildren().add(treeNode); } // 查询区域数据,当前只有西市街道数据 return townList; } // 如果是场所负责人 if (type==2){ // 查询场所集合信息 list = placeService.selectPlaceNodeList(AuthUtil.getUserId()); // 返回 return list; } // 如果是居民 if (type==3){ // 查询房屋集合信息 list = householdService.selectHouseNodeList(AuthUtil.getUserId()); // 返回 return list; } } return list; } /** * 获取楼盘相关集合数据 * @param name 名称 * @param code 编号 * @param type 类型 1:社区 2:小区 3:楼栋 4:户室 * @return */ @Override public Object getHousesList(String name, String code, Integer type) { List list = new ArrayList<>(); // 查小区,场所 if (type==1){ // 根据社区名称查询小区集合 list = baseMapper.getDistrictList(name,code); } // 查楼栋,场所 if (type==2){ // 根据社区名称查询楼栋集合 list = baseMapper.getBuildingList(name,code); } // 查户室 if (type==3){ // 查询户室及住户相关信息,单元中包含住户 return getUnitHouseholdList(name,code); } return list; } /** * 查询户室及住户相关信息,单元中包含住户 * @param name * @param code * @return */ private List getUnitHouseholdList(String name, String code) { List list = new ArrayList<>(); // 查询户室及住户相关信息,单元中包含住户 List funcNodes = baseMapper.getUnitHouseholdList(name,code); // 处理,先按单元分组,再按楼层分组 if (funcNodes.size()>0){ Map> listMap = funcNodes.stream().collect(Collectors.groupingBy(FuncNode::getFloor)); List funcNodeList = new ArrayList<>(); listMap.forEach((s, temps) -> { FuncNode funcNode = new FuncNode(); funcNode.setFloor(s); funcNode.setChildren(temps); funcNodeList.add(funcNode); }); FuncNode funcNode = new FuncNode(); funcNode.setUnitName("一单元"); funcNode.setChildren(funcNodeList); list.add(funcNode); } // 返回 return list; } /** * 查询房屋及出租详情信息 * @param code 门牌地址编号 * @return */ @Override public Object getHouseRentInfo(String code) { // 先查询门牌信息 DoorplateAddressVO doorplateAddressDetailVO = baseMapper.getDoorplateAddressDetailByCode(code); if(null!= doorplateAddressDetailVO) { // 查询房屋出租情况 List houseRentalVOS = houseRentalService.getHouseRentalListByCode(code); // 查询房屋人员情况 List householdVOS = householdService.getHouseholdListByCode(code); // 设置数据 doorplateAddressDetailVO.setHouseRentalList(houseRentalVOS); doorplateAddressDetailVO.setHouseholdList(householdVOS); } // 返回 return doorplateAddressDetailVO; } }