配送实现类

master
cjy 8 months ago
parent e71f539f9a
commit 5313a6a0a5

@ -0,0 +1,65 @@
package com.example.api.service.impl;
import com.example.api.model.entity.Distribution; // 导入Distribution实体类代表配送信息
import com.example.api.model.entity.Driver; // 导入Driver实体类代表司机信息
import com.example.api.model.entity.Vehicle; // 导入Vehicle实体类代表车辆信息
import com.example.api.repository.DistributionRepository; // 导入DistributionRepository接口用于访问配送数据
import com.example.api.repository.DriverRepository; // 导入DriverRepository接口用于访问司机数据
import com.example.api.repository.VehicleRepository; // 导入VehicleRepository接口用于访问车辆数据
import com.example.api.service.DistributionService; // 导入DistributionService接口定义配送服务
import org.springframework.stereotype.Service; // 导入Service注解标识服务组件
import javax.annotation.Resource; // 注解用于注入Spring管理的Bean
import java.util.List; // 导入List类用于处理列表数据
import java.util.Optional; // 导入Optional类用于处理可能为空的数据
/**
*
*/
@Service
public class DistributionServiceImpl implements DistributionService {
@Resource
private DistributionRepository distributionRepository; // 注入配送仓库,用于数据库操作
@Resource
private DriverRepository driverRepository; // 注入司机仓库,用于数据库操作
@Resource
private VehicleRepository vehicleRepository; // 注入车辆仓库,用于数据库操作
/**
*
* @param distribution
* @return
* @throws Exception
*/
@Override
public Distribution save(Distribution distribution) throws Exception {
// 检查配送信息是否已存在,如果不存在则进行保存
if (distributionRepository.findById(distribution.getId()) == null) {
// 根据配送信息中的司机ID查询司机信息
Optional<Driver> driver = driverRepository.findById(distribution.getDid());
// 根据配送信息中车辆ID查询车辆信息
Optional<Vehicle> vehicle = vehicleRepository.findById(distribution.getVid());
// 检查司机或车辆是否已经被分配任务,如果已经被分配则抛出异常
if (driver.get().isDriving() || vehicle.get().isDriving()) throw new Exception("司机或货车状态不可用");
// 更新司机和车辆的状态为正在配送
driverRepository.updateDriving(true, distribution.getDid());
vehicleRepository.updateDriving(true, distribution.getVid());
}
// 保存配送信息到数据库
return distributionRepository.save(distribution);
}
/**
*
* @return
*/
@Override
public List<Distribution> findAll() {
// 调用配送仓库的方法查询所有配送信息
return distributionRepository.findAll();
}
}
Loading…
Cancel
Save