金蝶星空云webapi调用

一、官方资料

首先参考地址:https://openapi.open.kingdee.com/ApiDoc

C#金蝶二开、基础技术、技术与框架金蝶星空云webapi调用插图

步骤一:获取第三方系统登录授权

步骤二:下载并使用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

C#金蝶二开、基础技术、技术与框架金蝶星空云webapi调用插图1

2.2 新建kdwebapi.properties的配置文件

然后创建一个 kdwebapi.properties的配置文件

C#金蝶二开、基础技术、技术与框架金蝶星空云webapi调用插图2
C#金蝶二开、基础技术、技术与框架金蝶星空云webapi调用插图3

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";
	}

}