From 1f0e20d71cf2011dc7ca7034f657133982d0552f Mon Sep 17 00:00:00 2001 From: gaowdong Date: Mon, 24 Mar 2025 17:24:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=8C=E5=B1=8F=E6=9C=BA-mq?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constants/DeviceTopicRouteEnum.java | 3 +- .../manage/dto/DeviceMqMetadataUpdateDTO.java | 53 +++++++++++++++++++ .../v2/DeviceUpdateMetadataServiceImpl.java | 38 +++++++++++++ .../src/main/resources/bootstrap.yml | 16 ++++++ 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/manage/dto/DeviceMqMetadataUpdateDTO.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/mqtt/v2/DeviceUpdateMetadataServiceImpl.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/constants/DeviceTopicRouteEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/constants/DeviceTopicRouteEnum.java index 083b318d..466f7094 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/constants/DeviceTopicRouteEnum.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/constants/DeviceTopicRouteEnum.java @@ -1,6 +1,7 @@ package com.bonus.canteen.core.device.constants; +import com.bonus.canteen.core.device.mqtt.v2.DeviceUpdateMetadataServiceImpl; import com.bonus.canteen.core.device.mqtt.v4.DeviceOnlineV4ServiceImpl; import java.util.Optional; @@ -11,7 +12,7 @@ public enum DeviceTopicRouteEnum { // DEVICE_STATE_LOG("device-state-log", "设备状态上报", DeviceStateLogServiceImpl.class), // DEVICE_HEART_SEND("device-heart-send", "设备上下线(兼容新老版本)", DeviceHeartSendServiceImpl.class), // DEVICE_ONLINE_V2("device-online-v2", "设备上下线", DeviceOnlineV2ServiceImpl.class), -// DEVICE_UPDATE_METADATA_V2("device-update-metadata-v2", "设备基础设置上报", DeviceUpdateMetadataServiceImpl.class), + DEVICE_UPDATE_METADATA_V2("device-update-metadata-v2", "设备基础设置上报", DeviceUpdateMetadataServiceImpl.class), // DEVICE_WEIGHT_INFO_REPORT_V2("device-weight-info-report-v2", "切菜上报", DeviceWeightInfoReportV2ServiceImpl.class), DEVICE_ONLINE_V4("device-online-v4", "设备上下线", DeviceOnlineV4ServiceImpl.class); // DEVICE_UPDATE_BASE_CONFIG_REPORT_V4("device-update-base-config-report-v4", "设备基础设置上报", DeviceUpdateBaseConfigReportV4ServiceImpl.class), diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/manage/dto/DeviceMqMetadataUpdateDTO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/manage/dto/DeviceMqMetadataUpdateDTO.java new file mode 100644 index 00000000..fc52f5c1 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/manage/dto/DeviceMqMetadataUpdateDTO.java @@ -0,0 +1,53 @@ +package com.bonus.canteen.core.device.manage.dto; + +import io.swagger.annotations.ApiModelProperty; + +import java.util.Map; + +public class DeviceMqMetadataUpdateDTO { + @ApiModelProperty("设备Sn") + private String machineSn; + @ApiModelProperty("设备商户") + private Long merchantId; + @ApiModelProperty("设备类型") + private Integer soruceType; + @ApiModelProperty("设备设置参数") + private Map metadata; + + public String getMachineSn() { + return this.machineSn; + } + + public Long getMerchantId() { + return this.merchantId; + } + + public Integer getSoruceType() { + return this.soruceType; + } + + public Map getMetadata() { + return this.metadata; + } + + public void setMachineSn(final String machineSn) { + this.machineSn = machineSn; + } + + public void setMerchantId(final Long merchantId) { + this.merchantId = merchantId; + } + + public void setSoruceType(final Integer soruceType) { + this.soruceType = soruceType; + } + + public void setMetadata(final Map metadata) { + this.metadata = metadata; + } + + public String toString() { + String var10000 = this.getMachineSn(); + return "DeviceMqMetadataUpdateDTO(machineSn=" + var10000 + ", merchantId=" + this.getMerchantId() + ", soruceType=" + this.getSoruceType() + ", metadata=" + String.valueOf(this.getMetadata()) + ")"; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/mqtt/v2/DeviceUpdateMetadataServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/mqtt/v2/DeviceUpdateMetadataServiceImpl.java new file mode 100644 index 00000000..a22dfcc2 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/device/mqtt/v2/DeviceUpdateMetadataServiceImpl.java @@ -0,0 +1,38 @@ +package com.bonus.canteen.core.device.mqtt.v2; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.bonus.canteen.core.data.dataset.Executors; +import com.bonus.canteen.core.device.manage.dto.DeviceMqMetadataUpdateDTO; +import com.bonus.canteen.core.device.manage.model.DeviceInfo; +import com.bonus.canteen.core.device.manage.service.DeviceInfoService; +import com.bonus.canteen.core.device.manage.service.DeviceMetadataService; +import com.bonus.canteen.core.device.mqtt.DeviceIotParseService; +import com.bonus.canteen.core.device.mqtt.DeviceRecvMqttMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +@Service +public class DeviceUpdateMetadataServiceImpl implements DeviceIotParseService { + private static final Logger log = LoggerFactory.getLogger(DeviceUpdateMetadataServiceImpl.class); + @Autowired + @Lazy + private DeviceMetadataService deviceMetadataService; + @Autowired + @Lazy + private DeviceInfoService deviceInfoService; + + public void parseData(DeviceRecvMqttMessage message) { + DeviceMqMetadataUpdateDTO deviceMqMetadataUpdateDTO = JSONUtil.toBean(message.getBody(), DeviceMqMetadataUpdateDTO.class); + Executors.doInTenant(deviceMqMetadataUpdateDTO.getMerchantId(), (s) -> { + DeviceInfo deviceInfo = this.deviceInfoService.getDeviceInfoBySnCacheable(deviceMqMetadataUpdateDTO.getMachineSn()); + if (ObjectUtil.isNotEmpty(deviceInfo)) { + this.deviceMetadataService.saveDeviceMetadata(this.deviceInfoService.saveMetadataModelHandle(deviceInfo.getDeviceId(), DeviceInfoService.getDeviceMap(deviceMqMetadataUpdateDTO.getSoruceType(), deviceMqMetadataUpdateDTO.getMetadata()))); + } + + }); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/bootstrap.yml b/bonus-modules/bonus-smart-canteen/src/main/resources/bootstrap.yml index 812b27cb..d61f5315 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/bootstrap.yml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/bootstrap.yml @@ -6,6 +6,22 @@ spring: profiles: # 环境配置 active: bonus_houqin_local + mqtt: + emqx: + broker: ${EMQX_SERVER:tcp://emqx:1883} + routes: + "[device-online/#]": device-mqtt #设备上下线 + "[device-state-log/#]": device-mqtt #设备状态上报 + # "[device-heart-send/#]": device-mqtt #设备上下线(兼容新老版本) + "[device-online-v2/#]": device-mqtt #设备上下线 + "[device-update-metadata-v2/#]": device-mqtt #设备基础设置上报 + "[device-weight-info-report-v2/#]": device-mqtt #切菜上报 + "[device-online-v4/#]": device-mqtt #设备上下线v4 + "[device-update-base-config-report-v4/#]": device-mqtt #设备基础设置上报v4 + "[device-weight-info-report-v4/#]": device-mqtt #切菜上报v4 + "[device-update-gataway-devicestate-report-v4/#]": device-mqtt #设备网关状态切换上报v4 + "[device-buffet-alarm-report-v4/#]": device-mqtt #设备计量主机异常上报入参 + "[device-log-info-update-v4/#]": device-mqtt #设备日志上传消息 system: mqtt-tcp-address: ${MQTT_TCP_ADDRESS:${RABBITMQ_CLIENT_ADDRESS:192.168.0.244:1883}}