From 344d8ba8c6e8c3a8833ec98a81f8047ec3bdca4b Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 11 九月 2024 09:46:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 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-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.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 +
 22 files changed, 288 insertions(+), 19 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/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
index 328a1fb..2314df7 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -103,7 +103,12 @@
     @PostMapping(value = "/add")
     public AjaxResult<Boolean> add(@RequestBody TApplyChargingPileDTO dto) {
         // 验证验证码
-        String code = redisService.getCacheObject(dto.getLandlordPhone() + Constants.APPLY_CHARGING);
+        String code;
+        if(dto.getLandlordHandling().equals(1)){
+            code = redisService.getCacheObject(dto.getLandlordPhone() + Constants.APPLY_CHARGING);
+        }else {
+            code = redisService.getCacheObject(dto.getAgentPhone() + Constants.APPLY_CHARGING);
+        }
         if(StringUtils.isEmpty(code)){
             return AjaxResult.error("验证码已过期,请重新获取验证码!");
         }
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