| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- package com.malk.siku.utils;
- import com.alibaba.fastjson.JSONObject;
- import com.malk.utils.UtilHttp;
- import com.malk.utils.UtilMap;
- import com.malk.utils.UtilToken;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Value;
- import java.util.*;
- /**
- * 每刻报销
- */
- @Slf4j
- public class MkBxUtil {
- @Value("${mk.bx.appCode}")
- private final static String appCode = "AP52Y01LHHTAP9";
- @Value("${mk.bx.appSecret}")
- private final static String appSecret = "N4WuERLteAUPaWebnsHy";
- // private final static String host = "ng-uat.maycur.com";//测试环境
- private final static String host = "ng.maycur.com";//生产环境
- private final Object $lock = new Object[0];
- private static final Long EXPIRES_IN = 1800000L;
- public static Map initTokenHeader(){
- Map header = new HashMap();
- String tokenId = UtilToken.get("invalid-tokenId-mkbx");
- String entCode = UtilToken.get("invalid-entCode-mkbx");
- if (StringUtils.isNotBlank(tokenId) && StringUtils.isNotBlank(entCode)) {
- header.put("tokenId",tokenId);
- header.put("entCode",entCode);
- return header;
- } else {
- //每刻登录认证
- Map body = new HashMap();
- long timeMillis = System.currentTimeMillis();
- body.put("appCode",appCode);
- body.put("secret",getSecret(appCode,appSecret,timeMillis));
- body.put("timestamp",timeMillis);
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/auth/login", null, null, body));
- Map data = UtilMap.getMap(result, "data");
- tokenId = UtilMap.getString(data, "tokenId");
- entCode = UtilMap.getString(data, "entCode");
- log.info("每刻报销tokenId, {}", tokenId);
- log.info("每刻报销entCode, {}", entCode);
- UtilToken.put("invalid-tokenId-mkbx", tokenId, EXPIRES_IN);
- UtilToken.put("invalid-entCode-mkbx", entCode, EXPIRES_IN);
- header.put("tokenId",tokenId);
- header.put("entCode",entCode);
- return header;
- }
- }
- //保存往来单位
- public static Map saveTradingPartner(Object body){
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/tradingPartner/batch/save", MkBxUtil.initTokenHeader(), null, body,(Map) null));
- log.info("Result:{}",result);
- return result;
- }
- //保存往来单位账号
- public static Map saveAccount(Object body){
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/tradingPartner/batch/account/save", MkBxUtil.initTokenHeader(), null, body,(Map) null));
- log.info("Result:{}",result);
- return result;
- }
- //报销单导入
- public static Map receiveReimburse(Object body){
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/receive/reimburse", MkBxUtil.initTokenHeader(), null, body,(Map) null));
- log.info("Result:{}",result);
- return result;
- }
- //报销单费用导入
- public static List<String> receiveExpense(Object body){
- log.info("body:{}",JSONObject.toJSONString(body));
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/receive/expense", MkBxUtil.initTokenHeader(), null, body,(Map) null));
- log.info("Result:{}",result);
- Map data = UtilMap.getMap(result, "data");
- List<String> expenseCodes = new ArrayList<>();
- List<Map> successData = UtilMap.getList(data, "successData");
- for (Map successDatum : successData) {
- expenseCodes.add(UtilMap.getString(successDatum,"expenseCode"));
- }
- return expenseCodes;
- }
- //费用类型查询
- public static String expenseTypeSearch(Object body){
- log.info("body:{}",JSONObject.toJSONString(body));
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/expense/type/search", MkBxUtil.initTokenHeader(), null, body,(Map) null));
- log.info("Result:{}",result);
- List<Map> data = UtilMap.getList(result, "data");
- if (!data.isEmpty()){
- String bizCode = UtilMap.getString(data.get(0), "bizCode");
- return bizCode;
- }else {
- return null;
- }
- }
- //根据工号查询员工详情
- public static Map employeeDetails(Object body){
- log.info("body:{}",JSONObject.toJSONString(body));
- Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/employee/details", MkBxUtil.initTokenHeader(), null, body,(Map) null));
- log.info("Result:{}",result);
- List<Map> data = UtilMap.getList(result, "data");
- if (Objects.nonNull(data)){
- return data.get(0);
- }else {
- return null;
- }
- }
- private static String getSecret(String appCode, String appSecret, long timeMillis){
- log.info("time:{}",timeMillis);
- String s = DigestUtils.sha256Hex(appSecret + ":" + appCode + ":" + timeMillis);
- log.info("s:{}",s);
- return s;
- }
- }
|