add 添加向第三方服务发送mq的Controller

This commit is contained in:
YAS\29473
2025-12-25 11:02:33 +08:00
parent db9ef12b3f
commit ba764eac4e

View File

@@ -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());
}
}
}