二开案例.WebApi.单据查询.查询待办任务并生成审批链接

【应用场景】
WebApi,查询待办任务列表,生成审批链接。
【案例演示】
查询用户demo的所有待办任务,并生成待办列表和审批链接,供第三方系统发起工作流审批。
星空的待办列表:

第三方访问星空接口后生成的待办列表:

【准备工作】
<1>完成第三方系统登录授权配置,并获取用于第三方系统登录接口的关键数据(数据中心ID、应用ID、登录账号,用户秘钥)。

参考资料:【第三方系统单点登录到金蝶云指南】https://vip.kingdee.com/article/9788
<2>创建demo用户相关的工作流待办任务,如下图。

【实现步骤】
<1>使用单元测试工程,编写如下测试代码。
using Kingdee.BOS.BusinessEntity.Login;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using Kingdee.BOS.WebApi.Client;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Text;
namespace Jac.XkDemo.BOS.WebApiTests
{
/// <summary>
/// WebApi.单据查询.查询待办任务并生成审批链接
/// </summary>
[TestClass]
public class WFAssignmentBillExecuteBillQueryAndBuidAuditLinkTest
{
[TestMethod]
public void Test()
{
#region 通过WebApi接口获取待办列表数据
// 星空站点Url
var webSite = "http://172.17.2.100/k3cloud/";
var approvalUrl = "http://172.17.2.100/k3cloud/html5/index.aspx?ud=";
// 数据中心ID(账套ID)
var dbId = "602f2c09aee85f";
// 登录账号
var userName = "demo";
//第三方系统应用Id
var appId = "JCTest";
//第三方系统应用秘钥
var appSecret = "d625dd54ae944dc8bb8a692a79c9a1e6";
// 登录语言
var lcId = 2052;
// 登录
var client = new K3CloudApiClient(webSite);
var loginResult = client.LoginByAppSecret(dbId, userName, appId, appSecret, lcId);
var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>();
//登录结果类型等于1,代表登录成功
if (resultType != 1)
{
Assert.IsFalse(true);
return;
}
// 获取demo用户的待办列表
/*
{
"FormId": "WF_AssignmentBill",
"FieldKeys": "FASSIGNID,FTitle,FContent,FTmpId.FProcessType",
"FilterString": "FReceiverId=100008 AND FStatus=0",
"OrderString": "FCreateTime DESC",
"TopRowCount": 0,
"StartRow": 0,
"Limit": 100,
"SubSystemId": ""
}
*/
var dataObj = new
{
FormId = "WF_AssignmentBill",
FieldKeys = "FASSIGNID,FTitle,FContent,FTmpId.FProcessType",
FilterString = "FReceiverId=100008 AND FStatus=0",
OrderString = "FCreateTime DESC",
TopRowCount = 0,
StartRow = 0,
Limit = 100,
SubSystemId = ""
};
var data = JsonConvert.SerializeObject(dataObj);
var assignList = client.ExecuteBillQuery(data);
if (assignList == null || assignList.Count == 0)
{
Assert.IsFalse(true);
return;
}
#endregion
#region 根据待办列表数据,生成每个待办任务的审批链接
// 生成审批链接
// 参考资料:【第三方系统单点登录到金蝶云指南】https://vip.kingdee.com/article/9788
var timestamp = (DateTimeFormatUtils.CurrentTimeMillis() / 1000).ToString(); // 时间戳
var signArgs = new[] { dbId, userName, appId, appSecret, timestamp }; // 签名
var sign = SHA1Util.GetSignature(signArgs);
var arg = new SimplePassportLoginArg();
arg.appid = appId;
arg.dbid = dbId;
arg.lcid = lcId.ToString();
arg.origintype = "SimPas";
arg.signeddata = sign;
arg.timestamp = timestamp;
arg.username = userName;
arg.entryrole = string.Empty;
arg.formtype = string.Empty;
arg.pkid = string.Empty;
// 输出HTML
var sbHtml = new StringBuilder();
sbHtml.AppendLine("<ul>");
foreach (var assign in assignList)
{
var assignId = assign[0].ToString(); // 待办任务内码
var title = assign[1].ToString(); // 待办任务标题
var content = assign[2].ToString(); // 待办任务内容
var processType = assign[3].ToString(); // 待办任务使用的工作流类型
// 开始拼接审批链接
arg.otherargs = assignId;
// 根据FProcessType决定formid是用工作流的还是审批流(3二开案例.WebApi.单据查询.查询待办任务并生成审批链接
【应用场景】WebApi,查询待办任务列表,生成审批链接。【案例演示】查询用户demo的所有待办任务,并生成待办列表和审批链接,供第三方系统...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



