package com.engine.organization.service;

import com.engine.organization.entity.chart.HrmLabelVO;
import com.engine.organization.entity.chart.params.StatisticsParam;
import weaver.hrm.User;

import java.util.Map;

/**
 * @author:dxfeng
 * @createTime: 2023/06/29
 * @version: 1.0
 */
public interface ChartService {

    /**
     * 组织架构图 ,获取数据（同步）
     *
     * @param params 请求参数
     * @return 数据集合
     */
    Map<String, Object> getCompanyData(Map<String, Object> params);

    /**
     * 组织架构图 ,获取数据（异步）
     *
     * @param params 请求参数
     * @return 数据集合
     */
    Map<String, Object> asyncCompanyData(Map<String, Object> params);


    Map<String, Object> getDepartmentDetail(Map<String, Object> params);


    /**
     * @Description: 根据Id获取版本日期
     * @Author: liang.cheng
     * @Date: 2023/7/11 2:53 PM
     * @param: [id]
     * @return: java.lang.String
     */
    String selectVersionDate(String id);


    /**
     * 组织架构图，版本记录
     *
     * @param params 请求参数
     * @return 数据集合
     */
    Map<String, Object> versionRecord(Map<String, Object> params, User user);

    /**
     * 获取部门下拉框树结构
     *
     * @param params 前端入参
     * @return 树结构
     */
    Map<String, Object> getDepartmentTree(Map<String, Object> params);

    /**
     * 可移动树接口
     *
     * @param params 前端参数
     * @return
     */
    Map<String, Object> getMovingTree(Map<String, Object> params);

    /**
     * 获取完整TreeSelect数据
     *
     * @param params
     * @return
     */
    Map<String, Object> getFullSelectTree(Map<String, Object> params);

    /**
     * @Description: 人数统计页面
     * @Author: liang.cheng
     * @Date: 2023/9/11 4:51 PM
     * @param: [request2Map]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> selectStatistics(Map<String, Object> params);

    /**
     * @Description: 人数统计多线程记录
     * @Author: liang.cheng
     * @Date: 2023/9/12 11:42 AM
     * @param: [request2Map]
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> recordStatistics(StatisticsParam param);

    /**
     * @Description: 多语言设置
     * @Author: liang.cheng
     * @Date: 2024/6/3 2:59 PM
     * @param: []
     * @return: java.util.Map<java.lang.Integer,com.engine.organization.entity.chart.HrmLabelVO>
     */
    Map<String, HrmLabelVO> selectLabel();

    /**
     * @Description: 历史版本删除
     * @Author: liang.cheng
     * @Date: 2024/8/1 4:30 PM
     * @param: []
     * @return: java.util.Map<java.lang.String,java.lang.Object>
     */
    Map<String, Object> versionDelete(Integer versionId);
}
