package com.engine.organization.mapper.condition;

import com.engine.organization.entity.jclimport.po.CusFormFieldPO;
import com.engine.organization.entity.jclimport.po.HrmFormFieldPO;
import com.engine.organization.entity.jclimport.po.JclSelectItem;
import com.engine.organization.entity.search.*;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

/**
 * @author:dxfeng
 * @createTime: 2023/08/09
 * @version: 1.0
 */
public interface QuickSearchMapper {

    /**
     * 查询快速搜索设置
     *
     * @param belongTo 人员ID
     * @return 搜索设置实体
     */
    QuickSearchSetting getQuickSearchSetting(@Param("belongTo") Integer belongTo);

    /**
     * 获取快速搜索条件
     *
     * @param belongTo 人员ID
     * @return 搜索条件实体
     */
    List<QuickSearchCondition> getQuickSearchConditionList(@Param("belongTo") Integer belongTo, @Param("modelId") Integer modelId);

    /**
     * 获取快速搜索条件
     *
     * @param id id
     * @return return
     */
    QuickSearchCondition getQuickSearchConditionById(@Param("id") String id);

    /**
     * 获取快速搜索选项列表
     *
     * @return 搜索选项列表
     */
    List<QuickSearchOption> getQuickSearchOptionList();

    /**
     * 获取主表、自定义表可以的所有字段信息
     *
     * @return 自定义表可以的所有字段信息
     */
    List<CusFormFieldPO> getAllFieldInfo();

    /**
     * 插入快速搜索设置
     *
     * @param quickSearchSetting 快速搜索设置实体
     * @return return
     */
    int insertQuickSearchSetting(@Param("quickSearchSetting") QuickSearchSetting quickSearchSetting);

    /**
     * 更新快速搜索设置
     *
     * @param quickSearchSetting 快速搜索设置实体
     * @return return
     */
    int updateQuickSearchSetting(@Param("quickSearchSetting") QuickSearchSetting quickSearchSetting);

    /**
     * 插入快速搜索条件
     *
     * @param quickSearchCondition 快速搜索条件实体
     * @return return
     */
    int insertQuickSearchCondition(@Param("quickSearchCondition") QuickSearchCondition quickSearchCondition);

    /**
     * 更新快速搜索条件
     *
     * @param quickSearchCondition 快速搜索条件实体
     * @return return
     */
    int updateQuickSearchCondition(@Param("quickSearchCondition") QuickSearchCondition quickSearchCondition);

    /**
     * 按Cid删除快速搜索详细信息
     *
     * @param cId condition主键
     * @return return
     */
    int deleteQuickSearchDetailByCid(@Param("cId") Integer cId);

    /**
     * 按ID删除快速搜索条件
     *
     * @param ids ids
     * @return return
     */
    int deleteQuickSearchConditionByIds(@Param("ids") Collection<Integer> ids);

    /**
     * 按Cids删除快速搜索详细信息
     *
     * @param cIds cIds
     * @return return
     */
    int deleteQuickSearchDetailByCids(@Param("cIds") Collection<Integer> cIds);

    /**
     * 按Cid获取快速搜索详细信息
     *
     * @param cId cId
     * @return return
     */
    List<QuickSearchDetail> getQuickSearchDetailByCid(@Param("cId") String cId);

    QuickSearchDetail getQuickSearchDetailById(@Param("id") String id);

    /**
     * 按条件Id获取快速搜索字段列表
     *
     * @param fieldName 字段名称
     * @param scopeId scopeId
     * @return return
     */
    QuickSearchField getQuickSearchFieldListByConditionId(@Param("fieldName") String fieldName, @Param("scopeId") String scopeId);

    /**
     * 更新快速搜索详细信息
     *
     * @param quickSearchDetail 详细信息实体
     * @return return
     */
    int updateQuickSearchDetail(@Param("quickSearchDetail") QuickSearchDetail quickSearchDetail);

    /**
     * 插入快速搜索详细信息
     *
     * @param quickSearchDetail 详细信息实体
     * @return return
     */
    int insertQuickSearchDetail(@Param("quickSearchDetail") QuickSearchDetail quickSearchDetail);

    /**
     * 按ID删除快速搜索详细信息
     *
     * @param ids id
     * @return return
     */
    int deleteQuickSearchDetailByIds(@Param("ids") Collection<Integer> ids);

    HrmFormFieldPO getHrmFormFieldByFieldId(@Param("fieldId") String fieldId);

    List<JclSelectItem> getSelectItemListByFieldId(@Param("fieldId") String fieldId);

}
