From 2e44b182b43fecaf6a2510c9226f18ffd2cee6c9 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 15 四月 2025 17:33:46 +0800 Subject: [PATCH] 监管平台调试完毕 --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECSuperviseUtil.java | 243 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 198 insertions(+), 45 deletions(-) diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECSuperviseUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECSuperviseUtil.java index 0ed8892..27ad97f 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECSuperviseUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECSuperviseUtil.java @@ -22,6 +22,7 @@ import org.springframework.util.StringUtils; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.concurrent.TimeUnit; @@ -37,11 +38,23 @@ @Component public class TCECSuperviseUtil { // 测试环境 +// private static final String OperatorID = "MA01H3BQ2"; +// private static final String OperatorSecret = "f1331ef0b37c2d1b"; +// private static final String SigSecret = "a6fedf0e1b27d6f7"; +// private static final String DataSecret = "50a61b93919c9604"; +// private static final String DataSecretIV = "7c8ac6861661d584"; +// private final static String url = "https://dev-gov-hlht-sc.unievbj.com/evcs/v1.0.0"; + + // 正式环境 private static final String OperatorID = "MA01H3BQ2"; - private static final String OperatorSecret = "f1331ef0b37c2d1b"; - private static final String SigSecret = "a6fedf0e1b27d6f7"; - private static final String DataSecret = "50a61b93919c9604"; - private static final String DataSecretIV = "7c8ac6861661d584"; + private static final String OperatorSecret = "a762796b2a8989b8"; + private static final String SigSecret = "52cd107eb677c004"; + private static final String DataSecret = "98f46ab6481d87c4"; + private static final String DataSecretIV = "978170fd1c11a70e"; + private final static String url = "https://hlht-dipper-sc.unievbj.com/evcs/v1.0.0"; + + + private static final String OurDataSecret = "50a61b93919c9605"; @@ -52,7 +65,6 @@ @Autowired private RedisService redisService; public static final String TOKEN_KEY = "charge_token:"; - private final static String url = "https://dev-gov-hlht-sc.unievbj.com/evcs/v1.0.0/"; /** * 获取token */ @@ -72,43 +84,118 @@ private final static String supervise_notification_operation_stats_info = "/supervise_notification_operation_stats_info"; private final static String supervise_notification_realtime_power_info = "/supervise_notification_realtime_power_info"; private final static String supervise_notification_station_info = "/supervise_notification_station_info"; - - + /** 获取token + */ +// public String queryToken(){ +// String token = redisService.getCacheObject(TOKEN_KEY); +// if(StringUtils.hasLength(token)){ +// return token; +// } +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("OperatorID", OperatorID); +// jsonObject.put("OperatorSecret", OperatorSecret); +// String params = jsonObject.toJSONString(); +// // 参数加密 +// String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params); +// // 获取签名 +// String timeStamp = System.currentTimeMillis() + ""; +// SequenceGenerator generator = new SequenceGenerator(); +// String nextSequence = generator.getNextSequence(); +// String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret); +// jsonObject = new JSONObject(); +// jsonObject.put("OperatorID", OperatorID); +// jsonObject.put("Data", data); +// jsonObject.put("TimeStamp", timeStamp); +// jsonObject.put("Seq", nextSequence); +// jsonObject.put("Sig", hmacMD5); +// String result = HttpUtils.sendPost(url+query_token, jsonObject.toJSONString()); +// String string = JSONObject.parseObject(result).getString("Data"); +// String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string); +// JSONObject tokenResult = JSONObject.parseObject(decrypt); +// token = tokenResult.getString("AccessToken"); +// Integer TokenAvailableTime = tokenResult.getInteger("TokenAvailableTime"); +// redisService.setCacheObject(TOKEN_KEY,token, (long) (TokenAvailableTime - 60), TimeUnit.SECONDS); +// return token; +// } + public String queryToken(){ + HttpRequest post = HttpUtil.createPost(url + query_token); + JSONObject info = new JSONObject(); + info.put("OperatorID", "906171535"); + info.put("OperatorSecret", OperatorSecret); + Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + post.contentType("application/json;charset=utf-8"); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); + baseRequest.setSeq("0001"); + String jsonString = JacksonUtils.toJson(info); + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", data,nextSequence,SigSecret); + baseRequest.setData(data); + baseRequest.setSig(hmacMD5); + String request_json = JacksonUtils.toJson(baseRequest); + log.info("获取三方平台授权token请求地址:" + post.getUrl()); + log.info("获取三方平台授权token请求参数:" + request_json); + log.info("获取三方平台授权token请求Data:" + jsonString); + post.body(request_json); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("获取三方平台授权token失败:" + execute.body()); + return null; + } + log.info("获取三方平台授权token响应参数:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("获取三方平台授权token失败:" + baseResult.getMsg()); + return null; + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("获取三方平台授权token响应Data:" + decrypt); + QueryTokenResult queryTokenResult = JSON.parseObject(decrypt, QueryTokenResult.class); + String token = queryTokenResult.getAccessToken(); +// Long tokenAvailableTime = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + queryTokenResult.getTokenAvailab + return token; + } /** * 获取token */ - public String queryToken(){ - String token = redisService.getCacheObject(TOKEN_KEY); - if(StringUtils.hasLength(token)){ - return token; - } - JSONObject jsonObject = new JSONObject(); - jsonObject.put("OperatorID", OperatorID); - jsonObject.put("OperatorSecret", OperatorSecret); - String params = jsonObject.toJSONString(); - // 参数加密 - String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params); - // 获取签名 - String timeStamp = System.currentTimeMillis() + ""; - SequenceGenerator generator = new SequenceGenerator(); - String nextSequence = generator.getNextSequence(); - String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret); - jsonObject = new JSONObject(); - jsonObject.put("OperatorID", OperatorID); - jsonObject.put("Data", data); - jsonObject.put("TimeStamp", timeStamp); - jsonObject.put("Seq", nextSequence); - jsonObject.put("Sig", hmacMD5); - String result = HttpUtils.sendPost(url+query_token, jsonObject.toJSONString()); - String string = JSONObject.parseObject(result).getString("Data"); - String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string); - JSONObject tokenResult = JSONObject.parseObject(decrypt); - token = tokenResult.getString("AccessToken"); - Integer TokenAvailableTime = tokenResult.getInteger("TokenAvailableTime"); - redisService.setCacheObject(TOKEN_KEY,token, (long) (TokenAvailableTime - 60), TimeUnit.SECONDS); - return token; - } +// public String queryToken(){ +// String token = redisService.getCacheObject(TOKEN_KEY); +// if(StringUtils.hasLength(token)){ +// return token; +// } +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("OperatorID", OperatorID); +// jsonObject.put("OperatorSecret", OperatorSecret); +// String params = jsonObject.toJSONString(); +// // 参数加密 +// String data = AesEncryption.encrypt(DataSecret, DataSecretIV, params); +// // 获取签名 +// String timeStamp = System.currentTimeMillis() + ""; +// SequenceGenerator generator = new SequenceGenerator(); +// String nextSequence = generator.getNextSequence(); +// String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,SigSecret); +// jsonObject = new JSONObject(); +// jsonObject.put("OperatorID", "906171535"); +// jsonObject.put("OperatorSecret", OperatorSecret); +// jsonObject.put("Data", data); +// jsonObject.put("TimeStamp", timeStamp); +// jsonObject.put("Seq", nextSequence); +// jsonObject.put("Sig", hmacMD5); +// String result = HttpUtils.sendPost(url+query_token, jsonObject.toJSONString()); +// String string = JSONObject.parseObject(result).getString("Data"); +// String decrypt = AesEncryption.decrypt(DataSecret, DataSecretIV, string); +// JSONObject tokenResult = JSONObject.parseObject(decrypt); +// token = tokenResult.getString("AccessToken"); +// Integer TokenAvailableTime = tokenResult.getInteger("TokenAvailableTime"); +// redisService.setCacheObject(TOKEN_KEY,token, (long) (TokenAvailableTime - 60), TimeUnit.SECONDS); +// return token; +// } /** @@ -173,6 +260,34 @@ */ public NotificationChargeOrderInfoResult notificationChargeOrderInfo(Operator operator, SupChargeOrderInfo info){ HttpRequest post = HttpUtil.createPost(url+supervise_notification_charge_order_info); + if (info.getOrderStatus()!=null){ + switch (info.getOrderStatus()){ + case -1: + info.setOrderStatus(7); + break; + case 0: + info.setOrderStatus(7); + break; + case 1: + info.setOrderStatus(1); + break; + case 2: + info.setOrderStatus(1); + + break; + case 3: + info.setOrderStatus(2); + break; + case 4: + info.setOrderStatus(3); + break; + case 5: + info.setOrderStatus(4); + break; + } + }else{ + info.setOrderStatus(5); + } buildBody(post, info, operator); HttpResponse execute = post.execute(); if(200 != execute.getStatus()){ @@ -197,15 +312,15 @@ /** * 构建请求参数和消息头 * @param post - * @param o + * @param */ public void buildBody(HttpRequest post, Object o, Operator operator){ Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); post.contentType("application/json;charset=utf-8"); post.header("Authorization", "Bearer " + queryToken()); - BaseRequest baseRequest = new BaseRequest(); - baseRequest.setOperatorID(operator.getOurOperatorId()); - baseRequest.setTimeStamp(timeStamp); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); baseRequest.setSeq("0001"); // 使用 Jackson 转换为 JSON ObjectMapper objectMapper = new ObjectMapper(); @@ -216,18 +331,56 @@ } catch (Exception e) { e.printStackTrace(); } - String encrypt = AesEncryption.encrypt(jsonString, DataSecret, DataSecretIV); + + String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); +// String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + baseRequest.setData(encrypt); baseRequest.setOperator(operator); SequenceGenerator generator = new SequenceGenerator(); String nextSequence = generator.getNextSequence(); - String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp+"", encrypt,nextSequence,SigSecret); + + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", encrypt,nextSequence,SigSecret); +// String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + baseRequest.setSig(hmacMD5); String request_json = JacksonUtils.toJson(baseRequest); post.body(request_json); log.info("推送三方平台请求地址:" + post.getUrl()); log.info("推送三方平台请求参数:" + request_json); log.info("推送三方平台请求Data:" + jsonString); + } + /** + * 构建请求参数和消息头 + * @param post + * @param + */ + public void buildBodyStatus(HttpRequest post, SupStationPowerInfoResult info, Operator operator){ + Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + post.contentType("application/json;charset=utf-8"); + post.header("Authorization", "Bearer " + queryToken()); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); + baseRequest.setSeq("0001"); + String request_json1 = JacksonUtils.toJson(info); + String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,request_json1); +// String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + + baseRequest.setData(encrypt); + baseRequest.setOperator(operator); + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", encrypt,nextSequence,SigSecret); +// String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + + baseRequest.setSig(hmacMD5); + String request_json = JacksonUtils.toJson(baseRequest); + post.body(request_json); + log.info("推送三方平台请求地址:" + post.getUrl()); + log.info("推送三方平台请求参数:" + request_json); + log.info("推送三方平台请求Data:" + request_json1); } /** @@ -289,7 +442,7 @@ public void superviseNotificationRealtimePowerInfo(SupStationPowerInfoResult info){ Operator operator = new Operator(); HttpRequest post = HttpUtil.createPost(url+supervise_notification_realtime_power_info); - buildBody(post, info, operator); + buildBodyStatus(post, info, operator); HttpResponse execute = post.execute(); if(200 != execute.getStatus()){ log.error("推送充换电站实时功率失败:" + execute.body()); -- Gitblit v1.7.1