/*
|
* 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.district.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springblade.common.cache.SysCache;
|
import org.springblade.common.node.TreeStringNode;
|
import org.springblade.common.utils.NodeTreeUtil;
|
import org.springblade.common.utils.SpringUtils;
|
import org.springblade.core.secure.utils.AuthUtil;
|
import org.springblade.core.tool.utils.SpringUtil;
|
import org.springblade.modules.district.entity.DistrictEntity;
|
import org.springblade.modules.district.mapper.DistrictMapper;
|
import org.springblade.modules.district.service.IDistrictService;
|
import org.springblade.modules.district.vo.DistrictVO;
|
import org.springblade.modules.grid.service.IGridService;
|
import org.springblade.modules.grid.vo.GridVO;
|
import org.springblade.modules.property.entity.PropertyCompanyDistrictEntity;
|
import org.springblade.modules.property.entity.PropertyCompanyEntity;
|
import org.springblade.modules.property.service.IPropertyCompanyDistrictService;
|
import org.springblade.modules.property.service.IPropertyCompanyService;
|
import org.springblade.modules.property.service.IPropertyDistrictUserService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* 小区表 服务实现类
|
*
|
* @author BladeX
|
* @since 2023-11-23
|
*/
|
@Service
|
public class DistrictServiceImpl extends ServiceImpl<DistrictMapper, DistrictEntity> implements IDistrictService {
|
|
@Autowired
|
private IGridService gridService;
|
|
@Override
|
public IPage<DistrictVO> selectDistrictPage(IPage<DistrictVO> page, DistrictVO district) {
|
List<String> regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
|
Integer isAdministrator = AuthUtil.isAdministrator() == true ? 1 : 2;
|
List<DistrictVO> districtVOS = baseMapper.selectDistrictPage(page, district, regionChildCodesList, isAdministrator);
|
// 遍历
|
for (DistrictVO districtVO : districtVOS) {
|
// 设置对应的网格名称
|
List<GridVO> gridVO = gridService.getGridListByAoiCode(districtVO.getAoiCode());
|
if (gridVO.size() > 0) {
|
StringBuilder builder = new StringBuilder();
|
for (GridVO vo : gridVO) {
|
builder.append(vo.getGridName()).append(",");
|
}
|
String bui = builder.toString();
|
String substring = bui.substring(0, bui.length() - 1);
|
districtVO.setGridName(substring);
|
}
|
}
|
// 返回
|
return page.setRecords(districtVOS);
|
}
|
|
/**
|
* 获取小区树
|
*
|
* @param district
|
* @return
|
*/
|
@Override
|
public Object getDistrictTree(DistrictVO district) {
|
// 判断角色,物业角色只能查询当前小区的
|
String userRole = AuthUtil.getUserRole();
|
if (userRole.contains("wygly") || userRole.contains("wyxmjl")) {
|
// if (district.getFilterFlag().equals(1)) {
|
// 查询小区id
|
IPropertyDistrictUserService propertyDistrictUserService = SpringUtils.getBean(IPropertyDistrictUserService.class);
|
List<String> districtIds = propertyDistrictUserService.selectPropertyDistrictByUserId(AuthUtil.getUserId());
|
// 通过用户机构查询用户的物业公司
|
// 通过用户机构查询用户的物业公司
|
IPropertyCompanyService bean = SpringUtil.getBean(IPropertyCompanyService.class);
|
PropertyCompanyEntity one = bean.getOne(Wrappers.<PropertyCompanyEntity>lambdaQuery().eq(PropertyCompanyEntity::getDeptId, AuthUtil.getDeptId()));
|
if (one != null) {
|
IPropertyCompanyDistrictService bean2 = SpringUtils.getBean(IPropertyCompanyDistrictService.class);
|
// 通过物业公司,查询小区
|
List<PropertyCompanyDistrictEntity> list = bean2.list(Wrappers.<PropertyCompanyDistrictEntity>lambdaQuery()
|
.eq(PropertyCompanyDistrictEntity::getPropertyCompanyId, one.getId()));
|
if (list.size() > 0) {
|
List<String> collect = list.stream().map(i -> i.getDistrictId()).collect(Collectors.toList());
|
districtIds.addAll(collect);
|
}
|
}
|
district.setDistrictIdList(districtIds);
|
if (districtIds.size() == 0) {
|
return new ArrayList<>();
|
}
|
// }
|
}
|
Map<String, TreeStringNode> districtTree = baseMapper.getDistrictTree(district);
|
List<TreeStringNode> stringNodeTree = NodeTreeUtil.getStringNodeTree(districtTree);
|
stringNodeTree.forEach(node -> recursion(node));
|
return stringNodeTree;
|
}
|
|
|
/**
|
* 去除空的数据组
|
*
|
* @param node
|
*/
|
private void recursion(TreeStringNode node) {
|
if (node.getChildren() != null && node.getChildren().size() > 0) {
|
node.getChildren().forEach(node2 -> recursion(node2));
|
} else {
|
node.setChildren(null);
|
}
|
}
|
|
/**
|
* 小区表 自定义获取详情
|
*
|
* @param district
|
* @return
|
*/
|
@Override
|
public DistrictVO getDetail(DistrictVO district) {
|
// 小区自定义获取详情查询并返回
|
return baseMapper.getDetail(district);
|
}
|
}
|