From dd53078ab5e034625342dd28546924e963cbe41c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 19 九月 2024 17:33:30 +0800
Subject: [PATCH] 充电桩硬件对接

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java                             |    4 ++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java                |   10 +++++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java |   16 ++++----
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java                                  |    5 ++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java               |   65 +++++++++++++++++++++++++++++++-
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java                         |   11 +++++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java                        |    9 +++-
 7 files changed, 108 insertions(+), 12 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
index 61b14b5..7f2650b 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -69,6 +69,11 @@
                 return R.fail("支付回调:" + cause.getMessage());
             }
 
+            @Override
+            public R vipCallBack(String code, String outTradeNo) {
+                return R.fail("会员订单回调失败:" + cause.getMessage());
+            }
+
 
             @Override
             public R<TActivityVO> activityStatistics(TActivityStatisticsQuery dto) {
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
index 9a27b45..53b62e4 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/controller/SendMessageController.java
@@ -172,6 +172,16 @@
     }
 
     /**
+     * 对时设置
+     * @param timingSetting 实体对象
+     * @return
+     */
+    @PostMapping("/timingSetting")
+    public String timingSetting(@RequestBody TimingSetting timingSetting){
+        return  iotMessageProduce.sendMessage(timingSetting.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING.getKey(),messageUtil.timingSetting(timingSetting));
+    }
+
+    /**
      * 对时设置应答
      * @param timingSettingReply 实体对象
      * @return
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java
index 12ea9d4..5146187 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/ServiceIdMenu.java
@@ -67,6 +67,10 @@
 	 */
 	 WORKING_PARAMETER_SETTING ("充电桩工作参数设置","working_parameter_setting"),
 	/**
+	 * 对时设置
+	 */
+	TIMING_SETTING ("对时设置","timing_setting"),
+	/**
 	 * 对时设置应答
 	 */
 	 TIMING_SETTING_REPLY ("对时设置应答","timing_setting_reply"),
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 06e83ab..c29b1a2 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
@@ -5,6 +5,7 @@
 import com.ruoyi.chargingPile.api.dto.CheckChargingStrategyDTO;
 import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.integration.api.model.*;
 import com.ruoyi.integration.iotda.constant.SendTagConstant;
@@ -17,6 +18,7 @@
 import com.ruoyi.integration.rocket.produce.EnhanceProduce;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.client.producer.SendResult;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -180,10 +182,10 @@
                 PlatformConfirmationCharging platformConfirmationCharging = new PlatformConfirmationCharging();
                 platformConfirmationCharging.setCharging_pile_code(chargingPileStartsChargingMessage.getCharging_pile_code());
                 platformConfirmationCharging.setCharging_gun_code(chargingPileStartsChargingMessage.getCharging_gun_code());
-                platformConfirmationCharging.setCard_number("");
+                platformConfirmationCharging.setCard_number(chargingPileStartsChargingMessage.getAccount());
                 platformConfirmationCharging.setAccount_balance(BigDecimal.ZERO);
                 platformConfirmationCharging.setAuthentication(1);
-                // TODO
+                // TODO 若是失败,给出失败原因
                 iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PLATFORM_CONFIRMATION_CHARGING.getKey(),messageUtil.platformConfirmationCharging(platformConfirmationCharging));
                 break;
             case SendTagConstant.PLATFORM_START_CHARGING_REPLY:
@@ -264,4 +266,63 @@
         return AjaxResult.success();
     }
 
+    @PostMapping(value = "/message/sendMessage")
+    public R sendMessage() {
+        // 运营平台远程控制启机
+//        PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+//        platformStartCharging.setTransaction_serial_number("4200002375202409185150427245");
+//        platformStartCharging.setCharging_pile_code("3401231001200202");
+//        platformStartCharging.setCharging_gun_code("1");
+//        platformStartCharging.setCard_number("1833063878153543681");
+//        platformStartCharging.setAccount_balance(new BigDecimal(50));
+//        String message = iotMessageProduce.sendMessage(platformStartCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_START_CHARGING.getKey(), messageUtil.platformStartCharging(platformStartCharging));
+        // 运营平台远程停机
+//        PlatformStopCharging platformStopCharging = new PlatformStopCharging();
+//        platformStopCharging.setCharging_pile_code("3401231001200202");
+//        platformStopCharging.setCharging_gun_code("1");
+//        String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging));
+        // 修改余额
+//        UpdateBalance updateBalance = new UpdateBalance();
+//        updateBalance.setCharging_pile_code("3401231001200202");
+//        updateBalance.setCharging_gun_code("1");
+//        updateBalance.setPhysical_card_number("1833063878153543681");
+//        updateBalance.setAccount_balance(new BigDecimal(20));
+//        String message = iotMessageProduce.sendMessage(updateBalance.getCharging_pile_code(), ServiceIdMenu.UPDATE_BALANCE.getKey(),messageUtil.updateBalance(updateBalance));
+        // 充电桩工作参数设置
+//        WorkingParameterSetting workingParameterSetting = new WorkingParameterSetting();
+//        workingParameterSetting.setCharging_pile_code("3401231001200202");
+//        workingParameterSetting.setAllow_work(0);
+//        workingParameterSetting.setMaximum_output_power(220);
+//        String message = iotMessageProduce.sendMessage(workingParameterSetting.getCharging_pile_code(), ServiceIdMenu.WORKING_PARAMETER_SETTING.getKey(),messageUtil.workingParameterSetting(workingParameterSetting));
+        // 对时设置
+//        TimingSetting timingSetting = new TimingSetting();
+//        timingSetting.setCharging_pile_code("3401231001200202");
+//        System.err.println(CP56Time2aConverter.convertToCP56Time2a(new Date()));
+//        timingSetting.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date()));
+//        String message = iotMessageProduce.sendMessage(timingSetting.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING.getKey(),messageUtil.timingSetting(timingSetting));
+        // TODO 罗  计费模型设置
+//        SetupBillingModel setupBillingModel = new SetupBillingModel();
+//        // 计费模型
+//        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode("3401231001200202").getData();
+//        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
+//        // 价格设置
+//        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
+//        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
+//        // 时段设置
+//        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
+//        TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode("3401231001200202").getData();
+//        acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
+//        acquisitionBillingModeReply.setCharging_pile_code("3401231001200202");
+//        acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
+//        BeanUtils.copyProperties(acquisitionBillingModeReply,setupBillingModel);
+//        System.err.println(setupBillingModel);
+//        String message = iotMessageProduce.sendMessage(setupBillingModel.getCharging_pile_code(), ServiceIdMenu.SETUP_BILLING_MODEL.getKey(),messageUtil.setupBillingModel(setupBillingModel));
+        // 远程重启
+        PlatformRestart platformRestart = new PlatformRestart();
+        platformRestart.setCharging_pile_code("3401231001200202");
+        platformRestart.setOperate(2);
+        String message = iotMessageProduce.sendMessage(platformRestart.getCharging_pile_code(), ServiceIdMenu.PLATFORM_RESTART.getKey(),messageUtil.platformRestart(platformRestart));
+        return R.ok(message);
+    }
+
 }
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
index c7c76bd..5fdcac0 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
@@ -44,6 +44,8 @@
     @Autowired
     private WorkingParameterSettingService workingParameterSettingService;
     @Autowired
+    private TimingSettingService timingSettingService;
+    @Autowired
     private TimingSettingReplyService timingSettingReplyService;
     @Autowired
     private SetupBillingModelService setupBillingModelService;
@@ -205,6 +207,15 @@
     }
 
     /**
+     * 对时设置
+     * @param timingSetting 实体对象
+     * @return
+     */
+    public String timingSetting(TimingSetting timingSetting){
+        timingSettingService.create(timingSetting);
+        return  getMessageJsonString(timingSetting, ServiceIdMenu.TIMING_SETTING.getValue());
+    }
+    /**
      * 对时设置应答
      * @param timingSettingReply 实体对象
      * @return
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
index e881666..e935937 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
@@ -67,8 +67,13 @@
             }
             accountingStrategyDetails = accountingStrategyDetails.stream().sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)).collect(Collectors.toList());
             for (TAccountingStrategyDetail accountingStrategyDetail : accountingStrategyDetails) {
-                if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").isBefore(time)
-                        && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ":00").isAfter(time)){
+                String startTime = accountingStrategyDetail.getStartTime();
+                String endTime = accountingStrategyDetail.getEndTime();
+                if("00:00".equals(endTime)){
+                    endTime = "23:59";
+                }
+                if(DateUtils.string2LocalTime(startTime + ":00").isBefore(time)
+                        && DateUtils.string2LocalTime(endTime + ":00").isAfter(time)){
                     switch (i){
                         case 1:
                             acquisitionBillingModeReply.setTime1(accountingStrategyDetail.getType().equals(1)?0
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
index 6286373..0dc777d 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/AcquisitionBillingModeMessageListener.java
@@ -52,14 +52,14 @@
         BeanUtils.copyProperties(message,acquisitionBillingMode);
         acquisitionBillingModeService.create(acquisitionBillingMode);
         // 业务处理  计费模型请求应答  1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段
-        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(message.getCharging_pile_code()).getData();
-        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
-        // 价格设置
-        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
-        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
-        // 时段设置
-        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
-        iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
+//        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(message.getCharging_pile_code()).getData();
+//        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
+//        // 价格设置
+//        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
+//        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
+//        // 时段设置
+//        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
+//        iotMessageProduce.sendMessage(acquisitionBillingModeReply.getCharging_pile_code(), ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
     }
 
     @Override

--
Gitblit v1.7.1