package com.ruoyi.vehicle.service.impl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.vehicle.mapper.FuelRecordMapper;
|
import com.ruoyi.vehicle.pojo.FuelCard;
|
import com.ruoyi.vehicle.pojo.FuelRecord;
|
import com.ruoyi.vehicle.pojo.VehicleInfo;
|
import com.ruoyi.vehicle.service.FuelCardService;
|
import com.ruoyi.vehicle.service.FuelRecordService;
|
import com.ruoyi.vehicle.service.VehicleInfoService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service
|
public class FuelRecordServiceImpl extends ServiceImpl<FuelRecordMapper, FuelRecord> implements FuelRecordService {
|
|
@Autowired
|
private FuelCardService fuelCardService;
|
|
@Autowired
|
private VehicleInfoService vehicleInfoService;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean saveRecord(FuelRecord record) {
|
// 如果没有传入部门,尝试从加油卡或车辆继承
|
if (record.getDeptId() == null) {
|
if (record.getFuelCardId() != null) {
|
FuelCard card = fuelCardService.getById(record.getFuelCardId());
|
if (card != null && card.getDeptId() != null) {
|
record.setDeptId(card.getDeptId());
|
}
|
} else if (record.getVehicleId() != null) {
|
VehicleInfo vehicle = vehicleInfoService.getById(record.getVehicleId());
|
if (vehicle != null && vehicle.getDeptId() != null) {
|
record.setDeptId(vehicle.getDeptId());
|
}
|
}
|
}
|
record.setStatus("0"); // 默认草稿
|
return this.save(record);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean updateRecord(FuelRecord record) {
|
FuelRecord oldRecord = this.getById(record.getId());
|
if (oldRecord != null && "1".equals(oldRecord.getStatus())) {
|
throw new RuntimeException("已提交的记录无法修改");
|
}
|
return this.updateById(record);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean removeRecordById(Long id) {
|
FuelRecord oldRecord = this.getById(id);
|
if (oldRecord != null && "1".equals(oldRecord.getStatus())) {
|
throw new RuntimeException("已提交的记录无法删除");
|
}
|
return this.removeById(id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean submitRecord(Long id) {
|
FuelRecord record = this.getById(id);
|
if (record == null) return false;
|
if ("1".equals(record.getStatus())) {
|
throw new RuntimeException("该记录已经提交");
|
}
|
|
record.setStatus("1");
|
boolean updated = this.updateById(record);
|
|
if (updated && record.getFuelCardId() != null && record.getAmount() != null) {
|
FuelCard card = fuelCardService.getById(record.getFuelCardId());
|
if (card != null) {
|
card.setCurrentBalance(card.getCurrentBalance().subtract(record.getAmount()));
|
fuelCardService.updateById(card);
|
}
|
}
|
return updated;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public boolean revokeRecord(Long id) {
|
FuelRecord record = this.getById(id);
|
if (record == null) return false;
|
if ("0".equals(record.getStatus())) {
|
throw new RuntimeException("草稿状态无需撤回");
|
}
|
|
record.setStatus("0");
|
boolean updated = this.updateById(record);
|
|
if (updated && record.getFuelCardId() != null && record.getAmount() != null) {
|
FuelCard card = fuelCardService.getById(record.getFuelCardId());
|
if (card != null) {
|
card.setCurrentBalance(card.getCurrentBalance().add(record.getAmount()));
|
fuelCardService.updateById(card);
|
}
|
}
|
return updated;
|
}
|
}
|