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

import com.hzbank.testteam.autotest.dependencies.baseDefineDependency.vo.ApiScriptOptionVO;
import net.northking.cctp.common.db.Pagination;
import net.northking.cctp.common.db.excel.ExcelService;
import net.northking.cctp.common.dto.AdvancedQueryOptions;
import net.northking.cctp.common.enums.FileBusinessTypeEnum;
import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.scriptcase.db.entity.AtuScriptInfo;
import net.northking.cctp.scriptcase.dto.atuScript.atuScriptInfo.*;
import net.northking.cctp.scriptcase.dto.atuScript.atuScriptVersion.AtuScriptVersionQueryDto;
import net.northking.cctp.scriptcase.dto.atuscriptrecord.ScriptInputTableDto;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 脚本信息表Restful逻辑接口
 * @author maven-cctp-plugin
 * @since 1.0
 */
public interface AtuScriptInfoApiService extends ExcelService
{
    /**
     * 保存脚本草稿
     * @param addDto
     * @return
     */
    AtuScriptInfo saveScript(AtuScriptInfoAddDto addDto);

    /**
     * 保存并发布脚本
     * @param addDto
     * @return
     */
    AtuScriptInfo publishScript(AtuScriptInfoAddDto addDto);

    /**
     * 分页查询脚本列表
     * @param query
     * @return
     */
    Pagination<AtuScriptInfoDetailDto> pagingQuery(QueryByPage<AtuScriptInfoQueryDto> query);

    /**
     * 删除脚本
     * @param id
     * @return
     */
    Integer deleteScript(String id);

    /**
     * 批量删除脚本
     * @param dto
     * @return
     */
    Integer deleteScriptList(AtuScriptInfoDeleteDto dto);

    /**
     * 重命名脚本
     * @param dto
     * @return
     */
    Integer renameScript(AtuScriptInfoUpdateDto dto);

    /**
     * 移动脚本
     * @param dto
     * @return
     */
    Integer moveScript(AtuScriptInfoMoveDto dto);

    /**
     * 复制脚本
     * @param dto
     * @return
     */
    Integer copyScript(AtuScriptInfoMoveDto dto);

    /**
     * 回滚历史版本
     * @param queryDto
     * @return
     */
    Integer rollBackVersion(AtuScriptVersionQueryDto queryDto);

    /**
     * 根据版本获取脚本详情
     * @param queryDto
     * @return
     */
    AtuScriptInfoDetailDto getVersionContent(AtuScriptVersionQueryDto queryDto);

    /**
     * 保存更新脚本数据
     * @param dto
     * @return
     */
    String saveScriptData(ScriptInputTableDto dto);

    /**
     * 获取脚本信息
     * @param scriptId
     * @return
     */
    AtuScriptInfoDetailDto getScriptInfo(String scriptId, Boolean queryLastVersion);

    /**
     * 查询脚本参数
     * @param params 参数
     * @return 脚本信息
     */
    String getScriptDetailInfo(Map<String, String> params);

    /**
     * 获取脚本名称
     * @param scriptId
     * @return
     */
    String getScriptName(String scriptId);


    /**
     * 查询脚本的详细信息
     * @param scriptIdSet 脚本id集合
     * @return 结果集
     */
    Map<String, AtuPlanScriptDetailDto> queryScriptDetailMap(Set<String> scriptIdSet);

    Map<String,Object> checkPlanData(AtuScriptInfoFeignDto dto);

    AtuScriptInfoResultDto checkScriptList(List<String> scriptList);

    Integer updatePrincipal(PrincipalUpdateDto dto);

    PlanScriptPageDto queryScriptData(PlanPageQueryDto queryDto);

    String queryScriptCode(Map<String,String> scriptMap);

    String generateScriptFileAndUpload(Object scriptJsonStr, String scriptId, FileBusinessTypeEnum businessCode);

    /**
     * 获取高级查询筛选项
     * @return
     */
    AdvancedQueryOptions advancedQueryOptions(String projectId);

    void getIamgeUrlByJsonArray(String objId, Object obj, Map<String, String> paths, boolean isCopy, FileBusinessTypeEnum businessCode);

    List<ApiScriptOptionVO> getUIScriptVOByIds(List<String> scriptIdList);

    List<ApiScriptOptionVO> getUIScriptVOByCodeAndSystemId(String scriptCode, String systemId);
}
