WebApi集成:与MES系统对接接口定义及示例原创
金蝶云社区-SteveHu
SteveHu
24人赞赏了该文章 7066次浏览 未经作者许可,禁止转载编辑于2020年02月09日 08:56:57

一、业务背景

当企业规模逐渐增大时,随着企业信息化的推进,企业上的IT系统越来越多,从ERP到MES、CRM、PDM、SRM等,为了解决信息孤岛,这些异构系统之间需要进行数据集成。

近期,重庆某客户的MES系统与金蝶云星空(ERP)系统之间需要进行数据交互,来打通MES系统与ERP系统的连接。

二、金蝶云星空webapi接口介绍

金蝶云星空提供了通用的WebApi接口,方便异构系统访问ERP系统数据。

金蝶云星空WebAPI是一种轻量级的、可维护的、可伸缩的 Web 服务。采用HTTP+JSON,即RESTful的方式来开发。使用.NET Framework 4.0为开发平台,源代码使用C#编写

目标与约束

目标:

  1. 提供对ERP单据和基础信息的查看、保存、提交、审核、反审核和删除等功能;

  2. 提供对ERP单据和基础信息的查询功能;

约束:

  1. 数据操作接口仅支持以基础资料编码、单据编号或直接以表单主键去操作数据;

  2. 支持对某一具体单据的数据查询,但多单关联查询需要二开接口实现。

三、MES与金蝶云星空(ERP)的对接需求

以下示例提供两种方式:
1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll)
下载链接: https://pan.baidu.com/s/1RthbrrtUgeqWGi-eLM-yjg
提取码: eqin
2) 无引用组件示例(不引用金蝶的组件):
http://ServerIp/K3Cloud/接口命名空间.接口实现类名.方法,组件名.common.kdsvc
说明:以下HttpClient为自定义客户端调用辅助类,下文中所指HttpClient都表示这个类。

using System;
using System.Collections.Generic;
using System.IO;using System.Net;
using System.Text;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
public class HttpClient
    {
        /// <summary>
        /// Seivice URL
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 内容
        /// </summary>
        public string Content { get; set; }
        /// <summary>
        /// Cookie,保证登录后,所有访问持有一个Cookie;
        /// </summary>
        static CookieContainer Cookie = new CookieContainer();

        /// <summary>
        /// HTTP访问
        /// </summary>
        public string AsyncRequest()
        {
            HttpWebRequest httpRequest = HttpWebRequest.Create(Url) as HttpWebRequest;
            httpRequest.Method = "POST";
            httpRequest.ContentType = "application/json";
            httpRequest.CookieContainer = Cookie;
            httpRequest.Timeout = 1000 * 60 * 10;//10min

            using (Stream reqStream = httpRequest.GetRequestStream())
            {
                JObject jObj = new JObject();
                jObj.Add("format", 1);
                jObj.Add("useragent", "ApiClient");
                jObj.Add("rid", Guid.NewGuid().ToString().GetHashCode().ToString());
                jObj.Add("parameters", Content);
                jObj.Add("timestamp", DateTime.Now);
                jObj.Add("v", "1.0");
                string sContent = jObj.ToString();
                var bytes = UnicodeEncoding.UTF8.GetBytes(sContent);
                reqStream.Write(bytes, 0, bytes.Length);
                reqStream.Flush();
            }
            using (var repStream = httpRequest.GetResponse().GetResponseStream())
            {
                using (var reader = new StreamReader(repStream))
                {
                    return ValidateResult(reader.ReadToEnd());
                }
            }
        }

        private static string ValidateResult(string responseText)
        {
            if (responseText.StartsWith("response_error:"))
            {
                return responseText.TrimStart("response_error:".ToCharArray());
            }
            return responseText;
        }
    }

1. 登录接口

金蝶云星空(WebApi集成方式):免密码登录接口

2. 读取BOM数据接口

01 MES系统访问金蝶云星空(WebApi集成方式):读取BOM数据接口

3. 读取生产订单数据接口

02 MES系统访问金蝶云星空(WebApi集成方式):读取生产订单数据接口

4. 生产补料单单据保存接口

03 MES系统访问金蝶云星空(WebApi集成方式):生产补料单单据保存接口

5. 生产退料单单据保存接口

04 MES系统访问金蝶云星空(WebApi集成方式):生产退料单单据保存接口

6. 生产入库单单据保存接口

05 MES系统访问金蝶云星空(WebApi集成方式):生产入库单单据保存接口

7. 推送生产任务:调用MES系统提供的WCF接口

[06 金蝶云星空推送生产任务:调用MES系统提供的WCF接口]



赞 24