Java接口说明


package fx.custom.apl.example.erpdss;

import com.fxiaoke.functions.FunctionContext;
import com.fxiaoke.functions.client.DebugHelper;
import com.fxiaoke.functions.http.HttpResult;
import com.fxiaoke.functions.model.APIResult;
import com.fxiaoke.functions.template.IErpdssAction;
import com.fxiaoke.functions.utils.Maps;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import static com.fxiaoke.functions.Fx.http;
import static com.fxiaoke.functions.Fx.log;

/**
 * 数据集成连接器对象api-根据时间获取erp对象数据 批量查询
 * 数据集成连接器对象api-根据时间获取erp对象数据 批量查询模板
 */
public class ErpdssExample implements IErpdssAction {
    @Override
    public Map execute(FunctionContext context, Map<String, Object> syncArg) {
        /**
         * 连接器对象api-根据时间获取erp对象数据 批量查询
         * todo的为需要用户自己修改添加的,
         * 需要先在右上角设置参数 Map类型syncArg
         **/
        String errorCodeKey = "code"; // 错误返回码字段名称-需要和连接器配置的 error code字段 对应
        String successCode = "0"; // 成功时的错误返回码-需要和连接器配置的 成功的code 对应
        String errorMessageKey = "message"; // 错误提示语字段名称-需要和连接器配置的 error msg字段 对应
        String dataKey = "data"; // 数据字段名称-需要和连接器配置的 数据字段 对应
        String totalKey = "totalNum"; // 数据总条数字段名称
        String dataListKey = "dataList"; // 数据详情列表字段名称

        Map objectData = (Map) syncArg.get("objectData");
        String apiName = (String) objectData.get("objAPIName"); // ERP对象apiName 例如:BD_MATERIAL
        Long startTime = (Long) objectData.get("startTime"); // 数据变更的开始时间(unix时间戳,单位毫秒)
        Long endTime = (Long) objectData.get("endTime"); // 数据变更的结束时间(unix时间戳,单位毫秒)
        Boolean includeDetail = (Boolean) objectData.get("includeDetail"); // 是否包含明细
        Integer offset = (Integer) objectData.get("offset"); // 获取记录的偏移
        Integer limit = (Integer) objectData.get("limit"); // 当前请求记录条数

        // todo 获取数据
        Map<String, String> headers = Maps.of("token", "xxxxxx");
        String url = "http://xxx/xxx//queryMasterBatch?objAPIName=" + apiName + "&startTime=" + startTime + "&endTime=" + endTime + "&includeDetail=" + includeDetail + "&offset=" + offset + "&limit=" + limit;
        APIResult apiResult = http.get(url, headers);

        if (apiResult.isError()) {
            log.info("根据时间获取erp对象数据错误:" + apiResult.getMessage());
            // 返回错误数据
            Map<String, Object> result = Maps.newHashMap();
            result.put("errorCodeKey", "500");
            result.put("errorMessageKey", apiResult.getMessage());
            return result;
        }
        log.info("根据时间获取erp对象数据,url:" + url + " 返回值:" + apiResult.getData());
        Map<String, Object> queryDataByTimeResult = (Map) ((HttpResult) apiResult.getData()).getContent();
        Map mdata = (Map) queryDataByTimeResult.get("data");
        int totalNum = (int) mdata.get("totalNum");
        List<Map<String, Object>> dataList = (List<Map<String, Object>>) mdata.get("dataList");

        // 构建对象数据
        Map<String, Object> data = Maps.of("totalKey", totalNum, "dataListKey", dataList);

        // 返回数据
        Map<String, Object> result = Maps.of("errorCodeKey", successCode, "dataKey", data);
        return result;
    }

    public static void main(String[] args) throws IOException {
        //调试器
        DebugHelper helper = new DebugHelper();
        helper.init();
        //模拟调试的上下文,例如开发时想模拟一个客户对象的上下文,以方便开发
        FunctionContext context = helper.context("object_zBB6O__c", "63fd7a30ffd89f00013c7be3");
        //依赖于param参数
        Map objectData = Maps.newHashMap();
        objectData.put("objAPIName", "BD_MATERIAL");
        objectData.put("startTime", 1602315440000L);
        objectData.put("endTime", 1602325440000L);
        objectData.put("includeDetail", false);
        objectData.put("offset", 0);
        objectData.put("limit", 100);
        Map<String, Object> param = Maps.of("syncArg",
                Maps.of("objectData", objectData));
        Map execute = new ErpdssExample().execute(context, param);
        log.info(execute);
    }
}


2024-10-22
0 0