钉钉的企业内部应用的.net core开发之待办任务列表

之前的博客里,已经说了一些钉钉企业内部应用所需的准备和如何获取员工名单,有兴趣的可以浏览一下->

前期准备
员工名单

回到正题,这里的场景是,获取企业内所有的待办任务和详情。
那需要做的就是根据员工名单,查到每个员工的待办任务的id(这里会有重复的),然后再根据每个待办任务的id查到任务的详情。

foreach(string userId in userList)
{
	IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/process/workrecord/task/query");
	OapiProcessWorkrecordTaskQueryRequest req = new OapiProcessWorkrecordTaskQueryRequest();
	req.Userid = userId;
	req.Offset = 0;//分页游标
	req.Count = 50;//每页数量,最大50
	req.Status = 0;//0为待处理,-1为已经移除
	OapiProcessWorkrecordTaskQueryResponse rsp = client.Execute(req, access_token);
	//这里获取每个员工的待办任务
	JObject task = (JObject)JsonConvert.DeserializeObject(rsp.Body);
	if(task["errcode"].ToString() == "0")
	{
		if (task["result"].ToObject<JObject>().ContainsKey("list"))
        {
        	JArray jarrayTask = task["result"]["list"].ToObject<JArray>();
        	foreach(JObject jobjectTask in jarrayTask )
        	{
				IDingTalkClient clientDetail = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
				OapiProcessinstanceGetRequest reqDetail = new OapiProcessinstanceGetRequest();
				reqDetail.ProcessInstanceId = jobjectTask["instance_id"].ToString();
				OapiProcessinstanceGetResponse rspDetail = clientDetail.Execute(reqDetail, access_token);
				//这里获取每个待办任务的详情
				JObject taskDetail = (JObject)JsonConvert.DeserializeObject(rspDetail .Body);
				if (taskDetail ["errcode"].ToString() == "0")
                {
                	...
                }
			}
		}
	}
}

按员工ID返回的待办任务结果结构如下

{
    "errcode": 0,
    "result": {
        "has_more": true,
        "list": [
            {
                "forms": [
                    {
                        "content": "杨xx",
                        "title": "入职员工姓名"
                    },
                    {
                        "content": "技术",
                        "title": "部门"
                    },
                    {
                        "content": "测试123",
                        "title": "职位zaqqwe"
                    }
                ],
                "instance_id": "b6aqwe12xzqdf2-e0b221423313",
                "task_id": "65429579088",
                "title": "xx提交的审批",
                "url": "https://aflow.dingtalk.com/dingtalk/mobile/homepage.htm?121asdxxx"
            },
            {
                "forms": [
                    {
                        "content": "北京",
                        "title": "出差地点"
                    },
                    {
                        "content": "2018-08-21",
                        "title": "开始时间"
                    },
                    {
                        "content": "2018-08-25",
                        "title": "结束时间"
                    }
                ],
                "instance_id": "6716467976986zfsa62187",
                "task_id": "65394649400",
                "title": "xx提交的申请",
                "url": "https://aflow.dingtalk.com/dingtalk/mobile/homepage.htm?xxxxxxxx"
            }
        ]
    },
    "request_id": "107anigl5ekxg"
}

而任务详情的结果结构如下

{
    "errcode":0,
    "errmsg":"ok",
    "process_instance":{
        "form_component_values":[
            {
                "component_type":"TextField",
                "name":"请假天数",
                "id":"TextField_23QXWOU7G4JK0",
                "value":"1"
            }
        ],
        "create_time":"2020-12-21 15:30:26",
        "attached_process_instance_ids":[],
        "cc_userids":[
            "user456"
        ],
        "originator_dept_name":"测试1112",
        "originator_userid":"gnrty4r56",
        "title":"测试的请假",
        "finish_time":"2020-12-21 15:30:27",
        "result":"agree",
        "originator_dept_id":"xcbet45gdsas",
        "business_id":"20201",
        "tasks":[
            {
                "task_status":"COMPLETED",
                "activity_id":"bmty756",
                "task_result":"AGREE",
                "userid":",bui567wsdf",
                "finish_time":"2020-12-21 15:30:27",
                "taskid":"124dfbvcht",
                "url":"https://www.xxxx.com"
            },
            {
                "task_status":"COMPLETED",
                "activity_id":"asd213zxc",
                "task_result":"AGREE",
                "userid":"ngfu74",
                "finish_time":"2020-12-21 15:30:27",
                "taskid":"66738",
                "url":"https://www.xxxx.com"
            }
        ],
        "biz_action":"NONE",
        "operation_records":[
            {
                "date":"2020-12-21 15:30:26",
                "operation_type":"START_PROCESS_INSTANCE",
                "operation_result":"NONE",
                "userid":"zxcw12dsf"
            },
            {
                "date":"2020-12-21 15:30:26",
                "operation_type":"EXECUTE_TASK_AUTO",
                "operation_result":"AGREE",
                "userid":"123xcvas"
            },
            {
                "date":"2020-12-21 15:30:26",
                "operation_type":"EXECUTE_TASK_AUTO",
                "operation_result":"AGREE",
                "userid":"2155dfxcv"
            },
            {
                "date":"2020-12-21 15:30:26",
                "operation_type":"PROCESS_CC",
                "operation_result":"NONE",
                "remark":"",
                "userid":"hgrtu1232"
            }
        ],
        "status":"COMPLETED"
    },
    "request_id":"10c0pggajcsu7"
}

通过对详情数据的统计,就可以实现这个场景了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值