二开案例.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是用工作流的还是审批流(310是审批流),工作流任务=WF_AssignmentApprovalH5,审批流=AP_ApprovalAssignHandleH5 arg.formid = processType == "310" ? "AP_ApprovalAssignHandleH5" : "WF_AssignmentApprovalH5"; var argJosn = KDObjectConverter.SerializeObject(arg); var argJsonBase64 = Encoding.UTF8.GetBytes(argJosn).ToBase64(); var InfoUrl = approvalUrl + argJsonBase64; sbHtml.AppendLine(string.Format("<li><h3>{0}</h3>{1}<a href=\"javascript:window.open('{2}');void(0);\"> 处理 </a></li>", title, content, InfoUrl)); } sbHtml.AppendLine("</ul>"); var html = string.Format(HtmlTemplate, sbHtml.ToString()); Console.WriteLine(html); // 生成HTML文件 File.WriteAllText(@"C:\test.html", html); Assert.IsTrue(true); #endregion } /// <summary> /// HTML模版 /// </summary> const string HtmlTemplate = @" <html> <head> <title>金蝶云星空-工作流待办任务列表</title> </head> <body> {0} </body> </html> "; } }
<2>运行单元测试,即可生成包含了待办任务的审批链接的HTML文件,如下图。
对应HTML源码如下:
<html>
<head>
<title>金蝶云星空-工作流待办任务列表</title>
</head>
<body>
<ul>
<li><h3>您有待办任务需要处理</h3>您有待办任务需要处理<a href="javascript:window.open('http://172.17.2.100/k3cloud/html5/index.aspx?ud=eyJkYmlkIjoiNjAyZjJjMDlhZWU4NWYiLCJ1c2VybmFtZSI6ImRlbW8iLCJhcHBpZCI6IkpDVGVzdCIsInNpZ25lZGRhdGEiOiI4MDhjOTA0N2IwMDc2ZjRiYjA4M2MxMjRjMTIxMTVjZGZiZmJmNjJiIiwidGltZXN0YW1wIjoiMTY2MzgwODUzNSIsImxjaWQiOiIyMDUyIiwib3JpZ2ludHlwZSI6IlNpbVBhcyIsImVudHJ5cm9sZSI6IiIsImZvcm1pZCI6IldGX0Fzc2lnbm1lbnRBcHByb3ZhbEg1IiwiZm9ybXR5cGUiOiIiLCJwa2lkIjoiIiwib3RoZXJhcmdzIjoiNjMxMTlhZDU1MDljOGIwMjJlIiwib3Blbm1vZGUiOm51bGx9');void(0);"> 处理 </a></li>
<li><h3>CGDD000483待处理</h3>您有待办任务需要处理<a href="javascript:window.open('http://172.17.2.100/k3cloud/html5/index.aspx?ud=eyJkYmlkIjoiNjAyZjJjMDlhZWU4NWYiLCJ1c2VybmFtZSI6ImRlbW8iLCJhcHBpZCI6IkpDVGVzdCIsInNpZ25lZGRhdGEiOiI4MDhjOTA0N2IwMDc2ZjRiYjA4M2MxMjRjMTIxMTVjZGZiZmJmNjJiIiwidGltZXN0YW1wIjoiMTY2MzgwODUzNSIsImxjaWQiOiIyMDUyIiwib3JpZ2ludHlwZSI6IlNpbVBhcyIsImVudHJ5cm9sZSI6IiIsImZvcm1pZCI6IldGX0Fzc2lnbm1lbnRBcHByb3ZhbEg1IiwiZm9ybXR5cGUiOiIiLCJwa2lkIjoiIiwib3RoZXJhcmdzIjoiNjA3Njg1YzkwYjkxODciLCJvcGVubW9kZSI6bnVsbH0=');void(0);"> 处理 </a></li>
</ul>
</body>
</html>
<3>点击超链接【处理】,即可免登陆跳转到当前待办任务的审批界面,如下图。
---------------------------------------------------------------------------------------------------------
【参考资料】
【二开案例.WebApi.单据查询.待办任务列表查询】https://vip.kingdee.com/article/353193228084599808
【第三方系统单点登录到金蝶云指南】https://vip.kingdee.com/article/9788
【第三方系统集成星空工作流】https://vip.kingdee.com/article/183922
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.WebApi.单据查询.查询待办任务并生成审批链接
本文2024-09-23 04:00:57发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162563.html