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

import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
import net.northking.cctp.executePlan.db.mapper.AtuPlanTaskMapper;
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 org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * Mybatis数据库持久层（业务层）：计划执行任务表
 *
 * <p>文件内容由代码生成器产生，请不要手动修改！ <br>
 * createdate:  2022-12-06 11:00:17  <br>
 * @author:  maven-cctp-plugin  <br>
 * @since:  1.0 <br>
 */
@Repository
public interface AtuPlanTaskDao extends AtuPlanTaskMapper
{

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

    /**
     * 统计批次未完成的任务数
     * @param batchId 批次号
     * @return 数量
     */
    Integer countUnFinishedTask(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> selectCaseListByBatchId(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(@Param("planId") String planId, @Param("num") 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);

    List<ScriptFirstExecutionDTO> getFirstExecuteInfo(@Param("scriptId") String scriptId);

    Integer getScriptExecuteSuccessNum(@Param("scriptId") String scriptId, @Param("now") LocalDate now);

    List<AtuPlanTask> getTasksByPlanId(@Param("planId") String planId);

    List<String> getTaskIdsByScriptIdsAndPlanId(@Param("scriptIds") List<String> scriptIds, @Param("planId") String planId);

    List<AtuPlanTask> queryTasksByBatchIds(@Param("batchIds") List<String> batchIds);

}
