package com.ruoyi.project.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.importExcel.excel.helper.BasicExcelHelper;
import com.ruoyi.common.importExcel.excel.helper.BasicTableInfoHelper;
import com.ruoyi.common.importExcel.excel.tempInfo.ParaRelatedCaseActionHelper;
import com.ruoyi.common.importExcel.excel.tempInfo.ParaRelatedCaseInfoHelper;
import com.ruoyi.common.importExcel.excel.tempInfo.ParaRelatedCaseLogicHelper;
import com.ruoyi.common.importExcel.excel.tempInfo.ParaValidationInfoHelper;
import com.ruoyi.common.importExcel.utils.ExcelUtils;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.project.business.domain.TpParaRelatedCase;
import com.ruoyi.project.business.dto.TpCaseElevatorDto;
import com.ruoyi.project.business.dto.TpParaRelatedCaseCache;
import com.ruoyi.project.business.dto.TpParaRelatedCaseDto;
import com.ruoyi.project.business.dto.TpParaValidationDto;

import java.util.*;

/**
 * @author jubs
 */
public interface ITpParaRelatedCaseService extends IService<TpParaRelatedCase> {

    int saveOrUpdateDto(TpParaRelatedCaseDto tpParaRelatedCase);

    TableDataInfo getTableList(TpParaRelatedCaseDto tpParaRelatedCaseDto);

    TpParaRelatedCaseDto getInfoById(Long id);

    int changeStatus(TpParaRelatedCaseDto param);

    List<TpCaseElevatorDto> initData(Long caseId);

    Map<String, Object> getInfoByTpElevatorModelId(Long tpElevatorModelId);

    int deleteById(Long id, Date updateTime);

    boolean batchChangeRelation(TpParaValidationDto param);

    Collection<? extends List<? extends BasicExcelHelper>> getRelatedCaseList();

    ExcelUtils.UploadResult<ParaRelatedCaseInfoHelper> checkCaseInfo(BasicTableInfoHelper tableInfoHelper,
                                                                           List<ParaRelatedCaseInfoHelper> list);


    ExcelUtils.UploadResult<ParaRelatedCaseLogicHelper> checkCaseLogic(BasicTableInfoHelper tableInfoHelper,
                                                                             List<ParaRelatedCaseLogicHelper> list);


    ExcelUtils.UploadResult<ParaRelatedCaseActionHelper> checkCaseAction(BasicTableInfoHelper tableInfoHelper,
                                                                       List<ParaRelatedCaseActionHelper> list);

    List<String> insertParaRelatedCase(BasicTableInfoHelper basicTableInfoHelper, List<HashMap> dataList);

    Map<String, Object> getRelatedCaseAll(String lastUpdate);
}
