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

import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ResponseVO;
import net.northking.cctp.common.db.Pagination;
import net.northking.cctp.common.db.excel.ExcelService;
import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.executePlan.db.entity.AtuPlanBatch;
import net.northking.cctp.executePlan.db.entity.AtuPlanTask;
import net.northking.cctp.executePlan.dto.planBatch.AtuBatchTaskPageDto;
import net.northking.cctp.executePlan.dto.planBatch.AtuExceptionCase;
import net.northking.cctp.executePlan.dto.planBatch.AtuPlanBatchPageDto;
import net.northking.cctp.executePlan.dto.planBatch.AtuPlanBatchQueryDto;
import net.northking.cctp.executePlan.dto.planTask.AtuPlanTaskQueryDto;

import java.util.List;

/**
 * 计划执行批次表Restful逻辑接口
 * @author maven-cctp-plugin
 * @since 1.0
 */
public interface AtuPlanBatchApiService extends ExcelService
{
  /**
   * 查询计划执行批次表列表
   *
   * @param queryByPage  查询条件
   * @return 查询结果列表
   */
  Pagination<AtuPlanBatchPageDto> pagingQuery(QueryByPage<AtuPlanBatchQueryDto> queryByPage);


  /**
   * 根据id查询计划批次信息
   * @param uuid 批次id
   * @return 批次信息
   */
  AtuPlanBatch findByPrimaryKey(String uuid);



  /**
   * 更新计划执行批次表
   *
   * @param entity         接口数据传输对象
   * @return 修改的记录数量
   */
  Integer updateByEntity(AtuPlanBatch entity);

  /**
   * 更新缓存批次统计数据
   * @param planTask 任务信息 {"batchId":"", "status":"", "startTime":""}
   */
  void updateCacheBatchSumData(AtuPlanTask planTask);

  /**
   * 批次用例推送通知
   * @param exceptionCaseList 异常用例数据
   * @return 结果
   */
  Boolean casePushNotice(List<AtuExceptionCase> exceptionCaseList);

  /**
   * 批次任务超时处理
   * @param batchId 批次号
   * @param lastOfflineTime 设备离线时间
   */
  void processBatchTaskTimeout(String batchId, Long lastOfflineTime);


  AtuBatchTaskPageDto queryPlanByBatch(QueryByPage<AtuPlanTaskQueryDto> queryByPage);


  /**
   * 初始化计划批次号至缓存
   * @return true or false
   */
  Boolean initPlanBatchNumToCache();

  /**
   * 清理计划报告
   * @return
   */
    ResponseVO<String> clearPlanReport();
}
