package com.xiaopeng.maintenance.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto;
import com.xiaopeng.maintenance.dto.SaveErrorTaskDto;
import com.xiaopeng.maintenance.dto.SaveRoutineDetailDto;
import com.xiaopeng.maintenance.dto.SaveVehicleAccidentDto;
import com.xiaopeng.maintenance.model.query.TaskManagementPageListQuery;
import com.xiaopeng.maintenance.model.query.WorkBenchQuery;
import com.xiaopeng.maintenance.model.query.XpTaskRecordPageQuery;
import com.xiaopeng.maintenance.model.vo.*;
import com.xiaopeng.maintenance.model.query.TaskPageListQuery;
import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO;
import javax.validation.Valid;
import java.util.List;
/**
*
* 任务管理 服务类
*
*
* @author WuGuanFengYue
* @since 2026-02-03
*/
public interface XpTaskService extends IService {
PageInfo workbench(WorkBenchQuery query);
PageInfo pageList(TaskPageListQuery query);
XpTask saveVehicleAccident(SaveVehicleAccidentDto dto, XpOperationsUser xpOperationsUser);
R vehicleAccidentDetail(Long id);
R handleVehicleAccident(HandleVehicleAccidentDto dto, XpOperationsUser xpOperationsUser);
R vehicleRoutineDetail(Long id);
R chargingDetail(Long id);
R repairDetail(Long id);
R preparationDetail(Long id);
R detectionDetail(Long id);
R saveRoutineDetail(SaveRoutineDetailDto dto, Long id);
R cleanDetail(Long id);
R confirmArrive(Long id,Long userId);
/**
* 通过车辆id查询任务事故分页列表
* @param query
* @return
*/
PageInfo queryTaskByVehicleId(@Valid XpTaskRecordPageQuery query);
/**
* 删除任务/事故
* @param id
*/
void deleteTaskById(Long id);
/**
* 更新任务状态
*
* @param taskId
* @param status
* @param id
*/
void updateTaskStatus(Long taskId, Integer status, Long id);
PageInfo pageListManagement(TaskManagementPageListQuery query);
R assigneeTask(Long id, Long handlerUserId,Long assigneeUserId);
void saveTask(SaveErrorTaskDto dto, Long reportUserId);
R taskDetail(Long id);
List exportList(TaskManagementPageListQuery query);
/**
* 通过车辆id查询任务信息
* @param vehicleId
* @return
*/
XpTask queryInfoByVehicleId(Long vehicleId);
void saveVehicleAccidentError(Long vehicleI);
}