package com.ruoyi.approve.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.ruoyi.approve.mapper.CarInfoRecordMapper;
import com.ruoyi.approve.pojo.CarInfo;
import com.ruoyi.approve.mapper.CarInfoMapper;
import com.ruoyi.approve.pojo.CarInfoRecord;
import com.ruoyi.approve.service.CarInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* 车俩管理 服务实现类
*
*
* @author 芯导软件(江苏)有限公司
* @since 2026-01-21 03:00:32
*/
@Service
@Slf4j
public class CarInfoServiceImpl extends ServiceImpl implements CarInfoService {
@Autowired
private CarInfoMapper carInfoMapper;
@Autowired
private CarInfoRecordMapper carInfoRecordMapper;
/**
* 改变车辆使用状态
* @param id
*/
public void updateUsageStatus(Long id, String usageStatus) {
CarInfo carInfo = carInfoMapper.selectOne(new LambdaQueryWrapper()
.eq(CarInfo::getId, id)
.last("limit 1"));
if(carInfo == null) throw new RuntimeException("车辆不存在");
if("使用中".equals(usageStatus) && "使用中".equals(carInfo.getUsageStatus())) throw new RuntimeException("车辆已使用中");
carInfo.setUsageStatus(usageStatus);
carInfoMapper.updateById(carInfo);
}
@Override
public IPage listPage(Page page, CarInfo carInfo) {
LambdaQueryWrapper carInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
if(carInfo != null){
if(StringUtils.isNotEmpty(carInfo.getCarNo())){
carInfoLambdaQueryWrapper.like(CarInfo::getCarNo,carInfo.getCarNo());
}
if(StringUtils.isNotEmpty(carInfo.getBrand())){
carInfoLambdaQueryWrapper.like(CarInfo::getBrand,carInfo.getBrand());
}
if(StringUtils.isNotEmpty(carInfo.getColor())){
carInfoLambdaQueryWrapper.like(CarInfo::getColor,carInfo.getColor());
}
if(StringUtils.isNotEmpty(carInfo.getUsageStatus())){
carInfoLambdaQueryWrapper.like(CarInfo::getUsageStatus,carInfo.getUsageStatus());
}
}
carInfoLambdaQueryWrapper.orderByDesc(CarInfo::getCreateTime);
Page page1 = carInfoMapper.selectPage(page, carInfoLambdaQueryWrapper);
for (CarInfo record : page1.getRecords()) {
// 当前使用人,表显里程
CarInfoRecord carInfoRecord = carInfoRecordMapper.selectOne(new LambdaQueryWrapper()
.eq(CarInfoRecord::getCarInfoId, record.getId())
.orderByDesc(CarInfoRecord::getCreateTime)
.last("limit 1"));
if(carInfoRecord != null){
record.setCarInfoRecordId(carInfoRecord.getId());
record.setOdometerMileage(carInfoRecord.getOdometerMileage());
if("使用中".equals(record.getUsageStatus())){
record.setCurrentUserName(carInfoRecord.getUserName());
}
}
}
return page1;
}
}