/*
* Copyright (c) 京北方信息技术股份有限公司 Corporation 2022 . All rights reserved.
*
*/
package net.northking.cctp.executePlan.db.service;

import net.northking.cctp.common.db.BasicService;
import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskPageDto;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskQueryDto;
import net.northking.cctp.executePlan.dto.planTask.AtuTaskSendBugDto;
import net.northking.cctp.executePlan.pub.dto.ScriptFirstExecutionDTO;

import java.time.LocalDate;
import java.util.List;

/**
 * 计划执行任务表
 *
 * <p>文件内容由代码生成器产生，请不要手动修改！ <br>
 * createdate:  2022-12-06 11:00:17  <br>
 * @author:  maven-cctp-plugin  <br>
 * @since:  1.0 <br>
 */
public interface AtuPlanTaskService extends BasicService<AtuPlanTask>

{
    /**
     * 分页查询计划关联用例集列表
     * @param queryByPage 分页条件
     * @return 用例集列表
     */
    List<AtuPlanTaskPageDto> queryList(QueryByPage<AtuPlanTaskQueryDto> queryByPage);

    /**
     * 校验批次是否完成
     * @param batchId 批次号
     * @return 是否完成
     */
    boolean checkBatchFinish(String batchId);

    /**
     * 查询批次最后完成任务的结束时间
     * @param batchId 批次号
     * @return 结束时间
     */
    Long queryBatchLastTaskEndTime(String batchId);

    /**
     * 根据批次ID查询未完成的任务
     * @param batchId 批次ID
     * @return 任务
     */
    List<AtuPlanTask> queryUnfinishedTaskByBatchId(String batchId);

    /**
     * 查询批次第一个开始执行的任务开始时间
     * @param batchId 批次号
     * @return 开始时间
     */
    Long queryBatchFirstTaskStartTime(String batchId);



    List<AtuPlanTaskPageDto> queryCaseListByBatchId(String batchId);

    /**
     * 根据批次id查询该批次的环境
     * @param batchId 批次id
     * @return 环境id
     */
    String queryEnvIdByBatchId(String batchId);

    /**
     * 根据批次id查询任务中的appId
     * @param batchId 批次Id
     * @return 结果集
     */
    List<String> queryAppIdListByBatchId(String batchId);


    int deleteByPlanIdLimit(String planId, int num);

    /**
     * 根据计划id统计任务数量
     * @param planId 计划id
     * @return 任务数量
     */
    int countByPlanId(String planId);

    /**
     * 根据批次id查询移动任务性能文件地址集合
     * @param batchId 批次id
     * @return 结果集
     */
    List<String> queryMobilePerDataPathByBatchId(String batchId);

    AtuTaskSendBugDto querySendBugTaskInfo(String taskId);

    ScriptFirstExecutionDTO getFirstExecuteInfo(String scriptId);

    Integer getScriptExecuteSuccessNum(String scriptId, LocalDate now);

    List<AtuPlanTask> getTasksByPlanId(String planId);

    List<String> getTaskIdsByScriptIdsAndPlanId(List<String> oldScriptIds, String planId);

    /**
     * 根据批次Id集合查询需要的任务
     * @param batchIds 批次Id集合
     * @return 任务集合
     */
    List<AtuPlanTask> queryTasksByBatchIds(List<String> batchIds);

}
