双屏机-mq

This commit is contained in:
gaowdong 2025-03-24 17:24:01 +08:00
parent 4c8c0fdc5e
commit 1f0e20d71c
4 changed files with 109 additions and 1 deletions

View File

@ -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),

View File

@ -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<String, Object> metadata;
public String getMachineSn() {
return this.machineSn;
}
public Long getMerchantId() {
return this.merchantId;
}
public Integer getSoruceType() {
return this.soruceType;
}
public Map<String, Object> 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<String, Object> 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()) + ")";
}
}

View File

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

View File

@ -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}}