| | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | 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.mapper.SysTaskMapper; |
| | | import com.ruoyi.system.mapper.VehicleInfoMapper; |
| | | import com.ruoyi.system.domain.SysTask; |
| | | import com.ruoyi.system.domain.SysTaskVehicle; |
| | | import com.ruoyi.system.domain.VehicleInfo; |
| | | import com.ruoyi.system.service.ISysTaskVehicleService; |
| | | |
| | | /** |
| | |
| | | @Service |
| | | public class SysTaskVehicleServiceImpl implements ISysTaskVehicleService { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger(SysTaskVehicleServiceImpl.class); |
| | | |
| | | @Autowired |
| | | private SysTaskVehicleMapper sysTaskVehicleMapper; |
| | | |
| | | @Autowired |
| | | private VehicleInfoMapper vehicleInfoMapper; |
| | | |
| | | @Autowired |
| | | private SysTaskMapper sysTaskMapper; |
| | | |
| | | /** |
| | | * 查询任务车辆关联 |
| | |
| | | @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); |
| | | // } |
| | | try { |
| | | // 查询车辆信息 |
| | | VehicleInfo queryParam = new VehicleInfo(); |
| | | queryParam.setDeptId(deptId); |
| | | queryParam.setStatus("0"); // 0表示正常状态 |
| | | |
| | | List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam); |
| | | |
| | | // 转换为 SysTaskVehicle 对象 |
| | | for (VehicleInfo 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()); |
| | | taskVehicle.setStatus(vehicle.getStatus()); |
| | | availableVehicles.add(taskVehicle); |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("查询可用车辆失败", e); |
| | | } |
| | | |
| | | return availableVehicles; |
| | | } |
| | |
| | | taskVehicle.setUpdateTime(DateUtils.getNowDate()); |
| | | return sysTaskVehicleMapper.updateSysTaskVehicle(taskVehicle); |
| | | } |
| | | |
| | | /** |
| | | * 批量获取车辆当前任务状态 |
| | | * |
| | | * @param vehicleIds 车辆ID列表 |
| | | * @return Map<车辆ID, Map<"taskCode": 任务编号, "taskStatus": 任务状态>> |
| | | */ |
| | | @Override |
| | | public Map<Long, Map<String, Object>> batchGetVehicleCurrentTaskStatus(List<Long> vehicleIds) { |
| | | Map<Long, Map<String, Object>> resultMap = new HashMap<>(); |
| | | |
| | | if (vehicleIds == null || vehicleIds.isEmpty()) { |
| | | return resultMap; |
| | | } |
| | | |
| | | try { |
| | | // 对每个车辆查询其当前正在进行的任务 |
| | | for (Long vehicleId : vehicleIds) { |
| | | if (vehicleId == null) { |
| | | continue; |
| | | } |
| | | |
| | | // 查询车辆的活跃任务(未完成、未取消的任务) |
| | | List<SysTask> activeTasks = sysTaskMapper.selectActiveTasksByVehicleId(vehicleId); |
| | | |
| | | if (activeTasks != null && !activeTasks.isEmpty()) { |
| | | // 取第一个活跃任务(最新的) |
| | | SysTask currentTask = activeTasks.get(0); |
| | | |
| | | Map<String, Object> taskInfo = new HashMap<>(); |
| | | taskInfo.put("taskCode", currentTask.getTaskCode()); |
| | | taskInfo.put("taskStatus", currentTask.getTaskStatus()); |
| | | taskInfo.put("taskId", currentTask.getTaskId()); |
| | | |
| | | resultMap.put(vehicleId, taskInfo); |
| | | } else { |
| | | // 没有活跃任务 |
| | | resultMap.put(vehicleId, null); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | logger.error("批量查询车辆任务状态失败", e); |
| | | } |
| | | |
| | | return resultMap; |
| | | } |
| | | |
| | | /** |
| | | * 更新任务车辆关联状态(新方法) |
| | | * |
| | | * @param id 关联ID |
| | | * @param status 新状态 |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public int updateSysTaskVehicleStatus(Long id, String status) { |
| | | return updateTaskVehicleStatus(id, status); |
| | | } |
| | | } |