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 implements IPropertyCompanyDistrictService { @Autowired private IPropertyDistrictUserService propertyDistrictUserService; /** * 自定义分页查询 * * @param page * @param propertyCompanyDistrict * @return */ @Override public IPage selectPropertyCompanyDistrictPage(IPage page, PropertyCompanyDistrictVO propertyCompanyDistrict) { // 物业 查询用户管理的小区 String userRole = AuthUtil.getUserRole(); if (RoleUtil.isProperty(userRole)) { propertyCompanyDistrict.setDeptId(AuthUtil.getDeptId()); // 查询小区id IPropertyDistrictUserService propertyDistrictUserService = SpringUtils.getBean(IPropertyDistrictUserService.class); List districtIds = propertyDistrictUserService.selectPropertyDistrictByUserId(AuthUtil.getUserId()); // 通过用户机构查询用户的物业公司 IPropertyCompanyService bean = SpringUtil.getBean(IPropertyCompanyService.class); PropertyCompanyEntity one = bean.getOne(Wrappers.lambdaQuery().eq(PropertyCompanyEntity::getDeptId, AuthUtil.getDeptId()).last("limit 1")); if (one != null) { IPropertyCompanyDistrictService bean2 = SpringUtils.getBean(IPropertyCompanyDistrictService.class); // 通过物业公司,查询小区 List list = bean2.list(Wrappers.lambdaQuery() .eq(PropertyCompanyDistrictEntity::getPropertyCompanyId, one.getId())); if (list.size() > 0) { List 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 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.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.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 userIdList = Func.toLongList(propertyCompanyDistrict.getUserId()); List arrayList = new ArrayList(userIdList); // 把项目经理也加到物业用户关联表 arrayList.add(Long.valueOf(propertyCompanyDistrict.getPrincipal())); List propertyDistrictUserEntityList = new ArrayList<>(); arrayList.forEach(userId -> { PropertyDistrictUserEntity propertyDistrictUserEntity = new PropertyDistrictUserEntity(); propertyDistrictUserEntity.setUserId(userId); propertyDistrictUserEntity.setPropertyCompanyDistrictId(propertyCompanyDistrict.getId()); propertyDistrictUserEntityList.add(propertyDistrictUserEntity); }); // 先删除 propertyDistrictUserService.remove(Wrappers.update().lambda().eq(PropertyDistrictUserEntity::getPropertyCompanyDistrictId, propertyCompanyDistrict.getId())); // 再新增 return propertyDistrictUserService.saveBatch(propertyDistrictUserEntityList); } @Override public List getDistictUserByCode(String houseCode) { return baseMapper.getDistictUserByCode(houseCode); } }