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);
}
}
Java接口说明
2024-10-22