From 55c3b10c726509ed4b048c46d724d842c39d220d Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 10 九月 2024 12:26:22 +0800
Subject: [PATCH] mq修改

---
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java |  170 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 145 insertions(+), 25 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 9ebc93b..f629ed1 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
@@ -1,8 +1,19 @@
 package com.ruoyi.integration.iotda.utils.listener;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+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.web.domain.AjaxResult;
+import com.ruoyi.integration.api.model.*;
 import com.ruoyi.integration.iotda.constant.SendTagConstant;
+import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
+import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce;
+import com.ruoyi.integration.iotda.utils.tools.CP56Time2aConverter;
+import com.ruoyi.integration.iotda.utils.tools.MessageUtil;
+import com.ruoyi.integration.iotda.utils.tools.StrategyUtil;
+import com.ruoyi.integration.rocket.model.*;
 import com.ruoyi.integration.rocket.produce.EnhanceProduce;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.client.producer.SendResult;
@@ -12,6 +23,9 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * iotda消息监听
@@ -22,6 +36,12 @@
 
     @Autowired
     private EnhanceProduce enhanceProduce;
+    @Autowired
+    private MessageUtil messageUtil;
+    @Autowired
+    private IotMessageProduce iotMessageProduce;
+    @Autowired
+    private AccountingStrategyDetailClient accountingStrategyDetailClient;
     /**
      * 设备消息监听
      * @param jsonObject
@@ -36,81 +56,181 @@
         log.info("服务id:{}",service_id);
         SendResult sendResult;
         // 设备消息下发
+        String result;
         switch (service_id){
             case SendTagConstant.ONLINE:
-                sendResult = enhanceProduce.onlineMessage(content);
+                OnlineMessage onlineMessage = JSON.parseObject(jsonObject.toJSONString(),OnlineMessage.class);
+                sendResult = enhanceProduce.onlineMessage(onlineMessage);
+                // 响应硬件
+                // 业务处理 登录认证应答
+                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));
+                log.info("充电桩登录认证-返回结果:{}",result);
                 break;
             case SendTagConstant.PING:
-                sendResult = enhanceProduce.pingMessage(content);
+                PingMessage pingMessage = JSON.parseObject(jsonObject.toJSONString(),PingMessage.class);
+                sendResult = enhanceProduce.pingMessage(pingMessage);
+                // 响应硬件
+                Pong pong = new Pong();
+                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));
+                log.info("充电桩心跳包-返回结果:{}",result);
                 break;
             case SendTagConstant.END_CHARGE:
-                sendResult = enhanceProduce.endChargeMessage(content);
+                EndChargeMessage endChargeMessage = JSON.parseObject(jsonObject.toJSONString(),EndChargeMessage.class);
+                sendResult = enhanceProduce.endChargeMessage(endChargeMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.BILLING_MODE_VERIFY:
-                sendResult = enhanceProduce.billingModeVerifyMessage(content);
+                BillingModeVerifyMessage billingModeVerifyMessage = JSON.parseObject(jsonObject.toJSONString(),BillingModeVerifyMessage.class);
+                sendResult = enhanceProduce.billingModeVerifyMessage(billingModeVerifyMessage);
+                // 响应硬件
+                BillingModeVerifyReply billingModeVerifyReply = new BillingModeVerifyReply();
+                if(billingModeVerifyMessage.getBilling_model_code().equals("0")){
+                    // 首次
+                    billingModeVerifyReply.setCharging_pile_code(billingModeVerifyMessage.getCharging_pile_code());
+                    billingModeVerifyReply.setBilling_model_code("0");
+                    billingModeVerifyReply.setBilling_model_result(1);
+                }else {
+                    // 查询桩使用的模版
+                    CheckChargingStrategyDTO dto = new CheckChargingStrategyDTO();
+                    dto.setCode(billingModeVerifyMessage.getBilling_model_code());
+                    dto.setStrategyDetailId(Integer.valueOf(billingModeVerifyMessage.getBilling_model_code()));
+                    Boolean check = accountingStrategyDetailClient.checkChargingStrategy(dto).getData();
+                    // 校验计费模版是否准确
+                    billingModeVerifyReply.setCharging_pile_code(billingModeVerifyMessage.getCharging_pile_code());
+                    billingModeVerifyReply.setBilling_model_code(billingModeVerifyMessage.getBilling_model_code());
+                    if(check){
+                        billingModeVerifyReply.setBilling_model_result(0);
+                    }else {
+                        billingModeVerifyReply.setBilling_model_result(1);
+                    }
+                }
+                iotMessageProduce.sendMessage(billingModeVerifyReply.getCharging_pile_code(), ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply));
                 break;
             case SendTagConstant.ACQUISITION_BILLING_MODE:
-                sendResult = enhanceProduce.acquisitionBillingModeMessage(content);
+                AcquisitionBillingModeMessage acquisitionBillingModeMessage = JSON.parseObject(jsonObject.toJSONString(),AcquisitionBillingModeMessage.class);
+                sendResult = enhanceProduce.acquisitionBillingModeMessage(acquisitionBillingModeMessage);
+                // 响应硬件   计费模型请求应答  1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段
+                List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(acquisitionBillingModeMessage.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));
                 break;
             case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
-                sendResult = enhanceProduce.uploadRealTimeMonitoringDataMessage(content);
+                UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = JSON.parseObject(jsonObject.toJSONString(),UploadRealTimeMonitoringDataMessage.class);
+                sendResult = enhanceProduce.uploadRealTimeMonitoringDataMessage(uploadRealTimeMonitoringDataMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.CHARGING_HANDSHAKE:
-                sendResult = enhanceProduce.chargingHandshakeMessage(content);
+                ChargingHandshakeMessage chargingHandshakeMessage = JSON.parseObject(jsonObject.toJSONString(),ChargingHandshakeMessage.class);
+                sendResult = enhanceProduce.chargingHandshakeMessage(chargingHandshakeMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.BMS_ABORT:
-                sendResult = enhanceProduce.bmsAbortMessage(content);
+                BmsAbortMessage bmsAbortMessage = JSON.parseObject(jsonObject.toJSONString(),BmsAbortMessage.class);
+                sendResult = enhanceProduce.bmsAbortMessage(bmsAbortMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.MOTOR_ABORT:
-                sendResult = enhanceProduce.motorAbortMessage(content);
+                MotorAbortMessage motorAbortMessage = JSON.parseObject(jsonObject.toJSONString(),MotorAbortMessage.class);
+                sendResult = enhanceProduce.motorAbortMessage(motorAbortMessage);
                 break;
             case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION:
-                sendResult = enhanceProduce.bmsDemandAndChargerExportationMessage(content);
+                BmsDemandAndChargerExportationMessage bmsDemandAndChargerExportationMessage = JSON.parseObject(jsonObject.toJSONString(),BmsDemandAndChargerExportationMessage.class);
+                sendResult = enhanceProduce.bmsDemandAndChargerExportationMessage(bmsDemandAndChargerExportationMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.BMS_INFORMATION:
-                sendResult = enhanceProduce.bmsInformationMessage(content);
+                BmsInformationMessage bmsInformationMessage = JSON.parseObject(jsonObject.toJSONString(),BmsInformationMessage.class);
+                sendResult = enhanceProduce.bmsInformationMessage(bmsInformationMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.CHARGING_PILE_STARTS_CHARGING:
-                sendResult = enhanceProduce.chargingPileStartsChargingMessage(content);
+                ChargingPileStartsChargingMessage chargingPileStartsChargingMessage = JSON.parseObject(jsonObject.toJSONString(),ChargingPileStartsChargingMessage.class);
+                sendResult = enhanceProduce.chargingPileStartsChargingMessage(chargingPileStartsChargingMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.PLATFORM_START_CHARGING_REPLY:
-                sendResult = enhanceProduce.platformStartChargingReplyMessage(content);
+                PlatformStartChargingReplyMessage platformStartChargingReplyMessage = JSON.parseObject(jsonObject.toJSONString(),PlatformStartChargingReplyMessage.class);
+                sendResult = enhanceProduce.platformStartChargingReplyMessage(platformStartChargingReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY:
-                sendResult = enhanceProduce.platformStopChargingReplyMessage(content);
+                PlatformStopChargingReplyMessage platformStopChargingReplyMessage = JSON.parseObject(jsonObject.toJSONString(),PlatformStopChargingReplyMessage.class);
+                sendResult = enhanceProduce.platformStopChargingReplyMessage(platformStopChargingReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.TRANSACTION_RECORD:
-                sendResult = enhanceProduce.transactionRecordMessage(content);
+                TransactionRecordMessage transactionRecordMessage = JSON.parseObject(jsonObject.toJSONString(),TransactionRecordMessage.class);
+                sendResult = enhanceProduce.transactionRecordMessage(transactionRecordMessage);
+                // 响应硬件
+                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));
                 break;
             case SendTagConstant.UPDATE_BALANCE_REPLY:
-                sendResult = enhanceProduce.updateBalanceReplyMessage(content);
+                UpdateBalanceReplyMessage updateBalanceReplyMessage = JSON.parseObject(jsonObject.toJSONString(),UpdateBalanceReplyMessage.class);
+                sendResult = enhanceProduce.updateBalanceReplyMessage(updateBalanceReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY:
-                sendResult = enhanceProduce.synchronizeOfflineCardReplyMessage(content);
+                SynchronizeOfflineCardReplyMessage synchronizeOfflineCardReplyMessage = JSON.parseObject(jsonObject.toJSONString(),SynchronizeOfflineCardReplyMessage.class);
+                sendResult = enhanceProduce.synchronizeOfflineCardReplyMessage(synchronizeOfflineCardReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY:
-                sendResult = enhanceProduce.clearOfflineCardReplyMessage(content);
+                ClearOfflineCardReplyMessage clearOfflineCardReplyMessage = JSON.parseObject(jsonObject.toJSONString(),ClearOfflineCardReplyMessage.class);
+                sendResult = enhanceProduce.clearOfflineCardReplyMessage(clearOfflineCardReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY:
-                sendResult = enhanceProduce.workingParameterSettingReplyMessage(content);
+                WorkingParameterSettingReplyMessage workingParameterSettingReplyMessage = JSON.parseObject(jsonObject.toJSONString(),WorkingParameterSettingReplyMessage.class);
+                sendResult = enhanceProduce.workingParameterSettingReplyMessage(workingParameterSettingReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.TIMING_SETTING:
-                sendResult = enhanceProduce.timingSettingMessage(content);
+                TimingSettingMessage timingSettingMessage = JSON.parseObject(jsonObject.toJSONString(),TimingSettingMessage.class);
+                sendResult = enhanceProduce.timingSettingMessage(timingSettingMessage);
+                // 响应硬件 对时设置应答
+                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));
                 break;
             case SendTagConstant.SETUP_BILLING_MODEL_REPLY:
-                sendResult = enhanceProduce.setupBillingModelReplyMessage(content);
+                SetupBillingModelReplyMessage setupBillingModelReplyMessage = JSON.parseObject(jsonObject.toJSONString(),SetupBillingModelReplyMessage.class);
+                sendResult = enhanceProduce.setupBillingModelReplyMessage(setupBillingModelReplyMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA:
-                sendResult = enhanceProduce.groundLockRealTimeDataMessage(content);
+                GroundLockRealTimeDataMessage groundLockRealTimeDataMessage = JSON.parseObject(jsonObject.toJSONString(),GroundLockRealTimeDataMessage.class);
+                sendResult = enhanceProduce.groundLockRealTimeDataMessage(groundLockRealTimeDataMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA:
-                sendResult = enhanceProduce.chargingPileReturnsGroundLockDataMessage(content);
+                ChargingPileReturnsGroundLockDataMessage chargingPileReturnsGroundLockDataMessage = JSON.parseObject(jsonObject.toJSONString(),ChargingPileReturnsGroundLockDataMessage.class);
+                sendResult = enhanceProduce.chargingPileReturnsGroundLockDataMessage(chargingPileReturnsGroundLockDataMessage);
+                // 响应硬件
                 break;
             case SendTagConstant.PLATFORM_RESTART_REPLY:
-                sendResult = enhanceProduce.platformRestartReplyMessage(content);
+                PlatformRestartReplyMessage platformRestartReplyMessage = JSON.parseObject(jsonObject.toJSONString(),PlatformRestartReplyMessage.class);
+                sendResult = enhanceProduce.platformRestartReplyMessage(platformRestartReplyMessage);
+                // 响应硬件
                 break;
             default:
-                sendResult = enhanceProduce.platformRemoteUpdateReplyMessage(content);
+                PlatformRemoteUpdateReplyMessage platformRemoteUpdateReplyMessage = JSON.parseObject(jsonObject.toJSONString(),PlatformRemoteUpdateReplyMessage.class);
+                sendResult = enhanceProduce.platformRemoteUpdateReplyMessage(platformRemoteUpdateReplyMessage);
+                // 响应硬件
                 break;
         }
         log.info("rocketmq消息下发结果:{}",sendResult);

--
Gitblit v1.7.1