EDZ 3 years ago
parent
commit
23c93b4ced

+ 1 - 0
src/main/java/net/chenlin/dp/common/utils/DateUtils.java

@@ -49,6 +49,7 @@ public class DateUtils {
 		SimpleDateFormat sdf = new SimpleDateFormat(format);
 		return sdf.format(new Date(Long.valueOf(seconds+"000")));
 	}
+
 	/**
 	 * 日期格式字符串转换成时间戳
 	 * @param date 字符串日期

+ 96 - 5
src/main/java/net/chenlin/dp/modules/api/controller/DingdingOpenInterface.java

@@ -11,10 +11,7 @@ import net.chenlin.dp.common.utils.JSONUtils;
 import org.springframework.boot.configurationprocessor.json.JSONException;
 import org.springframework.boot.configurationprocessor.json.JSONObject;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
+import java.util.*;
 
 /**
  * 此类用于钉钉公开接口方法调用
@@ -51,7 +48,7 @@ public class DingdingOpenInterface {
                 gettoken = "error";
             }
 
-            System.out.println("access_token获取:"+gettoken);
+//            System.out.println("access_token获取:"+gettoken);
 
         } catch (ApiException | JSONException e) {
             e.printStackTrace();
@@ -61,7 +58,101 @@ public class DingdingOpenInterface {
 
     }
 
+    /**
+     * 获取审批实例ID列表
+     * 备用金process_code:PROC-9331671D-265D-4A79-A6F2-93326D727673(备用金列表获取)
+     * 销售订单process_code:PROC-40356B7F-6825-4DC3-83B9-8AD6D0D2CA49(销售订单列表获取)
+     * 钉钉接口仅支持120天内数据
+     */
+
+    public List<String> getOrderIdList(String processCode){
+
+        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.MONTH, -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.MONTH, -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);

+ 1 - 1
src/main/java/net/chenlin/dp/modules/api/controller/interfaceTest.java

@@ -89,7 +89,7 @@ public class interfaceTest {
 //        }
 
        /**
-         * 获取审批实例详
+         * 获取审批实例详
          */
         try {
             DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");

+ 53 - 0
src/main/java/net/chenlin/dp/modules/api/service/PettyCashService.java

@@ -0,0 +1,53 @@
+package net.chenlin.dp.modules.api.service;
+
+import net.chenlin.dp.common.utils.JSONUtils;
+import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 钉钉备用金
+ * 生成至u8总账
+ */
+public class PettyCashService {
+
+    public static void autoUpdataPetty(){
+
+        DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
+        dingdingOpenInterface.getToken();
+
+//        List<String> list = dingdingOpenInterface.getOrderIdList("PROC-9331671D-265D-4A79-A6F2-93326D727673");
+
+//        if(list.size() > 0){
+//            for(String o:list){
+//                System.out.println(o);
+//            }
+//
+//        }
+
+        Map<String,Object> map = dingdingOpenInterface.getOrderDetails("bfb52963-17dd-4476-b557-da71a5b8ff68");
+        Map<String,Object> map1 = dingdingOpenInterface.tableToMap(map);
+
+        System.out.println(map1);
+        System.out.println(map1.get("部门"));
+        System.out.println(map1.get("出纳"));
+        System.out.println(map1.get("申请金额(元)"));
+        System.out.println(map1.get("备注"));
+        System.out.println(map1.get("申请人"));
+        System.out.println(map1.get("事由"));
+        System.out.println(map1.get("收款账号"));
+        System.out.println(map1.get("[\"使用日期\",\"归还日期\"]"));
+
+
+
+    }
+
+
+    public static void main(String[] args) {
+        autoUpdataPetty();
+    }
+
+
+}

+ 4 - 4
src/main/resources/config.properties

@@ -1,13 +1,13 @@
 
 ################# U8接口参数 ####################
 #调用方id
-from_account=yuanshaohua
+from_account=2019JCLW
 #提供方id
-to_account = test_yuanshaohua
+to_account = test_2019JCLW
 #应用key
-app_key=opa323582432fd3dd46
+app_key=opa70efa97d69ebe39e
 #应用密钥
-app_secret=e6004cb2859248c69a5c78146b00986d
+app_secret=8cd1cb56cd534e049017b9fa171e1846
 #获取token的url
 api_url_token_get=https://api.yonyouup.com/system/token?from_account={from_account}&app_key={app_key}&app_secret={app_secret}
 #获取trade_id 的url