吉安感知网项目-后端
linwei
2026-06-09 8ae33e75865e2d0a5c0a3ce7f643fce9db58bb81
feat(police-station): 添加派出所名称唯一性校验功能

- 在保存、更新和保存或更新操作中添加派出所名称唯一性校验
- 新增checkStationNameUnique方法实现名称重复检查逻辑
- 使用LambdaQueryWrapper查询数据库中的重复名称
- 更新时排除当前记录以避免自检冲突
- 名称为空时跳过校验逻辑
- 重复名称时抛出运行时异常并提示具体错误信息
1 files modified
29 ■■■■■ changed files
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java 29 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwPoliceStationServiceImpl.java
@@ -26,6 +26,7 @@
import org.sxkj.fw.area.mapper.FwPoliceStationMapper;
import org.sxkj.fw.area.service.IFwPoliceStationService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
@@ -71,18 +72,24 @@
    @Override
    public boolean save(FwPoliceStationEntity fwPoliceStation) {
        // 校验派出所名称唯一性
        checkStationNameUnique(fwPoliceStation.getStationName(), null);
        fillCreateFields(fwPoliceStation);
        return super.save(fwPoliceStation);
    }
    @Override
    public boolean updateById(FwPoliceStationEntity fwPoliceStation) {
        // 校验派出所名称唯一性(排除当前记录)
        checkStationNameUnique(fwPoliceStation.getStationName(), fwPoliceStation.getId());
        fillUpdateFields(fwPoliceStation);
        return super.updateById(fwPoliceStation);
    }
    @Override
    public boolean saveOrUpdate(FwPoliceStationEntity fwPoliceStation) {
        // 校验派出所名称唯一性
        checkStationNameUnique(fwPoliceStation.getStationName(), fwPoliceStation.getId());
        if (fwPoliceStation.getId() == null) {
            fillCreateFields(fwPoliceStation);
        } else {
@@ -91,6 +98,28 @@
        return super.saveOrUpdate(fwPoliceStation);
    }
    /**
     * 校验派出所名称唯一性
     *
     * @param stationName 派出所名称
     * @param excludeId   排除的ID(更新时使用,排除当前记录)
     * @throws RuntimeException 当名称已存在时抛出异常
     */
    private void checkStationNameUnique(String stationName, Long excludeId) {
        if (StringUtil.isBlank(stationName)) {
            return;
        }
        LambdaQueryWrapper<FwPoliceStationEntity> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(FwPoliceStationEntity::getStationName, stationName);
        if (excludeId != null) {
            queryWrapper.ne(FwPoliceStationEntity::getId, excludeId);
        }
        long count = count(queryWrapper);
        if (count > 0) {
            throw new RuntimeException("派出所名称 '" + stationName + "' 已存在");
        }
    }
    private void fillCreateFields(FwPoliceStationEntity fwPoliceStation) {
        // 创建/更新基础审计字段统一设置
        Long userId = AuthUtil.getUserId();