| | |
| | | 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; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * iotda消息监听 |
| | |
| | | |
| | | @Autowired |
| | | private EnhanceProduce enhanceProduce; |
| | | @Autowired |
| | | private MessageUtil messageUtil; |
| | | @Autowired |
| | | private IotMessageProduce iotMessageProduce; |
| | | @Autowired |
| | | private AccountingStrategyDetailClient accountingStrategyDetailClient; |
| | | /** |
| | | * 设备消息监听 |
| | | * @param jsonObject |
| | |
| | | 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); |