package com.engine.organization.service;

import weaver.hrm.User;

import java.util.Map;

/**
 * @className: OrgChartService
 * @author: dengjp
 * @date: 2022/7/7
 * @description: 组织架构图Service
 **/
public interface OrgChartService {

    /**
     * @Description: 高级搜索
     * @Author: liang.cheng
     * @Date: 2023/6/26 3:18 PM
     * @param: [request2Map, user]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getOptionCondition(Map<String, Object> request2Map, User user);

    /**
     * 分部树下级数据
     * @param params [params]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getSubCompanyTree(Map<String, Object> params);


    /**
     * @Description: 组织架构图
     * @Author: liang.cheng
     * @Date: 2023/6/26 3:19 PM
     * @param: [request2Map, user]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getCompanyData(Map<String, Object> request2Map, User user);

    /**
     * @Description: 组织透视图
     * @Author: liang.cheng
     * @Date: 2023/6/26 3:20 PM
     * @param: [request2Map, user]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> getUserData(Map<String, Object> request2Map, User user);

    /**
     * @Description: 异步获取
     * @Author: liang.cheng
     * @Date: 2023/6/26 3:21 PM
     * @param: [request2Map, user]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> asyncUserData(Map<String, Object> request2Map, User user);

    /**
     * @Description: 异步获取
     * @Author: liang.cheng
     * @Date: 2023/6/26 3:21 PM
     * @param: [request2Map, user]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> asyncCompanyData(Map<String, Object> request2Map, User user);


    /**
     * @Description: 同步数据
     * @Author: liang.cheng
     * @Date: 2023/6/26 3:22 PM
     * @param: [request2Map, user]
     * @return: java.lang.String
     */
    String synchronousData(Map<String, Object> request2Map, User user);


    /**
     * @Description: 版本记录描述存储
     * @Author: liang.cheng
     * @Date: 2023/6/28 1:53 PM
     * @param: [fclass, description]
     * @return: void
     */
    void insertChartVersion(Integer fclass,String description);

    /**
     * @Description:时间轴查询
     * @Author: liang.cheng
     * @Date: 2023/6/29 10:36 AM
     * @param: [request2Map]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> searchTimeLines(Map<String, Object> request2Map);
}
