package com.malk.service.ekuaibao;

import com.malk.server.ekuaibao.EKBR;

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

public interface EKBClient {
    /**
     * 根据单据编号获取单据详情
     *
     * @apiNote https://docs.ekuaibao.com/docs/next/open-api/flows/getDefault-forms-details-byCode?_highlight=%E5%8D%95%E6%8D%AE&_highlight=%E8%AF%A6%E6%83%85
     */
    Map getFlowDetailsByCode(String accessToken, String code);

    /**
     * 创建单据
     *
     * @param isCommit 单据是否直接提审
     * @param isUpdate 直接提审失败时是否保存单据草稿
     * @param form     单据信息数据
     * @param params   单据其他信息数据
     * @apiNote https://docs.ekuaibao.com/docs/open-api/flows/creat-and-save
     */
    EKBR createFormInstance(String accessToken, boolean isCommit, boolean isUpdate, Map form, Map params);

    /**
     * 查询员工
     *
     * @param type         STAFFID : 员工ID, CODE : 工号, CELLPHONE : 手机号, MAIL : 邮箱, USERID : 第三方ID
     * @param conditionIds 要查询条件值, 支持多个
     * @apiNote https://docs.ekuaibao.com/docs/open-api/corporation/getDefault-staff-ids
     */
    List<Map> getStaffInfo(String accessToken, String type, List conditionIds);

    /**
     * 获取当前版本单据模板列表
     */
    List<Map> getListTemplateId(String accessToken, String type, String specificationGroupId);

    /**
     * 根据模板ID获取模板信息
     *
     * @param ids 先通过api获取单据模板列表
     * @apiNote https://docs.ekuaibao.com/docs/open-api/forms/getDefault-template-byId
     */
    List<Map> getTemplateIdById(String accessToken, List<String> ids);

    /**
     * 获取自定义档案项(不带可见范围)
     *
     * @apiNote https://docs.ekuaibao.com/docs/next/open-api/dimensions/getDefault-dimension-items
     */
    EKBR getDimensionsList(String accessToken, int start, int count, Map body_ext);
}
