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