|
|
|
@ -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();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|