钉钉调用审批流

原文:钉钉调用审批流

进入钉钉 “钉钉开放平台”  下载SDK   https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02

 1 public ActionResult Dingding(string sheetno, long dept, string plant, string Class) {
 2            //需填写的主表数据
 3             var bill = tApp.GetList().Where(t => t.F_SHEETNO == sheetno).FirstOrDefault();
 4            //需填写的详表数据
 5             var details = tDetailApp.GetList(bill.F_Id);
 6
 7         string accessToken = dingApp.getAccessToken();//AccessToken码
 8
 9          //获取钉钉用户id:发起人
10             string code = "zhangsan";
11             var userEntry = userApp.GetList().Where(t => t.F_Account == code).FirstOrDefault();
12
13             DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/create");
14             OapiProcessinstanceCreateRequest request = new OapiProcessinstanceCreateRequest();
15
16             request.AgentId = 312711454;//创建的H5微应用的AgentId
17             request.ProcessCode = "PROC-13AFD98D-97F7-4793-8C5D-E612B750BBBC";//在设置审批模板的url中
18
19             List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain> formComponentValues = new List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain>();
20             //单行输入框
21             OapiProcessinstanceCreateRequest.FormComponentValueVoDomain obj1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
22             obj1.Name = "调拨单号";
23             obj1.Value = bill.F_SHEETNO;
24             OapiProcessinstanceCreateRequest.FormComponentValueVoDomain obj2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
25             obj2.Name = "调出部门";
26             obj2.Value = bill.F_USEDEPTNAME;
27
28             OapiProcessinstanceCreateRequest.FormComponentValueVoDomain obj3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
29             obj3.Name = "调入部门";
30             obj3.Value = bill.F_TOUSEDEPTNAME;
31
32             OapiProcessinstanceCreateRequest.FormComponentValueVoDomain obj4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
33             obj4.Name = ("工厂");
34             obj4.Value = (plant);
35
36             OapiProcessinstanceCreateRequest.FormComponentValueVoDomain obj5 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
37             obj5.Name = ("资产类别");
38             obj5.Value = (Class);
39
40             OapiProcessinstanceCreateRequest.FormComponentValueVoDomain vo = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
41
42             var a = "";
43             foreach (var item in details)
44             {
45                 //明细-单行输入框
46                 OapiProcessinstanceCreateRequest.FormComponentValueVoDomain ItemName1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
47                 ItemName1.Name = "资产编码";
48                 ItemName1.Value = item.F_BARCODE;
49
50                 OapiProcessinstanceCreateRequest.FormComponentValueVoDomain ItemName2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
51                 ItemName2.Name = "资产名称";
52                 ItemName2.Value = item.F_FANAME;
53
54                 OapiProcessinstanceCreateRequest.FormComponentValueVoDomain ItemName3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
55                 ItemName3.Name = "资产规格";
56                 ItemName3.Value = item.F_SPEC;
57
58                 OapiProcessinstanceCreateRequest.FormComponentValueVoDomain ItemName4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
59                 ItemName4.Name = "资产数量";
60                 ItemName4.Value = item.F_QTY.ToString();
61
62                 a += ",[" + ItemName1.ToJson() + "," + ItemName2.ToJson() + "," + ItemName3.ToJson() + "," + ItemName4.ToJson() + "]";
63
64             }
65
66             a = "[" + a.Substring(1, a.Length - 1) + "]";
67
68
69
70             vo.Name = "明细";
71             vo.Value = a;
72
73
74             formComponentValues.Add(obj1);
75             formComponentValues.Add(obj2);
76             formComponentValues.Add(obj3);
77             formComponentValues.Add(obj4);
78             formComponentValues.Add(obj5);
79             formComponentValues.Add(vo);
80             request.FormComponentValues_ = formComponentValues;
81             request.OriginatorUserId = userEntry.F_DINGID;//发起人
82             request.DeptId = dept;//发起人部门
83             //    OapiProcessinstanceCreateResponse response = client.Execute(request, accessToken);
84
85             return Success("提交成功!!");
86         }    

//获取AccessToken码
public string getAccessToken()
        {
            string result = string.Empty;
            IDingTalkClient clientaccess = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
            OapiGettokenRequest request = new OapiGettokenRequest();
            request.Appkey =Appkey;//在创建H5微应用 应用信息 --》 查看详情 --》Appkey
            request.Appsecret = Appsecret;//在创建H5微应用 应用信息 --》 查看详情 --》Appsecret;
        request.SetHttpMethod("GET");       OapiGettokenResponse response = clientaccess.Execute(request);       result = response.AccessToken; 

      return result; }

原文地址:https://www.cnblogs.com/lonelyxmas/p/12408957.html

时间: 2024-08-30 06:37:10

钉钉调用审批流的相关文章

钉钉审批流回调

原文:钉钉审批流回调 先注册回调接口(只需要调用注册回调接口一次), using Newtonsoft.Json; 1 public void DingdingTest() 2 { 3 string accessToken = dingApp.getAccessToken(); 4 5 string code = "jiangxiaobai";//@NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode; 6 var use

钉钉发起审批必须填写审批人

原文:钉钉发起审批必须填写审批人 今天在做钉钉发起审批的时候,文档上写的很清楚,审批人是可选的,非必填 我查了后台,审批流上也是指定了审批人的 将审批人数据注销,或者传值为空时 钉钉就报错了 原文地址:https://www.cnblogs.com/lonelyxmas/p/12408975.html

钉钉开发中post异步调用问题

最近项目上在做钉钉开发中,经常会遇到使用post方式调用钉钉内部的方法(微信也有一样),这里涉及到跨域的post调用,但跨域一般都是用jsonp格式,而这个格式只支持get方式.尝试了挺多方法都没有返回 {"errcode":43002,"errmsg":"需要POST请求"} 让人很费解,用js方式不行,只能尝试从后台解决问题,然后写了如下方法: /// <summary> /// /// </summary> ///

通知神器——java调用钉钉群自定义机器人

创建群自定义机器人 在指定钉钉群(或者随便拉两个人建个群,然后把别人T出去)的群设置里选择 群机器人 -> 自定义,如图: 然后,添加机器人,设置名字,添加成功时如下图: 其中webhook非常重要,下文详述.点击设置说明可以看相关使用文档,文档链接见本文末尾. 使用HTTP POST请求发送消息 直接向上文所述的webhook链接发送POST请求已达到自定义机器人向群内发消息的功能 按照文档中所属的参数格式直接向链接发送请求即可,我使用Postman发送请求如下: 效果如下: 发送其他格式(如

WinForm调用钉钉获取考勤结果

原文:WinForm调用钉钉获取考勤结果 关注点: 1.钉钉AccessToken的获取和防止过期 2.使用TPL并行编程调用钉钉接口 需求详解 公司前台有个大屏,领导想显示全部员工的考勤结果统计情况和车间的实时监控视频,还有车间的看板.简单说就是把大屏分割成几个区域.现在遇到的难题是钉钉获取考勤结果的api是只有明细记录,比如你公司1000人,那么可能回给你2000条考勤结果.分别是上班考勤和下班考勤的.没有整个公司的,我就需要这么一条数据就行了.但人家没有这样的接口提供.卷起袖子,干! 趟坑

钉钉C#发起审批实例demo

原文:钉钉C#发起审批实例demo 钉钉上只有JAVA的demo,虽然也提供了.net的SDK,但是那资料又臭又长,看的头都大了, 这是c#的服务端发起审批的demo,亲测有效 IDingTalkClient client = new DefaultDingTalkClient("https://eco.taobao.com/router/rest"); SmartworkBpmsProcessinstanceCreateRequest req = new SmartworkBpmsP

钉钉二次开发c#发起审批

原文:钉钉二次开发c#发起审批 string token = _t.GetTokens(); IDingTalkClient client = new DefaultDingTalkClient("https://eco.taobao.com/router/rest"); SmartworkBpmsProcessinstanceCreateRequest req = new SmartworkBpmsProcessinstanceCreateRequest(); req.AgentId

调用钉钉群组机器人在当前群组发送Zabbix报警信息

关于钉钉机器人的创建,基本用法详见我另一篇文章<创建自定义机器人> 本实验测试zabbix版本为3.4 接下来我们将直接通过下面的操作完成zabbix报警往我们的钉钉机器人所在群组发送: 首先在附件中下载对应的程序到我们的zabbix server的AlertScriptsPath目录,可以通过以下命令查看目录所在位置 grep "AlertScriptsPath" zabbix_server.conf 更改文件的权限为运行zabbix的用户,并给执行权限 chmod 75

js api 实现钉钉免登

js api 实现钉钉免登,用于从钉钉微应用跳转到企业内部的oa,erp等,我刚刚实施完了我公司的这个功能,钉钉用起来还不错. 1 js api 实现钉钉免登,页面配置. <title>利用jsapi实现免登</title>     <script type="text/javascript" src="https://g.alicdn.com/ilw/ding/0.7.5/scripts/dingtalk.js" ></s