From ee90d67775ec0926eb2e6ab4632a10ab0c461b7d Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 27 十一月 2025 14:57:59 +0800
Subject: [PATCH] 新增加成都监管数据对接
---
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java | 33 ++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 79 +++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java | 21 -
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java | 19 +
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java | 311 +++++++++++++++++++++++++--
ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java | 41 +-
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 17 +
/dev/null | 23 --
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java | 29 ++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java | 7
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java | 5
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 10
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java | 12 +
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java | 20 +
ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java | 15 +
16 files changed, 543 insertions(+), 101 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
index 7e6c33f..d604215 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
@@ -459,20 +459,11 @@
@TableField("isOpenSynchronization")
@ApiModelProperty(value = "引流平台数据同步(0=否,1=是)")
private Integer isOpenSynchronization;
-// /**
-// * 换电设备信息
-// */
-// @TableField("swap_equipment_infos")
-// @ApiModelProperty(value = "2.0修改字段-换电设备信息 站点分类为2或3时必填 示例:" +
-// "[{" +
-// "\"SwapMechanicalEquipmentID\": \"A564778B\"," +
-// "\"MechanicalEquipmentPower\": 128.0000" +
-// "}," +
-// "{" +
-// "\"SwapMechanicalEquipmentID\": \"A564778C\"," +
-// "\"MechanicalEquipmentPower\": 150.0000" +
-// "}" +
-// "]")
-// private String swapEquipmentInfos;
+ /**
+ * 是否有储能设施(0:无,1:有)
+ */
+ @TableField("isEnergyStorage")
+ @ApiModelProperty(value = "是否有储能设施(0:无,1:有)")
+ private Integer isEnergyStorage;
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
index f57b585..b3c714a 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java
@@ -112,4 +112,16 @@
@ApiModelProperty(value = "充电设备纬度")
@TableField("equipment_lat")
private String equipmentLat;
+ @ApiModelProperty(value = "设备出厂编码")
+ @TableField("equipment_product_code")
+ private String equipmentProductCode;
+ @ApiModelProperty(value = "设备用途 1:公共,50:个人, 100:公交(专用), 101:环卫(专用),102:物流(专用),103:出租车(专用),104:分时租赁(专用),106:单位(专用),107:移动站点(移动储能设备), 108:居民小区(公共), 109:居民小区(专用)")
+ @TableField("equipment_purpose")
+ private Integer equipmentPurpose;
+ @ApiModelProperty(value = "新国标 0:否,1:是")
+ @TableField("new_national_standard")
+ private Integer newNationalStandard;
+ @ApiModelProperty(value = "是否支持VIN码识别 0:否,1:是")
+ @TableField("vin_flag")
+ private Integer vinFlag;
}
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
index a7b995e..4df1516 100644
--- a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/factory/ChengDuJianGuanClientFallbackFactory.java
@@ -2,7 +2,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
-import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import org.springframework.cloud.openfeign.FallbackFactory;
public class ChengDuJianGuanClientFallbackFactory implements FallbackFactory<ChengDuJianGuanClient> {
@@ -15,9 +15,25 @@
}
@Override
- public R notificationStationFee(NotificationStationFeeVo vo) {
+ public R notificationStationFee(Integer chargingPileId) {
return R.fail("站点费率变化推送失败:" + cause.getMessage());
}
+
+ @Override
+ public R notificationStationStatus(Integer chargingGunId) {
+ return R.fail("设备状态变化推送失败:" + cause.getMessage());
+ }
+
+ @Override
+ public R notificationConnectorChargeStatus(NotificationConnectorChargeStatusVo vo) {
+ return R.fail("设备充电中状态变化推送失败:" + cause.getMessage());
+ }
+
+
+ @Override
+ public R notificationOrderInfo(NotificationConnectorChargeStatusVo vo) {
+ return R.fail("订单信息推送失败:" + cause.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
index 4e3489f..a8af05d 100644
--- a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
+++ b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/feignClient/ChengDuJianGuanClient.java
@@ -4,7 +4,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.integration.api.factory.ChengDuJianGuanClientFallbackFactory;
-import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -25,9 +25,36 @@
/**
* 站点费率变化推送
- * @param vo
+ * @param chargingPileId
* @return
*/
@PostMapping("/chengdu/jianguan/notificationStationFee")
- R notificationStationFee(@RequestBody NotificationStationFeeVo vo);
+ R notificationStationFee(@RequestParam("chargingPileId") Integer chargingPileId);
+
+
+ /**
+ * 设备状态变化推送
+ * @param chargingGunId
+ * @return
+ */
+ @PostMapping("/chengdu/jianguan/notificationStationStatus")
+ R notificationStationStatus(@RequestParam("chargingGunId") Integer chargingGunId);
+
+
+ /**
+ * 设备充电中状态变化推送
+ * @param vo
+ * @return
+ */
+ @PostMapping("/chengdu/jianguan/notificationConnectorChargeStatus")
+ R notificationConnectorChargeStatus(@RequestBody NotificationConnectorChargeStatusVo vo);
+
+
+ /**
+ * 订单信息推送
+ * @param vo
+ * @return
+ */
+ @PostMapping("/chengdu/jianguan/notificationOrderInfo")
+ R notificationOrderInfo(@RequestBody NotificationConnectorChargeStatusVo vo);
}
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java
new file mode 100644
index 0000000..334aebc
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationConnectorChargeStatusVo.java
@@ -0,0 +1,15 @@
+package com.ruoyi.integration.api.vo;
+
+import lombok.Data;
+
+@Data
+public class NotificationConnectorChargeStatusVo {
+ /**
+ * 充电枪id
+ */
+ private Integer chargingGunId;
+ /**
+ * 充电订单code
+ */
+ private String orderCode;
+}
diff --git a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java b/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java
deleted file mode 100644
index 4d8ad3c..0000000
--- a/ruoyi-api/ruoyi-api-jianguan/src/main/java/com/ruoyi/integration/api/vo/NotificationStationFeeVo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.ruoyi.integration.api.vo;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-
-@Data
-public class NotificationStationFeeVo {
- /**
- * 站点code
- */
- private String siteCode;
- /**
- * 设备类型
- * 1:直流设备
- * 2:交流设备
- * 3:交直流一体设备
- */
- private Integer equipmentType;
- /**
- * 充电桩code
- */
- private String chargingPileCode;
-}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 46fc1b1..fac99a8 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -27,6 +27,7 @@
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.system.api.domain.SysUser;
@@ -76,6 +77,9 @@
@Resource
private TCECClient tcecClient;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
@Autowired
@@ -140,6 +144,7 @@
List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
for (TChargingPile tChargingPile : list) {
integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
+ chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
}
}
return AjaxResult.ok(dto.getId());
@@ -217,6 +222,7 @@
List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, dto.getSiteId()).eq(TChargingPile::getDelFlag, 0).list();
for (TChargingPile tChargingPile : list) {
integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(dto.getAccountingStrategyDetails()));
+ chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
}
}
return AjaxResult.success();
@@ -407,6 +413,7 @@
List<TChargingPile> list = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, byId.getSiteId()).list();
for (TChargingPile tChargingPile : list) {
integrationClient.setupBillingModel1(tChargingPile.getCode(), JSON.toJSONString(accountingStrategyDetails));
+ chengDuJianGuanClient.notificationStationFee(tChargingPile.getId());
}
}
}else {
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index c1d17cf..302d678 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -33,6 +33,7 @@
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.integration.api.elutong.model.ConnectorStatusInfo;
import com.ruoyi.integration.api.elutong.model.ConnectorStatusReq;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.ELuTongClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
@@ -88,6 +89,9 @@
@Resource
private ELuTongClient eLuTongClient;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
@@ -424,6 +428,7 @@
if(200 != r.getCode()){
log.error(r.getMsg());
}
+ chengDuJianGuanClient.notificationStationStatus(chargingGun.getId());
}
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
index 9cf18a7..f87737e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -26,6 +26,7 @@
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.integration.api.elutong.model.*;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.ELuTongClient;
import com.ruoyi.integration.api.feignClient.IntegrationClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
@@ -47,6 +48,7 @@
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -99,6 +101,9 @@
private TCECClient tcecClient;
@Resource ELuTongClient eLuTongClient;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
/**
@@ -228,6 +233,9 @@
if(200 != r.getCode()){
System.out.println(r.getMsg());
}
+
+ //推送成都监管
+ chengDuJianGuanClient.notificationStationInfo(site.getId());
});
}
return AjaxResult.success();
@@ -437,6 +445,8 @@
if(200 != r.getCode()){
System.out.println(r.getMsg());
}
+ //推送成都监管
+ chengDuJianGuanClient.notificationStationInfo(site.getId());
});
}
return AjaxResult.success();
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
index f7fcef5..bc52e49 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -23,6 +23,7 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.SendMessageClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.integration.api.model.QrCodeDelivery;
@@ -38,6 +39,10 @@
import javax.annotation.Resource;
import java.util.*;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -121,8 +126,15 @@
return pageInfo;
}
-@Autowired
-private SiteMapper siteMapper;
+ @Autowired
+ private SiteMapper siteMapper;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
+
+
+
+
/**
* 添加充电枪
* @param dto
@@ -155,8 +167,11 @@
qrCodeDelivery.setCreate_time(new Date());
qrCodeDelivery.setLast_time(new Date());
sendMessageClient.qrCodeDelivery(qrCodeDelivery);
- Site site = siteMapper.selectById(chargingPile.getSiteId());
- // 推送充换电站信息
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+ });
return AjaxResult.success();
}
@@ -198,7 +213,11 @@
qrCodeDelivery.setLast_time(new Date());
sendMessageClient.qrCodeDelivery(qrCodeDelivery);
tcecClient.superviseNotificationStationInfo(one.getSiteId());
-
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+ });
return AjaxResult.success();
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index 5466368..11d045d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -54,6 +54,9 @@
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -128,6 +131,9 @@
@Resource
private AppUserClient appUserClient;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
@@ -211,6 +217,11 @@
chargingPile.setIotdDeviceId(showDeviceResp.getDeviceId());
}
this.save(chargingPile);
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+ });
return AjaxResult.success();
}
@@ -330,6 +341,12 @@
sendMessageClient.qrCodeDelivery(qrCodeDelivery);
}
tcecClient.superviseNotificationStationInfo(chargingPile.getSiteId());
+
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ chengDuJianGuanClient.notificationStationInfo(chargingPile.getSiteId());
+ });
return AjaxResult.success();
}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
index 4fcecf1..fdf92c0 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanController.java
@@ -12,16 +12,16 @@
import com.ruoyi.chargingPile.api.vo.GetChargingGunByChargingPileIdsVo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.integration.api.vo.NotificationStationFeeVo;
-import com.ruoyi.integration.api.vo.SiteVo;
-import com.ruoyi.integration.api.vo.TAccountingStrategyDetailVo;
-import com.ruoyi.integration.api.vo.TChargingPileVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import com.ruoyi.jianguan.chengdujianguan.enu.*;
-import com.ruoyi.jianguan.chengdujianguan.model.CDEquipmentInfo;
-import com.ruoyi.jianguan.chengdujianguan.model.CDStationInfo;
-import com.ruoyi.jianguan.chengdujianguan.model.ChargeFeeDetail;
-import com.ruoyi.jianguan.chengdujianguan.model.NotificationStationFee;
+import com.ruoyi.jianguan.chengdujianguan.model.*;
+import com.ruoyi.jianguan.model.ChargeDetail;
import com.ruoyi.jianguan.model.ConnectorInfo;
+import com.ruoyi.jianguan.model.ConnectorStatusInfo;
+import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.other.api.feignClient.SystemConfigurationClient;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
@@ -29,10 +29,13 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@RestController
@@ -57,6 +60,14 @@
@Resource
private AccountingStrategyDetailClient accountingStrategyDetailClient;
+ @Resource
+ private ChargingOrderClient chargingOrderClient;
+
+ @Resource
+ private ChargingOrderAccountingStrategyClient chargingOrderAccountingStrategyClient;
+ //成都、眉山、阿坝
+ private List<String> list = Arrays.asList("510100", "511400", "513200");
+
/**
* 充电站信息变化推送
@@ -66,7 +77,9 @@
@PostMapping("/notificationStationInfo")
public R notificationStationInfo(@RequestParam("siteId") Integer siteId){
Site site = siteClient.getSiteByIds(Arrays.asList(siteId)).getData().get(0);
- ChengDuJianGuanUtil.notificationStationInfo(redisTemplate, buildStationInfo(site));
+ if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+ ChengDuJianGuanUtil.notificationStationInfo(redisTemplate, buildStationInfo(site));
+ }
return R.ok();
}
@@ -156,7 +169,7 @@
stationInfo.setParkingLockFlag(site.getParkingLockFlag());
stationInfo.setIsDemandResponse(1);
stationInfo.setIsSupportOrderlyCharging(1);
- stationInfo.setIsEnergyStorage();
+ stationInfo.setIsEnergyStorage(site.getIsEnergyStorage());
stationInfo.setElectricityType(site.getElectricityType());
stationInfo.setRatedPower(site.getRatedPower());
stationInfo.setPeriodFee(site.getPeriodFee());
@@ -180,7 +193,7 @@
cdEquipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode());
cdEquipmentInfo.setManufacturerName(tChargingPile.getManufacturer());
cdEquipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType());
- cdEquipmentInfo.setEquipmentProductCode();
+ cdEquipmentInfo.setEquipmentProductCode(tChargingPile.getEquipmentProductCode());
cdEquipmentInfo.setEquipmentName(tChargingPile.getName());
cdEquipmentInfo.setConstructionTime(tChargingPile.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
if(null != tChargingPile.getProductionDate()){
@@ -220,12 +233,12 @@
cdEquipmentInfo.setEquipmentStatus(5);
break;
}
- cdEquipmentInfo.setEquipmentPurpose();
+ cdEquipmentInfo.setEquipmentPurpose(tChargingPile.getEquipmentPurpose());
cdEquipmentInfo.setEquipmentPower(tChargingPile.getRatedPower());
- cdEquipmentInfo.setNewNationalStandard();
+ cdEquipmentInfo.setNewNationalStandard(tChargingPile.getNewNationalStandard());
cdEquipmentInfo.setEquipmentLng(new BigDecimal(tChargingPile.getEquipmentLng()).setScale(6, RoundingMode.HALF_EVEN));
cdEquipmentInfo.setEquipmentLat(new BigDecimal(tChargingPile.getEquipmentLat()).setScale(6, RoundingMode.HALF_EVEN));
- cdEquipmentInfo.setVinFlag();
+ cdEquipmentInfo.setVinFlag(tChargingPile.getVinFlag());
cdEquipmentInfo.setConnectorInfos(buildConnectorInfo(tChargingPile.getId(), chargingGunList));
equipmentInfos.add(cdEquipmentInfo);
}
@@ -277,27 +290,263 @@
/**
* 站点费率变化推送
- * @param vo
+ * @param chargingPileId
* @return
*/
@PostMapping("/notificationStationFee")
- public R notificationStationFee(@RequestBody NotificationStationFeeVo vo){
- NotificationStationFee notificationStationFee = new NotificationStationFee();
- notificationStationFee.setOperatorID("906171535");
- notificationStationFee.setStationID(vo.getSiteCode());
- List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
- List<TAccountingStrategyDetail> strategyDetails = accountingStrategyDetailClient.getDetailListByCode(vo.getChargingPileCode()).getData();
- for (TAccountingStrategyDetail accountingStrategyDetail : strategyDetails) {
- ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
- chargeFeeDetail1.setEquipmentType(vo.getEquipmentType());
- chargeFeeDetail1.setStartTime(accountingStrategyDetail.getStartTime());
- chargeFeeDetail1.setEndTime(accountingStrategyDetail.getEndTime());
- chargeFeeDetail1.setElectricityFee(accountingStrategyDetail.getElectrovalence());
- chargeFeeDetail1.setServiceFee(accountingStrategyDetail.getServiceCharge());
- chargeFeeDetail.add(chargeFeeDetail1);
- notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
+ public R notificationStationFee(@RequestParam("chargingPileId") Integer chargingPileId){
+ TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingPileId).getData();
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+ if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+ NotificationStationFee notificationStationFee = new NotificationStationFee();
+ notificationStationFee.setOperatorID("906171535");
+ notificationStationFee.setStationID(site.getCode());
+ List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
+ List<TAccountingStrategyDetail> strategyDetails = accountingStrategyDetailClient.getDetailListByCode(chargingPile.getCode()).getData();
+ for (TAccountingStrategyDetail accountingStrategyDetail : strategyDetails) {
+ ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
+ chargeFeeDetail1.setEquipmentType(chargingPile.getType());
+ chargeFeeDetail1.setStartTime(accountingStrategyDetail.getStartTime());
+ chargeFeeDetail1.setEndTime(accountingStrategyDetail.getEndTime());
+ chargeFeeDetail1.setElectricityFee(accountingStrategyDetail.getElectrovalence());
+ chargeFeeDetail1.setServiceFee(accountingStrategyDetail.getServiceCharge());
+ chargeFeeDetail.add(chargeFeeDetail1);
+ notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
+ }
+ ChengDuJianGuanUtil.notificationStationFee(redisTemplate, notificationStationFee);
}
- ChengDuJianGuanUtil.notificationStationFee(redisTemplate, notificationStationFee);
+ return R.ok();
+ }
+
+
+ /**
+ * 设备状态变化推送
+ * @param chargingGunId
+ * @return
+ */
+ @PostMapping("/notificationStationStatus")
+ public R notificationStationStatus(@RequestParam("chargingGunId") Integer chargingGunId){
+ TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingGunId).getData();
+ TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+ if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+ ConnectorStatusInfo connectorStatusInfo = new ConnectorStatusInfo();
+ connectorStatusInfo.setOperatorID("906171535");
+ connectorStatusInfo.setEquipmentOwnerID("906171535");
+ connectorStatusInfo.setStationID(site.getCode());
+ connectorStatusInfo.setEquipmentID(chargingPile.getCode());
+ connectorStatusInfo.setEquipmentClassification(1);
+ connectorStatusInfo.setConnectorID(chargingGun.getFullNumber());
+ 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(7);
+ break;
+ }
+ connectorStatusInfo.setParkStatus(0);
+ connectorStatusInfo.setLookStatus(0);
+ ChengDuJianGuanUtil.notificationStationStatus(redisTemplate, connectorStatusInfo);
+ }
+
+ return R.ok();
+ }
+
+
+ /**
+ * 设备充电中状态变化推送
+ * @param vo
+ * @return
+ */
+ @PostMapping("/notificationConnectorChargeStatus")
+ public R notificationConnectorChargeStatus(@RequestBody NotificationConnectorChargeStatusVo vo){
+ TChargingGun chargingGun = chargingGunClient.getChargingGunById(vo.getChargingGunId()).getData();
+ TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+ if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+ TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(vo.getOrderCode()).getData();
+ ConnectorChargeStatusInfo connectorChargeStatusInfo = new ConnectorChargeStatusInfo();
+ connectorChargeStatusInfo.setOperatorID("906171535");
+ connectorChargeStatusInfo.setEquipmentOwnerID("906171535");
+ connectorChargeStatusInfo.setStationID(site.getCode());
+ connectorChargeStatusInfo.setEquipmentID(chargingPile.getCode());
+ connectorChargeStatusInfo.setConnectorID(chargingGun.getFullNumber());
+ connectorChargeStatusInfo.setStartChargeSeq(chargingOrder.getCode());
+ switch (chargingGun.getStatus()){
+ case 1:
+ connectorChargeStatusInfo.setConnectorStatus(1);
+ break;
+ case 2:
+ connectorChargeStatusInfo.setConnectorStatus(1);
+ break;
+ case 3:
+ connectorChargeStatusInfo.setConnectorStatus(2);
+ break;
+ case 4:
+ connectorChargeStatusInfo.setConnectorStatus(3);
+ break;
+ case 5:
+ connectorChargeStatusInfo.setConnectorStatus(2);
+ break;
+ case 6:
+ connectorChargeStatusInfo.setConnectorStatus(4);
+ break;
+ case 7:
+ connectorChargeStatusInfo.setConnectorStatus(255);
+ break;
+ }
+ switch (chargingOrder.getStatus()){
+ case -1:
+ connectorChargeStatusInfo.setOrderStatus(7);
+ break;
+ case 0:
+ connectorChargeStatusInfo.setOrderStatus(7);
+ break;
+ case 1:
+ connectorChargeStatusInfo.setOrderStatus(1);
+ break;
+ case 2:
+ connectorChargeStatusInfo.setOrderStatus(1);
+ break;
+ case 3:
+ connectorChargeStatusInfo.setOrderStatus(2);
+ break;
+ case 4:
+ connectorChargeStatusInfo.setOrderStatus(3);
+ break;
+ case 5:
+ connectorChargeStatusInfo.setOrderStatus(4);
+ break;
+ }
+ connectorChargeStatusInfo.setCurrentA(chargingOrder.getCurrent());
+ connectorChargeStatusInfo.setVoltageA(chargingOrder.getVoltage());
+ connectorChargeStatusInfo.setSoc(chargingOrder.getTotalElectricity());
+ connectorChargeStatusInfo.setStartTime((null != chargingOrder.getStartTime() ? chargingOrder.getStartTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ connectorChargeStatusInfo.setEndTime((null != chargingOrder.getEndTime() ? chargingOrder.getEndTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ connectorChargeStatusInfo.setPushTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ String key = "CHENGDU_JIANGUAN:" + chargingOrder.getCode();
+ Object o = redisTemplate.opsForValue().get(key);
+ String lastPushTime = null;
+ if(null == o){
+ lastPushTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ }else{
+ lastPushTime = o.toString();
+ }
+ connectorChargeStatusInfo.setLastPushTime(lastPushTime);
+ connectorChargeStatusInfo.setTotalPower(chargingOrder.getElectricity());
+ connectorChargeStatusInfo.setElecMoney(chargingOrder.getElectrovalence());
+ connectorChargeStatusInfo.setSeviceMoney(chargingOrder.getServiceCharge());
+ connectorChargeStatusInfo.setTotalMoney(chargingOrder.getPaymentAmount());
+ connectorChargeStatusInfo.setSoc1(chargingOrder.getTotalElectricity());
+ ChengDuJianGuanUtil.notificationConnectorChargeStatus(redisTemplate, connectorChargeStatusInfo);
+ redisTemplate.opsForValue().set(key, connectorChargeStatusInfo.getPushTime(), 5, TimeUnit.DAYS);
+ }
+ return R.ok();
+ }
+
+
+ /**
+ * 订单信息推送
+ * @param vo
+ * @return
+ */
+ @PostMapping("/notificationOrderInfo")
+ public R notificationOrderInfo(@RequestBody NotificationConnectorChargeStatusVo vo){
+ TChargingGun chargingGun = chargingGunClient.getChargingGunById(vo.getChargingGunId()).getData();
+ TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+ Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0);
+ if(StringUtils.isNotEmpty(site.getCityCode()) && list.contains(site.getCityCode())){
+ TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(vo.getOrderCode()).getData();
+ CDOrderInfo orderInfo = new CDOrderInfo();
+ orderInfo.setOperatorID("906171535");
+ orderInfo.setEquipmentOwnerID("906171535");
+ orderInfo.setStationID(site.getCode());
+ orderInfo.setEquipmentID(chargingPile.getCode());
+ orderInfo.setConnectorID(chargingGun.getFullNumber());
+ orderInfo.setEquipmentClassification(1);
+ orderInfo.setStartChargeSeq(chargingOrder.getCode());
+ orderInfo.setUserChargeType(1);
+ orderInfo.setMoney(chargingOrder.getPaymentAmount());
+ orderInfo.setElectMoney(chargingOrder.getElectrovalence());
+ orderInfo.setServiceMoney(chargingOrder.getServiceCharge());
+ orderInfo.setElect(chargingOrder.getElectricity());
+ orderInfo.setStartTime((null != chargingOrder.getStartTime() ? chargingOrder.getStartTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ orderInfo.setEndTime((null != chargingOrder.getEndTime() ? chargingOrder.getEndTime() : LocalDateTime.now()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ orderInfo.setPaymentAmount(chargingOrder.getPaymentAmount());
+ orderInfo.setPayChannel(chargingOrder.getRechargePaymentType() == 2 ? 1 : 2);
+ switch (chargingOrder.getEndMode()){
+ case 0:
+ orderInfo.setStopReason(3);
+ break;
+ case 1:
+ orderInfo.setStopReason(0);
+ break;
+ case 2:
+ orderInfo.setStopReason(2);
+ break;
+ case 3:
+ orderInfo.setStopReason(1);
+ break;
+ }
+ orderInfo.setPower(chargingOrder.getPower());
+ if(null == chargingOrder.getStartTime()){
+ orderInfo.setChargeLast(0L);
+ }else{
+ Long time = chargingOrder.getEndTime().toEpochSecond(ZoneOffset.UTC) - chargingOrder.getStartTime().toEpochSecond(ZoneOffset.UTC);
+ orderInfo.setChargeLast(time);
+ }
+ orderInfo.setMeterValueStart(new BigDecimal(0));
+ orderInfo.setMeterValueEnd(new BigDecimal(0));
+ orderInfo.setPushTimeStamp(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+
+ List<TChargingOrderAccountingStrategy> data = chargingOrderAccountingStrategyClient.getChargingOrderAccountingStrategyByOrderId(chargingOrder.getId()).getData();
+ List<ChargeDetail> chargeDetails = new ArrayList<>();
+ LocalDateTime startTime = chargingOrder.getStartTime();
+ LocalDateTime endTime = null == chargingOrder.getEndTime() ? LocalDateTime.now() : chargingOrder.getEndTime();
+ String s_format = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ String e_format = endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ for (TChargingOrderAccountingStrategy datum : data) {
+ ChargeDetail chargeDetail = new ChargeDetail();
+ if(s_format.equals(e_format)){
+ chargeDetail.setDetailStartTime(s_format + " " + datum.getStartTime() + ":00");
+ chargeDetail.setDetailEndTime(s_format + " " + datum.getEndTime() + ":59");
+ }else{
+ String substring = datum.getEndTime().substring(0, datum.getEndTime().indexOf(":"));
+ if(Integer.valueOf(substring) > 12){
+ chargeDetail.setDetailStartTime(s_format + " " + datum.getStartTime() + ":00");
+ chargeDetail.setDetailEndTime(s_format + " " + datum.getEndTime() + ":59");
+ }else{
+ chargeDetail.setDetailStartTime(e_format + " " + datum.getStartTime() + ":00");
+ chargeDetail.setDetailEndTime(e_format + " " + datum.getEndTime() + ":59");
+ }
+ }
+ chargeDetail.setElecPrice(datum.getElectrovalence());
+ chargeDetail.setSevicePrice(datum.getServiceCharge());
+ chargeDetail.setDetailPower(datum.getChargingCapacity().setScale(2, BigDecimal.ROUND_HALF_EVEN));
+ chargeDetail.setDetailElecMoney(datum.getPeriodElectricPrice());
+ chargeDetail.setDetailSeviceMoney(datum.getPeriodServicePrice());
+
+ chargeDetails.add(chargeDetail);
+ }
+ orderInfo.setChargeDetails(chargeDetails);
+ ChengDuJianGuanUtil.notificationOrderInfo(redisTemplate, orderInfo);
+ }
return R.ok();
}
}
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
index d75c096..3083690 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/ChengDuJianGuanUtil.java
@@ -18,6 +18,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
+import java.util.concurrent.TimeUnit;
@Slf4j
public class ChengDuJianGuanUtil {
@@ -132,21 +133,21 @@
- public static void main(String[] args) {
- NotificationStationFee notificationStationFee = new NotificationStationFee();
- notificationStationFee.setOperatorID(OperatorID);
- notificationStationFee.setStationID("241231001");
- List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
- ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
- chargeFeeDetail1.setEquipmentType(1);
- chargeFeeDetail1.setStartTime("00:00");
- chargeFeeDetail1.setEndTime("23:59");
- chargeFeeDetail1.setElectricityFee(new BigDecimal(0.49));
- chargeFeeDetail1.setServiceFee(new BigDecimal(0.51));
- chargeFeeDetail.add(chargeFeeDetail1);
- notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
- ChengDuJianGuanUtil.notificationStationFee(null, notificationStationFee);
- }
+// public static void main(String[] args) {
+// NotificationStationFee notificationStationFee = new NotificationStationFee();
+// notificationStationFee.setOperatorID(OperatorID);
+// notificationStationFee.setStationID("241231001");
+// List<ChargeFeeDetail> chargeFeeDetail = new ArrayList<>();
+// ChargeFeeDetail chargeFeeDetail1 = new ChargeFeeDetail();
+// chargeFeeDetail1.setEquipmentType(1);
+// chargeFeeDetail1.setStartTime("00:00");
+// chargeFeeDetail1.setEndTime("23:59");
+// chargeFeeDetail1.setElectricityFee(new BigDecimal(0.49));
+// chargeFeeDetail1.setServiceFee(new BigDecimal(0.51));
+// chargeFeeDetail.add(chargeFeeDetail1);
+// notificationStationFee.setChargeFeeDetail(chargeFeeDetail);
+// ChengDuJianGuanUtil.notificationStationFee(null, notificationStationFee);
+// }
// public static void main(String[] args) {
@@ -237,10 +238,10 @@
*/
public static String getToken(RedisTemplate redisTemplate) {
try {
-// Object o = redisTemplate.opsForValue().get("LLTOKEN");
-// if(null != o){
-// return o.toString();
-// }
+ Object o = redisTemplate.opsForValue().get("LLTOKEN");
+ if(null != o){
+ return o.toString();
+ }
// 请求data
Map<String, String> data = new HashMap<>();
data.put("OperatorID", OperatorID);
@@ -278,7 +279,7 @@
Map<String, String> resultMap = (Map<String, String>) JSON.parse(dataStr);
String accessToken = jsonObject.getString("AccessToken");
Long tokenAvailableTime = jsonObject.getLong("TokenAvailableTime");
-// redisTemplate.opsForValue().set("LLTOKEN", accessToken, Long.valueOf(tokenAvailableTime), TimeUnit.SECONDS);
+ redisTemplate.opsForValue().set("LLTOKEN", accessToken, Long.valueOf(tokenAvailableTime), TimeUnit.SECONDS);
return accessToken;
}
} catch (Exception e) {
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
index 20c74a0..159660f 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/chengdujianguan/model/CDOrderInfo.java
@@ -97,7 +97,7 @@
* 充电时长 秒
*/
@JsonProperty("ChargeLast")
- private Integer chargeLast;
+ private Long chargeLast;
/**
* 电表总起值
*/
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index ff3a2bc..9ddfb48 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -34,6 +34,7 @@
import com.ruoyi.integration.api.model.*;
import com.ruoyi.integration.api.vo.ChargingOrderVo;
import com.ruoyi.integration.api.vo.GetPlatformStopChargingReply;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import com.ruoyi.integration.api.vo.StartChargeResult;
import com.ruoyi.order.api.dto.SettlementConfirmAdd;
import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient;
@@ -232,6 +233,9 @@
@Resource
private ChargingMessageClient chargingMessageClient;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
/**
@@ -769,6 +773,17 @@
log.info(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
sendMessageClient.platformStartCharging(platformStartCharging);
+
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+ vo.setOrderCode(chargingOrder.getCode());
+ vo.setChargingGunId(chargingOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+ });
+
+
// //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
// Long id = chargingOrder.getId();
// //执行5分钟的定时任务检测
@@ -832,6 +847,7 @@
chargingOrder.setStartTime(LocalDateTime.now());
}
this.updateById(chargingOrder);
+
if (chargingOrder.getStatus() == 3) {
//推送监管平台订单状态
new Thread(() -> {
@@ -846,6 +862,14 @@
if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
}
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+ vo.setOrderCode(chargingOrder.getCode());
+ vo.setChargingGunId(chargingOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+ });
return true;
} else {
Integer counter = boot_failed_map.get(code);
@@ -880,6 +904,14 @@
if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
}
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+ vo.setOrderCode(chargingOrder.getCode());
+ vo.setChargingGunId(chargingOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+ });
return true;
}
}
@@ -1305,7 +1337,14 @@
if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
}
-
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo vo = new NotificationConnectorChargeStatusVo();
+ vo.setOrderCode(order.getCode());
+ vo.setChargingGunId(order.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(vo);
+ });
return AjaxResult.success();
}
@@ -2611,6 +2650,16 @@
}
}).start();
}
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ TChargingOrder finalChargingOrder1 = chargingOrder;
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+ statusVo.setOrderCode(finalChargingOrder1.getCode());
+ statusVo.setChargingGunId(finalChargingOrder1.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+ chengDuJianGuanClient.notificationOrderInfo(statusVo);
+ });
//开始将优惠券优惠的金额添加到明细中
BigDecimal couponDiscountAmount = chargingOrder.getCouponDiscountAmount();
@@ -2982,6 +3031,18 @@
chargingOrderRefundService.save(chargingOrderRefund);
}
+ }
+
+ if(5 == tChargingOrder.getStatus()){
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+ statusVo.setOrderCode(tChargingOrder.getCode());
+ statusVo.setChargingGunId(tChargingOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+ chengDuJianGuanClient.notificationOrderInfo(statusVo);
+ });
}
}
if (payOrderQueryDto.getType() == 2) {
@@ -4137,6 +4198,14 @@
//推送三方平台订单状态
tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
}
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+ statusVo.setOrderCode(chargingOrder.getCode());
+ statusVo.setChargingGunId(chargingOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+ });
return R.ok();
}
@@ -4186,6 +4255,14 @@
log.info("【" + code1 + "】三方平台请求停止充电发起消息结束");
log.info(platformStopCharging.toString());
});
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+ statusVo.setOrderCode(chargingOrder.getCode());
+ statusVo.setChargingGunId(chargingOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+ });
return R.ok();
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
index eb84ab1..533d71e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -20,11 +20,13 @@
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.integration.api.feignClient.ChargingMessageClient;
+import com.ruoyi.integration.api.feignClient.ChengDuJianGuanClient;
import com.ruoyi.integration.api.feignClient.TCECClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
import com.ruoyi.integration.api.model.TransactionRecord;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.api.vo.ChargingOrderVo;
+import com.ruoyi.integration.api.vo.NotificationConnectorChargeStatusVo;
import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo;
import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
@@ -63,6 +65,9 @@
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -129,6 +134,9 @@
@Resource
private ITChargingOrderSummaryDataService chargingOrderSummaryDataService;
+
+ @Resource
+ private ChengDuJianGuanClient chengDuJianGuanClient;
//十分钟循环执行的定时任务
@@ -620,6 +628,17 @@
if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
}
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.SECONDS, new LinkedBlockingDeque<>());
+ TChargingOrder finalOrder = order;
+ threadPoolExecutor.execute(()->{
+ //推送成都监管
+ NotificationConnectorChargeStatusVo statusVo = new NotificationConnectorChargeStatusVo();
+ statusVo.setOrderCode(finalOrder.getCode());
+ statusVo.setChargingGunId(finalOrder.getChargingGunId());
+ chengDuJianGuanClient.notificationConnectorChargeStatus(statusVo);
+ chengDuJianGuanClient.notificationOrderInfo(statusVo);
+ });
+
//添加积分
if (1 == order.getOrderSource()) {
--
Gitblit v1.7.1