本文介绍了通过星空凭证接口对接EAS系统的功能实现,指出直接配置的方法目前未得到支持,但提供的代码方案可行。文章详细阐述了对接的逻辑思想,包括登录获取token、调用接口、处理返回结果及后续业务逻辑,并强调了事务执行和数据校验的重要性,最后展示了相关的代码实现。
此功能以星空凭证接口对接EAS系统为例,社区其他人说的可以直接配置,没有找到过类似配置方法,也未听见总部同事给过类似的案例。所以关于网上说的可以直接配置应该在目前是没有支持需求的功能的。
但是下面的代码方案肯定是可行的。本人亲测,并有项目经验支持。
主要逻辑思想:
1、调用EAS登录接口,获取对接token
2、登录成功后可以调用需要对接的接口,这个的话跟EAS版本有关系,不是所有的版本都有一样的接口,也不是某种接口可以在所有的版本都可以找到。要根据具体情况灵活处理
3、调用成功后EAS那边会返回调用成功的标志。如果不成功。EAS那边也会返回相应的异常原因。当然如果事先做好数据校验的话就不会占用过多的网络资源,这个也要根据不同的实现情况相应调整好。
4、调用成功后就可以处理后续业务逻辑了
注意事项:
前后逻辑最好放到一个事务中执行,防止出现数据不统一的情况。
说到这里还是看看代码吧。
直接上代码,希望能帮到你!
using HNKD.K3.SLJT.APP.LJ.ServicePlugin.WSGLVoucher;
using HNKD.K3.SLJT.APP.LJ.ServicePlugin.EASLogin;
using System;
using System.Net;
namespace HNKD.K3.SLJT.APP.LJ.ServicePlugin
{
public static class WebServicePublicClass
{
[System.ComponentModel.Description("调用公共接口")]
[Kingdee.BOS.Util.HotUpdate]
public static String HOST = "2.15.41.3";//服务器地址
public static String USERNAME = "哲";//用户名
public static String PASSWORD = "q1111";//密码
public static String SLNNAME = "eas";//方案
public static String PORT = "6999";//服务器端口
public static String DCNAME = "s82";//数据中心,对应的是dataCenter中数据中心id
public static String LANGUAGE = "l2";//语言
public static int DBTYPE = 2;//数据库类型 1:db2 2:oracle 3:SQLServer 5:PostgresSQL
//安全模式时使用,调用登录接口和业务接口时保持一致
public static CookieContainer c = new CookieContainer();
/// <summary>
/// 凭证新增到EAS
/// </summary>
/// <param name="vouchers">凭证数据</param>
/// <param name="isVerify">是否核销暂存 0 不核销,暂存 1 核销,暂存 2 不核销,提交 3 核销,提交</param>
/// <param name="isImpCashFlow">是否包含现金流量 0 不引入 1 引入</param>
public static string[] importVoucher(WSWSVoucher[] vouchers, int isVerify, int isImpCashFlow)
{
WSContext ctx = easLogin();
WSGLWebServiceFacadeSrvProxyService service = new WSGLWebServiceFacadeSrvProxyService();
service.CookieContainer = c;
KDSessionId sessionId = new KDSessionId();
sessionId.SessionId = ctx.sessionId;
service.SessionId = sessionId;
var strs = service.importVoucher(vouchers,0, isVerify, isImpCashFlow);
return strs;
}
/// <summary>
/// 登录eas
/// </summary>
/// <returns></returns>
public static WSContext easLogin()
{
try
{
System.Net.ServicePointManager.Expect100Continue = false;
WSContext ctx = null;
EASLoginProxyService service = new EASLoginProxyService();
ctx = service.login(USERNAME, PASSWORD, SLNNAME, DCNAME, LANGUAGE, DBTYPE);
service.CookieContainer = c;
return ctx;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
}
推荐阅读