package com.ruoyi.system.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.system.mapper.SysTaskVehicleMapper;
|
import com.ruoyi.system.domain.SysTaskVehicle;
|
import com.ruoyi.system.service.ISysTaskVehicleService;
|
|
/**
|
* 任务车辆关联Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-01-15
|
*/
|
@Service
|
public class SysTaskVehicleServiceImpl implements ISysTaskVehicleService {
|
|
@Autowired
|
private SysTaskVehicleMapper sysTaskVehicleMapper;
|
|
/**
|
* 查询任务车辆关联
|
*
|
* @param id 任务车辆关联主键
|
* @return 任务车辆关联
|
*/
|
@Override
|
public SysTaskVehicle selectSysTaskVehicleById(Long id) {
|
return sysTaskVehicleMapper.selectSysTaskVehicleById(id);
|
}
|
|
/**
|
* 查询任务车辆关联列表
|
*
|
* @param sysTaskVehicle 任务车辆关联
|
* @return 任务车辆关联
|
*/
|
@Override
|
public List<SysTaskVehicle> selectSysTaskVehicleList(SysTaskVehicle sysTaskVehicle) {
|
return sysTaskVehicleMapper.selectSysTaskVehicleList(sysTaskVehicle);
|
}
|
|
/**
|
* 根据任务ID查询关联车辆列表
|
*
|
* @param taskId 任务ID
|
* @return 任务车辆关联集合
|
*/
|
@Override
|
public List<SysTaskVehicle> selectSysTaskVehicleByTaskId(Long taskId) {
|
return sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
|
}
|
|
/**
|
* 新增任务车辆关联
|
*
|
* @param sysTaskVehicle 任务车辆关联
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int insertSysTaskVehicle(SysTaskVehicle sysTaskVehicle) {
|
// 设置分配时间和分配人
|
if (sysTaskVehicle.getAssignTime() == null) {
|
sysTaskVehicle.setAssignTime(DateUtils.getNowDate());
|
}
|
if (sysTaskVehicle.getAssignBy() == null || sysTaskVehicle.getAssignBy().isEmpty()) {
|
sysTaskVehicle.setAssignBy(SecurityUtils.getUsername());
|
}
|
// 设置默认状态
|
if (sysTaskVehicle.getStatus() == null || sysTaskVehicle.getStatus().isEmpty()) {
|
sysTaskVehicle.setStatus("ASSIGNED");
|
}
|
sysTaskVehicle.setCreateTime(DateUtils.getNowDate());
|
return sysTaskVehicleMapper.insertSysTaskVehicle(sysTaskVehicle);
|
}
|
|
/**
|
* 修改任务车辆关联
|
*
|
* @param sysTaskVehicle 任务车辆关联
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int updateSysTaskVehicle(SysTaskVehicle sysTaskVehicle) {
|
sysTaskVehicle.setUpdateTime(DateUtils.getNowDate());
|
return sysTaskVehicleMapper.updateSysTaskVehicle(sysTaskVehicle);
|
}
|
|
/**
|
* 批量删除任务车辆关联
|
*
|
* @param ids 需要删除的任务车辆关联主键
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int deleteSysTaskVehicleByIds(Long[] ids) {
|
return sysTaskVehicleMapper.deleteSysTaskVehicleByIds(ids);
|
}
|
|
/**
|
* 删除任务车辆关联信息
|
*
|
* @param id 任务车辆关联主键
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int deleteSysTaskVehicleById(Long id) {
|
return sysTaskVehicleMapper.deleteSysTaskVehicleById(id);
|
}
|
|
/**
|
* 根据任务ID删除车辆关联
|
*
|
* @param taskId 任务ID
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int deleteSysTaskVehicleByTaskId(Long taskId) {
|
return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskId(taskId);
|
}
|
|
/**
|
* 根据任务ID和车辆ID删除关联
|
*
|
* @param taskId 任务ID
|
* @param vehicleId 车辆ID
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int deleteSysTaskVehicleByTaskIdAndVehicleId(Long taskId, Long vehicleId) {
|
return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskIdAndVehicleId(taskId, vehicleId);
|
}
|
|
/**
|
* 检查任务车辆关联是否存在
|
*
|
* @param taskId 任务ID
|
* @param vehicleId 车辆ID
|
* @return 结果
|
*/
|
@Override
|
public int checkTaskVehicleExists(Long taskId, Long vehicleId) {
|
return sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
|
}
|
|
/**
|
* 批量新增任务车辆关联
|
*
|
* @param sysTaskVehicleList 任务车辆关联列表
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int batchInsertSysTaskVehicle(List<SysTaskVehicle> sysTaskVehicleList) {
|
return sysTaskVehicleMapper.batchInsertSysTaskVehicle(sysTaskVehicleList);
|
}
|
|
/**
|
* 分配车辆给任务
|
*
|
* @param taskId 任务ID
|
* @param vehicleId 车辆ID
|
* @param remark 备注
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int assignVehicleToTask(Long taskId, Long vehicleId, String remark) {
|
// 检查是否已经分配
|
int exists = sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
|
if (exists > 0) {
|
throw new RuntimeException("车辆已经分配给该任务");
|
}
|
|
SysTaskVehicle taskVehicle = new SysTaskVehicle();
|
taskVehicle.setTaskId(taskId);
|
taskVehicle.setVehicleId(vehicleId);
|
taskVehicle.setAssignTime(DateUtils.getNowDate());
|
taskVehicle.setAssignBy(SecurityUtils.getUsername());
|
taskVehicle.setStatus("ASSIGNED");
|
taskVehicle.setRemark(remark);
|
|
return sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
|
}
|
|
/**
|
* 取消任务车辆分配
|
*
|
* @param taskId 任务ID
|
* @param vehicleId 车辆ID
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int unassignVehicleFromTask(Long taskId, Long vehicleId) {
|
return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskIdAndVehicleId(taskId, vehicleId);
|
}
|
|
/**
|
* 批量分配车辆给任务
|
*
|
* @param taskId 任务ID
|
* @param vehicleIds 车辆ID列表
|
* @param remark 备注
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int assignMultipleVehiclesToTask(Long taskId, List<Long> vehicleIds, String remark) {
|
List<SysTaskVehicle> taskVehicles = new ArrayList<>();
|
Date now = DateUtils.getNowDate();
|
String assignBy = SecurityUtils.getUsername();
|
|
for (Long vehicleId : vehicleIds) {
|
// 检查是否已经分配
|
int exists = sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
|
if (exists == 0) {
|
SysTaskVehicle taskVehicle = new SysTaskVehicle();
|
taskVehicle.setTaskId(taskId);
|
taskVehicle.setVehicleId(vehicleId);
|
taskVehicle.setAssignTime(now);
|
taskVehicle.setAssignBy(assignBy);
|
taskVehicle.setStatus("ASSIGNED");
|
taskVehicle.setRemark(remark);
|
taskVehicles.add(taskVehicle);
|
}
|
}
|
|
if (!taskVehicles.isEmpty()) {
|
return sysTaskVehicleMapper.batchInsertSysTaskVehicle(taskVehicles);
|
}
|
|
return 0;
|
}
|
|
/**
|
* 查询可用车辆
|
*
|
* @param deptId 部门ID
|
* @param taskType 任务类型
|
* @return 可用车辆列表
|
*/
|
@Override
|
public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) {
|
// 查询指定部门下状态为正常的车辆
|
// 这里需要根据实际的车辆信息表结构来实现
|
// 暂时返回空列表,实际实现需要:
|
// 1. 查询 tb_vehicle_info 表中 dept_id = deptId 且 vehicle_status = '0' 的车辆
|
// 2. 排除已经分配给其他未完成任务且状态为 ACTIVE 的车辆
|
// 3. 根据任务类型筛选合适的车辆类型
|
|
List<SysTaskVehicle> availableVehicles = new ArrayList<>();
|
|
// TODO: 实现具体的查询逻辑
|
// 示例代码:
|
// 1. 查询车辆信息
|
// List<TbVehicleInfo> vehicles = vehicleInfoMapper.selectAvailableVehiclesByDept(deptId, taskType);
|
//
|
// 2. 转换为 SysTaskVehicle 对象
|
// for (TbVehicleInfo vehicle : vehicles) {
|
// SysTaskVehicle taskVehicle = new SysTaskVehicle();
|
// taskVehicle.setVehicleId(vehicle.getVehicleId());
|
// taskVehicle.setVehicleNo(vehicle.getVehicleNo());
|
// taskVehicle.setVehicleType(vehicle.getVehicleType());
|
// taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
|
// taskVehicle.setVehicleModel(vehicle.getVehicleModel());
|
// availableVehicles.add(taskVehicle);
|
// }
|
|
return availableVehicles;
|
}
|
|
/**
|
* 更新任务车辆关联状态
|
*
|
* @param id 关联ID
|
* @param status 新状态
|
* @return 结果
|
*/
|
@Override
|
@Transactional
|
public int updateTaskVehicleStatus(Long id, String status) {
|
SysTaskVehicle taskVehicle = new SysTaskVehicle();
|
taskVehicle.setId(id);
|
taskVehicle.setStatus(status);
|
taskVehicle.setUpdateTime(DateUtils.getNowDate());
|
return sysTaskVehicleMapper.updateSysTaskVehicle(taskVehicle);
|
}
|
}
|