如何通过WinForm调用钉钉API获取考勤结果?

摘要:公司前台有个大屏,领导想显示全部员工的考勤结果统计情况和车间的实时监控视频,还有车间的看板。简单说就是把大屏分割成几个区域。现在遇到的难题是钉钉获取考勤结果的api是只有明细记录,比如你公司1000人,那么可能回给你2000条考勤结果。分别
关注点: 1、钉钉AccessToken的获取和防止过期 2、使用TPL并行编程调用钉钉接口 需求详解 公司前台有个大屏,领导想显示全部员工的考勤结果统计情况和车间的实时监控视频,还有车间的看板。简单说就是把大屏分割成几个区域。现在遇到的难题是钉钉获取考勤结果的api是只有明细记录,比如你公司1000人,那么可能回给你2000条考勤结果。分别是上班考勤和下班考勤的。没有整个公司的,我就需要这么一条数据就行了。但人家没有这样的接口提供。卷起袖子,干! 趟坑过程 考勤打卡数据开放 业务场景 考勤打卡数据开放 业务场景 该接口仅限企业接入使用,用于返回企业内员工的实际打卡结果。比如,企业给一个员工设定的排班是上午9点和下午6点各打一次卡,即使员工在这期间打了多次,该接口也只会返回两条记录,包括上午的打卡结果和下午的打卡结果 考勤打卡数据开放 请求说明(ISV无调用权限) 如果你是ISV(应用服务商,将开发的应用上架到钉钉应用市场,提供给钉钉其他企业用户使用),则无调用权限 如果你是企业内部开发者(将自己公司的HR、OA、客户管理、业务管理等系统接入钉钉),有权限调用 2017-10-16更新:新增用户userId列表参数(userIdList)和分页参数(offset,limit),提升接口稳定性。 Https请求方式: POST https://oapi.dingtalk.com/attendance/list?access_token=ACCESS_TOKEN 请求包结构体 1 2 3 4 5 6 7 { "workDateFrom": "yyyy-MM-dd hh:mm:ss", "workDateTo": "yyyy-MM-dd hh:mm:ss", "userIdList":["员工UserId列表"], // 必填,与offset和limit配合使用,不传表示分页获取全员的数据 "offset":0, // 必填,第一次传0,如果还有多余数据,下次传之前的offset加上limit的值 "limit":1, // 必填,表示数据条数,最大不能超过50条 } 参数说明 参数 参数类型 必须 说明 access_token String 是 调用接口凭证 workDateFrom String 是 查询考勤打卡记录的起始工作日 workDateTo String 是 查询考勤打卡记录的结束工作日 userIdList List 是 员工在企业内的UserID列表,企业用来唯一标识用户的字段 offset Long 是 表示获取考勤数据的起始点,第一次传0,如果还有多余数据,下次获取传的offset值为之前的offset+limit limit Long 是 表示获取考勤数据的条数,最大不能超过50条 1)获取AccessToken 钉钉的服务器很牛X可以并行访问的。但是获取回来的数据集有点乱,其中有个关于分页的参数需要顺序读取,就是“hasMore”还有没有下一页。所以最终没有使用TPL。
阅读全文