wlzboy
2025-12-03 c6e38b6c66de5f5a8df5b8b2ab03a82c3b605db8
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java
@@ -2,7 +2,9 @@
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;
@@ -11,7 +13,9 @@
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;
@@ -32,6 +36,9 @@
    
    @Autowired
    private VehicleInfoMapper vehicleInfoMapper;
    @Autowired
    private SysTaskMapper sysTaskMapper;
    /**
     * 查询任务车辆关联
@@ -308,4 +315,63 @@
        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);
    }
}