package com.xinelu.manage.service.labelfieldcontent;

import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent;
import com.xinelu.manage.dto.labelfieldcontent.LabelFieldContentAddDTO;
import com.xinelu.manage.vo.labelfieldcontent.LabelField;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldAndPartitionDict;
import java.util.List;

/**
 * 标签字段内容信息Service接口
 *
 * @author xinelu
 * @date 2024-03-11
 */
public interface ILabelFieldContentService {
    /**
     * 查询标签字段内容信息
     *
     * @param id 标签字段内容信息主键
     * @return 标签字段内容信息
     */
    LabelFieldContent selectLabelFieldContentById(Long id);

    /**
     *
     * @param patientId
     * @return
     */
    List<LabelFieldContent>  selectLabelFieldContentByPatientId(Long patientId);

    /**
     * 批量查询标签字段内容信息对象
     *
     * @param patientId 患者信息
     * @return LabelFieldContent
     */
    List<LabelFieldContent> selectLabelFieldContentByPatientIds(List<Long> patientId);

    /**
     * 查询标签字段内容信息列表
     *
     * @param labelFieldContent 标签字段内容信息
     * @return 标签字段内容信息集合
     */
    List<LabelFieldContent> selectLabelFieldContentList(LabelFieldContent labelFieldContent);

    /**
     * 新增标签字段内容信息
     *
     * @param labelFieldContent 标签字段内容信息
     * @return 结果
     */
    int insertLabelFieldContent(LabelFieldContent labelFieldContent);

    /**
     * 修改标签字段内容信息
     *
     * @param labelFieldContent 标签字段内容信息
     * @return 结果
     */
    int updateLabelFieldContent(LabelFieldContent labelFieldContent);

    /**
     * 批量删除标签字段内容信息
     *
     * @param ids 需要删除的标签字段内容信息主键集合
     * @return 结果
     */
    int deleteLabelFieldContentByIds(Long[] ids);

    /**
     * 删除标签字段内容信息
     *
     * @param id 标签字段内容信息主键
     * @return 结果
     */
    int deleteLabelFieldContentById(Long id);

    /**
     * 批量新增标签字段内容信息
     */
    int insertLabelFieldContents(LabelFieldContentAddDTO labelFieldContentAddDTO);

    /**
     * 分组信息
     *
     * @return LabelFieldInfo
     */
    AjaxResult groupingContent(Long patientId);

    /**
     * 画像查询
     *
     * @param taskPartitionDictId 细分id
     * @param patientId           患者id
     * @return GroupingValue
     */
    List<LabelFieldAndPartitionDict> groupingValue(Long taskPartitionDictId, Long patientId);

    /**
     * 画像内容新增
     *
     * @param labelField 画像信息
     * @return AjaxResult
     */
    AjaxResult insertLabelField(LabelField labelField);

}
