package org.springblade.modules.property.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.flowable.idm.engine.impl.persistence.entity.UserEntity;
|
import org.springblade.common.exception.CustomException;
|
import org.springblade.common.utils.RoleUtil;
|
import org.springblade.common.utils.SpringUtils;
|
import org.springblade.core.secure.utils.AuthUtil;
|
import org.springblade.core.tool.utils.Func;
|
import org.springblade.core.tool.utils.SpringUtil;
|
import org.springblade.modules.property.entity.PropertyCompanyDistrictEntity;
|
import org.springblade.modules.property.entity.PropertyCompanyEntity;
|
import org.springblade.modules.property.entity.PropertyDistrictUserEntity;
|
import org.springblade.modules.property.mapper.PropertyCompanyDistrictMapper;
|
import org.springblade.modules.property.service.IPropertyCompanyDistrictService;
|
import org.springblade.modules.property.service.IPropertyCompanyService;
|
import org.springblade.modules.property.service.IPropertyDistrictUserService;
|
import org.springblade.modules.property.vo.PropertyCompanyDistrictVO;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 物业派驻小区表 服务实现类
|
*
|
* @author BladeX
|
* @since 2023-11-23
|
*/
|
@Service
|
public class PropertyCompanyDistrictServiceImpl extends ServiceImpl<PropertyCompanyDistrictMapper, PropertyCompanyDistrictEntity> implements IPropertyCompanyDistrictService {
|
|
@Autowired
|
private IPropertyDistrictUserService propertyDistrictUserService;
|
|
/**
|
* 自定义分页查询
|
*
|
* @param page
|
* @param propertyCompanyDistrict
|
* @return
|
*/
|
@Override
|
public IPage<PropertyCompanyDistrictVO> selectPropertyCompanyDistrictPage(IPage<PropertyCompanyDistrictVO> page, PropertyCompanyDistrictVO propertyCompanyDistrict) {
|
// 物业 查询用户管理的小区
|
String userRole = AuthUtil.getUserRole();
|
if (RoleUtil.isProperty(userRole)) {
|
propertyCompanyDistrict.setDeptId(AuthUtil.getDeptId());
|
// 查询小区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);
|
}
|
}
|
propertyCompanyDistrict.setDistrictIds(districtIds);
|
if (districtIds.size() == 0) {
|
return page.setRecords(new ArrayList<>());
|
}
|
}
|
// 街道
|
List<PropertyCompanyDistrictVO> propertyCompanyDistrictVOS = baseMapper.selectPropertyCompanyDistrictPage(page, propertyCompanyDistrict);
|
return page.setRecords(propertyCompanyDistrictVOS);
|
}
|
|
/**
|
* 物业派驻小区表 自定义新增或修改
|
*
|
* @param propertyCompanyDistrict
|
* @return
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean saveOrUpdatePropertyCompanyDistrict(PropertyCompanyDistrictEntity propertyCompanyDistrict) {
|
// IUserService bean = SpringUtil.getBean(IUserService.class);
|
// User user = bean.getOne(Wrappers.<User>lambdaQuery().eq(User::getId, propertyCompanyDistrict.getPrincipal()));
|
// if (StringUtils.isNotBlank(user.getRoleId())) {
|
// if (!user.getRoleId().contains("1747504028253229058")) {
|
// user.setRoleId(user.getRoleId() + ",1747504028253229058");
|
// }
|
// } else {
|
// user.setRoleId("1747504028253229058");
|
// }
|
if (null != propertyCompanyDistrict.getId()) {
|
// bean.updateById(user);
|
return updateById(propertyCompanyDistrict) && submitPropertyDistrictUser(propertyCompanyDistrict);
|
} else {
|
long count = count(Wrappers.<PropertyCompanyDistrictEntity>lambdaQuery()
|
.eq(PropertyCompanyDistrictEntity::getDistrictId, propertyCompanyDistrict.getDistrictId())
|
.eq(PropertyCompanyDistrictEntity::getPropertyCompanyId, propertyCompanyDistrict.getPropertyCompanyId())
|
.eq(PropertyCompanyDistrictEntity::getIsDeleted, 0));
|
if (count > 0) {
|
throw new CustomException("您已有该小区的合同,请勿重复添加!");
|
}
|
// bean.updateById(user);
|
return save(propertyCompanyDistrict) && submitPropertyDistrictUser(propertyCompanyDistrict);
|
}
|
}
|
|
/**
|
* 关联关系维护
|
*
|
* @param propertyCompanyDistrict
|
* @return
|
*/
|
private boolean submitPropertyDistrictUser(PropertyCompanyDistrictEntity propertyCompanyDistrict) {
|
List<Long> userIdList = Func.toLongList(propertyCompanyDistrict.getUserId());
|
List<Long> arrayList = new ArrayList<Long>(userIdList);
|
// 把项目经理也加到物业用户关联表
|
arrayList.add(Long.valueOf(propertyCompanyDistrict.getPrincipal()));
|
List<PropertyDistrictUserEntity> propertyDistrictUserEntityList = new ArrayList<>();
|
arrayList.forEach(userId -> {
|
PropertyDistrictUserEntity propertyDistrictUserEntity = new PropertyDistrictUserEntity();
|
propertyDistrictUserEntity.setUserId(userId);
|
propertyDistrictUserEntity.setPropertyCompanyDistrictId(propertyCompanyDistrict.getId());
|
propertyDistrictUserEntityList.add(propertyDistrictUserEntity);
|
});
|
// 先删除
|
propertyDistrictUserService.remove(Wrappers.<PropertyDistrictUserEntity>update().lambda().eq(PropertyDistrictUserEntity::getPropertyCompanyDistrictId, propertyCompanyDistrict.getId()));
|
// 再新增
|
return propertyDistrictUserService.saveBatch(propertyDistrictUserEntityList);
|
}
|
|
@Override
|
public List<UserEntity> getDistictUserByCode(String houseCode) {
|
return baseMapper.getDistictUserByCode(houseCode);
|
}
|
}
|