From 675e7fcf4952bde3cfc3fc45ad4103aec834e33f Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 10 九月 2024 18:18:11 +0800
Subject: [PATCH] mq修改,充电桩硬件联调,业务逻辑处理
---
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java | 39 +++++++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java | 4
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java | 2
ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 13 ++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java | 4
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/FaultMessageClient.java | 44 ++++++++
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 5 +
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java | 38 +++++++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsDemandAndChargerExportationMessageListener.java | 11 ++
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml | 4
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 9 +
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java | 11 ++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/FaultMessageFallbackFactory.java | 45 +++++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 7 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 8 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java | 4
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 6 +
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java | 22 +++-
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java | 11 ++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 10 ++
21 files changed, 282 insertions(+), 18 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
index f5a89cc..8e37b68 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -4,6 +4,7 @@
import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
@@ -42,6 +43,12 @@
public R<SiteNameVO> getAllInfoById(Integer id) {
return R.fail("通过枪id获取站点、桩、枪的名称失败:" + throwable.getMessage());
}
+
+ @Override
+ public R<TChargingGun> getChargingGunByCode(String code) {
+ return R.fail("根据枪编号获取充电枪失败:" + throwable.getMessage());
+ }
+
};
}
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/FaultMessageFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/FaultMessageFallbackFactory.java
new file mode 100644
index 0000000..0c35b28
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/FaultMessageFallbackFactory.java
@@ -0,0 +1,45 @@
+package com.ruoyi.chargingPile.api.factory;
+
+import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.feignClient.FaultMessageClient;
+import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
+import com.ruoyi.chargingPile.api.vo.SiteNameVO;
+import com.ruoyi.common.core.domain.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * 充电桩服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class FaultMessageFallbackFactory implements FallbackFactory<FaultMessageClient>
+{
+ private static final Logger log = LoggerFactory.getLogger(FaultMessageFallbackFactory.class);
+
+ @Override
+ public FaultMessageClient create(Throwable throwable) {
+ log.error("充电枪调用失败:{}", throwable.getMessage());
+ return new FaultMessageClient() {
+
+ @Override
+ public R<String> createFaultMessage(TFaultMessage faultMessage) {
+ return R.fail("添加离线故障记录失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R<String> updateFaultMessage(TFaultMessage faultMessage) {
+ return R.fail("修改离线故障记录失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R<TFaultMessage> getFaultMessageByGunId(Integer gunId) {
+ return R.fail("查询枪是否有离线或故障记录失败:" + throwable.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
index 1e9cf96..89fb452 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -2,6 +2,7 @@
import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory;
import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
@@ -9,6 +10,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
/**
* @author zhibing.pu
@@ -41,5 +43,12 @@
*/
@PostMapping("/t-charging-gun/getAllInfoById/{id}")
R<SiteNameVO> getAllInfoById(@PathVariable("id") Integer id);
+ /**
+ * 根据枪编号获取充电枪
+ * @param code
+ * @return
+ */
+ @PostMapping("/t-charging-gun/getChargingGunByCode/{code}")
+ R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code);
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/FaultMessageClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/FaultMessageClient.java
new file mode 100644
index 0000000..94f7bec
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/FaultMessageClient.java
@@ -0,0 +1,44 @@
+package com.ruoyi.chargingPile.api.feignClient;
+
+import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory;
+import com.ruoyi.chargingPile.api.factory.FaultMessageFallbackFactory;
+import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
+import com.ruoyi.chargingPile.api.vo.SiteNameVO;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/15 19:36
+ */
+@FeignClient(contextId = "FaultMessageClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = FaultMessageFallbackFactory.class)
+public interface FaultMessageClient {
+
+ /**
+ * 添加离线故障记录
+ * @param faultMessage
+ * @return
+ */
+ @PostMapping("/t-fault-message/createFaultMessage")
+ R<String> createFaultMessage(@RequestBody TFaultMessage faultMessage);
+ /**
+ * 修改离线故障记录
+ * @param faultMessage
+ * @return
+ */
+ @PostMapping("/t-fault-message/updateFaultMessage")
+ R<String> updateFaultMessage(@RequestBody TFaultMessage faultMessage);
+
+ /**
+ * 查询枪是否有离线或故障记录
+ * @param gunId
+ * @return
+ */
+ @PostMapping("/t-fault-message/getFaultMessageByGunId/{gunId}")
+ R<TFaultMessage> getFaultMessageByGunId(@PathVariable("gunId") Integer gunId);
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java
index 2fd9933..d882190 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TFaultMessage.java
@@ -1,6 +1,7 @@
package com.ruoyi.chargingPile.api.model;
import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.web.domain.BasePojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -45,7 +46,10 @@
@ApiModelProperty(value = "充电桩id")
@TableField("charging_pile_id")
private Integer chargingPileId;
-
+ @ApiModelProperty(value = "充电枪id")
+ @TableField("charging_gun_id")
+ private Integer chargingGunId;
+
@TableField(exist = false)
private String chargingPileName;
@@ -59,7 +63,12 @@
private String content;
@ApiModelProperty(value = "故障时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("down_time")
private LocalDateTime downTime;
+ @ApiModelProperty(value = "结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @TableField("end_time")
+ private LocalDateTime endTime;
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 440d517..3de243c 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -4,4 +4,5 @@
com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory
com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory
com.ruoyi.chargingPile.api.factory.AccountingStrategyFallbackFactory
-com.ruoyi.chargingPile.api.factory.ParkingRecordFallbackFactory
\ No newline at end of file
+com.ruoyi.chargingPile.api.factory.ParkingRecordFallbackFactory
+com.ruoyi.chargingPile.api.factory.FaultMessageFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index 960f451..21adfde 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -108,6 +108,11 @@
public R<SettlementTotalVO> settlementTotalR(String time) {
return R.fail("查询结算汇总表导出列表失败:" + throwable.getMessage());
}
+
+ @Override
+ public R<String> updateChargingOrder(TChargingOrder chargingOrder) {
+ return R.fail("修改充电订单失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index 80529c0..5e460f3 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -118,4 +118,12 @@
@GetMapping(value = "/financial/settlement/settlementTotalR")
public R<SettlementTotalVO> settlementTotalR(String time);
+
+ /**
+ * 修改充电订单
+ * @param chargingOrder
+ * @return
+ */
+ @PostMapping("/t-charging-order/updateChargingOrder")
+ R<String> updateChargingOrder(@RequestBody TChargingOrder chargingOrder);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
index 32ff8f4..a548f5d 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -192,7 +192,9 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("pay_time")
private LocalDateTime payTime;
-
+ @ApiModelProperty(value = "实时需求电流")
+ @TableField("need_elec")
+ private BigDecimal needElec;
@ApiModelProperty(value = "站点名称")
@TableField(exist = false)
private String siteName;
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index 9d3546f..1ab8a01 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -3,10 +3,12 @@
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
@@ -210,5 +212,16 @@
siteNameVO.setSiteName(site.getName());
return R.ok(siteNameVO);
}
+ /**
+ * 根据枪编号获取充电枪
+ * @param code
+ * @return
+ */
+ @PostMapping("/getChargingGunByCode/{code}")
+ public R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code){
+ return R.ok(chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
+ .eq(TChargingGun::getCode, code)
+ .last("LIMIT 1")));
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java
index fade8ba..efbc94c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TFaultMessageController.java
@@ -1,10 +1,13 @@
package com.ruoyi.chargingPile.controller;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
+import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.chargingPile.service.TChargingPileService;
import com.ruoyi.chargingPile.service.TFaultMessageService;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.BasePage;
import com.ruoyi.common.core.web.page.PageInfo;
@@ -82,5 +85,40 @@
faultMessageService.removeById(id);
return AjaxResult.success();
}
+
+ /**
+ * 添加离线故障记录
+ * @param faultMessage
+ * @return
+ */
+ @PostMapping("/createFaultMessage")
+ public R<String> createFaultMessage(@RequestBody TFaultMessage faultMessage){
+ faultMessageService.save(faultMessage);
+ return R.ok();
+ }
+ /**
+ * 修改离线故障记录
+ * @param faultMessage
+ * @return
+ */
+ @PostMapping("/updateFaultMessage")
+ public R<String> updateFaultMessage(@RequestBody TFaultMessage faultMessage){
+ faultMessageService.updateById(faultMessage);
+ return R.ok();
+ }
+ /**
+ * 查询枪是否有离线或故障记录
+ * @param gunId
+ * @return
+ */
+ @PostMapping("/t-fault-message/getFaultMessageByGunId/{gunId}")
+ public R<TFaultMessage> getFaultMessageByGunId(@PathVariable("gunId") Integer gunId){
+ return R.ok(faultMessageService.getOne(Wrappers.lambdaQuery(TFaultMessage.class)
+ .eq(TFaultMessage::getChargingGunId,gunId)
+ .and(e->e.eq(TFaultMessage::getStatus,1).or().eq(TFaultMessage::getStatus,2))
+ .isNull(TFaultMessage::getEndTime)
+ .orderByDesc(TFaultMessage::getDownTime)
+ .last("LIMIT 1")));
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
index b3acfec..cd1ff30 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
@@ -8,15 +8,17 @@
<result column="app_user_id" property="appUserId" />
<result column="site_id" property="siteId" />
<result column="charging_pile_id" property="chargingPileId" />
+ <result column="charging_gun_id" property="chargingGunId" />
<result column="status" property="status" />
<result column="down_time" property="downTime" />
+ <result column="end_time" property="endTime" />
<result column="create_time" property="createTime" />
<result column="del_flag" property="delFlag" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
- id, app_user_id, site_id, charging_pile_id, status, down_time, create_time, del_flag
+ id, app_user_id, site_id, charging_pile_id, status, down_time, create_time, del_flag,charging_gun_id,end_time
</sql>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java
index d11cc16..9b74d75 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/builder/IotBuilder.java
@@ -34,7 +34,7 @@
return IoTDAClient.newBuilder()
.withCredential(auth)
// 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)"
- .withRegion(new Region("cn-north-4", IotConstant.URL))
+ .withRegion(new Region("cn-south-1", IotConstant.URL))
.build();
}
/**
@@ -50,7 +50,7 @@
.withSk(config.getSk());
return IamClient.newBuilder()
.withCredential(auth)
- .withRegion(IamRegion.valueOf("cn-north-4"))
+ .withRegion(IamRegion.valueOf("cn-south-1"))
.build();
}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java
index a9b79fa..bc13bcc 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/IotConstant.java
@@ -14,7 +14,7 @@
/**
* URL
*/
- public static final String URL = "https://iotda.cn-north-4.myhuaweicloud.com";
+ public static final String URL = "https://94cb3eb5f9.st1.iotda-app.cn-south-1.myhuaweicloud.com";
/**
* 创建产品
*/
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
index 8466119..3c83fca 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
@@ -35,6 +35,10 @@
*/
public static final String CHARGING_HANDSHAKE ="charging_handshake";
/**
+ * 参数配置
+ */
+ public static final String PARAMETER_SETTING ="parameter_setting";
+ /**
* 充电阶段BMS中止
*/
public static final String BMS_ABORT ="bms_abort";
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
index f629ed1..7125512 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -51,7 +51,11 @@
@PostMapping(value = "/message")
public AjaxResult<String> message(@RequestBody JSONObject jsonObject) throws IOException {
log.info("接收到消息中转:{}",jsonObject);
- JSONObject content = jsonObject.getJSONObject("content");
+ JSONObject content = jsonObject.getJSONObject("notify_data").getJSONObject("body").getJSONObject("content");
+ JSONObject header = jsonObject.getJSONObject("notify_data").getJSONObject("header");
+ String deviceId = header.getString("device_id"); // 设备id
+ String nodeId = header.getString("node_id"); // 设备编号
+ String productId = header.getString("product_id"); // 产品id
String service_id = content.getString("service_id");
log.info("服务id:{}",service_id);
SendResult sendResult;
@@ -66,7 +70,7 @@
OnlineReply onlineReply = new OnlineReply();
onlineReply.setCharging_pile_code(onlineMessage.getCharging_pile_code());
onlineReply.setOnline_result(0);
- result = iotMessageProduce.sendMessage(onlineReply.getCharging_pile_code(), ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply));
+ result = iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply));
log.info("充电桩登录认证-返回结果:{}",result);
break;
case SendTagConstant.PING:
@@ -77,7 +81,7 @@
pong.setCharging_pile_code(pingMessage.getCharging_pile_code());
pong.setCharging_gun_code(pingMessage.getCharging_gun_code());
pong.setCharging_gun_status(0);
- result = iotMessageProduce.sendMessage(pong.getCharging_pile_code(), ServiceIdMenu.PONG.getKey(), messageUtil.pong(pong));
+ result = iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PONG.getKey(), messageUtil.pong(pong));
log.info("充电桩心跳包-返回结果:{}",result);
break;
case SendTagConstant.END_CHARGE:
@@ -110,7 +114,7 @@
billingModeVerifyReply.setBilling_model_result(1);
}
}
- iotMessageProduce.sendMessage(billingModeVerifyReply.getCharging_pile_code(), ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply));
+ iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply));
break;
case SendTagConstant.ACQUISITION_BILLING_MODE:
AcquisitionBillingModeMessage acquisitionBillingModeMessage = JSON.parseObject(jsonObject.toJSONString(),AcquisitionBillingModeMessage.class);
@@ -123,7 +127,7 @@
StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
// 时段设置
StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
- iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
+ iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
break;
case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = JSON.parseObject(jsonObject.toJSONString(),UploadRealTimeMonitoringDataMessage.class);
@@ -134,6 +138,10 @@
ChargingHandshakeMessage chargingHandshakeMessage = JSON.parseObject(jsonObject.toJSONString(),ChargingHandshakeMessage.class);
sendResult = enhanceProduce.chargingHandshakeMessage(chargingHandshakeMessage);
// 响应硬件
+ break;
+ case SendTagConstant.PARAMETER_SETTING:
+ ParameterSettingMessage parameterSettingMessage = JSON.parseObject(jsonObject.toJSONString(),ParameterSettingMessage.class);
+ sendResult = enhanceProduce.parameterSettingMessage(parameterSettingMessage);
break;
case SendTagConstant.BMS_ABORT:
BmsAbortMessage bmsAbortMessage = JSON.parseObject(jsonObject.toJSONString(),BmsAbortMessage.class);
@@ -176,7 +184,7 @@
ConfirmTransactionRecord confirmTransactionRecord = new ConfirmTransactionRecord();
confirmTransactionRecord.setTransaction_serial_number(transactionRecordMessage.getTransaction_serial_number());
confirmTransactionRecord.setConfirm_result(0);
- iotMessageProduce.sendMessage(confirmTransactionRecord.getTransaction_serial_number(), ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord));
+ iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.CONFIRM_TRANSACTION_RECORD.getKey(),messageUtil.confirmTransactionRecord(confirmTransactionRecord));
break;
case SendTagConstant.UPDATE_BALANCE_REPLY:
UpdateBalanceReplyMessage updateBalanceReplyMessage = JSON.parseObject(jsonObject.toJSONString(),UpdateBalanceReplyMessage.class);
@@ -205,7 +213,7 @@
TimingSettingReply timingSettingReply = new TimingSettingReply();
timingSettingReply.setCharging_pile_code(timingSettingMessage.getCharging_pile_code());
timingSettingReply.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date()));
- iotMessageProduce.sendMessage(timingSettingReply.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReply));
+ iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.TIMING_SETTING_REPLY.getKey(),messageUtil.timingSettingReply(timingSettingReply));
break;
case SendTagConstant.SETUP_BILLING_MODEL_REPLY:
SetupBillingModelReplyMessage setupBillingModelReplyMessage = JSON.parseObject(jsonObject.toJSONString(),SetupBillingModelReplyMessage.class);
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsDemandAndChargerExportationMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsDemandAndChargerExportationMessageListener.java
index e537b29..a350c1e 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsDemandAndChargerExportationMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/BmsDemandAndChargerExportationMessageListener.java
@@ -5,6 +5,8 @@
import com.ruoyi.integration.mongodb.service.BmsDemandAndChargerExportationService;
import com.ruoyi.integration.rocket.model.BmsDemandAndChargerExportationMessage;
import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -12,6 +14,8 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+
+import java.util.Objects;
@Slf4j
@Component
@@ -26,6 +30,8 @@
@Autowired
private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService;
+ @Autowired
+ private ChargingOrderClient chargingOrderClient;
@Override
protected void handleMessage(BmsDemandAndChargerExportationMessage message) throws Exception {
// 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
@@ -35,6 +41,11 @@
BeanUtils.copyProperties(message,bmsDemandAndChargerExportation);
bmsDemandAndChargerExportationService.create(bmsDemandAndChargerExportation);
// 业务处理
+ TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData();
+ if(Objects.nonNull(chargingOrder)){
+ chargingOrder.setNeedElec(message.getBms_current_requirements());
+ chargingOrderClient.updateChargingOrder(chargingOrder);
+ }
}
@Override
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
index 6fd4244..2756d20 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -1,7 +1,11 @@
package com.ruoyi.integration.rocket.listener;
import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
+import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.feignClient.FaultMessageClient;
import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TFaultMessage;
import com.ruoyi.integration.api.model.Online;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
@@ -21,6 +25,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.time.LocalDateTime;
import java.util.Objects;
@Slf4j
@@ -41,6 +46,10 @@
private ChargingOrderClient chargingOrderClient;
@Resource
private AccountingStrategyDetailClient accountingStrategyDetailClient;
+ @Resource
+ private ChargingGunClient chargingGunClient;
+ @Resource
+ private FaultMessageClient faultMessageClient;
@Override
@@ -75,9 +84,33 @@
BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
chargingOrderClient.chargeMonitoring(query);
- // 存储状态信息
-
-
+ TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(message.getCharging_gun_code()).getData();
+ if(Objects.nonNull(chargingGun)){
+ // 存储状态信息
+ TFaultMessage faultMessage = new TFaultMessage();
+ if(message.getCharging_gun_status().equals(0) || message.getCharging_gun_status().equals(1)){
+ faultMessage.setSiteId(chargingGun.getSiteId());
+ faultMessage.setChargingPileId(chargingGun.getChargingPileId());
+ faultMessage.setChargingGunId(chargingGun.getId());
+ switch (message.getCharging_gun_status()){
+ case 0:
+ faultMessage.setStatus(1);
+ break;
+ case 1:
+ faultMessage.setStatus(2);
+ break;
+ }
+ faultMessage.setDownTime(LocalDateTime.now());
+ faultMessageClient.createFaultMessage(faultMessage);
+ }else {
+ // 空闲 充电 查询是否该设备之前存在离线记录或者故障记录
+ faultMessage = faultMessageClient.getFaultMessageByGunId(chargingGun.getId()).getData();
+ if(Objects.nonNull(faultMessage)){
+ faultMessage.setEndTime(LocalDateTime.now());
+ faultMessageClient.updateFaultMessage(faultMessage);
+ }
+ }
+ }
}
@Override
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
index 2cfd639..ba614a5 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.integration.api.model.ParameterSetting;
import com.ruoyi.integration.iotda.constant.SendTagConstant;
import com.ruoyi.integration.rocket.model.*;
import com.ruoyi.integration.rocket.util.RocketMQEnhanceTemplate;
@@ -98,6 +99,16 @@
message.setSource(SendTagConstant.CHARGING_HANDSHAKE);
return rocketMQEnhanceTemplate.send(TOPIC+SendTagConstant.CHARGING_HANDSHAKE, SendTagConstant.CHARGING_HANDSHAKE, message);
}
+ /**
+ * 参数设置
+ */
+ public SendResult parameterSettingMessage(ParameterSettingMessage message) {
+ // 设置业务key
+ message.setKey(UUID.randomUUID().toString());
+ // 设置消息来源,便于查询
+ message.setSource(SendTagConstant.PARAMETER_SETTING);
+ return rocketMQEnhanceTemplate.send(TOPIC+SendTagConstant.PARAMETER_SETTING, SendTagConstant.PARAMETER_SETTING, message);
+ }
/**
* 充电阶段BMS中止
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index d12f4b6..4f25977 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -944,4 +944,14 @@
TChargingOrder chargingOrder = chargingOrderService.getChargingOrderByLicensePlate(query);
return R.ok(chargingOrder);
}
+ /**
+ * 修改充电订单
+ * @param chargingOrder
+ * @return
+ */
+ @PostMapping("/updateChargingOrder")
+ public R<String> updateChargingOrder(@RequestBody TChargingOrder chargingOrder){
+ chargingOrderService.updateById(chargingOrder);
+ return R.ok();
+ }
}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index ac9152e..ad2a33a 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -36,13 +36,17 @@
<result column="refund_status" property="refundStatus" />
<result column="refund_serial_number" property="refundSerialNumber" />
<result column="refund_time" property="refundTime" />
+ <result column="need_elec" property="needElec" />
<result column="create_time" property="createTime" />
<result column="del_flag" property="delFlag" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
- id, code, order_type, order_classification, app_user_id, app_user_car_id,site_id, parking_lot_id, charging_pile_id, charging_gun_id, start_time, end_time, status, recharge_amount, recharge_payment_type, recharge_payment_status, recharge_serial_number, order_amount, app_coupon_id, coupon_discount_amount, vip_discount, vip_discount_amount, payment_amount, refund_code, refund_amount, refund_status, refund_serial_number, refund_time, create_time, del_flag
+ id, code, order_type, order_classification, app_user_id, app_user_car_id,site_id, parking_lot_id, charging_pile_id, charging_gun_id,
+ start_time, end_time, status, recharge_amount, recharge_payment_type, recharge_payment_status, recharge_serial_number,
+ order_amount, app_coupon_id, coupon_discount_amount, vip_discount, vip_discount_amount, payment_amount, refund_code,
+ refund_amount, refund_status, refund_serial_number, refund_time, create_time, del_flag,need_elec
</sql>
--
Gitblit v1.7.1