package com.keyware.shandan.bianmu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.keyware.shandan.bianmu.entity.DataLabelsVo;
import com.keyware.shandan.bianmu.entity.DirectoryResource;
import com.keyware.shandan.bianmu.entity.FormLabelVo;
import com.keyware.shandan.common.service.IBaseService;

import java.io.Serializable;
import java.util.List;

/**
 * @author GuoXin
 * @date 2022-12-30-13:27
 */
public interface DataLabelsService extends IBaseService<DataLabelsVo, Integer> {

    /**
     * 检查标签配置
     *
     * @param label
     * @param fieldTitle
     * @return
     */
    Boolean checkConfig(DataLabelsVo label, String fieldTitle);

    /**
     * 添加配置
     *
     * @param label
     * @param fieldTitle
     */
    void addConfig(DataLabelsVo label, String fieldTitle);

    /**
     * 查询表单置标配置列表
     *
     * @return
     */
    List<FormLabelVo> formConfigList();

    /**
     * 根据主键查询表单配置数据
     *
     * @param id
     * @return
     */
    FormLabelVo getFormLabelById(Integer id);

    /**
     * 更新表单配置数据
     *
     * @param formLabel
     * @return
     */
    Boolean updateFormLabel(FormLabelVo formLabel);

    /**
     * 删除表单配置数据
     *
     * @param id
     * @return
     */
    Boolean deleteFormLabelById(Integer id);

    /**
     * 统计标签下关联的实体数据数量
     *
     * @param label
     * @return
     */
    int countByLabelEntity(DataLabelsVo label);

    /**
     * 分页查询指定置标分类下关联的目录数据资源
     *
     * @param page    分页参数
     * @param resourceName 资源名称
     * @param labelId 置标分类ID
     * @return Page<DirectoryResource>
     */
    Page<DirectoryResource> directoryResourcePageByDataLabel(Page<DirectoryResource> page, String resourceName, Integer ...labelId);
}
