package com.persagy.adm.diagram.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.persagy.adm.diagram.entity.DiagramEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统图类型Dao
 *
 * @author liyang
 * @date 2021-12-01
 */
public interface DiagramMapper extends BaseMapper<DiagramEntity> {


    /**
     * 按系统图类型查询
     *
     * @param diagramType 系统图类型
     * @param projectId   项目id
     * @param systemId    系统实例id
     * @param groupCode   集团code
     * @param name        名称
     * @param flag        根据标识查出特定数据(true：查出所有数据，false：只查发布状态数据)
     * @return 系统图列表
     */
    List<DiagramEntity> getDiagrams(@Param("diagramType") String diagramType,
                                    @Param("projectId") String projectId,
                                    @Param("systemId") String systemId,
                                    @Param("groupCode") String groupCode,
                                    @Param("name") String name,
                                    @Param("flag") Boolean flag);

    /**
     * 根据系统实例id进行查询
     *
     * @param ids 系统实例id列表
     * @return 系统图列表
     */
    List<DiagramEntity> getDiagramsBySystemIds(@Param("systemIds") List<String> ids);

    /**
     * 系统图保存
     *
     * @param diagramEntity 系统图信息
     */
    void saveDiagram(DiagramEntity diagramEntity);

    /**
     * 删除系统图
     *
     * @param diagramId 系统图id
     * @return 是否成功
     */
    boolean deleteByDiagramId(String diagramId);

    /**
     * 获取系统图信息
     *
     * @param diagramId 系统图id
     * @return 系统图信息
     */
    DiagramEntity getDiagram(String diagramId);

    /**
     * 判断系统图名称是否重复
     *
     * @param projectId 项目id
     * @param name      系统图名称
     * @return 是否重复
     */
    List<DiagramEntity> selectByName( String projectId, String name);
}
