package com.njcn.gather.icd.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.icd.pojo.param.PqIcdPathParam;
import com.njcn.gather.icd.pojo.po.PqIcdPath;

import java.util.List;

/**
 * @author caozehui
 * @date 2025-02-10
 */
public interface IPqIcdPathService extends IService<PqIcdPath> {

    /**
     * 获取所有Icd
     *
     * @return 所有Icd
     */
    List<PqIcdPath> listAll();

    /**
     * 分页获取Icd
     *
     * @param param 分页查询参数
     * @return
     */
    Page<PqIcdPath> listIcd(PqIcdPathParam.QueryParam param);

    /**
     * 获取所有标准ICD
     *
     * @return 标准ICD列表
     */
    List<PqIcdPath> listStandardIcd();

    /**
     * 新增Icd
     *
     * @param param 新增Icd参数
     * @return 成功返回true，失败返回false
     */
    boolean addIcd(PqIcdPathParam.CreateParam param);

    boolean addUpstreamIcd(List<PqIcdPathParam.ExternalCreateParam> param);

    /**
     * 修改Icd
     *
     * @param param 修改Icd参数
     * @return 成功返回true，失败返回false
     */
    boolean updateIcd(PqIcdPathParam.UpdateParam param);

    /**
     * 批量删除Icd
     *
     * @param ids Icd id列表
     * @return 成功返回true，失败返回false
     */
    boolean deleteIcd(List<String> ids);

    /**
     * 根据id获取ICD详情
     *
     * @param id ICD id
     * @return ICD详情
     */
    PqIcdPath getIcdById(String id);

    /**
     * 导出ICD压缩包
     *
     * @param id ICD id
     * @return zip字节数组
     */
    byte[] exportIcd(String id);

    byte[] exportIcdJson(List<String> ids);

    /**
     * 根据设备类型id获取Icd
     *
     * @param devTypeId
     * @return
     */
    PqIcdPath getIcdByDevType(String devTypeId);
}
