From ba764eac4e0a6a32a42fe84bae3202a7b84d9842 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Thu, 25 Dec 2025 11:02:33 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E5=90=91=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E6=9C=8D=E5=8A=A1=E5=8F=91=E9=80=81mq?= =?UTF-8?q?=E7=9A=84Controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/ThirdPartyMQController.java | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyMQController.java diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyMQController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyMQController.java new file mode 100644 index 000000000..b5ecaae4a --- /dev/null +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/thirdparty/ThirdPartyMQController.java @@ -0,0 +1,161 @@ +package com.jsowell.web.controller.thirdparty; + +import com.alibaba.fastjson2.JSON; +import com.jsowell.common.core.controller.BaseController; +import com.jsowell.common.core.domain.AjaxResult; +import com.jsowell.common.constant.mq.ThirdPartyRabbitConstants; +import com.jsowell.common.dto.JCTRealTimeMonitorData; +import com.jsowell.common.vo.thirdParty.JCTOrderBasicInfo; +import com.jsowell.pile.domain.OrderBasicInfo; +import com.jsowell.pile.service.OrderBasicInfoService; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 第三方平台MQ消息发送Controller + * 用于发送MQ消息让thirdparty执行业务 + * + * @author jsowell + * @date 2024 + */ +@RestController +@RequestMapping("/thirdparty/mq") +public class ThirdPartyMQController extends BaseController { + + @Autowired + private RabbitTemplate rabbitTemplate; + + @Autowired + private OrderBasicInfoService orderBasicInfoService; + + // TODO 需优化 + /** + * 发送实时监测数据MQ消息 + * + * @param data 实时监测数据 + * @return 操作结果 + */ + @PostMapping("/sendRealtimeData") + public AjaxResult sendRealtimeData(@RequestBody JCTRealTimeMonitorData data) { + try { + if (data == null) { + return AjaxResult.error("实时监测数据不能为空"); + } + logger.info("发送实时监测数据MQ消息: {}", JSON.toJSONString(data)); + rabbitTemplate.convertAndSend( + ThirdPartyRabbitConstants.WCC_THIRDPARTY_NAME, + ThirdPartyRabbitConstants.ROUTING_KEY_REALTIME_DATA_PUSH, + data + ); + return AjaxResult.success("实时监测数据MQ消息发送成功"); + } catch (Exception e) { + logger.error("发送实时监测数据MQ消息失败", e); + return AjaxResult.error("发送实时监测数据MQ消息失败: " + e.getMessage()); + } + } + + /** + * 发送告警数据MQ消息 + * + * @param data 告警数据(实时监测数据格式) + * @return 操作结果 + */ + @PostMapping("/sendAlarmData") + public AjaxResult sendAlarmData(@RequestBody JCTRealTimeMonitorData data) { + try { + if (data == null) { + return AjaxResult.error("告警数据不能为空"); + } + logger.info("发送告警数据MQ消息: {}", JSON.toJSONString(data)); + // 注意:告警消息发送的是realTimeMonitorData.getPutGunType(),这里发送整个对象 + // 如果需要只发送putGunType,可以单独处理 + rabbitTemplate.convertAndSend( + ThirdPartyRabbitConstants.WCC_THIRDPARTY_NAME, + ThirdPartyRabbitConstants.ROUTING_KEY_ALARM_PUSH, + data + ); + return AjaxResult.success("告警数据MQ消息发送成功"); + } catch (Exception e) { + logger.error("发送告警数据MQ消息失败", e); + return AjaxResult.error("发送告警数据MQ消息失败: " + e.getMessage()); + } + } + + /** + * 发送启动充电结果MQ消息 + * + * @param orderBasicInfo 订单基本信息 + * @return 操作结果 + */ + @PostMapping("/sendChargeResult") + public AjaxResult sendChargeResult(@RequestBody JCTOrderBasicInfo orderBasicInfo) { + try { + if (orderBasicInfo == null) { + return AjaxResult.error("订单基本信息不能为空"); + } + logger.info("发送启动充电结果MQ消息: {}", JSON.toJSONString(orderBasicInfo)); + rabbitTemplate.convertAndSend( + ThirdPartyRabbitConstants.WCC_THIRDPARTY_NAME, + ThirdPartyRabbitConstants.ROUTING_KEY_CHARGE_RESULT_PUSH, + orderBasicInfo + ); + return AjaxResult.success("启动充电结果MQ消息发送成功"); + } catch (Exception e) { + logger.error("发送启动充电结果MQ消息失败", e); + return AjaxResult.error("发送启动充电结果MQ消息失败: " + e.getMessage()); + } + } + + /** + * 发送启动充电失败MQ消息 + * + * @param orderBasicInfo 订单基本信息 + * @return 操作结果 + */ + @PostMapping("/sendStartupChargingFailed") + public AjaxResult sendStartupChargingFailed(@RequestBody JCTOrderBasicInfo orderBasicInfo) { + try { + if (orderBasicInfo == null) { + return AjaxResult.error("订单基本信息不能为空"); + } + logger.info("发送启动充电失败MQ消息: {}", JSON.toJSONString(orderBasicInfo)); + rabbitTemplate.convertAndSend( + ThirdPartyRabbitConstants.WCC_THIRDPARTY_NAME, + ThirdPartyRabbitConstants.ROUTING_KEY_STARTUP_CHARGING_FAILED_PUSH, + orderBasicInfo + ); + return AjaxResult.success("启动充电失败MQ消息发送成功"); + } catch (Exception e) { + logger.error("发送启动充电失败MQ消息失败", e); + return AjaxResult.error("发送启动充电失败MQ消息失败: " + e.getMessage()); + } + } + + /** + * 发送充电订单MQ消息 + * + * + * @return 操作结果 + */ + @PostMapping("/sendChargeOrder/{orderCode}}") + public AjaxResult sendChargeOrder(@PathVariable("orderCode") String orderCode) { + try { + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + if (orderBasicInfo == null) { + return AjaxResult.error("订单基本信息不能为空"); + } + logger.info("发送充电订单MQ消息: {}", JSON.toJSONString(orderBasicInfo)); + rabbitTemplate.convertAndSend( + ThirdPartyRabbitConstants.WCC_THIRDPARTY_NAME, + ThirdPartyRabbitConstants.ROUTING_KEY_CHARGE_ORDER_PUSH, + orderBasicInfo + ); + return AjaxResult.success("充电订单MQ消息发送成功"); + } catch (Exception e) { + logger.error("发送充电订单MQ消息失败", e); + return AjaxResult.error("发送充电订单MQ消息失败: " + e.getMessage()); + } + } +} +