From 422b10242d0e1c3164eb96a10379b9d638b169ee Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 07 四月 2025 13:46:43 +0800 Subject: [PATCH] 监管平台 --- ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java | 5 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java | 7 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java | 188 ++++++++--- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java | 14 ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java | 15 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/JianGuanTask.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/RuoYiOtherApplication.java | 9 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 13 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java | 2 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java | 578 ++++++++++++++++++++++++++++++++------ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java | 10 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/RuoYiIntegrationApplication.java | 6 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECSuperviseUtil.java | 22 13 files changed, 697 insertions(+), 174 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java index 433567d..a0e15e4 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java @@ -64,6 +64,11 @@ public PageInfo<Site> getSiteListPaging(Integer PageNo, Integer PageSize, List<String> ids) { return null; } + + @Override + public PageInfo<Site> getSiteListPagingJianGuan(Integer PageNo, Integer PageSize, List<String> ids) { + return null; + } }; } } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java index 37cb56a..5581f7f 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java @@ -55,4 +55,14 @@ PageInfo<Site> getSiteListPaging(@RequestParam("PageNo") Integer PageNo, @RequestParam("PageSize") Integer PageSize, @RequestParam("ids") List<String> ids); + /** + * 分页查询站电数据 + * @param PageNo + * @param PageSize + * @return + */ + @PostMapping("/site/getSiteListPagingJianGuan") + PageInfo<Site> getSiteListPagingJianGuan(@RequestParam("PageNo") Integer PageNo, + @RequestParam("PageSize") Integer PageSize, + @RequestParam("ids") List<String> ids); } diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java index c3ed65e..e260cce 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/TCECClient.java @@ -23,7 +23,7 @@ * @return */ @PostMapping("/evcs/v1.0/supervise_notification_station_info") - R superviseNotificationStationInfo(@RequestParam Integer id); + R superviseNotificationStationInfo(@RequestParam("id") Integer id); /** * 接口状态变化后推送给第三方 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 9efce5e..93cfb37 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -625,4 +625,17 @@ PageInfo<Site> page = siteService.lambdaQuery().eq(Site::getStatus, 1).in(ids.size() > 0, Site::getId, ids).page(pageInfo); return page; } + /** + * 分页查询站电数据 + * @param PageNo + * @param PageSize + * @return + */ + @PostMapping("/getSiteListPagingJianGuan") + public PageInfo<Site> getSiteListPagingJianGuan(@RequestParam("PageNo") Integer PageNo, @RequestParam("PageSize") Integer PageSize, + @RequestParam("ids") List<String> ids){ + PageInfo<Site> pageInfo = new PageInfo<>(PageNo, PageSize); + PageInfo<Site> page = siteService.lambdaQuery().eq(Site::getStatus, 1).in(ids.size() > 0, Site::getId, ids).page(pageInfo); + return page; + } } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/RuoYiIntegrationApplication.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/RuoYiIntegrationApplication.java index a6e9f2b..8848895 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/RuoYiIntegrationApplication.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/RuoYiIntegrationApplication.java @@ -27,7 +27,11 @@ @EnableBinding({ Source.class, Sink.class }) public class RuoYiIntegrationApplication { public static void main(String[] args) { - SpringApplication.run(RuoYiIntegrationApplication.class, args); + try{ + SpringApplication.run(RuoYiIntegrationApplication.class, args); + }catch (Exception e){ + e.printStackTrace(); + } System.out.println("(♥◠‿◠)ノ゙ 硬件集成模块启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java index 9eaf611..87d2748 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java @@ -1,6 +1,7 @@ package com.ruoyi.integration.drainage; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.JacksonUtils; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; @@ -13,6 +14,9 @@ import com.ruoyi.integration.drainage.kuaidian.model.*; import com.ruoyi.integration.drainage.model.*; import com.ruoyi.integration.drainage.model.enu.*; +import com.ruoyi.integration.drainage.util.AesEncryption; +import com.ruoyi.integration.drainage.util.HMacMD5Util; +import com.ruoyi.integration.drainage.util.SequenceGenerator; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; @@ -103,19 +107,22 @@ Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); baseResult.setTimeStamp(mapKey); baseResult.setSeq("0001"); + //校验token和签名 String operatorID = baseRequest.getOperatorID(); String sig = baseRequest.getSig(); Long timeStamp = baseRequest.getTimeStamp(); String data = baseRequest.getData(); String seq = baseRequest.getSeq(); + if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ baseResult.setRet(4003); baseResult.setMsg("参数异常"); return baseResult; } - + R<Operator> r = operatorClient.getOperator(operatorID); + if(200 != r.getCode()){ baseResult.setRet(500); baseResult.setMsg("系统异常"); @@ -139,6 +146,30 @@ if(!sign.equals(sig)){ baseResult.setRet(4001); baseResult.setMsg("签名校验失败"); + return baseResult; + } + return baseResult; + } + public BaseResult requestCheckJianGuan(Boolean tokenCheck, BaseRequest baseRequest, HttpServletRequest request){ + Operator operator = new Operator(); + BaseResult baseResult = new BaseResult(); + baseResult.setRet(0); + baseResult.setMsg("成功"); + baseResult.setOperatorID(baseRequest.getOperatorID()); + operator.setOperatorId(baseRequest.getOperatorID()); + Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + baseResult.setTimeStamp(mapKey); + baseResult.setSeq("0001"); + //校验token和签名 + String operatorID = baseRequest.getOperatorID(); + String sig = baseRequest.getSig(); + Long timeStamp = baseRequest.getTimeStamp(); + String data = baseRequest.getData(); + String seq = baseRequest.getSeq(); + baseResult.setOperator(operator); + if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ + baseResult.setRet(4003); + baseResult.setMsg("参数异常"); return baseResult; } return baseResult; @@ -214,6 +245,48 @@ log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); return baseResult; } + /** + * 获取token + * @return + */ + @PostMapping("/query_token_jianguan") + public BaseResult queryTokenJianguan(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ + log.info("三方平台获取token请求参数:" + JacksonUtils.toJson(baseRequest)); + BaseResult baseResult = requestCheckJianGuan(false, baseRequest, request); + if(0 != baseResult.getRet()){ + log.info("三方平台获取token响应Data:"); + baseResult.setData(""); + baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); + log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); + return baseResult; + } + QueryTokenResult queryTokenResult = new QueryTokenResult(); + //生成token + Operator operator = baseResult.getOperator(); + Map<String, Object> token = tokenUtil.createToken(operator); + String access_token = token.get("access_token").toString(); + Long expires_in = Long.valueOf(token.get("expires_in").toString()); + + queryTokenResult.setOperatorID("906171535"); + queryTokenResult.setSuccStat(0); + queryTokenResult.setFailReason(0); + queryTokenResult.setAccessToken(access_token); + queryTokenResult.setTokenAvailableTime(expires_in * 60); + //参数加密 + String jsonString = JacksonUtils.toJson(queryTokenResult); + log.info("三方平台获取token响应Data:" + jsonString); +// String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); +// baseResult.setData(encrypt); + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,jsonString); + String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); + return baseResult; + } @@ -227,7 +300,7 @@ public BaseResult queryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ log.info("三方平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); + BaseResult baseResult = requestCheckJianGuan(true, baseRequest, request); if(0 != baseResult.getRet()){ log.info("三方平台查询充电站信息响应Data:"); baseResult.setData(""); @@ -1701,19 +1774,8 @@ */ @PostMapping("/supervise_query_operator_info") public BaseResult superviseQueryOperatorInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ - log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); - //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); - if(0 != baseResult.getRet()){ - log.info("监管平台查询充电站信息响应Data:"); - baseResult.setData(""); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - Operator operator = baseResult.getOperator(); //解密参数 - String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); + String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); log.info("监管平台查询充电站信息请求Data:" + decrypt); SuperviseQueryOperatorInfo superviseQueryOperatorInfo = JSON.parseObject(decrypt, SuperviseQueryOperatorInfo.class); Integer pageNo = superviseQueryOperatorInfo.getPageNo(); @@ -1740,12 +1802,17 @@ // 将superviseQueryOperatorInfoResults转化为json数组 superviseQueryOperatorInfoResultPage.setOperatorInfos(superviseQueryOperatorInfoResults); String jsonString = JacksonUtils.toJson(superviseQueryOperatorInfoResultPage); - //参数加密 - log.info("监管平台查询充电站信息响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(superviseQueryOperatorInfoResultPage)); + String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + BaseResult baseResult = new BaseResult(); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + baseResult.setRet(0); + baseResult.setMsg("OK"); + baseResult.setOperatorID(OperatorID); return baseResult; } @@ -1759,20 +1826,9 @@ */ @PostMapping("/supervise_query_stations_info") public BaseResult superviseQueryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ - log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); - //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); - if(0 != baseResult.getRet()){ - log.info("监管平台查询充电站信息响应Data:"); - baseResult.setData(""); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - Operator operator = baseResult.getOperator(); + String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); + log.info("监管平台supervise_query_stations_infoData:" + decrypt); //解密参数 - String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); - log.info("监管平台查询充电站信息请求Data:" + decrypt); QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); Integer pageNo = queryStationsInfo.getPageNo(); Integer pageSize = queryStationsInfo.getPageSize(); @@ -1790,13 +1846,17 @@ queryStationsInfoResult.setPageCount((0 == (siteListPaging.getTotal() % pageSize) ? 0 : 1) + Double.valueOf(siteListPaging.getTotal() / pageSize).intValue()); queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue()); queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); - //参数加密 - String jsonString = JacksonUtils.toJson(queryStationsInfoResult); - log.info("监管平台查询充电站信息响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(queryStationsInfoResult)); + String hmacMD5 = HMacMD5Util.getHMacMD5(OurOperatorID,timeStamp, data,nextSequence,OurSigSecret); + BaseResult baseResult = new BaseResult(); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + baseResult.setRet(0); + baseResult.setMsg("OK"); + baseResult.setOperatorID(OurOperatorID); return baseResult; } /** @@ -1808,18 +1868,9 @@ @PostMapping("/supervise_query_station_status") public BaseResult superviseQueryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ log.info("监管平台查询充换电站状态信息请求参数:" + JacksonUtils.toJson(baseRequest)); - //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); - if(0 != baseResult.getRet()){ - log.info("监管平台查询充换电站状态信息响应Data:"); - baseResult.setData(""); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充换电站状态信息响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - Operator operator = baseResult.getOperator(); + String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); + log.info("监管平台supervise_query_station_statusData:" + decrypt); //解密参数 - String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); log.info("监管平台查询充换电站状态信息请求Data:" + decrypt); QueryStationStatus queryStationStatus = JSON.parseObject(decrypt, QueryStationStatus.class); List<String> stationIDs = queryStationStatus.getStationIDs(); @@ -1885,15 +1936,34 @@ } queryStationStatusResult.setStationStatusInfos(stationStatusInfos); } - //参数加密 - String jsonString = JacksonUtils.toJson(queryStationStatusResult); - log.info("监管平台查询充电站信息响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(queryStationStatusResult)); + String hmacMD5 = HMacMD5Util.getHMacMD5(OurOperatorID,timeStamp, data,nextSequence,OurSigSecret); + BaseResult baseResult = new BaseResult(); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + baseResult.setRet(0); + baseResult.setMsg("OK"); + baseResult.setOperatorID(OurOperatorID); return baseResult; } + + // 测试环境 + 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 OurDataSecret = "50a61b93919c9605"; + private static final String OurDataSecretIV = "7c8ac6861661d585"; + private static final String OurSigSecret = "a6fedf0e1b27d6f6"; + private static final String OurOperatorID = "MA01H3BQ3"; + private static final String OurOperatorSecret = "f1331ef0b37c2d1a"; + + /** @@ -2058,7 +2128,7 @@ * @return */ @PostMapping("/supervise_notification_station_info") - public R superviseNotificationStationInfo(@RequestParam Integer id){ + public R superviseNotificationStationInfo(@RequestParam("id") Integer id){ String serviceTel = systemConfigurationClient.getServerPhone().getData(); Site site = siteClient.getSiteAll().getData().stream().filter(e -> e.getId().equals(id)).findFirst().orElse(new Site()); 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 9e859d2..3cd4406 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 @@ -40,6 +40,12 @@ private static final String DataSecret = "50a61b93919c9604"; private static final String DataSecretIV = "7c8ac6861661d584"; + + private static final String OurDataSecret = "50a61b93919c9605"; + private static final String OurDataSecretIV = "7c8ac6861661d585"; + private static final String OurSigSecret = "a6fedf0e1b27d6f6"; + private static final String OurOperatorID = "MA01H3BQ3"; + private static final String OurOperatorSecret = "f1331ef0b37c2d1a"; @Autowired private RedisService redisService; public static final String TOKEN_KEY = "charge_token:"; @@ -122,7 +128,7 @@ return null; } //解密参数 - String decrypt = AESUtil.decrypt(baseResult.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("推送三方平台设备状态Data:" + decrypt); NotificationStationStatusResult notificationStationStatusResult = JSON.parseObject(decrypt, NotificationStationStatusResult.class); return notificationStationStatusResult; @@ -150,7 +156,7 @@ return null; } //解密参数 - String decrypt = AESUtil.decrypt(baseResult.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("推送三方平台充电状态Data:" + decrypt); NotificationEquipChargeStatusResult notificationEquipChargeStatusResult = JSON.parseObject(decrypt, NotificationEquipChargeStatusResult.class); return notificationEquipChargeStatusResult; @@ -178,7 +184,7 @@ return null; } //解密参数 - String decrypt = AESUtil.decrypt(baseResult.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("推送三方平台充电订单信息Data:" + decrypt); NotificationChargeOrderInfoResult notificationChargeOrderInfoResult = JSON.parseObject(decrypt, NotificationChargeOrderInfoResult.class); return notificationChargeOrderInfoResult; @@ -199,7 +205,7 @@ baseRequest.setTimeStamp(timeStamp); baseRequest.setSeq("0001"); String jsonString = JacksonUtils.toJson(o); - String encrypt = AesEncryption.encrypt(jsonString, operator.getDataSecret(), operator.getDataSecretIv()); + String encrypt = AesEncryption.encrypt(jsonString, DataSecret, DataSecretIV); baseRequest.setData(encrypt); baseRequest.setOperator(operator); // baseRequest.setSig(buildSign(baseRequest)); @@ -232,7 +238,7 @@ return ; } //解密参数 - String decrypt = AESUtil.decrypt(baseResult.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("推送充电用能统计信息Data:" + decrypt); } @@ -258,7 +264,7 @@ return ; } //解密参数 - String decrypt = AESUtil.decrypt(baseResult.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("推送充换电站信息信息Data:" + decrypt); } /** @@ -283,13 +289,13 @@ return ; } //解密参数 - String decrypt = AESUtil.decrypt(baseResult.getData(), operator.getDataSecret(), operator.getDataSecretIv()); + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); log.info("推送充换电站实时功率信息Data:" + decrypt); } public static void main(String[] args) { BaseModel model = new BaseModel(); - model.setOperatorID("MA25CNM38"); + model.setOperatorID("MA01H3BQ2"); model.setData("AoArdDDcmHcmOMkCLHodTpY1xLtt9yhLqxvKPyfdlmEOBj1LJnQM+Z4JOZllt3Pj9rubfgxJ51zMAfzquQegJzHGAT9Y7JrKFzFe6jGtXo0="); model.setTimeStamp(20250205120800L); model.setSeq("0001"); diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java index edc211e..2478762 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECUtil.java @@ -337,6 +337,20 @@ } return sign; } + public static String ourBuildSignJianGuan(BaseModel model){ + Operator operator = model.getOperator(); + if(null == operator){ + return ""; + } + //签名秘钥SigSecret + String key = operator.getOurSigSecret(); + String sign = ""; + //进行字符串拼接、计算 + String m1 = new StringBuilder(model.getOperatorID()).append(model.getData()).append(model.getTimeStamp()).append(model.getSeq()).toString(); + sign = SignUtil.hmacSign(m1, key); + return sign; + } + diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController1.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java similarity index 77% rename from ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController1.java rename to ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java index 7b24b27..f03e1c8 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController1.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/util/TCECCJianGuanontroller.java @@ -1,26 +1,25 @@ -package com.ruoyi.integration.drainage; +package com.ruoyi.integration.drainage.util; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.JacksonUtils; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; -import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.HttpUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.api.vo.StartChargeResult; +import com.ruoyi.integration.drainage.AESUtil; +import com.ruoyi.integration.drainage.TCECSuperviseUtil; +import com.ruoyi.integration.drainage.TCECUtil; +import com.ruoyi.integration.drainage.TokenUtil; import com.ruoyi.integration.drainage.kuaidian.TCECKDUtil; import com.ruoyi.integration.drainage.kuaidian.model.*; import com.ruoyi.integration.drainage.model.*; import com.ruoyi.integration.drainage.model.enu.*; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; -import com.ruoyi.order.api.dto.ChargingStatisticeDTO; import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.AddTripartitePlatformOrder; @@ -32,16 +31,17 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.*; import java.util.stream.Collectors; @@ -52,13 +52,12 @@ */ @Slf4j @RestController -@RequestMapping("/evcs/v1.0") -public class TCECController1 { +@RequestMapping("/evcs/v2.0") +public class TCECCJianGuanontroller { @Resource private SiteClient siteClient; - @Autowired - private TCECSuperviseUtil tcecSuperviseUtil; + @Resource private ChargingPileClient chargingPileClient; @@ -91,15 +90,9 @@ @Resource private SystemConfigurationClient systemConfigurationClient; - // 监管平台密钥 向量 地址 - private static String ourDataSecret = ""; - private static String ourDataSecretIv = ""; - private static String url = "https://dev-gov-hlht-sc.unievbj.com/evcs/v1.0.0/";// 测试 -// private static String url = "https://hlht-dipper-sc.unievbj.com/evcs/v1.0.0/";// 正式 - private static String operatorSecret = "f1331ef0b37c2d1b";// 测试 -// private static String operatorSecret = "a762796b2a8989b8";// 正式 - - + @Autowired + private TCECSuperviseUtil tcecSuperviseUtil; + private final static String operatorId = "906171535"; /** * 请求校验 @@ -115,19 +108,22 @@ Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); baseResult.setTimeStamp(mapKey); baseResult.setSeq("0001"); + //校验token和签名 String operatorID = baseRequest.getOperatorID(); String sig = baseRequest.getSig(); Long timeStamp = baseRequest.getTimeStamp(); String data = baseRequest.getData(); String seq = baseRequest.getSeq(); + if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ baseResult.setRet(4003); baseResult.setMsg("参数异常"); return baseResult; } - + R<Operator> r = operatorClient.getOperator(operatorID); + if(200 != r.getCode()){ baseResult.setRet(500); baseResult.setMsg("系统异常"); @@ -155,11 +151,36 @@ } return baseResult; } + public BaseResult requestCheckJianGuan(Boolean tokenCheck, BaseRequest baseRequest, HttpServletRequest request){ + Operator operator = new Operator(); + BaseResult baseResult = new BaseResult(); + baseResult.setRet(0); + baseResult.setMsg("成功"); + baseResult.setOperatorID(baseRequest.getOperatorID()); + operator.setOperatorId(baseRequest.getOperatorID()); + Long mapKey = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + baseResult.setTimeStamp(mapKey); + baseResult.setSeq("0001"); + //校验token和签名 + String operatorID = baseRequest.getOperatorID(); + String sig = baseRequest.getSig(); + Long timeStamp = baseRequest.getTimeStamp(); + String data = baseRequest.getData(); + String seq = baseRequest.getSeq(); + baseResult.setOperator(operator); + if(StringUtils.isEmpty(operatorID) || StringUtils.isEmpty(sig) || StringUtils.isEmpty(data) || StringUtils.isEmpty(seq) || null == timeStamp){ + baseResult.setRet(4003); + baseResult.setMsg("参数异常"); + return baseResult; + } + return baseResult; + } + /** * 获取token * @return @@ -167,7 +188,7 @@ @PostMapping("/query_token") public BaseResult queryToken(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ log.info("三方平台获取token请求参数:" + JacksonUtils.toJson(baseRequest)); - BaseResult baseResult = requestCheck(false, baseRequest, request); + BaseResult baseResult = requestCheckJianGuan(false, baseRequest, request); if(0 != baseResult.getRet()){ log.info("三方平台获取token响应Data:"); baseResult.setData(""); @@ -176,38 +197,8 @@ return baseResult; } QueryTokenResult queryTokenResult = new QueryTokenResult(); - Operator operator = baseResult.getOperator(); - if(null == operator){ - queryTokenResult.setSuccStat(1); - queryTokenResult.setFailReason(1); - //参数加密 - String jsonString = JacksonUtils.toJson(queryTokenResult); - log.info("三方平台获取token响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - - //解密参数 - String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); - log.info("三方平台获取token请求Data:" + decrypt); - QueryToken queryToken = JSON.parseObject(decrypt, QueryToken.class); - if(!queryToken.getOperatorSecret().equals(operator.getOurOperatorSecret())){ - queryTokenResult.setSuccStat(1); - queryTokenResult.setFailReason(2); - //参数加密 - String jsonString = JacksonUtils.toJson(queryTokenResult); - log.info("三方平台获取token响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - //生成token + Operator operator = baseResult.getOperator(); Map<String, Object> token = tokenUtil.createToken(operator); String access_token = token.get("access_token").toString(); Long expires_in = Long.valueOf(token.get("expires_in").toString()); @@ -220,9 +211,15 @@ //参数加密 String jsonString = JacksonUtils.toJson(queryTokenResult); log.info("三方平台获取token响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); +// String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); +// baseResult.setData(encrypt); + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,jsonString); + String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + baseResult.setData(data); + baseResult.setSig(hmacMD5); log.info("三方平台获取token响应参数:" + JacksonUtils.toJson(baseResult)); return baseResult; } @@ -239,7 +236,7 @@ public BaseResult queryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ log.info("三方平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); + BaseResult baseResult = requestCheckJianGuan(true, baseRequest, request); if(0 != baseResult.getRet()){ log.info("三方平台查询充电站信息响应Data:"); baseResult.setData(""); @@ -292,12 +289,14 @@ List<StationInfo> StationInfos = new ArrayList<>(); for (Site datum : sites) { StationInfo stationInfo = new StationInfo(); - stationInfo.setAreaCodeCountryside(datum.getAreaCodeCountryside()); + stationInfo.setStationUniqueNumber(datum.getCode()); + stationInfo.setAreaCodeCountryside(datum.getCountryCode()); stationInfo.setStationClassification(datum.getStationClassification()); stationInfo.setGeneralApplicationType(datum.getGeneralApplicationType()); if (org.springframework.util.StringUtils.hasLength(datum.getSwapMatchCars())){ stationInfo.setSwapMatchCars(Arrays.asList(datum.getSwapMatchCars().split(","))); } + stationInfo.setSiteGuide(datum.getGuide()); stationInfo.setBusineHours(datum.getStartServiceTime()); stationInfo.setRoundTheClock(datum.getRoundTheClock()); stationInfo.setParkType(datum.getParkType()); @@ -431,6 +430,7 @@ EquipmentInfo equipmentInfo = new EquipmentInfo(); equipmentInfo.setEquipmentID(tChargingPile.getId().toString()); equipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode()); + equipmentInfo.setEquipmentName(tChargingPile.getName()); equipmentInfo.setManufacturerName(tChargingPile.getManufacturer()); equipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType()); equipmentInfo.setEquipmentUniqueNumber(tChargingPile.getEquipmentUniqueNumber()); @@ -1713,19 +1713,8 @@ */ @PostMapping("/supervise_query_operator_info") public BaseResult superviseQueryOperatorInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ - log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); - //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); - if(0 != baseResult.getRet()){ - log.info("监管平台查询充电站信息响应Data:"); - baseResult.setData(""); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - Operator operator = baseResult.getOperator(); //解密参数 - String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); + String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); log.info("监管平台查询充电站信息请求Data:" + decrypt); SuperviseQueryOperatorInfo superviseQueryOperatorInfo = JSON.parseObject(decrypt, SuperviseQueryOperatorInfo.class); Integer pageNo = superviseQueryOperatorInfo.getPageNo(); @@ -1752,12 +1741,17 @@ // 将superviseQueryOperatorInfoResults转化为json数组 superviseQueryOperatorInfoResultPage.setOperatorInfos(superviseQueryOperatorInfoResults); String jsonString = JacksonUtils.toJson(superviseQueryOperatorInfoResultPage); - //参数加密 - log.info("监管平台查询充电站信息响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(superviseQueryOperatorInfoResultPage)); + String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + BaseResult baseResult = new BaseResult(); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + baseResult.setRet(0); + baseResult.setMsg("OK"); + baseResult.setOperatorID(OperatorID); return baseResult; } @@ -1771,20 +1765,9 @@ */ @PostMapping("/supervise_query_stations_info") public BaseResult superviseQueryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ - log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); - //校验token和签名 - BaseResult baseResult = requestCheck(true, baseRequest, request); - if(0 != baseResult.getRet()){ - log.info("监管平台查询充电站信息响应Data:"); - baseResult.setData(""); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); - return baseResult; - } - Operator operator = baseResult.getOperator(); + String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); + log.info("监管平台supervise_query_stations_infoData:" + decrypt); //解密参数 - String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); - log.info("监管平台查询充电站信息请求Data:" + decrypt); QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); Integer pageNo = queryStationsInfo.getPageNo(); Integer pageSize = queryStationsInfo.getPageSize(); @@ -1795,6 +1778,9 @@ if(null == pageSize){ pageSize = 50; } + if(stationIDs==null){ + stationIDs = new ArrayList<String>(); + } PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs); List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData(); QueryStationsInfoResult queryStationsInfoResult = new QueryStationsInfoResult(); @@ -1802,18 +1788,416 @@ queryStationsInfoResult.setPageCount((0 == (siteListPaging.getTotal() % pageSize) ? 0 : 1) + Double.valueOf(siteListPaging.getTotal() / pageSize).intValue()); queryStationsInfoResult.setItemSize(Long.valueOf(siteListPaging.getTotal()).intValue()); queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); - //参数加密 - String jsonString = JacksonUtils.toJson(queryStationsInfoResult); - log.info("监管平台查询充电站信息响应Data:" + jsonString); - String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); - baseResult.setData(encrypt); - baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); - log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + for (StationInfo stationInfo : queryStationsInfoResult.getStationInfos()) { + stationInfo.setStationClassification(stationInfo.getStationClassification()==null?1:stationInfo.getStationClassification()); + stationInfo.setGeneralApplicationType(stationInfo.getGeneralApplicationType()==null?1:stationInfo.getGeneralApplicationType()); + stationInfo.setSiteGuide(org.springframework.util.StringUtils.hasLength(stationInfo.getSiteGuide()) ?stationInfo.getSiteGuide():"站点引导"); + if (stationInfo.getConstruction()!=null){ + stationInfo.setConstruction(stationInfo.getConstruction() == 0 ? ConstructionEnum.OTHER.getType() : stationInfo.getConstruction()); + }else{ + stationInfo.setConstruction(255); + } + stationInfo.setRoundTheClock(stationInfo.getRoundTheClock()==null?1:stationInfo.getRoundTheClock()); + stationInfo.setParkType(stationInfo.getParkType()==null?1:stationInfo.getParkType()); + stationInfo.setElectricityFee("{\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\"}"); + stationInfo.setServiceFee("{"+"\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\""+"}"); + stationInfo.setElectricityType(stationInfo.getElectricityType()==null?1:stationInfo.getElectricityType()); + stationInfo.setBusinessExpandType(stationInfo.getBusinessExpandType()==null?1:stationInfo.getBusinessExpandType()); + stationInfo.setCapacity(stationInfo.getCapacity()==null?new BigDecimal("1.0000"):stationInfo.getCapacity()); + stationInfo.setRatedPower(stationInfo.getCapacity()==null?new BigDecimal("40.0000"):stationInfo.getCapacity()); + stationInfo.setPeriodFee(1); + stationInfo.setOfficialRunTime(org.springframework.util.StringUtils.hasLength(stationInfo.getOfficialRunTime())?stationInfo.getOfficialRunTime():"2025-01-01"); + stationInfo.setVideoMonitor(stationInfo.getVideoMonitor()==null?1:stationInfo.getVideoMonitor()); + int i = 0; + for (EquipmentInfo equipmentInfo : stationInfo.getEquipmentInfos()) { + i++; + equipmentInfo.setManufacturerID("906171534"); + equipmentInfo.setEquipmentUniqueNumber(org.springframework.util.StringUtils.hasLength(equipmentInfo.getEquipmentUniqueNumber())?equipmentInfo.getEquipmentUniqueNumber():"OIX123"+i); + equipmentInfo.setManufacturerName(org.springframework.util.StringUtils.hasLength(equipmentInfo.getManufacturerName())?equipmentInfo.getManufacturerName():"生产商"); + equipmentInfo.setEquipmentModel(org.springframework.util.StringUtils.hasLength(equipmentInfo.getEquipmentModel())?equipmentInfo.getEquipmentModel():"DEVICE"+i); + equipmentInfo.setProductionDate(org.springframework.util.StringUtils.hasLength(equipmentInfo.getProductionDate())?equipmentInfo.getProductionDate():"2024-01-01"); + equipmentInfo.setEquipmentType(equipmentInfo.getEquipmentType()==null?1:equipmentInfo.getEquipmentType()); + for (ConnectorInfo connectorInfo : equipmentInfo.getConnectorInfos()) { + connectorInfo.setEquipmentClassification(connectorInfo.getEquipmentClassification()==null?1:connectorInfo.getEquipmentClassification()); + connectorInfo.setVoltageUpperLimits(connectorInfo.getConstantVoltageUpperLimits()==null?new BigDecimal("1.0000"):connectorInfo.getConstantVoltageUpperLimits()); + connectorInfo.setVoltageLowerLimits(connectorInfo.getConstantVoltageLowerLimits()==null?new BigDecimal("1.0000"):connectorInfo.getConstantVoltageLowerLimits()); + connectorInfo.setCurrent(connectorInfo.getCurrent()==null?1:connectorInfo.getCurrent()); + connectorInfo.setPower(connectorInfo.getPower()==null?new BigDecimal("1.0000"):connectorInfo.getPower()); + connectorInfo.setNationalStandard(connectorInfo.getNationalStandard()==null?1:connectorInfo.getNationalStandard()); + connectorInfo.setAuxPower(connectorInfo.getAuxPower()==null?1:connectorInfo.getAuxPower()); + connectorInfo.setOpreateStatus(connectorInfo.getOpreateStatus()==null?50:connectorInfo.getOpreateStatus()); + } + equipmentInfo.setPower(equipmentInfo.getPower()==null?new BigDecimal("1.0000"):equipmentInfo.getPower()); + equipmentInfo.setEquipmentClassification(equipmentInfo.getEquipmentClassification()==null?1:equipmentInfo.getEquipmentClassification()); + + } + stationInfo.setEquipmentOwnerName("明星新能源"); + stationInfo.setResidentNo("A1234"); + stationInfo.setSupplyType(stationInfo.getSupplyType()==null?1:stationInfo.getSupplyType()); + stationInfo.setWattHourMeterNo(org.springframework.util.StringUtils.hasLength(stationInfo.getWattHourMeterNo())?stationInfo.getWattHourMeterNo():UUID.randomUUID().toString().replaceAll("-", "")); + stationInfo.setForwardPower(stationInfo.getForwardPower()==null?"1.3654":stationInfo.getForwardPower()); + String uuid = UUID.randomUUID().toString(); + String randomString = uuid.replaceAll("-", ""); // 去除'-' + stationInfo.setRecordUniqueNo(randomString); + + } + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(queryStationsInfoResult)); + String hmacMD5 = HMacMD5Util.getHMacMD5(OurOperatorID,timeStamp, data,nextSequence,OurSigSecret); + BaseResult baseResult = new BaseResult(); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + baseResult.setRet(0); + baseResult.setMsg("OK"); + baseResult.setOperatorID("906171535"); return baseResult; } + /** + * 查询充换电站状态信息 + * @param baseRequest + * @param request + * @return + */ + @PostMapping("/supervise_query_station_status") + public BaseResult superviseQueryStationStatus(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ + log.info("监管平台查询充换电站状态信息请求参数:" + JacksonUtils.toJson(baseRequest)); + String decrypt = AESUtil.decrypt(baseRequest.getData(), OurDataSecret, OurDataSecretIV); + log.info("监管平台supervise_query_station_statusData:" + decrypt); + //解密参数 + log.info("监管平台查询充换电站状态信息请求Data:" + decrypt); + QueryStationStatus queryStationStatus = JSON.parseObject(decrypt, QueryStationStatus.class); + List<String> stationIDs = queryStationStatus.getStationIDs(); + String operatorID = queryStationStatus.getOperatorID(); + List<Integer> stationIDList = new ArrayList<>(); + for (String stationID : stationIDs) { + stationIDList.add(Integer.valueOf(stationID)); + } + + QueryStationStatusResult queryStationStatusResult = new QueryStationStatusResult(); + List<StationStatusInfo> stationStatusInfos = new ArrayList<>(); + + // 查询站点下的桩信息状态 + List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(stationIDList).getData(); + if(!CollectionUtils.isEmpty(chargingPiles)){ + List<Integer> pileIds = chargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); + List<TChargingGun> chargingGuns = chargingGunClient.getChargingGunByChargingPileIds(pileIds).getData(); + if(!CollectionUtils.isEmpty(chargingGuns)){ + for (Integer stationID : stationIDList) { + StationStatusInfo stationStatusInfo = new StationStatusInfo(); + stationStatusInfo.setOperatorID(operatorID); + stationStatusInfo.setEquipmentOwnerID(operatorId); + stationStatusInfo.setStationID(String.valueOf(stationID)); + List<ConnectorStatusInfo> connectorStatusInfos = new ArrayList<>(); + for (TChargingGun chargingGun : chargingGuns) { + ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); + connectorStatusInfo.setOperatorID(operatorId); + connectorStatusInfo.setEquipmentOwnerID(operatorId); + connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); + connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); + connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); + connectorStatusInfo.setEquipmentClassification(1); + switch (chargingGun.getStatus()){ + case 1: + connectorStatusInfo.setStatus(0); + break; + case 2: + connectorStatusInfo.setStatus(1); + break; + case 3: + connectorStatusInfo.setStatus(2); + break; + case 4: + connectorStatusInfo.setStatus(3); + break; + case 5: + connectorStatusInfo.setStatus(3); + break; + case 6: + connectorStatusInfo.setStatus(4); + break; + case 7: + connectorStatusInfo.setStatus(255); + break; + } + connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + connectorStatusInfos.add(connectorStatusInfo); + } + stationStatusInfo.setConnectorStatusInfos(connectorStatusInfos); + stationStatusInfos.add(stationStatusInfo); + } + } + queryStationStatusResult.setStationStatusInfos(stationStatusInfos); + } + String timeStamp = System.currentTimeMillis() + ""; + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(OurDataSecret, OurDataSecretIV,JSONObject.toJSONString(queryStationStatusResult)); + String hmacMD5 = HMacMD5Util.getHMacMD5(OurOperatorID,timeStamp, data,nextSequence,OurSigSecret); + BaseResult baseResult = new BaseResult(); + baseResult.setData(data); + baseResult.setSig(hmacMD5); + baseResult.setRet(0); + baseResult.setMsg("OK"); + baseResult.setOperatorID("906171535"); + return baseResult; + } + + // 测试环境 + 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 OurDataSecret = "50a61b93919c9605"; + private static final String OurDataSecretIV = "7c8ac6861661d585"; + private static final String OurSigSecret = "a6fedf0e1b27d6f6"; + private static final String OurOperatorID = "MA01H3BQ3"; + private static final String OurOperatorSecret = "f1331ef0b37c2d1a"; + + + + + /** + * 推送充电设备接口状态信息 + * @param chargingGun + * @return + */ + public R pushSuperviseNotificationStationStatus(TChargingGun chargingGun){ + ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo(); + connectorStatusInfo.setOperatorID(operatorId); + connectorStatusInfo.setEquipmentOwnerID(operatorId); + connectorStatusInfo.setStationID(String.valueOf(chargingGun.getSiteId())); + connectorStatusInfo.setEquipmentID(String.valueOf(chargingGun.getChargingPileId())); + connectorStatusInfo.setConnectorID(chargingGun.getFullNumber()); + connectorStatusInfo.setEquipmentClassification(1); + switch (chargingGun.getStatus()){ + case 1: + connectorStatusInfo.setStatus(0); + break; + case 2: + connectorStatusInfo.setStatus(1); + break; + case 3: + connectorStatusInfo.setStatus(2); + break; + case 4: + connectorStatusInfo.setStatus(3); + break; + case 5: + connectorStatusInfo.setStatus(3); + break; + case 6: + connectorStatusInfo.setStatus(4); + break; + case 7: + connectorStatusInfo.setStatus(255); + break; + } + connectorStatusInfo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + List<Operator> operators = operatorClient.getAllOperator().getData(); + for (Operator operator : operators) { + tcecSuperviseUtil.notificationStationStatus(operator, connectorStatusInfo); + } + return R.ok(); + } + /** + * 推送充电状态信息 + * @param chargingOrder + * @return + */ + public R pushSuperviseNotificationEquipChargeStatus(TChargingOrder chargingOrder){ + SupEquipChargeStatus supEquipChargeStatus = new SupEquipChargeStatus(); + supEquipChargeStatus.setOperatorID(operatorId); + supEquipChargeStatus.setEquipmentOwnerID(operatorId); + supEquipChargeStatus.setStationID(String.valueOf(chargingOrder.getSiteId())); + supEquipChargeStatus.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); + supEquipChargeStatus.setOrderNo(operatorId+chargingOrder.getCode()); + switch (chargingOrder.getStatus()){ + case 2: + supEquipChargeStatus.setConnectorStatus(1); + break; + case 3: + supEquipChargeStatus.setConnectorStatus(2); + break; + case 4: + supEquipChargeStatus.setConnectorStatus(3); + break; + case 5: + supEquipChargeStatus.setConnectorStatus(4); + break; + } + TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); + supEquipChargeStatus.setConnectorID(chargingGun.getFullNumber()); + supEquipChargeStatus.setEquipmentClassification(1); + supEquipChargeStatus.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + switch (chargingGun.getStatus()){ + case 1: + supEquipChargeStatus.setConnectorStatus(0); + break; + case 2: + supEquipChargeStatus.setConnectorStatus(1); + break; + case 3: + supEquipChargeStatus.setConnectorStatus(2); + break; + case 4: + supEquipChargeStatus.setConnectorStatus(3); + break; + case 5: + supEquipChargeStatus.setConnectorStatus(3); + break; + case 6: + supEquipChargeStatus.setConnectorStatus(4); + break; + case 7: + supEquipChargeStatus.setConnectorStatus(255); + break; + } + supEquipChargeStatus.setCurrentA(chargingOrder.getCurrent()); + supEquipChargeStatus.setSOC(new BigDecimal(chargingOrder.getEndSoc())); + supEquipChargeStatus.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); + supEquipChargeStatus.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + supEquipChargeStatus.setTotalPower(chargingOrder.getElectrovalence()); + List<Operator> operators = operatorClient.getAllOperator().getData(); + for (Operator operator : operators) { + tcecSuperviseUtil.notificationSupEquipChargeStatus(operator, supEquipChargeStatus); + } + return R.ok(); + } + /** + * 推送充电订单信息 + * @param chargingOrder + * @return + */ + public R pushSuperviseNotificationChargeOrderInfo(TChargingOrder chargingOrder){ + SupChargeOrderInfo supChargeOrderInfo = new SupChargeOrderInfo(); + supChargeOrderInfo.setOperatorID(operatorId); + supChargeOrderInfo.setEquipmentOwnerID(operatorId); + supChargeOrderInfo.setStationID(String.valueOf(chargingOrder.getSiteId())); + supChargeOrderInfo.setEquipmentID(String.valueOf(chargingOrder.getChargingPileId())); + supChargeOrderInfo.setOrderNo(operatorId+chargingOrder.getCode()); + TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); + supChargeOrderInfo.setConnectorID(chargingGun.getFullNumber()); + supChargeOrderInfo.setEquipmentClassification(1); + supChargeOrderInfo.setPushTimeStamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + supChargeOrderInfo.setStartTime(chargingOrder.getStartTime() != null ? chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); + supChargeOrderInfo.setEndTime(chargingOrder.getEndTime() != null ? chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : ""); + supChargeOrderInfo.setTotalPower(chargingOrder.getElectrovalence()); + supChargeOrderInfo.setTotalElecMoney(chargingOrder.getElectrovalence()); + supChargeOrderInfo.setTotalServiceMoney(chargingOrder.getServiceCharge()); + supChargeOrderInfo.setTotalMoney(chargingOrder.getOrderAmount()); + switch (chargingOrder.getEndMode()){ + case 0: + supChargeOrderInfo.setStopReason(5); + supChargeOrderInfo.setStopDesc("异常终止"); + break; + case 1: + supChargeOrderInfo.setStopReason(0); + supChargeOrderInfo.setStopDesc("用户手动停止充电"); + break; + case 2: + supChargeOrderInfo.setStopReason(1); + supChargeOrderInfo.setStopDesc("客户归属地运营商平台停止充电"); + break; + case 3: + supChargeOrderInfo.setStopReason(1); + supChargeOrderInfo.setStopDesc("费用不足中止"); + break; + } + + List<Operator> operators = operatorClient.getAllOperator().getData(); + for (Operator operator : operators) { + tcecSuperviseUtil.notificationChargeOrderInfo(operator, supChargeOrderInfo); + } + return R.ok(); + } + + + /** + * 推送充换电站信息 + * @param id + * @return + */ + @PostMapping("/supervise_notification_station_info") + public R superviseNotificationStationInfo(@RequestParam("id") Integer id){ + String serviceTel = systemConfigurationClient.getServerPhone().getData(); + Site site = siteClient.getSiteAll().getData().stream().filter(e -> e.getId().equals(id)).findFirst().orElse(new Site()); + + List<TChargingPile> tChargingPiles = chargingPileClient.getChargingPileBySiteIds(Collections.singletonList(site.getId())).getData(); + List<Integer> collect1 = tChargingPiles.stream().map(TChargingPile::getId).collect(Collectors.toList()); + List<TChargingGun> chargingGunList = chargingGunClient.getChargingGunByChargingPileIds(collect1).getData(); + SupStationInfo supStationInfo = new SupStationInfo(); + supStationInfo.setStationID(site.getId().toString()); + supStationInfo.setStationUniqueNumber(site.getDistrictsCode() + "906171535" + site.getId()); + supStationInfo.setOperatorID("906171535"); + supStationInfo.setEquipmentOwnerID("906171535"); + supStationInfo.setStationName(site.getName()); + supStationInfo.setCountryCode(site.getCountryCode()); + supStationInfo.setAreaCode(site.getCityCode()); + supStationInfo.setAddress(site.getAddress()); + supStationInfo.setAreaCodeCountryside(site.getAreaCodeCountryside()); + supStationInfo.setStationTel(site.getPhone()); + + supStationInfo.setServiceTel(serviceTel); + supStationInfo.setStationClassification(site.getStationClassification()); + supStationInfo.setGeneralApplicationType(site.getGeneralApplicationType()); + supStationInfo.setStationType(site.getSiteType()); + supStationInfo.setStationStatus(site.getStatus()); + supStationInfo.setParkNums(site.getParkingSpace()); + supStationInfo.setStationLat(new BigDecimal(site.getLat()).setScale(6, RoundingMode.DOWN)); + supStationInfo.setStationLng(new BigDecimal(site.getLon()).setScale(6, RoundingMode.DOWN)); + supStationInfo.setSiteGuide(site.getGuide()); + supStationInfo.setConstruction(site.getConstructionSite() == 0 ? ConstructionEnum.OTHER.getType() : site.getConstructionSite()); + supStationInfo.setPictures(StringUtils.isNotEmpty(site.getImgUrl()) ? Arrays.asList(site.getImgUrl().split(",")) : new ArrayList<>()); + + supStationInfo.setMatchCars(site.getVehicleDescription()); + if (org.springframework.util.StringUtils.hasLength(site.getSwapMatchCars())){ + supStationInfo.setSwapMatchCars(Arrays.asList(site.getSwapMatchCars().split(","))); + } + supStationInfo.setBusineHours(site.getStartServiceTime()); + supStationInfo.setRoundTheClock(site.getRoundTheClock()); + supStationInfo.setParkType(site.getParkType()); + supStationInfo.setParkFee("{\"rules\":"+site.getParkFee()+","+"\"freeDuration\":"+site.getParkFeeFree()+"}"); + supStationInfo.setElectricityType(site.getElectricityType()); + supStationInfo.setBusinessExpandType(site.getBusinessExpandType()); + supStationInfo.setCapacity(site.getCapacity()); + supStationInfo.setRatedPower(site.getRatedPower()); + supStationInfo.setPeriodFee(site.getPeriodFee()); + supStationInfo.setOfficialRunTime(site.getOfficialRunTime()); + supStationInfo.setStationOrientation(site.getStationOrientation()); + supStationInfo.setStationArea(site.getStationArea()); + supStationInfo.setHavePerson(site.getHavePerson()); + supStationInfo.setVideoMonitor(site.getVideoMonitor()); + if (StringUtils.isNotEmpty(site.getSupportingFacilities())){ + String[] split = site.getSupportingFacilities().split(","); + List<Integer> collect = Arrays.stream(split).map(Integer::parseInt).collect(Collectors.toList()); + supStationInfo.setSupportingFacilities(collect); + } + supStationInfo.setPrinterFlag(site.getPrinterFlag()); + supStationInfo.setBarrierFlag(site.getBarrierFlag()); + supStationInfo.setParkingLockFlag(site.getParkingLockFlag()); + supStationInfo.setEquipmentInfos(buildEquipmentInfo(site.getId(), tChargingPiles, chargingGunList)); +// supStationInfo.setSwapEquipmentInfos(); + supStationInfo.setElectricityFee("{"+site.getElectricityFee()+"}"); + supStationInfo.setEquipmentOwnerName(site.getEquipmentOwnerName()); + supStationInfo.setResidentNo(site.getResidentNo()); + supStationInfo.setSupplyType(site.getSupplyType()); + supStationInfo.setWattHourMeterNo(site.getWattHourMeterNo()); + supStationInfo.setForwardPower(site.getForwardPower()); + supStationInfo.setServiceFee("{"+site.getServiceFee()+"}"); + supStationInfo.setRecordUniqueNo(site.getRecordUniqueNo()); + BaseResult baseResult = new BaseResult(); + SupStationInfoResult supStationInfoResult = new SupStationInfoResult(); + supStationInfoResult.setSupStationInfo(supStationInfo); + tcecSuperviseUtil.superviseNotificationStationInfo(supStationInfoResult); + return R.ok(baseResult); + } // // // /** diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/TaskUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/JianGuanTask.java similarity index 96% rename from ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/TaskUtil.java rename to ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/JianGuanTask.java index 09ac391..f373c89 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/TaskUtil.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/util/JianGuanTask.java @@ -14,7 +14,7 @@ * @date 2023/7/11 8:39 */ @Component -public class TaskUtil { +public class JianGuanTask { @Resource private ChargingMessageListener chargingMessageListener; diff --git a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java index 7c0b24e..dfd7b64 100644 --- a/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java +++ b/ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java @@ -1,6 +1,7 @@ package com.ruoyi.integration; import com.alibaba.fastjson2.JSON; +import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.barrierGate.model.CloudParkingOrder; import com.ruoyi.integration.barrierGate.server.ParkingOrderService; @@ -18,10 +19,16 @@ @Resource private ParkingOrderService parkingOrderService; + @Resource + private SiteClient siteClient; +// @Test +// public void test(){ +// String json = "{\"appkey\":\"842ae0c027e64b3590af9eea6\",\"enterChannel\":\"001\",\"enterChannelName\":\"进口\",\"enterDateTime\":\"2024-11-01T11:25:15.677Z\",\"id\":\"17B51DA0983C11EFA99CA979A8A8386B\",\"kind\":\"临时卡\",\"name\":\"临时识别\",\"plate\":\"川JD34056\",\"plateColor\":\"绿色\",\"sign\":\"29A902820C2657C51FBE90235152534F\"}"; +// CloudParkingOrder order = JSON.parseObject(json, CloudParkingOrder.class); +// parkingOrderService.cloudParkingInOrder(order); +// } @Test - public void test(){ - String json = "{\"appkey\":\"842ae0c027e64b3590af9eea6\",\"enterChannel\":\"001\",\"enterChannelName\":\"进口\",\"enterDateTime\":\"2024-11-01T11:25:15.677Z\",\"id\":\"17B51DA0983C11EFA99CA979A8A8386B\",\"kind\":\"临时卡\",\"name\":\"临时识别\",\"plate\":\"川JD34056\",\"plateColor\":\"绿色\",\"sign\":\"29A902820C2657C51FBE90235152534F\"}"; - CloudParkingOrder order = JSON.parseObject(json, CloudParkingOrder.class); - parkingOrderService.cloudParkingInOrder(order); + public void test1(){ + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java index 7255afa..51c767e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java @@ -24,7 +24,12 @@ @EnableTransactionManagement//开启事务 public class RuoYiOrderApplication { public static void main(String[] args) { - SpringApplication.run(RuoYiOrderApplication.class, args); + try { + SpringApplication.run(RuoYiOrderApplication.class, args); + + }catch (Exception e){ + e.printStackTrace(); + } System.out.println("(♥◠‿◠)ノ゙ 订单模块启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/RuoYiOtherApplication.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/RuoYiOtherApplication.java index f1b9f56..500f478 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/RuoYiOtherApplication.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/RuoYiOtherApplication.java @@ -25,8 +25,13 @@ @EnableTransactionManagement//开启事务 public class RuoYiOtherApplication { public static void main(String[] args) { - SpringApplication.run(RuoYiOtherApplication.class, args); - new NettyServer().bind(); + try { + SpringApplication.run(RuoYiOtherApplication.class, args); + new NettyServer().bind(); + }catch (Exception e){ + e.printStackTrace(); + } + System.out.println("(♥◠‿◠)ノ゙ 基础模块启动成功 ლ(´ڡ`ლ)゙ \n" + " .-------. ____ __ \n" + " | _ _ \\ \\ \\ / / \n" + -- Gitblit v1.7.1