EDZ 3 年 前
コミット
257c8a36b8

+ 13 - 13
src/main/java/net/chenlin/dp/common/openapi4j/examples/vendor/VendorBatchGet.java

@@ -17,21 +17,21 @@ public class VendorBatchGet {
 
 	public static void main(String[] args) {
 
-		String to_account = args[0];	//提供方id
-		String page_index = args[1];	//	页号
-		String rows_per_page = args[2];	//	每页行数
-		String code_begin = args[3];	//	起始编码
-		String code_end = args[4];		//	结束编码
-		String name = args[5];			//	名称关键字
-		
+//		String to_account = args[0];	//提供方id
+//		String page_index = args[1];	//	页号
+//		String rows_per_page = args[2];	//	每页行数
+//		String code_begin = args[3];	//	起始编码
+//		String code_end = args[4];		//	结束编码
+//		String name = args[5];			//	名称关键字
+//
 		
 		Map<String, String> paramMap = new HashMap<String, String>();
-		paramMap.put("to_account", to_account);
-		paramMap.put("page_index", page_index);
-		paramMap.put("rows_per_page", rows_per_page);
-		paramMap.put("code_begin", code_begin);
-		paramMap.put("code_end", code_end);
-		paramMap.put("name", name);
+		paramMap.put("to_account", "test_yuansh");
+		paramMap.put("page_index", "1");
+		paramMap.put("rows_per_page", "1");
+//		paramMap.put("code_begin", code_begin);
+//		paramMap.put("code_end", code_end);
+//		paramMap.put("name", name);
 		
 		VendorService ds = new VendorService();
 		try {

+ 79 - 4
src/main/java/net/chenlin/dp/common/openapi4j/examples/voucher/VoucherAdd.java

@@ -1,5 +1,6 @@
 package net.chenlin.dp.common.openapi4j.examples.voucher;
 
+import net.chenlin.dp.common.utils.DateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -8,6 +9,8 @@ import com.alibaba.fastjson.JSONObject;
 import net.chenlin.dp.common.openapi4j.exception.OpenAPIException;
 import net.chenlin.dp.common.openapi4j.service.VoucherService;
 
+import java.util.*;
+
 /**
  * Copyright(c) 2015-2015 by yonyouup. All Rights Reserved 凭证
  * 
@@ -20,12 +23,84 @@ public class VoucherAdd {
 
     final static Logger logger = LoggerFactory.getLogger(VoucherAdd.class);
 
-    public static void main(String[] args) {
-        String to_account = args[0];//提供方id
-        String jsonBody = args[1];//请求body体数据
+    /**
+     * 新增凭证
+     * @param map 数据
+     * @param biz_id  唯一来源id
+     */
+    public static void addVoucher(Map<String,Object> map,String biz_id) {
+
+        Map<String,Object> jsonBodyMap = new HashMap<>();
+        Map<String,Object> voucher = new HashMap<>();//凭证数据详情
+
+        voucher.put("voucher_type","记");//凭证类别
+//        voucher.put("fiscal_year","2021");//凭证所属的会计年度,不填写取当前年
+//        voucher.put("accounting_period","1");//所属的会计期间,不填写取当前月份
+        voucher.put("date", DateUtils.format(new Date()));//制单日期
+        voucher.put("enter","DingDing_"+map.get("申请人"));//制单人名称
+        voucher.put("cashier",map.get("出纳"));//出纳名称
+
+        Map<String,Object> credit = new HashMap<>();                     //voucher > credit
+        List<Map<String,Object>> entryCredit = new ArrayList<>();        //voucher > credit > entryCredit
+        Map<String,Object> entryCreditMap = new HashMap<>();             //voucher > credit > entryCredit > entryCreditMap
+        List<Map<String,Object>> cash_flowListCredit = new ArrayList<>();//voucher > credit > entryCredit > entryCreditMap > cash_flowListCredit
+        Map<String,Object> cash_flowMapCredit = new HashMap<>();         //voucher > credit > entryCredit > entryCreditMap > cash_flowListCredit > cash_flowMapCredit
+
+//        cash_flowMapCredit.put("natural_credit_currency","0.00");
+//        cash_flowMapCredit.put("natural_debit_currency","4.00");
+//        cash_flowListCredit.add(cash_flowMapCredit);
+//        entryCreditMap.put("cash_flow",cash_flowListCredit);
+
+//        entryCreditMap.put("auxiliary",new HashMap<String,Object>());
+//        entryCreditMap.put("credit_quantity","0");
+//        entryCreditMap.put("document_date","2021-09-18");
+//        entryCreditMap.put("document_id","321654");
+//        entryCreditMap.put("exchange_rate2","0");
+        entryCreditMap.put("abstract",map.get("事由"));
+        entryCreditMap.put("account_code","1001");
+//        entryCreditMap.put("entry_id","0");//
+        entryCreditMap.put("natural_credit_currency",map.get("申请金额(元)"));//本币贷方发生额*与本币借方发生额不能同时为空
+//        entryCreditMap.put("primary_credit_amount","0");//
+        entryCredit.add(entryCreditMap);
+        credit.put("entry",entryCredit);
+        voucher.put("credit",credit);//扩展
+
+        Map<String,Object> debit = new HashMap<>();                     //voucher > debit
+        List<Map<String,Object>> entryDebit = new ArrayList<>();        //voucher > debit > entryDebit
+        Map<String,Object> entryDebitMap = new HashMap<>();             //voucher > debit > entryDebit > entryDebitMap
+        List<Map<String,Object>> cash_flowListDebit = new ArrayList<>();//voucher > debit > entryDebit > entryDebitMap > cash_flowListDebit
+        Map<String,Object> cash_flowMapDebit = new HashMap<>();         //voucher > debit > entryDebit > entryDebitMap > cash_flowListDebit > cash_flowMapDebit
+
+//        cash_flowMapDebit.put("natural_credit_currency","0.00");
+//        cash_flowMapDebit.put("natural_debit_currency","4.00");
+//        cash_flowListDebit.add(cash_flowMapDebit);
+//        entryDebitMap.put("cash_flow",cash_flowListDebit);
+//
+//        entryDebitMap.put("auxiliary",new HashMap<String,Object>());
+//        entryDebitMap.put("settlement","8");
+        entryDebitMap.put("abstract",map.get("事由"));
+//        entryDebitMap.put("debit_quantity","0");
+//        entryDebitMap.put("document_date","2021-09-18");
+//        entryDebitMap.put("document_id","123456");
+//        entryDebitMap.put("exchange_rate2","0");
+        entryDebitMap.put("account_code","1001");
+//
+        entryDebitMap.put("natural_debit_currency",map.get("申请金额(元)"));//本币贷方发生额*与本币借方发生额不能同时为空
+//        entryDebitMap.put("primary_debit_amount","0");//
+//        entryDebitMap.put("entry_id","0");//
+        entryDebit.add(entryDebitMap);
+
+        debit.put("entry",entryDebit);
+        voucher.put("debit",debit);//扩展
+
+        jsonBodyMap.put("voucher",voucher);
+
+        JSONObject json = new JSONObject(jsonBodyMap);
+        String jsonBody = json.toJSONString();
+
         VoucherService voucherService = new VoucherService();
         try {
-            JSONObject record = voucherService.add(jsonBody, to_account);
+            JSONObject record = voucherService.add(jsonBody, biz_id);
             logger.info(record.toString());
         } catch (OpenAPIException e) {
             e.printStackTrace();

+ 7 - 2
src/main/java/net/chenlin/dp/common/openapi4j/service/VoucherService.java

@@ -2,7 +2,9 @@ package net.chenlin.dp.common.openapi4j.service;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Properties;
 
+import net.chenlin.dp.common.openapi4j.util.PropUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -37,13 +39,16 @@ public class VoucherService extends BaseService {
         this.access_token = token;
     }
 
-    public JSONObject add(String jsonBody, String to_account) throws OpenAPIException {
+    public JSONObject add(String jsonBody,String biz_id) throws OpenAPIException {
         JSONObject record;
         try {
+            Properties prop = PropUtil.getProperties("/config.properties");
+            String to_account = prop.getProperty("to_account");
             String tradeId = TradeService.getTradeId();
             Map<String, String> paramMap = new HashMap();
             paramMap.put("to_account", to_account);
-            paramMap.put("tradeid", tradeId);
+//            paramMap.put("tradeid", tradeId);
+            paramMap.put("biz_id", biz_id);
             String url = this.createURL("voucher/add", paramMap);
             logger.debug(url);
             String resultStr = HttpUtil.post(url, jsonBody);

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

@@ -48,7 +48,6 @@ public class DingdingOpenInterface {
                 gettoken = "error";
             }
 
-//            System.out.println("access_token获取:"+gettoken);
 
         } catch (ApiException | JSONException e) {
             e.printStackTrace();
@@ -66,6 +65,7 @@ public class DingdingOpenInterface {
      */
 
     public List<String> getOrderIdList(String processCode){
+        getToken();//获取token
 
         Map<String,Object> map = new HashMap<>();
         List<String> list = new ArrayList<>();

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

@@ -5,6 +5,7 @@ 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;
@@ -13,6 +14,7 @@ import org.springframework.boot.configurationprocessor.json.JSONObject;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
 
 public class interfaceTest {
 
@@ -28,12 +30,17 @@ public class interfaceTest {
         /**
          * 获取企业内部应用的access_token
          */
-    /*    try {
+     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("ding1h54xhh2cyh90hgk");
-            req.setAppsecret("EZMYVfZn_yBBj2Mr_qfZPtJvVErJqdQKVHQvHGk9s3LLuAZxdwAsqdnXIuSy6uVx");
+            req.setAppkey(appkey);
+            req.setAppsecret(appsecret);
+
             OapiGettokenResponse rsp = client.execute(req);
 //            System.out.println(JSONUtils.jsonToMap(rsp.getBody()));
 //            System.out.println(toMap(rsp.getBody()).get("errcode"));
@@ -61,10 +68,10 @@ public class interfaceTest {
         //根据单据名称获取对应process_code
         DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/process/get_by_name");
         OapiProcessGetByNameRequest req = new OapiProcessGetByNameRequest();
-        req.setName("销售订单测试");
+        req.setName("报销申请");
         OapiProcessGetByNameResponse rsp = client.execute(req, gettoken);
         System.out.println(rsp.getBody());
-*/
+
 
         /**
          * 获取审批实例ID列表
@@ -91,21 +98,21 @@ public class interfaceTest {
        /**
          * 获取审批实例详
          */
-        try {
-            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
-            OapiProcessinstanceGetRequest req = new OapiProcessinstanceGetRequest();
-            req.setProcessInstanceId("e3fa7ef4-645a-4238-9ea4-125d00160304");//实例id
-            OapiProcessinstanceGetResponse rsp = client.execute(req, "b63175b83675374682f76130b4790323");//access_token
-            System.out.println(rsp.getBody());
-//            System.out.println(JSONUtils.jsonToMap(rsp.getBody()));
-//            for (Map.Entry<String, Object> entry : JSONUtils.jsonToMap(rsp.getBody()).entrySet()) {
-//                System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
-//            }
-
-
-        } catch (ApiException e) {
-            e.printStackTrace();
-        }
+//        try {
+//            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/processinstance/get");
+//            OapiProcessinstanceGetRequest req = new OapiProcessinstanceGetRequest();
+//            req.setProcessInstanceId("e3fa7ef4-645a-4238-9ea4-125d00160304");//实例id
+//            OapiProcessinstanceGetResponse rsp = client.execute(req, "b63175b83675374682f76130b4790323");//access_token
+//            System.out.println(rsp.getBody());
+////            System.out.println(JSONUtils.jsonToMap(rsp.getBody()));
+////            for (Map.Entry<String, Object> entry : JSONUtils.jsonToMap(rsp.getBody()).entrySet()) {
+////                System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
+////            }
+//
+//
+//        } catch (ApiException e) {
+//            e.printStackTrace();
+//        }
 
 
 

+ 20 - 9
src/main/java/net/chenlin/dp/modules/api/service/PettyCashService.java

@@ -1,11 +1,15 @@
 package net.chenlin.dp.modules.api.service;
 
+import com.mysql.cj.util.StringUtils;
+import net.chenlin.dp.common.openapi4j.examples.voucher.VoucherAdd;
+import net.chenlin.dp.common.openapi4j.util.PropUtil;
 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;
+import java.util.Properties;
 
 /**
  * 钉钉备用金
@@ -13,29 +17,36 @@ import java.util.Map;
  */
 public class PettyCashService {
 
+//    public static void autoUpdataPetty(){
     public static void autoUpdataPetty(){
 
         DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
-        dingdingOpenInterface.getToken();
-
-        List<String> list = dingdingOpenInterface.getOrderIdList("PROC-9331671D-265D-4A79-A6F2-93326D727673");
+        Properties prop = PropUtil.getProperties("/config.properties");
+        String PROC = prop.getProperty("byj_process_code");
+        List<String> list = dingdingOpenInterface.getOrderIdList(PROC);
 
         if(list.size() > 0){
             for(String o:list){
 
                 Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
+                if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
+                    continue;
+                }
+
                 Map<String,Object> map1 = dingdingOpenInterface.tableToMap(map);
 
-                System.out.println(map1);
-                System.out.println(map1.get("部门"));
-                System.out.println(map1.get("出纳"));
+//                System.out.println(map.get("business_id"));
+//                System.out.println(map1);
+//                System.out.println(map);
+                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("收款账号"));
-                System.out.println(map1.get("[\"使用日期\",\"归还日期\"]"));
+//                System.out.println(map1.get("[\"使用日期\",\"归还日期\"]"));
 
+//                VoucherAdd.addVoucher(map1,map.get("business_id").toString());
 
             }
 

+ 57 - 0
src/main/java/net/chenlin/dp/modules/api/service/ReimbursementService.java

@@ -0,0 +1,57 @@
+package net.chenlin.dp.modules.api.service;
+
+import com.mysql.cj.util.StringUtils;
+import net.chenlin.dp.common.openapi4j.examples.voucher.VoucherAdd;
+import net.chenlin.dp.common.openapi4j.util.PropUtil;
+import net.chenlin.dp.modules.api.controller.DingdingOpenInterface;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+public class ReimbursementService {
+
+    public static void autoReimbursement(){
+
+        DingdingOpenInterface dingdingOpenInterface = new DingdingOpenInterface();
+        Properties prop = PropUtil.getProperties("/config.properties");
+        String PROC = prop.getProperty("bx_process_code");
+        List<String> list = dingdingOpenInterface.getOrderIdList(PROC);
+
+        if(list.size() > 0){
+            for(String o:list){
+
+                Map<String,Object> map = dingdingOpenInterface.getOrderDetails(o);
+                if(StringUtils.isNullOrEmpty(map.get("result").toString()) || !map.get("result").toString().equals("agree")){
+                    continue;
+                }
+
+                Map<String,Object> map1 = dingdingOpenInterface.tableToMap(map);
+
+//                System.out.println(map.get("business_id"));
+                System.out.println(map1);
+                System.out.println("============================");
+//                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) {
+        autoReimbursement();
+    }
+
+
+}