|
@@ -0,0 +1,920 @@
|
|
|
+package com.muzhi.donghang.service.impl;
|
|
|
+
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.aliyun.dingtalkcalendar_1_0.models.GetEventResponse;
|
|
|
+import com.aliyun.dingtalkcalendar_1_0.models.ListEventsResponse;
|
|
|
+import com.aliyun.tea.TeaException;
|
|
|
+import com.aliyun.teautil.models.RuntimeOptions;
|
|
|
+import com.dingtalk.api.DefaultDingTalkClient;
|
|
|
+import com.dingtalk.api.DingTalkClient;
|
|
|
+import com.dingtalk.api.request.*;
|
|
|
+import com.dingtalk.api.response.*;
|
|
|
+import com.muzhi.donghang.service.AccessTokenService;
|
|
|
+import com.muzhi.donghang.service.EmployeeService;
|
|
|
+import com.taobao.api.ApiException;
|
|
|
+import com.taobao.api.internal.util.StringUtils;
|
|
|
+import org.joda.time.DateTime;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.net.URL;
|
|
|
+import java.text.DateFormat;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+
|
|
|
+@Service
|
|
|
+public class EmployeeServiceImpl implements EmployeeService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AccessTokenService accessTokenService;
|
|
|
+
|
|
|
+ //获取钉钉员工花名册主部门ID
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getMainDeptId(String userid){
|
|
|
+ System.out.println("宜搭出入的人员userid:" + userid);
|
|
|
+
|
|
|
+ String employee = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list");
|
|
|
+ OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest();
|
|
|
+ //待查询人员的userid
|
|
|
+ req.setUseridList(userid);
|
|
|
+ //固定查询主部门id字段信息
|
|
|
+ req.setFieldFilterList("sys00-mainDeptId");
|
|
|
+ //钉钉自建应用Agentid
|
|
|
+ req.setAgentid(1200391050L);
|
|
|
+ OapiSmartworkHrmEmployeeV2ListResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ employee = rsp.getBody();
|
|
|
+ System.out.println("抓取花名册部门id的初始返回结果:" + employee);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(employee);
|
|
|
+ //获取的主部门id
|
|
|
+ String mainDeptId = jsonObject.getJSONArray("result")
|
|
|
+ .getJSONObject(0)
|
|
|
+ .getJSONArray("field_data_list")
|
|
|
+ .getJSONObject(0)
|
|
|
+ .getJSONArray("field_value_list")
|
|
|
+ .getJSONObject(0)
|
|
|
+ .getString("value");
|
|
|
+ System.out.println("当前人员的主部门id:" + mainDeptId);
|
|
|
+
|
|
|
+ return mainDeptId;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取指定部门的所有父部门id列表
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public List getDeptIdList(String userid){
|
|
|
+ String mainDeptId = getMainDeptId(userid);
|
|
|
+ long mainDeptIdLong = Long.parseLong(mainDeptId);
|
|
|
+ System.out.println("转换成Long型的部门id:" + mainDeptIdLong);
|
|
|
+
|
|
|
+ String dept = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listparentbydept");
|
|
|
+ OapiV2DepartmentListparentbydeptRequest req = new OapiV2DepartmentListparentbydeptRequest();
|
|
|
+ //主部门id
|
|
|
+ req.setDeptId(mainDeptIdLong);
|
|
|
+ OapiV2DepartmentListparentbydeptResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ dept = rsp.getBody();
|
|
|
+ System.out.println("抓取主部门的所有父部门id列表初始返回结果:" + dept);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(dept);
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray("parent_id_list");
|
|
|
+ System.out.println(jsonArray);
|
|
|
+
|
|
|
+ return jsonArray;
|
|
|
+ }
|
|
|
+
|
|
|
+ //======【最终接口】获取主架构部门名称======
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getMainDeptName(){
|
|
|
+
|
|
|
+ String mainDeptName = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/get");
|
|
|
+ OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest();
|
|
|
+ req.setDeptId(1L);
|
|
|
+ OapiV2DepartmentGetResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ mainDeptName = rsp.getBody();
|
|
|
+ System.out.println("抓取主部门信息初始返回结果:" + mainDeptName);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(mainDeptName);
|
|
|
+ String name = jsonObject.getJSONObject("result").getString("name");
|
|
|
+
|
|
|
+ return name;
|
|
|
+ }
|
|
|
+
|
|
|
+ //======【最终接口】根据所有的父部门id列表获取各个部门的名称======
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getDeptName(String userid){
|
|
|
+
|
|
|
+ List deptIdList = getDeptIdList(userid);
|
|
|
+
|
|
|
+ String substring = "";
|
|
|
+
|
|
|
+ for (int i = 0; deptIdList.size() > i; i++){
|
|
|
+ String s = deptIdList.get(i).toString();
|
|
|
+ long deptIdLong = Long.parseLong(s);
|
|
|
+ System.out.println("Long型的部门id:" + deptIdLong);
|
|
|
+
|
|
|
+ String deptName = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/get");
|
|
|
+ OapiV2DepartmentGetRequest req = new OapiV2DepartmentGetRequest();
|
|
|
+ req.setDeptId(deptIdLong);
|
|
|
+ OapiV2DepartmentGetResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ deptName = rsp.getBody();
|
|
|
+ System.out.println("抓取部门信息初始返回结果:" + deptName);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(deptName);
|
|
|
+ String name = jsonObject.getJSONObject("result").getString("name");
|
|
|
+ System.out.println("循环抓取部门名称:" + name);
|
|
|
+
|
|
|
+ if (deptIdLong != 1L){
|
|
|
+ substring = "/ " + name + substring;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //去除拼接后的部门名称字符串的第一个字符“/”
|
|
|
+ String nameAll = substring.substring(2);
|
|
|
+ System.out.println("最终拼接的部门名称:" + nameAll);
|
|
|
+
|
|
|
+ return nameAll;
|
|
|
+ }
|
|
|
+
|
|
|
+ //======【最终接口】获取钉钉员工入职日期,并换算入职天数======
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getJoinDay(String userid){
|
|
|
+ System.out.println("宜搭传入的userid:" + userid);
|
|
|
+
|
|
|
+ String employee = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list");
|
|
|
+ OapiSmartworkHrmEmployeeV2ListRequest req = new OapiSmartworkHrmEmployeeV2ListRequest();
|
|
|
+ //待查询人员的userid
|
|
|
+ req.setUseridList(userid);
|
|
|
+ //固定查询主部门id字段信息
|
|
|
+ req.setFieldFilterList("sys00-confirmJoinTime");
|
|
|
+ //钉钉自建应用Agentid
|
|
|
+ req.setAgentid(2050803405L);
|
|
|
+ OapiSmartworkHrmEmployeeV2ListResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ employee = rsp.getBody();
|
|
|
+ System.out.println("抓取花名册入职日期的初始返回结果:" + employee);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(employee);
|
|
|
+ //获取的主部门id
|
|
|
+ String joinDay = jsonObject.getJSONArray("result")
|
|
|
+ .getJSONObject(0)
|
|
|
+ .getJSONArray("field_data_list")
|
|
|
+ .getJSONObject(0)
|
|
|
+ .getJSONArray("field_value_list")
|
|
|
+ .getJSONObject(0)
|
|
|
+ .getString("value");
|
|
|
+ System.out.println("当前人员的入职日期:" + joinDay);
|
|
|
+
|
|
|
+ //获取当天的日期
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ Date date = new Date();
|
|
|
+ String dateNow = simpleDateFormat.format(date);
|
|
|
+ System.out.println("当天的日期:" + dateNow);
|
|
|
+
|
|
|
+ //当天日期和入职日期进行相减,计算入职天数
|
|
|
+ String Days = "";
|
|
|
+ //当天日期
|
|
|
+ try {
|
|
|
+ long timeNow = simpleDateFormat.parse(dateNow).getTime();
|
|
|
+ long timeJoin = simpleDateFormat.parse(joinDay).getTime();
|
|
|
+ Days = String.valueOf((timeNow - timeJoin)/(24 * 60 * 60 * 1000));
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("入职天数:" + Days);
|
|
|
+
|
|
|
+ return Days;
|
|
|
+ }
|
|
|
+
|
|
|
+ //======【最终接口】当前人员的本月实际出勤天数======
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getChuQinDays(String userid){
|
|
|
+ System.out.println("宜搭传入的userid:" + userid);
|
|
|
+
|
|
|
+ Date Date = new Date(System.currentTimeMillis());
|
|
|
+ System.out.println("当前时间:" + Date);
|
|
|
+
|
|
|
+ Calendar calendar111 = Calendar.getInstance();
|
|
|
+ calendar111.setTime(Date);
|
|
|
+ //当月第一天
|
|
|
+// calendar111.add(Calendar.MONTH,-1);
|
|
|
+ calendar111.set(Calendar.DAY_OF_MONTH,1);
|
|
|
+ calendar111.set(Calendar.HOUR_OF_DAY,0);
|
|
|
+ calendar111.set(Calendar.MINUTE,0);
|
|
|
+ calendar111.set(Calendar.SECOND,0);
|
|
|
+ calendar111.set(Calendar.MILLISECOND,0);
|
|
|
+ String FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar111.getTime());
|
|
|
+ System.out.println("当月第一天零点:" + FORMtime);
|
|
|
+
|
|
|
+ //获取当天的日期时间
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date date = new Date();
|
|
|
+ String TOtime = simpleDateFormat.format(date);
|
|
|
+ System.out.println("当天的当前时间:" + TOtime);
|
|
|
+
|
|
|
+ //实际出勤天数
|
|
|
+ int sjcqts1 = 0;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
|
|
|
+ OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
|
|
|
+ //待查询人员的userid
|
|
|
+ req.setUserid(userid);
|
|
|
+ //TODO 考勤报表列定义查出来的出勤天数的列id(固定)
|
|
|
+// req.setColumnIdList("190133089");//牧之测试架构,出勤天数的列id
|
|
|
+ req.setColumnIdList("7186604");//东航架构,出勤天数的列id
|
|
|
+ //查询开始时间
|
|
|
+ req.setFromDate(StringUtils.parseDateTime(FORMtime));
|
|
|
+ //查询结束时间
|
|
|
+ req.setToDate(StringUtils.parseDateTime(TOtime));
|
|
|
+ OapiAttendanceGetcolumnvalResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ System.out.println(rsp.getBody());
|
|
|
+ String string = rsp.getBody();
|
|
|
+ JSONObject jsonObject = JSON.parseObject(string);
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONObject("result").
|
|
|
+ getJSONArray("column_vals").
|
|
|
+ getJSONObject(0).
|
|
|
+ getJSONArray("column_vals");
|
|
|
+ for (int i = 0; i<jsonArray.size(); i++){
|
|
|
+ String value = jsonArray.getJSONObject(i).getString("value");
|
|
|
+ float a = Float.parseFloat(value);
|
|
|
+ int b = (int)a;
|
|
|
+ sjcqts1 = sjcqts1 + b;
|
|
|
+ }
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ String sjcqts = String.valueOf(sjcqts1);
|
|
|
+ System.out.println("实际出勤天数:" + sjcqts);
|
|
|
+
|
|
|
+ return sjcqts;
|
|
|
+ }
|
|
|
+
|
|
|
+ //===【最终接口】获取当前人员的主部门下的人员,并循环获取每个人员的考勤打卡===
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getDeptDaKa(String userid){
|
|
|
+ System.out.println("宜搭传入的userid:" + userid);
|
|
|
+
|
|
|
+ //获取当天的日期时间
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date date = new Date();
|
|
|
+ String timeNow = simpleDateFormat.format(date);
|
|
|
+ System.out.println("当天的当前时间:" + timeNow);
|
|
|
+
|
|
|
+ //获取当前人员的主部门id
|
|
|
+ String mainDeptId = getMainDeptId(userid);
|
|
|
+ long mainDeptIdLong = Long.parseLong(mainDeptId);
|
|
|
+ System.out.println("转换成Long型的部门id:" + mainDeptIdLong);
|
|
|
+
|
|
|
+ List listDeptAll = new ArrayList();
|
|
|
+
|
|
|
+ //获取当前人员的所有父部门id列表
|
|
|
+ List deptIdList = getDeptIdList(userid);
|
|
|
+ System.out.println("当前人员所有父部门id列表:" + deptIdList);
|
|
|
+
|
|
|
+ //从右往左获取第三层级部门(即客户要求展示的部门层级id)
|
|
|
+ String a = deptIdList.get(deptIdList.size() - 3).toString();
|
|
|
+ long zhanshiDept = Long.parseLong(a);
|
|
|
+ System.out.println("展示主部门的id:" + zhanshiDept);
|
|
|
+
|
|
|
+ //部门id第一次汇总
|
|
|
+ listDeptAll.add(zhanshiDept);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject11 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //展示主部门的id
|
|
|
+ req.setDeptId(zhanshiDept);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject11 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray11 = jsonObject11.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+
|
|
|
+ for (int i = 0; i < jsonArray11.size(); i++) {
|
|
|
+ String b = jsonArray11.getString(i);
|
|
|
+ long Dept2 = Long.parseLong(b);
|
|
|
+ System.out.println("逐层获取展示主部门下一层级的部门id:" + Dept2);
|
|
|
+ //部门id第二次汇总
|
|
|
+ listDeptAll.add(Dept2);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject22 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //第二次汇总部门的id
|
|
|
+ req.setDeptId(Dept2);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject22 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray22 = jsonObject22.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+
|
|
|
+ for (int j = 0; j < jsonArray22.size(); j++) {
|
|
|
+ String c = jsonArray22.getString(j);
|
|
|
+ long Dept3 = Long.parseLong(c);
|
|
|
+ System.out.println("逐层获取第二次汇总部门的下一层级的部门id:" + Dept3);
|
|
|
+ //部门id第三次汇总
|
|
|
+ listDeptAll.add(Dept3);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject33 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //第三次汇总部门的id
|
|
|
+ req.setDeptId(Dept3);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject33 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray33 = jsonObject33.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+
|
|
|
+ for (int k = 0; k < jsonArray33.size(); k++) {
|
|
|
+ String d = jsonArray33.getString(k);
|
|
|
+ long Dept4 = Long.parseLong(d);
|
|
|
+ System.out.println("逐层获取第三次汇总部门的下一层级的部门id:" + Dept4);
|
|
|
+ //部门id第四次汇总
|
|
|
+ listDeptAll.add(Dept4);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject44 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //第四次汇总部门的id
|
|
|
+ req.setDeptId(Dept4);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject44 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray44 = jsonObject44.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+ System.out.println("第四次查询第五层级返回结果:" + jsonArray44);
|
|
|
+
|
|
|
+ for (int l = 0; l < jsonArray44.size(); l++) {
|
|
|
+ String e = jsonArray44.getString(l);
|
|
|
+ long Dept5 = Long.parseLong(e);
|
|
|
+ System.out.println("逐层获取第三次汇总部门的下一层级的部门id:" + Dept5);
|
|
|
+ //部门id第五次汇总
|
|
|
+ listDeptAll.add(Dept5);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String s = listDeptAll.toString();
|
|
|
+ String s1 = s.replaceAll("\\ ", "");
|
|
|
+ JSONArray jsonArray2 = JSON.parseArray(s1);
|
|
|
+ System.out.println("@@@@@@@@@@@@@@@@" + jsonArray2);
|
|
|
+ System.out.println("******当前用户所属展示部门下的所有id列表******:" + listDeptAll);
|
|
|
+
|
|
|
+ //记录当前人员的主部门的打卡数(出勤数)
|
|
|
+ int daka = 0;
|
|
|
+
|
|
|
+ for (int x = 0; x < jsonArray2.size(); x++) {
|
|
|
+ Long aLong = jsonArray2.getLong(x);
|
|
|
+ System.out.println("最终每一个待查询的部门id:" + aLong);
|
|
|
+
|
|
|
+ //循环获取该部门下所有的人员id
|
|
|
+ String result = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid");
|
|
|
+ OapiUserListidRequest req = new OapiUserListidRequest();
|
|
|
+ req.setDeptId(aLong);
|
|
|
+ OapiUserListidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ result = rsp.getBody();
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(result);
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray("userid_list");
|
|
|
+ System.out.println("部门人员的id列表:" + jsonArray);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (jsonArray.isEmpty()){
|
|
|
+ System.out.println("部门人员为空!");
|
|
|
+ }else {
|
|
|
+ System.out.println("部门人员不为空!");
|
|
|
+ for (int i = 0; jsonArray.size() > i; i ++){
|
|
|
+ String userID = jsonArray.getString(i);
|
|
|
+ System.out.println("userID:" + userID);
|
|
|
+
|
|
|
+ //循环查询人员当天的上班打卡时间(有打卡时间记为出勤)
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
|
|
|
+ OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
|
|
|
+ //待查询人员的userid
|
|
|
+ req.setUserid(userID);
|
|
|
+ //TODO 考勤报表列定义查出来的上班打卡时间的列id(固定)
|
|
|
+// req.setColumnIdList("190133111");//牧之测试架构,考勤报表的上班打卡时间1的列id
|
|
|
+ req.setColumnIdList("7186626");//东航架构,考勤报表的上班打卡时间1的列id
|
|
|
+ //查询开始时间
|
|
|
+ req.setFromDate(StringUtils.parseDateTime(timeNow));
|
|
|
+// req.setFromDate(StringUtils.parseDateTime("2022-11-18 10:17:03"));
|
|
|
+ //查询结束时间
|
|
|
+ req.setToDate(StringUtils.parseDateTime(timeNow));
|
|
|
+// req.setToDate(StringUtils.parseDateTime("2022-11-18 10:17:03"));
|
|
|
+ OapiAttendanceGetcolumnvalResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ System.out.println(rsp.getBody());
|
|
|
+ String string = rsp.getBody();
|
|
|
+ JSONObject jsonObject1 = JSON.parseObject(string);
|
|
|
+ JSONArray jsonArray1 = jsonObject1.getJSONObject("result").
|
|
|
+ getJSONArray("column_vals").
|
|
|
+ getJSONObject(0).
|
|
|
+ getJSONArray("column_vals");
|
|
|
+ String value = jsonArray1.getJSONObject(0).getString("value");
|
|
|
+ System.out.println("当天上班打卡时间:" + value);
|
|
|
+ if (value.isEmpty()){
|
|
|
+ System.out.println("上班没有打卡时间!");
|
|
|
+ }else {
|
|
|
+ System.out.println("上班有打卡时间!");
|
|
|
+ daka = daka + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String dakaString = String.valueOf(daka);
|
|
|
+ System.out.println("当前部门的出勤数:" + dakaString);
|
|
|
+ return dakaString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //===【最终接口】获取当前人员的主部门下的人员,并循环获取每个人员是否请假===
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public String getDeptQingJia(String userid){
|
|
|
+ System.out.println("宜搭传入的userid:" + userid);
|
|
|
+
|
|
|
+ //获取当天的日期时间
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date date = new Date();
|
|
|
+ String timeNow = simpleDateFormat.format(date);
|
|
|
+ System.out.println("当天的当前时间:" + timeNow);
|
|
|
+
|
|
|
+ //获取当前人员的主部门id
|
|
|
+ String mainDeptId = getMainDeptId(userid);
|
|
|
+ long mainDeptIdLong = Long.parseLong(mainDeptId);
|
|
|
+ System.out.println("转换成Long型的部门id:" + mainDeptIdLong);
|
|
|
+
|
|
|
+ List listDeptAll = new ArrayList();
|
|
|
+
|
|
|
+ //获取当前人员的所有父部门id列表
|
|
|
+ List deptIdList = getDeptIdList(userid);
|
|
|
+ System.out.println("当前人员所有父部门id列表:" + deptIdList);
|
|
|
+
|
|
|
+ //从右往左获取第三层级部门(即客户要求展示的部门层级id)
|
|
|
+ String a = deptIdList.get(deptIdList.size() - 3).toString();
|
|
|
+ long zhanshiDept = Long.parseLong(a);
|
|
|
+ System.out.println("展示主部门的id:" + zhanshiDept);
|
|
|
+
|
|
|
+ //部门id第一次汇总
|
|
|
+ listDeptAll.add(zhanshiDept);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject11 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //展示主部门的id
|
|
|
+ req.setDeptId(zhanshiDept);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject11 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray11 = jsonObject11.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+
|
|
|
+ for (int i = 0; i < jsonArray11.size(); i++) {
|
|
|
+ String b = jsonArray11.getString(i);
|
|
|
+ long Dept2 = Long.parseLong(b);
|
|
|
+ System.out.println("逐层获取展示主部门下一层级的部门id:" + Dept2);
|
|
|
+ //部门id第二次汇总
|
|
|
+ listDeptAll.add(Dept2);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject22 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //第二次汇总部门的id
|
|
|
+ req.setDeptId(Dept2);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject22 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray22 = jsonObject22.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+
|
|
|
+ for (int j = 0; j < jsonArray22.size(); j++) {
|
|
|
+ String c = jsonArray22.getString(j);
|
|
|
+ long Dept3 = Long.parseLong(c);
|
|
|
+ System.out.println("逐层获取第二次汇总部门的下一层级的部门id:" + Dept3);
|
|
|
+ //部门id第三次汇总
|
|
|
+ listDeptAll.add(Dept3);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject33 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //第三次汇总部门的id
|
|
|
+ req.setDeptId(Dept3);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject33 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray33 = jsonObject33.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+
|
|
|
+ for (int k = 0; k < jsonArray33.size(); k++) {
|
|
|
+ String d = jsonArray33.getString(k);
|
|
|
+ long Dept4 = Long.parseLong(d);
|
|
|
+ System.out.println("逐层获取第三次汇总部门的下一层级的部门id:" + Dept4);
|
|
|
+ //部门id第四次汇总
|
|
|
+ listDeptAll.add(Dept4);
|
|
|
+
|
|
|
+ //获取下一级子部门id列表
|
|
|
+ JSONObject jsonObject44 = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsubid");
|
|
|
+ OapiV2DepartmentListsubidRequest req = new OapiV2DepartmentListsubidRequest();
|
|
|
+ //第四次汇总部门的id
|
|
|
+ req.setDeptId(Dept4);
|
|
|
+ OapiV2DepartmentListsubidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ jsonObject44 = JSON.parseObject(result);
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONArray jsonArray44 = jsonObject44.getJSONObject("result").getJSONArray("dept_id_list");
|
|
|
+ System.out.println("第四次查询第五层级返回结果:" + jsonArray44);
|
|
|
+
|
|
|
+ for (int l = 0; l < jsonArray44.size(); l++) {
|
|
|
+ String e = jsonArray44.getString(l);
|
|
|
+ long Dept5 = Long.parseLong(e);
|
|
|
+ System.out.println("逐层获取第三次汇总部门的下一层级的部门id:" + Dept5);
|
|
|
+ //部门id第五次汇总
|
|
|
+ listDeptAll.add(Dept5);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String s = listDeptAll.toString();
|
|
|
+ String s1 = s.replaceAll("\\ ", "");
|
|
|
+ JSONArray jsonArray2 = JSON.parseArray(s1);
|
|
|
+ System.out.println("@@@@@@@@@@@@@@@@" + jsonArray2);
|
|
|
+ System.out.println("******当前用户所属展示部门下的所有id列表******:" + listDeptAll);
|
|
|
+
|
|
|
+ //记录当前人员的主部门的请假数
|
|
|
+ int qingjia = 0;
|
|
|
+
|
|
|
+ for (int y = 0; y < jsonArray2.size(); y++) {
|
|
|
+ Long aLong = jsonArray2.getLong(y);
|
|
|
+ System.out.println("最终每一个待查询的部门id:" + aLong);
|
|
|
+
|
|
|
+ //循环获取该部门下所有的人员id
|
|
|
+ String result = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid");
|
|
|
+ OapiUserListidRequest req = new OapiUserListidRequest();
|
|
|
+ req.setDeptId(aLong);
|
|
|
+ OapiUserListidResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ result = rsp.getBody();
|
|
|
+ System.out.println(result);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(result);
|
|
|
+ JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray("userid_list");
|
|
|
+ System.out.println("部门人员的id列表:" + jsonArray);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (jsonArray.isEmpty()){
|
|
|
+ System.out.println("部门人员为空!");
|
|
|
+ }else {
|
|
|
+ System.out.println("部门人员不为空!");
|
|
|
+ for (int i = 0; jsonArray.size() > i; i ++) {
|
|
|
+ String userID = jsonArray.getString(i);
|
|
|
+ System.out.println("userID:" + userID);
|
|
|
+
|
|
|
+ //循环查询人员当天的请假数据
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getleavetimebynames");
|
|
|
+ OapiAttendanceGetleavetimebynamesRequest req = new OapiAttendanceGetleavetimebynamesRequest();
|
|
|
+ //待查询人员的userid
|
|
|
+ req.setUserid(userID);
|
|
|
+ //TODO 获取报表假期数据的名称
|
|
|
+ req.setLeaveNames("事假,病假,年假,调休,产假,陪产假,婚假");
|
|
|
+ req.setFromDate(StringUtils.parseDateTime(timeNow));
|
|
|
+ req.setToDate(StringUtils.parseDateTime(timeNow));
|
|
|
+ OapiAttendanceGetleavetimebynamesResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ System.out.println(rsp.getBody());
|
|
|
+ String string = rsp.getBody();
|
|
|
+ JSONObject jsonObject1 = JSON.parseObject(string);
|
|
|
+
|
|
|
+ JSONArray jsonArray1 = jsonObject1.getJSONObject("result").getJSONArray("columns");
|
|
|
+
|
|
|
+ String value = null;
|
|
|
+ float valueFloatAll = 0;
|
|
|
+ for (int x = 0; jsonArray1.size() > x; x++){
|
|
|
+ JSONArray columnvals = jsonArray1.getJSONObject(x).getJSONArray("columnvals");
|
|
|
+ value = columnvals.getJSONObject(0).getString("value");
|
|
|
+
|
|
|
+ System.out.println("当天上班请假时长:" + value);
|
|
|
+ float valueFloat = Float.parseFloat(value);
|
|
|
+ System.out.println("请假时长字段转换成float:" + valueFloat);
|
|
|
+ valueFloatAll = valueFloatAll + valueFloat;
|
|
|
+ System.out.println("各种假期请假小时数合计:" + valueFloatAll);
|
|
|
+ }
|
|
|
+ if (valueFloatAll == 0){
|
|
|
+ System.out.println(userID + "当天没有请假!");
|
|
|
+ }else {
|
|
|
+ System.out.println(userID + "当天有请假!");
|
|
|
+ qingjia = qingjia + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String qingjiaString = String.valueOf(qingjia);
|
|
|
+ System.out.println("当前部门的请假数:" + qingjiaString);
|
|
|
+ return qingjiaString;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static com.aliyun.dingtalkcalendar_1_0.Client createClient() throws Exception {
|
|
|
+ com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
|
|
|
+ config.protocol = "https";
|
|
|
+ config.regionId = "central";
|
|
|
+ return new com.aliyun.dingtalkcalendar_1_0.Client(config);
|
|
|
+ }
|
|
|
+
|
|
|
+ //===【最终接口】获取钉钉日程信息===
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public Map getSchedule(String userid){
|
|
|
+ System.out.println("宜搭传入的userid:" + userid);
|
|
|
+
|
|
|
+ Date date = new Date();
|
|
|
+ System.out.println("date:" + date);
|
|
|
+
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(date);
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY,0);
|
|
|
+ calendar.set(Calendar.MINUTE,0);
|
|
|
+ calendar.set(Calendar.SECOND,0);
|
|
|
+ calendar.set(Calendar.MILLISECOND,0);
|
|
|
+ String FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
|
|
|
+ System.out.println("当天零点:" + FORMtime);
|
|
|
+
|
|
|
+ calendar.setTime(date);
|
|
|
+ calendar.set(Calendar.HOUR_OF_DAY,23);
|
|
|
+ calendar.set(Calendar.MINUTE,59);
|
|
|
+ calendar.set(Calendar.SECOND,59);
|
|
|
+ calendar.set(Calendar.MILLISECOND,0);
|
|
|
+ String TOtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
|
|
|
+ System.out.println("当天24点:" + TOtime);
|
|
|
+
|
|
|
+ Date parse = null;
|
|
|
+ Date parse1 = null;
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ try {
|
|
|
+ parse = simpleDateFormat.parse(FORMtime);
|
|
|
+ parse1 = simpleDateFormat.parse(TOtime);
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ System.out.println("当天零点(时间型):" + parse);
|
|
|
+ System.out.println("当天24点(时间型):" + parse1);
|
|
|
+
|
|
|
+ TimeZone timeZone = TimeZone.getTimeZone("UTC");
|
|
|
+ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
|
|
|
+ dateFormat.setTimeZone(timeZone);
|
|
|
+ String isoDateStart = dateFormat.format(parse);
|
|
|
+ System.out.println("iso时间(每天零点):" + isoDateStart);
|
|
|
+ String isoDateEnd = dateFormat.format(parse1);
|
|
|
+ System.out.println("iso时间(每天24点):" + isoDateEnd);
|
|
|
+
|
|
|
+ String isoDateNow = dateFormat.format(date);
|
|
|
+ System.out.println("iso时间(当前时间):" + isoDateNow);
|
|
|
+
|
|
|
+ //获取当前人员的unionid
|
|
|
+ String unionid = null;
|
|
|
+ try {
|
|
|
+ DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
|
|
|
+ OapiV2UserGetRequest req = new OapiV2UserGetRequest();
|
|
|
+ //待查询的人员userid
|
|
|
+ req.setUserid(userid);
|
|
|
+ OapiV2UserGetResponse rsp = client.execute(req, accessTokenService.getMuZhiAccessToken());
|
|
|
+ String result = rsp.getBody();
|
|
|
+ System.out.println(result);
|
|
|
+ unionid = JSON.parseObject(result).getJSONObject("result").getString("unionid");
|
|
|
+ System.out.println("获取的人员unionid:" + unionid);
|
|
|
+ } catch (ApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject jsonObject = null;
|
|
|
+ try {
|
|
|
+ com.aliyun.dingtalkcalendar_1_0.Client client = createClient();
|
|
|
+ com.aliyun.dingtalkcalendar_1_0.models.ListEventsHeaders listEventsHeaders = new com.aliyun.dingtalkcalendar_1_0.models.ListEventsHeaders();
|
|
|
+ listEventsHeaders.xAcsDingtalkAccessToken = accessTokenService.getMuZhiAccessToken();
|
|
|
+ com.aliyun.dingtalkcalendar_1_0.models.ListEventsRequest listEventsRequest = new com.aliyun.dingtalkcalendar_1_0.models.ListEventsRequest()
|
|
|
+ //日程结束时间
|
|
|
+ .setTimeMax(isoDateEnd)
|
|
|
+// .setTimeMax("2022-11-17T15:59:59Z")
|
|
|
+ //日程开始时间
|
|
|
+ .setTimeMin(isoDateNow)
|
|
|
+// .setTimeMin("2022-11-16T11:52:20Z")
|
|
|
+ //最大返回记录数
|
|
|
+ .setMaxResults(0);
|
|
|
+ ListEventsResponse listEventsResponse = client.listEventsWithOptions(unionid, "primary", listEventsRequest, listEventsHeaders, new RuntimeOptions());
|
|
|
+ String s = JSON.toJSONString(listEventsResponse.getBody());
|
|
|
+ jsonObject = JSON.parseObject(s);
|
|
|
+ System.out.println("接口object对象:" + jsonObject);
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Map map = new HashMap();
|
|
|
+
|
|
|
+ //查询当前时段的第一个日程,如果当前时段没有日程则返回文本提示:本日接下来时段没有日程!
|
|
|
+ JSONArray events = null;
|
|
|
+ try {
|
|
|
+ events = jsonObject.getJSONArray("events");
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (events == null){
|
|
|
+ map.put("name","本日接下来时段没有日程!");
|
|
|
+ map.put("start","");
|
|
|
+ map.put("end","");
|
|
|
+ map.put("url","");
|
|
|
+ }else {
|
|
|
+ for (int i = 0; events.size() > i; i++) {
|
|
|
+ //日程名称
|
|
|
+ String summary = events.getJSONObject(i).getString("summary");
|
|
|
+ System.out.println("日程名称:" + "【" + summary + "】");
|
|
|
+ //日程开始时间
|
|
|
+ String startDateTime = events.getJSONObject(i).getJSONObject("start").getString("dateTime");
|
|
|
+ System.out.println("日程开始时间:" + startDateTime);
|
|
|
+ Date date1 = new DateTime(startDateTime).toDate();
|
|
|
+ String formatStartTime = simpleDateFormat.format(date1);
|
|
|
+ System.out.println("日程开始时间(正常格式):" + formatStartTime);
|
|
|
+ //日程结束时间
|
|
|
+ String endDateTime = events.getJSONObject(i).getJSONObject("end").getString("dateTime");
|
|
|
+ System.out.println("日程结束时间:" + endDateTime);
|
|
|
+ Date date2 = new DateTime(endDateTime).toDate();
|
|
|
+ String formatEndTime = simpleDateFormat.format(date2);
|
|
|
+ System.out.println("日程结束时间(正常格式):" + formatEndTime);
|
|
|
+
|
|
|
+ //日程id
|
|
|
+ String id = events.getJSONObject(i).getString("id");
|
|
|
+ System.out.println("日程id:" + id);
|
|
|
+
|
|
|
+ JSONObject jsonObject1 = null;
|
|
|
+ try {
|
|
|
+ com.aliyun.dingtalkcalendar_1_0.Client client = createClient();
|
|
|
+ com.aliyun.dingtalkcalendar_1_0.models.GetEventHeaders getEventHeaders = new com.aliyun.dingtalkcalendar_1_0.models.GetEventHeaders();
|
|
|
+ getEventHeaders.xAcsDingtalkAccessToken = accessTokenService.getMuZhiAccessToken();
|
|
|
+ com.aliyun.dingtalkcalendar_1_0.models.GetEventRequest getEventRequest = new com.aliyun.dingtalkcalendar_1_0.models.GetEventRequest();
|
|
|
+ GetEventResponse primary = client.getEventWithOptions(unionid, "primary", id, getEventRequest, getEventHeaders, new RuntimeOptions());
|
|
|
+ String s = JSON.toJSONString(primary.getBody());
|
|
|
+ jsonObject1 = JSON.parseObject(s);
|
|
|
+ System.out.println("接口object对象:" + jsonObject1);
|
|
|
+ } catch (TeaException err) {
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ }
|
|
|
+ } catch (Exception _err) {
|
|
|
+ TeaException err = new TeaException(_err.getMessage(), _err);
|
|
|
+ if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
|
+ // err 中含有 code 和 message 属性,可帮助开发定位问题
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ String url = "";
|
|
|
+ try {
|
|
|
+ JSONObject onlineMeetingInfo = jsonObject1.getJSONObject("onlineMeetingInfo");
|
|
|
+ url = onlineMeetingInfo.getString("url");
|
|
|
+ System.out.println("在线会议地址url:" + url);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+// map.put(i,"【" + summary + "】" + "[" + formatStartTime + "][" + formatEndTime + "]");
|
|
|
+ map.put("name", summary);
|
|
|
+ map.put("start", formatStartTime);
|
|
|
+ map.put("end", formatEndTime);
|
|
|
+ map.put("url", url);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println("map对象:" + map);
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取天气
|
|
|
+// @Async
|
|
|
+ @Override
|
|
|
+ public Map getWeather(){
|
|
|
+ String urlString = "https://www.weatherol.cn/api/home/getCurrAnd15dAnd24h?cityid=101010100";
|
|
|
+
|
|
|
+ String res = "";
|
|
|
+ try {
|
|
|
+ URL url = new URL(urlString);
|
|
|
+ java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
|
|
|
+ conn.setDoOutput(true);
|
|
|
+ conn.setRequestMethod("GET");
|
|
|
+ java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream(),"UTF-8"));
|
|
|
+ String line;
|
|
|
+ while ((line = in.readLine()) != null) {
|
|
|
+ res += line;
|
|
|
+ }
|
|
|
+ in.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSON.parseObject(res);
|
|
|
+ JSONObject jsonObject1 = jsonObject.getJSONObject("data").getJSONObject("current").getJSONObject("current");
|
|
|
+ //温度
|
|
|
+ String temperature = jsonObject1.getString("temperature");
|
|
|
+ //天气
|
|
|
+ String weather = jsonObject1.getString("weather");
|
|
|
+ //风向
|
|
|
+ String winddir = jsonObject1.getString("winddir");
|
|
|
+
|
|
|
+ Map map = new HashMap();
|
|
|
+ map.put("temperature",temperature);
|
|
|
+ map.put("weather",weather);
|
|
|
+ map.put("winddir",winddir);
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+}
|