package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.VehicleMapper; import com.ruoyi.basic.pojo.Vehicle; import com.ruoyi.basic.service.IVehicleService; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.StringUtils; import org.springframework.stereotype.Service; import java.util.List; /** * 车辆信息Service业务层处理 * * @author ruoyi * @date 2026-09-20 */ @Service public class VehicleServiceImpl extends ServiceImpl implements IVehicleService { /** * 车辆状态:停用。停用的车辆不再出现在出库表单的下拉里 */ private static final String STATUS_DISABLED = "停用"; @Override public IPage selectVehicleList(Page page, Vehicle vehicle) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(vehicle.getPlateNumber()), Vehicle::getPlateNumber, vehicle.getPlateNumber()) .like(StringUtils.isNotBlank(vehicle.getDriverName()), Vehicle::getDriverName, vehicle.getDriverName()) .eq(StringUtils.isNotBlank(vehicle.getStatus()), Vehicle::getStatus, vehicle.getStatus()) .orderByAsc(Vehicle::getId); return this.page(page, queryWrapper); } @Override public List selectAll() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); // status 允许为空,视为启用 queryWrapper.and(w -> w.isNull(Vehicle::getStatus).or().ne(Vehicle::getStatus, STATUS_DISABLED)) .orderByAsc(Vehicle::getId); return this.list(queryWrapper); } @Override public Vehicle selectVehicleById(Long id) { return this.getById(id); } @Override public boolean insertVehicle(Vehicle vehicle) { if (StringUtils.isBlank(vehicle.getPlateNumber())) { throw new BaseException("车牌号不能为空"); } checkPlateNumberUnique(vehicle); return this.save(vehicle); } @Override public boolean updateVehicle(Vehicle vehicle) { if (StringUtils.isNotBlank(vehicle.getPlateNumber())) { checkPlateNumberUnique(vehicle); } return this.updateById(vehicle); } @Override public boolean deleteVehicleByIds(Long[] ids) { return this.removeByIds(List.of(ids)); } /** * 车牌号是车辆的唯一标识,不能重复 */ private void checkPlateNumberUnique(Vehicle vehicle) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(Vehicle::getPlateNumber, vehicle.getPlateNumber()); if (vehicle.getId() != null) { queryWrapper.ne(Vehicle::getId, vehicle.getId()); } if (this.count(queryWrapper) > 0) { throw new BaseException("车牌号已存在:" + vehicle.getPlateNumber()); } } }