package com.engine.organization.service;


import com.engine.organization.entity.extend.param.ExtendFieldSearchParam;
import com.engine.organization.entity.extend.param.ExtendInfoChangeParam;
import com.engine.organization.entity.extend.param.ExtendTitleSaveParam;
import com.engine.organization.entity.fieldset.param.FieldTypeTreeParam;
import com.engine.organization.entity.fieldset.vo.TypeTreeVO;
import com.engine.organization.enums.ModuleTypeEnum;

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

/**
 * @Author weaver_cl
 * @description:
 * @Date 2022/6/13
 * @Version V1.0
 **/
public interface FieldDefinedService {


    /**
     * 获取左侧树
     *
     * @param moduleTypeEnum
     * @return
     */
    List<TypeTreeVO> getTree(ModuleTypeEnum moduleTypeEnum);

    /**
     * 获取标题分组
     *
     * @param groupType
     * @return
     */
    Map<String, Object> getTabInfo(String groupType);

    /**
     * 保存自定义字段
     *
     * @param data
     * @return
     */
    int saveFields(String data);

    /**
     * 分组维护
     *
     * @param param
     * @return
     */
    Map<String, Object> saveGroup(ExtendTitleSaveParam param);

    /**
     * 新建分组
     *
     * @param param
     * @return
     */
    Map<String, Object> saveTitle(ExtendTitleSaveParam param);


    /**
     * 新增或编辑类型树
     *
     * @param moduleTypeEnum
     * @param fieldTypeTreeParam
     * @return
     */
    void changeTree(ModuleTypeEnum moduleTypeEnum, FieldTypeTreeParam fieldTypeTreeParam);

    /**
     * 删除标题信息
     *
     * @param param
     * @return
     */
    int deleteTitle(ExtendTitleSaveParam param);

    /**
     * 获取自定义字段列表
     *
     * @param param
     * @return
     */
    Map<String, Object> getFieldDefinedInfo(ExtendFieldSearchParam param);

    /**
     * 删除树类型
     *
     * @param id
     */
    void deleteTree(Long id);

    /**
     * 子信息维护
     *
     * @param moduleTypeEnum
     * @param fieldTypeTreeParam
     */
    void saveTree(ModuleTypeEnum moduleTypeEnum, FieldTypeTreeParam fieldTypeTreeParam);

    /**
     * 删除自定义字段
     *
     * @param param
     */
    void deleteFieldDefined(ExtendFieldSearchParam param);

    /**
     * 移动分组
     *
     * @param param
     */
    void changeGroup(ExtendInfoChangeParam param);
}
