JAVA 对接金蝶K3 Cloud WebAPI接口

本文详细介绍了如何使用Java对接金蝶K3 Cloud WebAPI接口的步骤,包括登录、获取session ID、调用接口以及物料接口的数据构造。通过登录接口、保存、提交和审核接口实现流程,并提供了基础数据的获取和处理方法,同时给出了金蝶接口的配置示例及相关工具类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.登录金蝶云星空的客户端,金蝶测试环境的账号:demo 密码:888888,登录界面如下:

金蝶系统比较复杂,对接接口之前,最好请金蝶的售前人员对业务流程培训一下,确认好要对接的接口

2.查看web api接口文档,接口地址

 

3.找到要对接的接口,这里我们以物料接口为例:

4.物料接口的字段非常多,而且没有java对接的事例的,java开发人员看到这里一般都想爆粗口,这特么什么接口?当初我也是这样的。接下来,我讲一下接口对接具体流程

      1.调用金蝶的登录接口

      2.登录成功获取金蝶的kdservice-sessionid

      3.调用金蝶保存接口,并带上kdservice-sessionid,否则调用不成功

      4.调用金蝶的提交接口,并带上kdservice-sessionid

      5.调用金蝶的审核接口,并带上kdservice-sessionid

      一般来说,通过这几步整个接口的流程也就完成,如果有还有其他需求的,比如要查询,或者不要提交、审核的,在加上查询或去掉第四部第五步就行了,其他接口的调用方式都一下。

5.上面讲了,接口调用的具体流程,接下来讲一下物料基础数据的构造,上面看到了物料的字段非常多,我们根本就不知道要传那些数据,这里有个简单的方法,步骤如下:

这里你就拿到物料接口需要的数据了,接下来可以把测试数据,拷贝出来,转换成json格式,保存到一个文件里面,当做物料接口的基础数据。当然如果你不怕麻烦,你也可以建对应的java对象,然后构造成物料接口需要的数据格式。

6.基础数据有了,接下来就简单了,在来看物料接口的api

上面这三个字段是接口的必须字段,刚刚我们获取的基础数据就是data里面的数据

formid就是接口对应的表单id,物料接口对应的就是BD_MATERIAL,不同的接口对应的表单id不同,不知道表单id的可以找到对应的api,然后选择保存,在事例里面就可以找到对应的表单id

 

7.接下来开始编码

金蝶接口配置,配置为yml格式:

kingdee:
  url: http://192.168.0.215/K3Cloud/
  login: Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc #登录接口
  view: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc #查看表单数据接口
  viewList: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc #表单数据查询接口
  save: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc #保存接口
  batchSave: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave.common.kdsvc #批量保存接口
  submit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc #提交接口
  audit: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc #审核接口
  statusConver: Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.StatusConvert.common.kdsvc #状态转换接口

 

K3CloundConfig.java
package com.kn.common.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;


@Data
@ConfigurationProperties(prefix = "kingdee")
@Component
public class K3CloundConfig {

    /**
     * 金蝶url前缀
     */
    private String url;

    /**
     * 登录接口
     */
    private String login;

    /**
     * 查看接口
     */
    private String view;

    /**
     * 保存接口
     */
    private String save;

    /**
     * 提交接口
     */
    private String submit;


    /**
     * 审核接口
     */
    private String audit;

    /**
     * 状态改变接口
     */
    private String statusConver;



}
KDFormIdEnum.java
package com.kn.common.enums;

import lombok.Getter;


@Getter
public enum  KDFormIdEnum {

    MATERIAL("BD_MATERIAL"),//物料
    OUT_STOCK("SAL_OUTSTOCK"),//出库单
    STOCK("BD_STOCK"),//仓库
    CUSTOMER("BD_Customer");//客户

    private String formid;

    KDFormIdEnum(String formid) {
        this.formid = formid;
    }
}

 

HttpUtil.java

package com.kn.common.utils.http;

import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;


public class HttpUtil {

    private HttpUtil(){

    }

    /**
     * 连接超时时间
     */
    private static final int CONN_TIMEOUT = 30000;
    /**
     * 请求超时时间
     */
    private static final int READ_TIMEOUT = 30000;

    private static RestTemplate restTemplate = null;

    static{
        //设置超时时间
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        requestFactory.setConnectTimeout(CONN_TIMEOUT);
        requestFactory.setReadTimeout(READ_TIMEOUT);
        restTemplate =  new RestTemplate(requestFactory);
    }

    /**
     * 设置header公共参数
     */
    private static HttpHeaders initHeader(){
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "application/json");
        headers.add("Accpet-Encoding", "gzip");
        headers.add("Content-Encoding", "UTF-8");
        headers.add("Content-Type", "application/json; charset=UTF-8");
        return headers;
    }

    /**
     * 设置header参数
     * @param httpHeaders
     * @param headers
     */
    private static void setHeaderParam(HttpHeaders httpHeaders,Map<String,Object> headers){
        if(!CollectionUtils.isEmpty(headers)){
            Set<String> keys = headers.keySet();
            for(String key:keys){
                httpHeaders.add(key,headers.get(key).toString());
            }
        }

    }

    /**
     * 设置参数
     * @param param
     * @
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值