房屋调整,重复性校验

master
zzy 2026-04-26 19:49:35 +08:00
parent 2c183e1520
commit 2d123c5485
4 changed files with 47 additions and 4 deletions

View File

@ -3,7 +3,7 @@ package com.fjrcloud.community.module.community.dal.dataobject.house;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fjrcloud.community.framework.mybatis.core.dataobject.BaseDO; import com.fjrcloud.community.framework.tenant.core.db.TenantBaseDO;
import lombok.*; import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -21,7 +21,7 @@ import java.math.BigDecimal;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class HouseDO extends BaseDO { public class HouseDO extends TenantBaseDO {
/** /**
* ID * ID

View File

@ -30,4 +30,13 @@ public interface HouseMapper extends BaseMapperX<HouseDO> {
.orderByDesc(HouseDO::getId)); .orderByDesc(HouseDO::getId));
} }
default HouseDO selectByCommunityAndRoom(Long communityId, String buildingNo, String unitNo, String roomNo) {
return selectOne(new LambdaQueryWrapperX<HouseDO>()
.eq(HouseDO::getCommunityId, communityId)
.eq(HouseDO::getBuildingNo, buildingNo)
.eq(HouseDO::getUnitNo, unitNo)
.eq(HouseDO::getRoomNo, roomNo)
.last("LIMIT 1"));
}
} }

View File

@ -19,6 +19,8 @@ public interface ErrorCodeConstants {
ErrorCode HOUSE_IMPORT_LIST_IS_EMPTY = new ErrorCode(2_001_001_002, "导入房屋数据不能为空!"); ErrorCode HOUSE_IMPORT_LIST_IS_EMPTY = new ErrorCode(2_001_001_002, "导入房屋数据不能为空!");
ErrorCode HOUSE_DUPLICATE = new ErrorCode(2_001_001_003, "该小区已存在相同的房屋【{}号楼-{}单元-{}室】");
ErrorCode MEMBER_HOUSE_NOT_EXISTS = new ErrorCode(2_002_001_002, "业主认证信息不存在"); ErrorCode MEMBER_HOUSE_NOT_EXISTS = new ErrorCode(2_002_001_002, "业主认证信息不存在");
ErrorCode MEMBER_HOUSE_EXISTS = new ErrorCode(2_002_001_003, "该房屋已存在认证记录,请勿重复提交"); ErrorCode MEMBER_HOUSE_EXISTS = new ErrorCode(2_002_001_003, "该房屋已存在认证记录,请勿重复提交");

View File

@ -28,8 +28,7 @@ import java.util.stream.Collectors;
import static com.fjrcloud.community.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.fjrcloud.community.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.fjrcloud.community.framework.tenant.core.security.TenantSecurityWebFilter.SYSTEM_TENANT_ID; import static com.fjrcloud.community.framework.tenant.core.security.TenantSecurityWebFilter.SYSTEM_TENANT_ID;
import static com.fjrcloud.community.module.community.enums.ErrorCodeConstants.HOUSE_IMPORT_LIST_IS_EMPTY; import static com.fjrcloud.community.module.community.enums.ErrorCodeConstants.*;
import static com.fjrcloud.community.module.community.enums.ErrorCodeConstants.HOUSE_NOT_EXISTS;
/** /**
* Service * Service
@ -51,8 +50,15 @@ public class HouseServiceImpl implements HouseService {
@Override @Override
public Long createHouse(HouseSaveReqVO createReqVO) { public Long createHouse(HouseSaveReqVO createReqVO) {
// 校验房屋是否重复(同一小区、同一楼号、同一单元号、同一门牌号)
validateHouseDuplicate(null, createReqVO.getCommunityId(),
createReqVO.getBuildingNo(), createReqVO.getUnitNo(), createReqVO.getRoomNo());
// 插入 // 插入
HouseDO house = BeanUtils.toBean(createReqVO, HouseDO.class); HouseDO house = BeanUtils.toBean(createReqVO, HouseDO.class);
if(Objects.equals(TenantContextHolder.getTenantId(), SYSTEM_TENANT_ID)){
house.setTenantId(house.getCommunityId());
}
houseMapper.insert(house); houseMapper.insert(house);
// 返回 // 返回
@ -63,8 +69,16 @@ public class HouseServiceImpl implements HouseService {
public void updateHouse(HouseSaveReqVO updateReqVO) { public void updateHouse(HouseSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateHouseExists(updateReqVO.getId()); validateHouseExists(updateReqVO.getId());
// 校验房屋是否重复(排除当前记录)
validateHouseDuplicate(updateReqVO.getId(), updateReqVO.getCommunityId(),
updateReqVO.getBuildingNo(), updateReqVO.getUnitNo(), updateReqVO.getRoomNo());
// 更新 // 更新
HouseDO updateObj = BeanUtils.toBean(updateReqVO, HouseDO.class); HouseDO updateObj = BeanUtils.toBean(updateReqVO, HouseDO.class);
if(Objects.equals(TenantContextHolder.getTenantId(), SYSTEM_TENANT_ID)){
updateObj.setTenantId(updateObj.getCommunityId());
}
houseMapper.updateById(updateObj); houseMapper.updateById(updateObj);
} }
@ -89,6 +103,24 @@ public class HouseServiceImpl implements HouseService {
} }
} }
/**
*
*
* @param id IDnull
* @param communityId ID
* @param buildingNo
* @param unitNo
* @param roomNo
*/
private void validateHouseDuplicate(Long id, Long communityId, String buildingNo, String unitNo, String roomNo) {
HouseDO existHouse = houseMapper.selectByCommunityAndRoom(communityId, buildingNo, unitNo, roomNo);
// 如果找到了重复的房屋,且不是当前正在更新的房屋,则抛出异常
if (existHouse != null && !Objects.equals(existHouse.getId(), id)) {
throw exception(HOUSE_DUPLICATE, buildingNo, unitNo, roomNo);
}
}
@Override @Override
public HouseDO getHouse(Long id) { public HouseDO getHouse(Long id) {
return houseMapper.selectById(id); return houseMapper.selectById(id);