package com.css.simulation.resource.server.app.service.job_manage;

import api.common.pojo.common.ResponseBodyVO;
import api.common.pojo.param.project.SimulationManualProjectParam;
import api.common.pojo.vo.project.*;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;


public interface SimulationProjectService {

  // 供调度使用的两个接口
  ResponseBodyVO<ProjectDetailsVO> selectProjectDetailsByIdForScheduler(SimulationManualProjectParam param);
  ResponseBodyVO<ProjectReportVO> selectProjectReportByIdForScheduler(SimulationManualProjectParam param);

  // 其他
  ResponseBodyVO<String> addOrUpdateProject(SimulationManualProjectParam param);

  ResponseBodyVO<PageInfo<SimulationManualProjectVO>> selectProject(SimulationManualProjectParam param);

  ResponseBodyVO<SimulationManualProjectSingleVo> selectProjectById(SimulationManualProjectParam param);

  ResponseBodyVO<String> deleteProjectByIds(SimulationManualProjectParam param);

  ResponseBodyVO<String> updateProjectNowRunState(SimulationManualProjectParam param);

  ResponseBodyVO<ProjectDetailsVO> selectProjectDetailsById(SimulationManualProjectParam param);


  ResponseBodyVO<ProjectReportVO> selectProjectReportById(SimulationManualProjectParam param);


  ResponseBodyVO<List<DropDownTypeVo>> selectDropDownByType(SimulationManualProjectParam param);

  ResponseBodyVO<List<DropDownTypeNewVo>> selectDropDownByTypeNew(SimulationManualProjectParam param);

  ResponseBodyVO<ProjectTaskDetailsVo> selectProjectTaskById(SimulationManualProjectParam param);

  String getDictName(String type, String code);

  ResponseBodyVO<String> analysisVehicleCoord();

  ResponseBodyVO<PageInfo<ManualProjectTaskVo>> selectProjectTaskList(SimulationManualProjectParam param);

  ResponseBodyVO<List<Map<String, Object>>> selectRunTaskByState();

  ResponseBodyVO<List<Map<String, Object>>> selectRunProjectByState();

  ResponseBodyVO<List<Map<String, Object>>> selectEvaluationLevel();

  void exportProjectReport(SimulationManualProjectParam param);

  String selectLastProjectIdByAlgorithmId(String algorithmId);

  ResponseBodyVO<String> saveEvaluationLevel(String id);

  ResponseBodyVO<Object> saveTaskResult(SimulationManualProjectParam param);

  void exportProjectTaskFileById(SimulationManualProjectParam param);

  void exportProjectReportAndTaskFileById(SimulationManualProjectParam param);

  ResponseBodyVO addOrUpdateAutomaticProject(SimulationManualProjectParam param);

  ResponseBodyVO<String> deleteAutomaticProjectByids(SimulationManualProjectParam param);

  ResponseBodyVO<String> updateAutomaticRunState(SimulationManualProjectParam param);

  ResponseBodyVO<PageInfo<SimulationManualProjectVO>> selectAutomaticProject(SimulationManualProjectParam param);

  ResponseBodyVO<String> createAutomaticSubProject(SimulationManualProjectParam param);

  ResponseBodyVO<String> deleteAutomaticSubProjectByIds(SimulationManualProjectParam param);

  ResponseBodyVO<AutomaticProjectVO> selectSubProjectInfo(SimulationManualProjectParam param);

  ResponseBodyVO<PageInfo<SimulationManualProjectVO>> selectSubProjectList(SimulationManualProjectParam param);

  ResponseBodyVO<SimulationManualProjectSingleVo> selectAutomaticProjectById(SimulationManualProjectParam param);

  ResponseBodyVO<String> updateAutoProjectNowRunState(SimulationManualProjectParam param);
}
