package com.malk.service.xbongbong;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;

public interface XBBClient {

    /**
     * 表单模板列表接口
     *
     * @param name         模板名称模糊查询
     * @param saasMark     表单类型，1系统表单， 2自定义表单
     * @param businessType 表单业务类型, 客户：100，合同订单：201，退货退款：202，销售机会：301，联系人：401，跟进记录：501，回款计划：701，回款单：702，销项发票：901，供应商：1001，采购合同：1101，采购入库单：1404，其他入库单：1406，销售出库单：1504，其他出库单：1506，调拨单：1601，盘点单：1701，产品：2401；报价单：4700；线索：8000；市场活动：8100；仓库：1801；工作报告：2101；日报：2102；周报：2103；月报：2104；访客计划：601；自定义表单：不传
     */
    List<Map> getFormList(String name, @NotNull int saasMark, int businessType);

    /**
     * 表单模板字段解释接口
     *
     * @param formId          表单模板列表接口返回
     * @param subBusinessType 当formId对应的表单为回款单表单时，标识表单业务子类型，默认值为702,核销回款单：702，红冲回款单：703，坏账回款单：704
     */
    List<Map> getFormDefine(@NotNull long formId, int subBusinessType);

    /**
     * 表单列表接口
     *
     * @param conditions 详见 XBBConf.getCondition 格式说明
     * @param extInfo    其他非必填参数 [例: 每页数量，默认为20，最大值100]
     */
    Map getDataResult(String url, @NotNull long formId, List<Map> conditions, Map extInfo);

    /**
     * 表单列表接口 [返回list]
     */
    List<Map> getDataList(String url, @NotNull long formId, List<Map> conditions, Map extInfo);

    /// 获取表单以及表单定义, 查询与数据处理, 获取后可在程序内固定, 避免无效调用
    List<Map> testDefine(String name, @NotNull int saasMark, int businessType);
}
