package com.persagy.dmp.rwd.define.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.persagy.dmp.define.entity.DigitalEquipClassRel;
import com.persagy.dmp.define.entity.RelationDefine;
import com.persagy.dmp.rwd.basic.constant.DigitalRelCode;

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

/**
 * 关系定义 接口
 * @author Charlie Yu
 * @date 2021-06-25
 */
public interface IRelationDefineService extends IService<RelationDefine> {

    /**
     * 按条件计数
     * @param queryWrapper 查询条件
     * @return 结果数量
     */
    Integer queryCount(Wrapper<RelationDefine> queryWrapper);

    /**
     * 按条件查询
     * @param queryWrapper 查询条件
     * @return 列表
     */
    List<RelationDefine> queryByCondition(Wrapper<RelationDefine> queryWrapper);

    /**
     * 按条件查询
     * @param page 分页条件
     * @param queryWrapper 查询条件
     * @return 分页结果
     */
    Page queryByCondition(Page page, Wrapper<RelationDefine> queryWrapper);

    /**
     * 新增
     * @param vo 待新增数据
     * @return 新增后数据
     */
    RelationDefine insert(RelationDefine vo);

    /**
     * 修改
     * @param vo 待修改数据
     * @return 修改后数据
     */
    RelationDefine update(RelationDefine vo);

    /**
     * 删除
     * @param id 主键
     */
    void delete(String id);
    /***
     * Description: 根据图类型编码和边类型编码查询边类型对象映射
     * @param graphCodes : 图类型编码集合
     * @param relCodes : 边类型编码集合
     * @return : java.util.Map<java.lang.String,com.persagy.dmp.rwd.basic.constant.DigitalRelCode>
     * @author : lijie
     * @date :2021/9/14 21:21
     * Update By lijie 2021/9/14 21:21
     */
    Map<String, RelationDefine> queryRelMapByCodes(Set<String> graphCodes, Set<String> relCodes);
    /***
     * Description: 根据条件查询数据
     * @param queryWrapper : 查询条件
     * @return : java.util.List<com.persagy.dmp.define.entity.RelationDefine>
     * @author : lijie
     * @date :2021/11/23 17:24
     * Update By lijie 2021/11/23 17:24
     */
    List<RelationDefine> queryListByCondition(LambdaQueryWrapper<RelationDefine> queryWrapper);
}
