From 7b55e2cd82647b87d79a778ed70fdbddb39ac00a Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 24 九月 2024 13:44:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java |  125 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 121 insertions(+), 4 deletions(-)

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 cb36d98..e43d689 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;
@@ -15,23 +16,26 @@
 import com.ruoyi.integration.iotda.utils.tools.StrategyUtil;
 import com.ruoyi.integration.rocket.model.*;
 import com.ruoyi.integration.rocket.produce.EnhanceProduce;
+import io.swagger.annotations.ApiOperation;
 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;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * iotda消息监听
  */
 @Slf4j
 @RestController
+@RequestMapping("/iot")
 public class IotMessageListener {
 
     @Autowired
@@ -89,6 +93,11 @@
                 sendResult = enhanceProduce.endChargeMessage(endChargeMessage);
                 // 响应硬件
                 break;
+            case SendTagConstant.ERROR_MESSAGE:
+                ErrorMessageMessage errorMessageMessage = JSON.parseObject(content.toJSONString(),ErrorMessageMessage.class);
+                sendResult = enhanceProduce.errorMessageMessage(errorMessageMessage);
+                // 响应硬件
+                break;
             case SendTagConstant.BILLING_MODE_VERIFY:
                 BillingModeVerifyMessage billingModeVerifyMessage = JSON.parseObject(content.toJSONString(),BillingModeVerifyMessage.class);
                 sendResult = enhanceProduce.billingModeVerifyMessage(billingModeVerifyMessage);
@@ -102,7 +111,7 @@
                 }else {
                     // 查询桩使用的模版
                     CheckChargingStrategyDTO dto = new CheckChargingStrategyDTO();
-                    dto.setCode(billingModeVerifyMessage.getBilling_model_code());
+                    dto.setCode(billingModeVerifyMessage.getCharging_pile_code());
                     dto.setStrategyDetailId(Integer.valueOf(billingModeVerifyMessage.getBilling_model_code()));
                     Boolean check = accountingStrategyDetailClient.checkChargingStrategy(dto).getData();
                     // 校验计费模版是否准确
@@ -127,6 +136,10 @@
                 StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
                 // 时段设置
                 StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
+                TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData();
+                acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
+                acquisitionBillingModeReply.setCharging_pile_code(acquisitionBillingModeMessage.getCharging_pile_code());
+                acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
                 iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
                 break;
             case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
@@ -166,6 +179,14 @@
                 ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = JSON.parseObject(content.toJSONString(),ChargingPileStartsChargingMessage.class);
                 sendResult = enhanceProduce.chargingPileStartsChargingMessage(chargingPileStartsChargingMessage);
                 // 响应硬件
+                PlatformConfirmationCharging platformConfirmationCharging = new PlatformConfirmationCharging();
+                platformConfirmationCharging.setCharging_pile_code(chargingPileStartsChargingMessage.getCharging_pile_code());
+                platformConfirmationCharging.setCharging_gun_code(chargingPileStartsChargingMessage.getCharging_gun_code());
+                platformConfirmationCharging.setCard_number(chargingPileStartsChargingMessage.getAccount());
+                platformConfirmationCharging.setAccount_balance(BigDecimal.ZERO);
+                platformConfirmationCharging.setAuthentication(1);
+                // TODO 若是失败,给出失败原因
+                iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.PLATFORM_CONFIRMATION_CHARGING.getKey(),messageUtil.platformConfirmationCharging(platformConfirmationCharging));
                 break;
             case SendTagConstant.PLATFORM_START_CHARGING_REPLY:
                 PlatformStartChargingReplyMessage platformStartChargingReplyMessage = JSON.parseObject(content.toJSONString(),PlatformStartChargingReplyMessage.class);
@@ -245,4 +266,100 @@
         return AjaxResult.success();
     }
 
+
+    @ApiOperation(value = "运营平台远程控制启机",tags = {"硬件接口"})
+    @GetMapping(value = "/platformStartCharging")
+    public R platformStartCharging(String orderNum,String deviceId,Long orderId,BigDecimal money) {
+        // 运营平台远程控制启机
+        PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+        platformStartCharging.setTransaction_serial_number(orderNum);
+        platformStartCharging.setCharging_pile_code(deviceId);
+        platformStartCharging.setCharging_gun_code("1");
+        platformStartCharging.setCard_number(orderId.toString());
+        platformStartCharging.setAccount_balance(money);
+        String message = iotMessageProduce.sendMessage(platformStartCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_START_CHARGING.getKey(), messageUtil.platformStartCharging(platformStartCharging));
+        return R.ok(message);
+    }
+
+    @ApiOperation(value = "运营平台远程停机",tags = {"硬件接口"})
+    @GetMapping(value = "/platformStopCharging")
+    public R platformStopCharging(String deviceId) {
+        // 运营平台远程停机
+        PlatformStopCharging platformStopCharging = new PlatformStopCharging();
+        platformStopCharging.setCharging_pile_code(deviceId);
+        platformStopCharging.setCharging_gun_code("1");
+        String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging));
+        return R.ok(message);
+    }
+
+    @ApiOperation(value = "修改余额",tags = {"硬件接口"})
+    @GetMapping(value = "/updateBalance")
+    public R updateBalance(String deviceId,Long orderId) {
+        // 修改余额
+        UpdateBalance updateBalance = new UpdateBalance();
+        updateBalance.setCharging_pile_code(deviceId);
+        updateBalance.setCharging_gun_code("1");
+        updateBalance.setPhysical_card_number(orderId.toString());
+        updateBalance.setAccount_balance(new BigDecimal(20));
+        String message = iotMessageProduce.sendMessage(updateBalance.getCharging_pile_code(), ServiceIdMenu.UPDATE_BALANCE.getKey(),messageUtil.updateBalance(updateBalance));
+        return R.ok(message);
+    }
+
+    @ApiOperation(value = "充电桩工作参数设置",tags = {"硬件接口"})
+    @GetMapping(value = "/workingParameterSetting")
+    public R workingParameterSetting(String deviceId) {
+        // 充电桩工作参数设置
+        WorkingParameterSetting workingParameterSetting = new WorkingParameterSetting();
+        workingParameterSetting.setCharging_pile_code(deviceId);
+        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));
+        return R.ok(message);
+    }
+
+    @ApiOperation(value = "对时设置",tags = {"硬件接口"})
+    @GetMapping(value = "/timingSetting")
+    public R timingSetting(String deviceId) {
+        // 对时设置
+        TimingSetting timingSetting = new TimingSetting();
+        timingSetting.setCharging_pile_code(deviceId);
+        timingSetting.setCurrent_time(CP56Time2aConverter.convertToCP56Time2a(new Date()));
+        String message = iotMessageProduce.sendMessage(timingSetting.getCharging_pile_code(), ServiceIdMenu.TIMING_SETTING.getKey(),messageUtil.timingSetting(timingSetting));
+        return R.ok(message);
+    }
+
+    @ApiOperation(value = "计费模型设置",tags = {"硬件接口"})
+    @GetMapping(value = "/setupBillingModel")
+    public R setupBillingModel(String deviceId) {
+        // TODO 罗  计费模型设置
+        SetupBillingModel setupBillingModel = new SetupBillingModel();
+        // 计费模型
+        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(deviceId).getData();
+        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
+        // 价格设置
+        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
+        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
+        // 时段设置
+        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
+        TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(deviceId).getData();
+        acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
+        acquisitionBillingModeReply.setCharging_pile_code(deviceId);
+        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));
+        return R.ok(message);
+    }
+
+    @ApiOperation(value = "远程重启",tags = {"硬件接口"})
+    @PostMapping(value = "/platformRestart")
+    public R platformRestart(String deviceId) {
+        // 远程重启
+        PlatformRestart platformRestart = new PlatformRestart();
+        platformRestart.setCharging_pile_code(deviceId);
+        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

--
Gitblit v1.7.1