从钉钉后台API获取企业通讯录以后,获取每个人的钉钉运动步数

企业提倡一起运动,用钉钉计步方式督促大家积极锻炼,需要对大家的步数做统计,而钉钉后台只能保存近期一个月的运动数据,所以需要调用钉钉提供的开放API获取运动数据并保存在自己的服务器。

    //获取部门列表    

    public static List<ht> getDepart() throws Exception{
         try {
             //获取当前日期String
              Calendar cal = Calendar.getInstance();
              cal.add(Calendar.DATE,-1);
              String yesterday = new SimpleDateFormat( "yyyyMMdd").format(cal.getTime());



            List<ht> htlist=new ArrayList<ht>();
            CorpHealthStepinfoListbyuseridResponse rsp;
            CorpHealthStepinfoListbyuseridRequest req = new CorpHealthStepinfoListbyuseridRequest();
            DingTalkClient client= new DefaultDingTalkClient("https://eco.taobao.com/router/rest");

            JSONObject forj;
            JSONObject json;
            JSONArray jr;

            //获取access token
            String accessToken = AuthHelper.getAccessToken();
            // 获取部门列表
            String parentId = "1";
            List<Department> list = DepartmentHelper.listDepartments(accessToken, parentId);
            //log("成功获取部门列表", list);

            for (int i = 0; i < list.size(); i++) 
            {   
                CorpUserList userList = UserHelper.getDepartmentUser(AuthHelper.getAccessToken(), list.get(i).getId(), null, null, null);
                    String str= new String();
                    String str1= new String();

                    if(userList.getUserlist().size() <= 50 && userList.getUserlist().size()!=0 )//有部门没人,userlist is null
                    {
                        for(int k=0;k<userList.getUserlist().size();k++)
                        {
                            if(k==0)
                            {
                             str=userList.getUserlist().get(k).getUserid().toString();
                            }
                            else
                            {
                                str=str+","+userList.getUserlist().get(k).getUserid().toString();
                            }
                        }
                        req.setUserids(str);  //员工userid列表,最多传50个
                        req.setStatDate(yesterday);//时间,注意时间格式是YYMMDD
                        rsp = client.execute(req, accessToken);
                        json= JSONObject.parseObject(rsp.getBody()).getJSONObject("dingtalk_corp_health_stepinfo_listbyuserid_response").getJSONObject("result").getJSONObject("stepinfo_list");
                        jr=json.getJSONArray("basic_step_info_vo");
                        if(jr!=null)
                        {

                            for(int z=0;z<jr.size();z++)
                             {
                                ht ht=new ht();
                                forj=jr.getJSONObject(z);
                                ht.setDepa(list.get(i).getName().toString());
                                ht.setStat_date(forj.get("stat_date").toString());
                                ht.setStep_count(forj.get("step_count").toString());
                                ht.setUserid(forj.get("userid").toString());
                                htlist.add(ht);
                             }
                        }



                    }


                    else if(userList.getUserlist().size()>50 &&  userList.getUserlist().size()<=100 )
                    {

                        for(int k=0;k<50;k++)
                        {
                            if(k==0)
                            {
                             str=userList.getUserlist().get(k).getUserid().toString();
                            }
                            else
                            {
                                str=userList.getUserlist().get(k).getUserid().toString()+","+str;
                            }
                        }

                        req.setUserids(str);  //员工userid列表,最多传50个
                        req.setStatDate(yesterday);//时间,注意时间格式是YYMMDD
                        rsp = client.execute(req, accessToken);
                        json= JSONObject.parseObject(rsp.getBody()).getJSONObject("dingtalk_corp_health_stepinfo_listbyuserid_response").getJSONObject("result").getJSONObject("stepinfo_list");
                        jr=json.getJSONArray("basic_step_info_vo");
                        if(jr!=null)
                        {

                            for(int z=0;z<jr.size();z++)
                             {
                                ht ht=new ht();
                                forj=jr.getJSONObject(z);
                                ht.setDepa(list.get(i).getName().toString());
                                ht.setStat_date(forj.get("stat_date").toString());
                                ht.setStep_count(forj.get("step_count").toString());
                                ht.setUserid(forj.get("userid").toString());
                                htlist.add(ht);
                             }
                        }



                        for(int d=50;d<userList.getUserlist().size();d++)
                        {
                            if(d==50)
                            {
                                 str1=userList.getUserlist().get(d).getUserid().toString();
                            }
                            else 
                            {
                                 str1=str1+","+userList.getUserlist().get(d).getUserid().toString();
                            }
                        }
                        req.setUserids(str1);  //员工userid列表,最多传50个
                        req.setStatDate(yesterday);//时间,注意时间格式是YYMMDD
                        rsp = client.execute(req, accessToken);
                        json= JSONObject.parseObject(rsp.getBody()).getJSONObject("dingtalk_corp_health_stepinfo_listbyuserid_response").getJSONObject("result").getJSONObject("stepinfo_list");//得到的结果需要用到json拆分。
                        jr=json.getJSONArray("basic_step_info_vo");
                        if(jr!=null)
                        {

                            for(int z=0;z<jr.size();z++)
                             {
                                ht ht=new ht();
                                forj=jr.getJSONObject(z);
                                ht.setDepa(list.get(i).getName().toString());
                                ht.setStat_date(forj.get("stat_date").toString());
                                ht.setStep_count(forj.get("step_count").toString());
                                ht.setUserid(forj.get("userid").toString());
                                htlist.add(ht);
                             }
                        }
                    }
                }

            return htlist;  
        } 
         catch (OApiException e) 
         {
            e.printStackTrace();
        }
        return null;
     }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值