From 7e73e670d70e860bce6c216c23a75d366982c3c2 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 08 十月 2024 17:26:03 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                                  |  233 ++++++++++++++++++++++++---------
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java                                       |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java |    7 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java                               |   13 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java                         |   13 +
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java                                                |   14 ++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java                                         |    5 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java                                |   16 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java                                             |    2 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java                                |   14 +
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java                         |    5 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                           |   14 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java                                  |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java                    |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java                                     |   19 ++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java   |   11 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                     |   24 +++
 17 files changed, 313 insertions(+), 84 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
index 046b4b8..31db511 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
@@ -62,15 +62,16 @@
 
     @ApiModelProperty(value = "会员开始时间")
     @TableField("start_time")
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
 
     @ApiModelProperty(value = "会员结束时间")
     @TableField("end_time")
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime endTime;
 
     @TableField("create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
 
     @ApiModelProperty(value = "已赠送的月份")
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 56d4782..11c4cb6 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
@@ -5,6 +5,7 @@
 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.GetChargingGunByCode;
 import com.ruoyi.chargingPile.api.vo.SiteNameVO;
 import com.ruoyi.common.core.domain.R;
 import org.slf4j.Logger;
@@ -45,7 +46,7 @@
             }
 
             @Override
-            public R<TChargingGun> getChargingGunByCode(String code) {
+            public R<TChargingGun> getChargingGunByCode(GetChargingGunByCode code) {
                 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 f27cd5d..77548f2 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
@@ -3,6 +3,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.GetChargingGunByCode;
 import com.ruoyi.chargingPile.api.vo.SiteNameVO;
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
@@ -48,8 +49,8 @@
 	 * @param code
 	 * @return
 	 */
-	@PostMapping("/t-charging-gun/getChargingGunByCode/{code}")
-	R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code);
+	@PostMapping("/t-charging-gun/getChargingGunByCode")
+	R<TChargingGun> getChargingGunByCode(@RequestBody GetChargingGunByCode code);
 	/**
 	 * 编辑充电枪
 	 * @param chargingGun
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java
new file mode 100644
index 0000000..82b6e50
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/GetChargingGunByCode.java
@@ -0,0 +1,13 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/10/8 16:58
+ */
+@Data
+public class GetChargingGunByCode {
+	private String charging_pile_code; // 桩编码
+	private String charging_gun_code; // 抢号
+}
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 f51d11a..15f974f 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
@@ -9,9 +9,7 @@
 import com.ruoyi.order.api.model.TSettlementConfirm;
 import com.ruoyi.order.api.query.TChargingCountQuery;
 import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
-import com.ruoyi.order.api.vo.ChargingBillVO;
-import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
-import com.ruoyi.order.api.vo.SettlementTotalVO;
+import com.ruoyi.order.api.vo.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -140,6 +138,16 @@
                 log.error("购物订单退款回调通知失败:" + throwable.getMessage());
 
             }
+    
+            @Override
+            public void securityDetection(SecurityDetection securityDetection) {
+                log.error("修改安全检测数据失败:" + throwable.getMessage());
+            }
+    
+            @Override
+            public void startChargeSuccessfully(PlatformStartChargingReplyMessage message) {
+                log.error("远程启动充电应答失败:" + 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 0dc3302..72bc9ac 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
@@ -11,12 +11,10 @@
 import com.ruoyi.order.api.model.TSettlementConfirm;
 import com.ruoyi.order.api.query.TChargingCountQuery;
 import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
-import com.ruoyi.order.api.vo.ChargingBillVO;
-import com.ruoyi.order.api.vo.SettlementTotalVO;
+import com.ruoyi.order.api.vo.*;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
@@ -178,4 +176,19 @@
                                              @RequestParam("out_trade_no") String refund_id,
                                              @RequestParam("out_trade_no") String tradeState,
                                              @RequestParam("out_trade_no") String success_time);
+    
+    /**
+     * 修改安全检测数据
+     * @param securityDetection
+     */
+    @PostMapping("/t-shopping-order/securityDetection")
+    void securityDetection(@RequestBody SecurityDetection securityDetection);
+    
+    
+    /**
+     * 远程启动充电应答
+     * @param message
+     */
+    @PostMapping("/t-shopping-order/startChargeSuccessfully")
+    void startChargeSuccessfully(PlatformStartChargingReplyMessage message);
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java
new file mode 100644
index 0000000..e074bdd
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/PlatformStartChargingReplyMessage.java
@@ -0,0 +1,16 @@
+package com.ruoyi.order.api.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/10/8 17:16
+ */
+@Data
+public class PlatformStartChargingReplyMessage {
+	private String transaction_serial_number; // 交易流水号
+	private String charging_pile_code; // 桩编码
+	private String charging_gun_code; // 抢号
+	private Integer startup_result; // 启动结果(0:失败,1:成功)
+	private Integer failure_cause; // "失败原因(0:无,1:设备编号不匹配,2:枪已在充电,3:设备故障,4:设备离线,5:未插枪桩在收到启充命令后,检测到未插枪则发送 0x33 报文回复充电失败。若在 60 秒(以收到 0x34 时间开始计算)内检测到枪重新连接,则补送 0x33 成功报文;超时或者离线等其他异常,桩不启充、不补发 0x33 报文)"
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java
new file mode 100644
index 0000000..0f24456
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SecurityDetection.java
@@ -0,0 +1,14 @@
+package com.ruoyi.order.api.vo;
+
+import lombok.Data;
+
+@Data
+public class SecurityDetection {
+    private String transaction_serial_number; // 交易流水号
+    private String charging_pile_code; // 桩编码
+    private String charging_gun_code; // 抢号
+    private Integer secure_connection; // 车枪连接(0=未连接,1=连接)
+    private Integer nsulation_detection; // 绝缘检测(0=安全,1=不安全)
+    private Integer electronic_lock_lock; // 电磁锁状态(0=未锁,1=已锁)
+
+}
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 6855288..446fc59 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,6 +3,7 @@
 
 import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.io.FileUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
@@ -11,6 +12,7 @@
 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.GetChargingGunByCode;
 import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO;
 import com.ruoyi.chargingPile.api.vo.SiteNameVO;
 import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
@@ -254,11 +256,14 @@
      * @param code
      * @return
      */
-    @PostMapping("/getChargingGunByCode/{code}")
-    public R<TChargingGun> getChargingGunByCode(@PathVariable("code") String code){
+    @PostMapping("/getChargingGunByCode")
+    public R<TChargingGun> getChargingGunByCode(@RequestBody GetChargingGunByCode code){
+        TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getCode, code.getCharging_pile_code()).eq(TChargingPile::getDelFlag, 0));
         return R.ok(chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
-                .eq(TChargingGun::getCode, code)
-                .last("LIMIT 1")));
+                        .eq(TChargingGun::getChargingPileId, chargingPile.getId())
+                        .eq(TChargingGun::getCode, code.getCharging_gun_code())
+                        .eq(TChargingGun::getDelFlag, 0)
+                        .last("LIMIT 1")));
     }
     /**
      * 根据枪编号获取充电枪
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java
index d60ef45..5aded73 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PlatformStartChargingReplyMessageListener.java
@@ -5,6 +5,7 @@
 import com.ruoyi.integration.mongodb.service.PlatformStartChargingReplyService;
 import com.ruoyi.integration.rocket.model.PlatformStartChargingReplyMessage;
 import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.MessageModel;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -12,6 +13,8 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
 
 @Slf4j
 @Component
@@ -26,6 +29,11 @@
 
     @Autowired
     private PlatformStartChargingReplyService platformStartChargingReplyService;
+    
+    @Resource
+    private ChargingOrderClient chargingOrderClient;
+    
+    
 
     @Override
     protected void handleMessage(PlatformStartChargingReplyMessage message) throws Exception {
@@ -36,6 +44,9 @@
         BeanUtils.copyProperties(message,platformStartChargingReply);
         platformStartChargingReplyService.create(platformStartChargingReply);
         // 业务处理
+        com.ruoyi.order.api.vo.PlatformStartChargingReplyMessage message1 = new com.ruoyi.order.api.vo.PlatformStartChargingReplyMessage();
+        BeanUtils.copyProperties(message, message1);
+        chargingOrderClient.startChargeSuccessfully(message1);
     }
 
     @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 ce52b46..a08aeb8 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
@@ -6,6 +6,7 @@
 import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.model.TFaultMessage;
+import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
 import com.ruoyi.integration.api.model.Online;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
@@ -83,8 +84,10 @@
         UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery();
         BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
         chargingOrderClient.chargeMonitoring(query);
-
-        TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(message.getCharging_gun_code()).getData();
+        GetChargingGunByCode code = new GetChargingGunByCode();
+        code.setCharging_pile_code(message.getCharging_pile_code());
+        code.setCharging_gun_code(message.getCharging_gun_code());
+        TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
         if(Objects.nonNull(chargingGun)){
             // 存储状态信息
             TFaultMessage faultMessage = new TFaultMessage();
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 5d956d1..eca723a 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
@@ -457,7 +457,29 @@
                                         @RequestParam("attach") String attach) {
         AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach);
     }
-
+    
+    
+    /**
+     * 修改安全检测数据
+     * @param securityDetection
+     */
+    @ResponseBody
+    @PostMapping(value = "/securityDetection")
+    public void securityDetection(@RequestBody SecurityDetection securityDetection){
+        chargingOrderService.securityDetection(securityDetection);
+    }
+    
+    /**
+     * 远程启动充电应答
+     * @param message
+     */
+    @ResponseBody
+    @PostMapping(value = "/startChargeSuccessfully")
+    public void startChargeSuccessfully(@RequestBody PlatformStartChargingReplyMessage message){
+        chargingOrderService.startChargeSuccessfully(message);
+    }
+    
+    
 
     /**
      * 支付宝支付成功后的回调
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 7ca2197..6b2df64 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -80,6 +80,20 @@
 	
 	
 	/**
+	 * 安全检测数据
+	 * @param securityDetection
+	 */
+	void securityDetection(SecurityDetection securityDetection);
+	
+	
+	/**
+	 * 启动充电应发
+	 * @param message
+	 */
+	void startChargeSuccessfully(PlatformStartChargingReplyMessage message);
+	
+	
+	/**
 	 * 充电启动失败后的退款回调处理
 	 * @param out_refund_no
 	 * @param refund_id
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 19512b4..7efe4e0 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
@@ -13,6 +13,7 @@
 import com.ruoyi.account.api.vo.GetInviteUser;
 import com.ruoyi.chargingPile.api.feignClient.*;
 import com.ruoyi.chargingPile.api.model.*;
+import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.dto.ChargingOrderGroup;
 import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
@@ -40,6 +41,7 @@
 import com.ruoyi.order.api.query.SettlementListQuery;
 import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import com.ruoyi.order.api.vo.*;
+import com.ruoyi.order.api.vo.SecurityDetection;
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.mapper.TSettlementConfirmMapper;
@@ -196,6 +198,9 @@
 
 	//计数器
 	private Map<String, Integer> counter_map = new HashMap<>();
+	
+	//计数器
+	private Map<String, Integer> boot_failed_map = new HashMap<>();
 
 
 
@@ -456,7 +461,7 @@
 		
 		//直营站点才可以享受会员折扣
 		if(null != appUser.getVipId() && 1 == site.getBusinessCategory()){
-			TVip vip = vipClient.getInfo(appUser.getVipId()).getData();
+			TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
 			BigDecimal discount = null;
 			if(1 == vip.getType()){
 				//普通会员折扣使用积分策略上的折扣,且有最高优惠金额
@@ -548,7 +553,7 @@
 		preChargeCheck.setSecureConnectionDetection(false);
 		preChargeCheck.setStartupSuccess(1);
 		String key = "AQJC_" + chargingOrder.getChargingGunId();
-		redisService.setCacheObject(key, preChargeCheck);
+		redisService.setCacheObject(key, preChargeCheck, 24L, TimeUnit.HOURS);
 		
 		//根据当前充值的金额和计费模板算出充电的金额
 		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
@@ -609,7 +614,7 @@
 		if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
 			//计算会员最大优惠金额
 			if(null != appUser.getVipId()){
-				TVip vip = vipClient.getInfo(appUser.getVipId()).getData();
+				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
 				BigDecimal maximumDeduction = vip.getMaximumDeduction();
 				//普通会员有最高优惠限制
 				if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
@@ -621,7 +626,7 @@
 				getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
 				getAppUserVipDetail.setVipId(appUser.getVipId());
 				TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
-				if(data.getChargeNum() > 0){
+				if(null != data && data.getChargeNum() > 0){
 					data.setChargeNum(data.getChargeNum() - 1);
 					appUserVipDetailClient.updateAppUserVipDetail(data);
 					//会员有充电优惠次数,直接将优惠金额加入到充电费用中增加充电时长
@@ -649,71 +654,173 @@
 
 		sendMessageClient.platformStartCharging(platformStartCharging);
 		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
-		String code = chargingOrder.getCode();
+		Long id = chargingOrder.getId();
 		//执行5分钟的定时任务检测
 		ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
 		scheduler.scheduleAtFixedRate(()->{
-			//获取安全校验
-			SecurityDetection securityDetection = securityDetectionClient.getSecurityDetection(chargingOrder.getCode()).getData();
-			if(null != securityDetection){
-				PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId());
-				if(null != preChargeCheck1){
-					preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
-					preChargeCheck1.setInsulationTesting(true);
-					preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
-					preChargeCheck1.setStartupSuccess(1);
-					redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1);
-				}
-			}
-			
-			List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
-			System.err.println("-------------------开始检查调起充电结果-------------------");
-			System.err.println(data.toString());
-			if(data.size() != 0){
-				PlatformStartChargingReply platformStartChargingReply = data.get(1);
-				Integer startup_result = platformStartChargingReply.getStartup_result();
-				Integer failure_cause = platformStartChargingReply.getFailure_cause();
-				Integer counter = counter_map.get(code);
-				PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
-				//5分钟内还未插枪则取消充电,退回金额。
-				if(failure_cause == 5 && (null == counter || counter < 300)){
-					counter = (null == counter ? 0 : counter) + 1;
-					counter_map.put(code, counter);
-					//启动失败
-					preChargeCheck1.setStartupSuccess(3);
-					preChargeCheck1.setFailureCause(failure_cause);
-					redisService.setCacheObject(key, preChargeCheck1);
-					return;
-				}
-				
-				//清除计时器中的无效数据
-				counter_map.remove(code);
-				TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
-				if(0 == startup_result){
-					//启动失败
-					preChargeCheck1.setStartupSuccess(3);
-					preChargeCheck1.setFailureCause(failure_cause);
-					//启动失败后取消订单,退款操作
-					refund(code);
-					order.setStatus(-1);
-					order.setEndMode(0);
-				}else{
-					//启动成功
-					preChargeCheck1.setStartupSuccess(2);
-					order.setStatus(3);
-					order.setStartTime(LocalDateTime.now());
-				}
-				this.updateById(order);
-				redisService.setCacheObject(key, preChargeCheck1);
-				//提前结束定时任务
+			if(timingDetection(id)){
 				scheduler.shutdown();
-			}else{
-				log.error("未上传开启充电结果........");
 			}
 		}, 5, 1, TimeUnit.SECONDS);
 		return AjaxResult.success();
 	}
 	
+	
+	/**
+	 * 定时检测mongodb数据库数据
+	 * @param id
+	 * @return
+	 */
+	public boolean timingDetection(Long id){
+		TChargingOrder chargingOrder = this.getById(id);
+		if(chargingOrder.getStatus() != 2){
+			return true;
+		}
+		String code = chargingOrder.getCode();
+		String key = "AQJC_" + chargingOrder.getChargingGunId();
+		//获取安全校验
+		com.ruoyi.integration.api.model.SecurityDetection securityDetection = securityDetectionClient.getSecurityDetection(chargingOrder.getCode()).getData();
+		if(null != securityDetection){
+			PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId());
+			if(null != preChargeCheck1){
+				preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
+				preChargeCheck1.setInsulationTesting(true);
+				preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
+				preChargeCheck1.setStartupSuccess(1);
+				redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
+			}
+		}
+		
+		List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
+		System.err.println(code + ":-------------------开始检查调起充电结果-------------------");
+		System.err.println(data.toString());
+		if(data.size() != 0){
+			PlatformStartChargingReply platformStartChargingReply = data.get(1);
+			Integer startup_result = platformStartChargingReply.getStartup_result();
+			Integer failure_cause = platformStartChargingReply.getFailure_cause();
+			Integer counter = counter_map.get(code);
+			PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
+			//5分钟内还未插枪则取消充电,退回金额。
+			if(failure_cause == 5 && (null == counter || counter < 300)){
+				counter = (null == counter ? 0 : counter) + 1;
+				counter_map.put(code, counter);
+				//启动失败
+				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setFailureCause(failure_cause);
+				redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+				return false;
+			}
+			
+			//清除计时器中的无效数据
+			counter_map.remove(code);
+			TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
+			if(0 == startup_result){
+				//启动失败
+				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setFailureCause(failure_cause);
+				//启动失败后取消订单,退款操作
+				refund(code);
+				order.setStatus(-1);
+				order.setEndMode(0);
+			}else{
+				//启动成功
+				preChargeCheck1.setStartupSuccess(2);
+				order.setStatus(3);
+				order.setStartTime(LocalDateTime.now());
+			}
+			this.updateById(order);
+			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+			return true;
+		}else{
+			log.error(code + ":未上传开启充电结果........");
+			
+			Integer counter = boot_failed_map.get(code);
+			PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
+			//5分钟内未启动成功,退回金额。
+			if(null == counter || counter < 300){
+				counter = (null == counter ? 0 : counter) + 1;
+				boot_failed_map.put(code, counter);
+				//启动失败
+				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setFailureCause(0);
+				redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+				return false;
+			}
+			
+			//清除计时器中的无效数据
+			boot_failed_map.remove(code);
+			TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
+			//启动失败
+			preChargeCheck1.setStartupSuccess(3);
+			preChargeCheck1.setFailureCause(0);
+			//启动失败后取消订单,退款操作
+			refund(code);
+			order.setStatus(-1);
+			order.setEndMode(0);
+			this.updateById(order);
+			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
+			return true;
+		}
+	}
+	
+	
+	/**
+	 * 修改安全检测数据
+	 * @param securityDetection
+	 */
+	@Override
+	public void securityDetection(SecurityDetection securityDetection){
+		GetChargingGunByCode code = new GetChargingGunByCode();
+		code.setCharging_pile_code(securityDetection.getCharging_pile_code());
+		code.setCharging_gun_code(securityDetection.getCharging_gun_code());
+		TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
+		PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + chargingGun.getId());
+		if(null != preChargeCheck1){
+			preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
+			preChargeCheck1.setInsulationTesting(true);
+			preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
+			preChargeCheck1.setStartupSuccess(1);
+			redisService.setCacheObject("AQJC_" + chargingGun.getId(), preChargeCheck1, 24L, TimeUnit.HOURS);
+		}
+	}
+	
+	/**
+	 * 启动充电应发
+	 * @param message
+	 */
+	@Override
+	public void startChargeSuccessfully(PlatformStartChargingReplyMessage message) {
+		Integer startup_result = message.getStartup_result();
+		Integer failure_cause = message.getFailure_cause();
+		TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, message.getTransaction_serial_number()));
+		if(order.getStatus() != 2){
+			return;
+		}
+		String code = order.getCode();
+		PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + order.getChargingGunId());
+		if(null != preChargeCheck1){
+			preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
+			preChargeCheck1.setInsulationTesting(true);
+			preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
+			preChargeCheck1.setStartupSuccess(1);
+			redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
+		}
+		if(0 == startup_result){
+			//启动失败
+			preChargeCheck1.setStartupSuccess(3);
+			preChargeCheck1.setFailureCause(failure_cause);
+			//启动失败后取消订单,退款操作
+			refund(code);
+			order.setStatus(-1);
+			order.setEndMode(0);
+		}else{
+			//启动成功
+			preChargeCheck1.setStartupSuccess(2);
+			order.setStatus(3);
+			order.setStartTime(LocalDateTime.now());
+		}
+		this.updateById(order);
+	}
 	
 	/**
 	 * 启动失败后的退款,取消订单
@@ -986,7 +1093,7 @@
 			
 			TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData();
 			if(null != appUser1.getVipId()){
-				TVip vip = vipClient.getInfo(appUser1.getVipId()).getData();
+				TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData();
 				Integer doubleIntegration = vip.getDoubleIntegration();
 				//双倍积分
 				if(1 == doubleIntegration){
@@ -1068,7 +1175,7 @@
 			Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
 			Integer integral = payAmount.multiply(new BigDecimal(num1)).intValue();
 			if(null != appUser.getVipId()){
-				TVip vip = vipClient.getInfo(appUser.getVipId()).getData();
+				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
 				Integer doubleIntegration = vip.getDoubleIntegration();
 				//双倍积分
 				if(1 == doubleIntegration){
@@ -1798,7 +1905,7 @@
 			
 			TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData();
 			if(null != appUser1.getVipId()){
-				TVip vip = vipClient.getInfo(appUser1.getVipId()).getData();
+				TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData();
 				Integer doubleIntegration = vip.getDoubleIntegration();
 				//双倍积分
 				if(1 == doubleIntegration){
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index 221c46f..689b6e2 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -278,7 +278,7 @@
             if(null != num1 && 0 < num1){
                 TAppUser appUser = appUserClient.getUserById(userid).getData();
                 if(null != appUser.getVipId()){
-                    TVip vip = vipClient.getInfo(appUser.getVipId()).getData();
+                    TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
                     Integer doubleIntegration = vip.getDoubleIntegration();
                     //双倍积分
                     if(1 == doubleIntegration){
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
index 23aeefd..b341dd9 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
@@ -53,7 +53,7 @@
         for (TVipOrder tVipOrder : list) {
             tVipOrder.setUid(tVipOrder.getId().toString());
             tVipOrder.setUserUid(tVipOrder.getAppUserId().toString());
-            TVip data = vipClient.getInfo(tVipOrder.getVipId()).getData();
+            TVip data = vipClient.getInfo1(tVipOrder.getVipId()).getData();
             if (data!=null){
                 tVipOrder.setName(data.getName());
             }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
index 1eb1e82..ada569e 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -219,7 +219,7 @@
             if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) {
                 return AjaxResult.error("当前用户已到达兑换"+coupon+"次");
             }else {
-                coupon.setInventoryQuantity(coupon.getInventoryQuantity()-exchangeDto.getNum());
+                coupon.setInventoryQuantity(coupon.getInventoryQuantity()-1);
             }
 
 

--
Gitblit v1.7.1