package com.qingyun.service.service;

import com.qingyun.service.compare.strategy.FileComparisonStrategy;
import com.qingyun.service.domain.ContractCompareTask;
import com.qingyun.service.domain.vo.ContractCompareTaskVo;
import com.qingyun.service.domain.bo.ContractCompareTaskBo;
import com.qingyun.mybatisplus.page.TableDataInfo;
import com.qingyun.common.core.domain.PageQuery;
import com.qingyun.mybatisplus.core.IServicePlus;

import java.util.Collection;
import java.util.List;

/**
 * 对比任务Service接口
 *
 * @author jianlu
 * @date 2025-07-11
 */
public interface IContractCompareTaskService extends IServicePlus<ContractCompareTask, ContractCompareTaskVo> {

    /**
     * 查询对比任务
     */
    ContractCompareTaskVo queryById(Long taskId);

    /**
     * 查询对比任务列表
     */
    TableDataInfo<ContractCompareTaskVo> queryPageList(String contractName, PageQuery pageQuery);

    /**
     * 查询对比任务列表
     */
    List<ContractCompareTaskVo> queryList(ContractCompareTaskBo bo);

    /**
     * 新增对比任务
     */
    Long insertByBo(ContractCompareTaskBo bo);

    /**
     * 修改对比任务
     */
    Boolean updateByBo(ContractCompareTaskBo bo);

    /**
     * 校验并批量删除对比任务信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 执行任务
     * @param taskId
     * @return
     */
    void executeTask(FileComparisonStrategy strategy, ContractCompareTask task);
}
