123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- package net.chenlin.dp.modules.api.controller;
- import com.dingtalk.api.DefaultDingTalkClient;
- import com.dingtalk.api.DingTalkClient;
- import com.dingtalk.api.request.*;
- import com.dingtalk.api.response.*;
- import com.taobao.api.ApiException;
- import net.chenlin.dp.common.openapi4j.util.PropUtil;
- import net.chenlin.dp.common.utils.DateUtils;
- import net.chenlin.dp.common.utils.JSONUtils;
- import org.springframework.boot.configurationprocessor.json.JSONException;
- import org.springframework.boot.configurationprocessor.json.JSONObject;
- import java.util.*;
- /**
- * 此类用于钉钉公开接口方法调用
- */
- public class DingdingOpenInterface {
- /**
- * 企业内部应用的access_token,每20分钟改变一次
- */
- public static String gettoken = "";
- /**
- * 获取钉钉企业内部应用的access_token
- */
- public static void getToken(){
- try {
- Properties prop = PropUtil.getProperties("/config.properties");
- String appkey = prop.getProperty("ding_appkey");
- String appsecret = prop.getProperty("ding_appsecret");
- DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
- OapiGettokenRequest req = new OapiGettokenRequest();
- req.setHttpMethod("GET");
- req.setAppkey(appkey);
- req.setAppsecret(appsecret);
- OapiGettokenResponse rsp = client.execute(req);
- Map<String,String> map;
- map = toMap(rsp.getBody());
- if(map.get("errcode").equals("0")){
- gettoken = map.get("access_token");
- }else{
- gettoken = "error";
- }
- } catch (ApiException | JSONException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 获取审批实例ID列表
- * 备用金process_code:PROC-9331671D-265D-4A79-A6F2-93326D727673(备用金列表获取)
- * 销售订单process_code:PROC-40356B7F-6825-4DC3-83B9-8AD6D0D2CA49(销售订单列表获取)
- * 钉钉接口仅支持120天内数据
- */
- public List<String> getOrderIdList(String processCode){
- getToken();//获取token
- Map<String,Object> map = new HashMap<>();
- List<String> list = new ArrayList<>();
- try {
- DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/listids");
- OapiProcessinstanceListidsRequest req = new OapiProcessinstanceListidsRequest();
- req.setProcessCode(processCode);
- Calendar nowTime = Calendar.getInstance();
- nowTime.add(Calendar.DAY_OF_YEAR, -1);
- Date date = nowTime.getTime();
- req.setStartTime(Long.valueOf(date.getTime()));//时间戳:例1586448000000
- OapiProcessinstanceListidsResponse rsp = client.execute(req, gettoken);//access_token
- map = JSONUtils.jsonToMap(rsp.getBody());
- if(map.get("errcode").equals(0)){
- Map<String,Object> mapList = (Map<String, Object>) map.get("result");
- list = (List<String>) mapList.get("list");
- }
- } catch (ApiException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return list;
- }
- /**
- * 获取审批实例详
- */
- public Map<String,Object> getOrderDetails(String processInstanceId){
- Map<String,Object> map = new HashMap<>();
- try {
- DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
- OapiProcessinstanceGetRequest req = new OapiProcessinstanceGetRequest();
- req.setProcessInstanceId(processInstanceId);//实例id
- OapiProcessinstanceGetResponse rsp = client.execute(req, gettoken);//access_token
- map = JSONUtils.jsonToMap(rsp.getBody());
- if(map.get("errcode").equals(0)){
- Map<String,Object> map1 = (Map<String, Object>) map.get("process_instance");
- return map1;
- }
- } catch (ApiException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return map;
- }
- /**
- * 接口表格数据转换成可使用的map数据
- * @param map1
- * @return
- */
- public static Map<String,Object> tableToMap(Map<String,Object> map1){
- List<Map<String,Object>> listMap = (List<Map<String, Object>>) map1.get("form_component_values");
- Map<String,Object> newMap = new HashMap<>();
- for(Map<String, Object> o:listMap){
- newMap.put((String) o.get("name"),o.get("value"));
- }
- return newMap;
- }
- public static void main(String[] args) {
- // for (Map.Entry<String, Object> entry : JSONUtils.jsonToMap(rsp.getBody()).entrySet()) {
- // System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
- // }
- Calendar nowTime = Calendar.getInstance();
- // nowTime.add(Calendar.MINUTE, 5);
- nowTime.add(Calendar.DAY_OF_YEAR, -1);
- Date date = nowTime.getTime();
- System.out.println(date.getTime());
- System.out.println(nowTime.getTime());
- }
- public static Map toMap(String jsonString) throws JSONException {
- JSONObject jsonObject = new JSONObject(jsonString);
- Map result = new HashMap();
- Iterator iterator = jsonObject.keys();
- String key = null;
- String value = null;
- while (iterator.hasNext()) {
- key = (String) iterator.next();
- value = jsonObject.getString(key);
- result.put(key, value);
- }
- return result;
- }
- }
|