package com.ruoyi.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.domain.ReviewStandard;
import com.ruoyi.web.request.ReviewFindListRequest;
import com.ruoyi.web.request.ReviewStandardListByPageRequest;
import com.ruoyi.web.request.ReviewStandardListRequest;
import com.ruoyi.web.request.ReviewStandardSaveStandardUsecaseRequest;
import com.ruoyi.web.response.*;

import java.io.IOException;
import java.util.List;

public interface ReviewStandardService extends IService<ReviewStandard> {

    void initData(List<ReviewStandard> reviewStandardList);

    /**
     * 查询标准树状结构
     * @param standardId
     * @param type
     * @return
     */
    List<ReviewStandard> findTree(Long standardId, String type);

    /**
     * 分页查询标准列表
     *
     * @param request
     * @return
     */
    List<ReviewStandardResponse> listByPage(ReviewStandardListByPageRequest request);

    /**
     * 通过标准ID查询检验内容(树状结构)
     *
     * @param id
     * @return
     */
    ReviewStandardInspectionContentResponse selectInspectionContent(Long id);

    /**
     * 根据标准主键ID查询车型试验的检验内容
     * @param id
     * @return
     */
    List<ReviewStandardTestInspectionContentResponse> selectTestInspectionContent(Long id);

    /**
     * 查询标准要求
     * @param request
     * @return
     */
    List<ReviewStandardListResponse> findReviewStandardList(ReviewStandardListRequest request);

    // 标准-要点
    List<ReviewStandard> findKeyPointList(ReviewFindListRequest request);

    // 标准-要点-细则
    List<ReviewStandard> findDetailsList(ReviewFindListRequest request);

    /**
     * 选择标准-测试用例
     * @param standardId
     * @return
     */
    ReviewStandardStandardUsecaseResponse selectStandardUsecase(Long standardId);

    /**
     * 保存 标准-检验内容-用例
     * @param request
     */
    void saveStandardUsecase(ReviewStandardSaveStandardUsecaseRequest request);

    /**
     * 检验内容库科恩获取车型试验
     * @param request
     * @return
     * @throws IOException
     */
    InspectionContentResponse getList(String request) throws IOException;

    /**
     * 检验内容库查询标准下测试用例(科恩)
     * @param request
     * @return
     */
    List<UseCaseListResponse> getUseCaseList(String request) throws IOException ;
}