菜单
一、官方资料
首先参考地址:https://openapi.open.kingdee.com/ApiDoc
步骤一:获取第三方系统登录授权
步骤二:下载并使用SDK
步骤三:通过SDK调用API接口
步骤四:数据传输与系统集成
使用java需要想将金蝶的SDK上传至lib中
1.1 员工查看的例子
//注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
//注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
//读取配置,初始化SDK
K3CloudApi client = new K3CloudApi();
//请求参数,要求为json字符串
String jsonData = "{\"CreateOrgId\":0,\"Number\":\"\",\"Id\":\"\",\"IsSortBySeq\":\"false\"}";
try{
//业务对象标识
String formId = "BD_Empinfo";
//调用接口
String resultJson = client.view(formId,jsonData);
//用于记录结果
Gson gson = new Gson();
//对返回结果进行解析和校验
RepoRet repoRet = gson.fromJson(resultJson, RepoRet.class);
if (repoRet.getResult().getResponseStatus().isIsSuccess()) {
System.out.printf("接口返回结果: %s%n", gson.toJson(repoRet.getResult()));
} else {
fail("接口返回结果: " + gson.toJson(repoRet.getResult().getResponseStatus()));
}
} catch (Exception e) {
fail(e.getMessage());
}
二、提供一个关于RestCloud的java插件调用例子
2.1、下载并上传k3cloud-webapi-sdk.jar
首先开发者需引用资料包中SDK 文件夹内名为k3cloud-webapi-sdk.jar的文件放置lib
2.2 新建kdwebapi.properties的配置文件
然后创建一个 kdwebapi.properties的配置文件
2.3RestCloud的java插件代码如下
package cn.restcloud.etl.rule.ext;
import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
import java.sql.Connection;
import cn.restcloud.framework.core.context.*;
import cn.restcloud.etl.base.IETLBaseEvent;
import cn.restcloud.etl.base.IETLBaseProcessEngine;
import cn.restcloud.framework.core.util.*;
import cn.restcloud.framework.core.util.db.rdb.*;
import java.util.*;
import com.google.gson.Gson;
import com.kingdee.bos.webapi.entity.QueryParam;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
/**
indoc为流数据
执行成功必须返回字符1,返回0表示终止流程
*/
public class ETL_T00008_18MCZZ1ITJ7 implements IETLBaseEvent {
public static class SECUser {
String fForbidStatus;
String fName;
public String getFName() { return fName; }
public void setFName(String fName) { this.fName = fName;}
String fUserAccount;
public String getFUserAccount() {
return fUserAccount;
}
public void setFUserAccount(String fUserAccount) {
this.fUserAccount = fUserAccount;
}
public String getFForbidStatus() {
return fForbidStatus;
}
public void setFForbidStatus(String fForbidStatus) {
this.fForbidStatus = fForbidStatus;
}
}
static K3CloudApi api = new K3CloudApi();
@Override
public String execute(IETLBaseProcessEngine engine, Document modelNodeDoc, Document indoc,String fieldId,String params) throws Exception {
QueryParam para = new QueryParam();
para.setFormId("SEC_User");
para.setFieldKeys("FName,FUserAccount,FForbidStatus");
//para.setFilterString("Fnumber=\'"+"AA"+"\'");
Gson gson = new Gson();
List<Document> docs = engine.getData(indoc);
List<SECUser> result = api.executeBillQuery(para, SECUser.class);
for (SECUser user : result) {
Document newdoc=new Document(); //创建一行新的数据
newdoc.put("UserName",user.getFName()); //给字段值
String LoginName = user.getFUserAccount();
// 处理LoginName为null的情况
LoginName = LoginName == null ? "" : LoginName.trim();
// 如果LoginName为空字符串,则将其值设置为user.getFName()
LoginName = LoginName.isEmpty() ? user.getFName() : LoginName;
newdoc.put("LoginName",LoginName); //给字段值
// 将 FForbidStatus 转换为 0 或 1
String forbidStatus = user.getFForbidStatus();
String convertedStatus = "A".equals(forbidStatus) ? "0" : "B".equals(forbidStatus) ? "1" : forbidStatus;
String IsAllow = "A".equals(forbidStatus) ? "1" : "B".equals(forbidStatus) ? "0" : forbidStatus;
newdoc.put("IsAllow",IsAllow); //给字段值
newdoc.put("isDeleted",convertedStatus); //给字段值
docs.add(newdoc); //加入数据流中
}
//PrintUtil.o("用户单据查询接口: " +docs);
String paramJson = new Gson().toJson(docs);
//打印Json字符串
PrintUtil.o("用户单据查询接口: " +docs);
return "1";
}
}