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<VehicleMapper, Vehicle> implements IVehicleService {
|
|
/**
|
* 车辆状态:停用。停用的车辆不再出现在出库表单的下拉里
|
*/
|
private static final String STATUS_DISABLED = "停用";
|
|
@Override
|
public IPage<Vehicle> selectVehicleList(Page<Vehicle> page, Vehicle vehicle) {
|
LambdaQueryWrapper<Vehicle> 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<Vehicle> selectAll() {
|
LambdaQueryWrapper<Vehicle> 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<Vehicle> queryWrapper = new LambdaQueryWrapper<Vehicle>()
|
.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());
|
}
|
}
|
}
|