package com.njcn.gather.script.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
import com.njcn.gather.script.pojo.param.PqScriptDtlsParam;
import com.njcn.gather.script.pojo.param.PqScriptIssueParam;
import com.njcn.gather.script.pojo.param.ScriptParam;
import com.njcn.gather.script.pojo.po.PqScriptCheckData;
import com.njcn.gather.script.pojo.po.PqScriptDtls;
import com.njcn.gather.script.pojo.po.SourceIssue;
import com.njcn.gather.script.pojo.vo.PqScriptDtlDataVO;

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

/**
 * @author caozehui
 * @date 2024-11-18
 */
public interface IPqScriptDtlsService extends IService<PqScriptDtls> {

    /**
     * 保存脚本详情
     *
     * @param pqScriptDtls 脚本详情
     * @return 成功返回true，失败返回false
     */
    boolean savePqScriptDtls(PqScriptDtls pqScriptDtls);

    /**
     * 根据id删除脚本详情
     *
     * @param ids 脚本详情ids
     * @return 成功返回true，失败返回false
     */
    boolean deletePqScriptDtlsByIds(List<String> ids);

    /**
     * 根据脚本id删除脚本详情
     *
     * @param scriptIds 脚本id
     * @return 成功返回true，失败返回false
     */
    boolean deletePqScriptDtlsByScriptId(List<String> scriptIds);

    /**
     * 修改脚本详情
     *
     * @param pqScriptDtls 脚本详情
     * @return 成功返回true，失败返回false
     */
    boolean updatePqScriptDtls(PqScriptDtls pqScriptDtls);

    /**
     * 根据脚本id查询脚本详情
     *
     * @param scriptId 脚本id
     * @return 脚本详情列表
     */
    List<PqScriptDtls> listPqScriptDtlByScriptId(String scriptId);

    /**
     * 根据计划绑定检测脚本id获取全部检测脚本
     *
     * @param param
     * @return
     */
    List<SourceIssue> listSourceIssue(PqScriptIssueParam param);


    /**
     * 根据脚本类型、脚本id获取index列表
     *
     * @param scriptType 脚本类型
     * @param scriptId   脚本id
     * @return index列表
     */
    List<Integer> getIndexList(String scriptType, String scriptId);

    /**
     * 检测脚本单次小项数据新增
     *
     * @param sourceIssue
     * @return
     */
    Boolean saveScriptDtls(PqScriptDtlsParam sourceIssue);

    /**
     * 根据通讯参数生成装置下发原始数据公式
     *
     * @return
     */
    List<PqScriptDtlsParam.CheckData> scriptDtlsCheckDataList(PqScriptDtlsParam sourceIssue);

    /**
     * 删除脚本
     *
     * @param param
     * @return
     */
    Boolean deleteDtls(ScriptParam param);

    /**
     * 启用关闭脚本
     *
     * @param param
     * @return
     */
    Boolean updateDtls(ScriptParam param);

    /**
     * 通讯脚本回显
     *
     * @param param
     * @return
     */
    List<PqScriptCheckData> checkDataList(ScriptParam param);

    /**
     * @param param
     * @Description: 获取脚本详情描述
     * @return: java.lang.String
     * @Author: wr
     * @Date: 2025/3/31 9:40
     */
    String getScriptDtlsDesc(ScriptParam.Desc param);

    /**
     * 获取脚本与icd校验所需要的信息
     *
     * @param param
     * @return
     */
    Set<String> getScriptToIcdCheckInfo(PreDetectionParam param);

    /**
     * 根据脚本id获取脚本详情数据
     *
     * @param scriptId 脚本id
     */
    List<PqScriptDtlDataVO> getScriptDtlsDataList(String scriptId);
}
