Commit 7f0de1e34e102d06e182b8f47af7334ac45cca07
1 parent
45b8172a
【代码新增】IoT:server 实现事件上行的逻辑(不包括 http 插件部分)
Showing
1 changed file
with
22 additions
and
4 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/control/IotDeviceUpstreamServiceImpl.java
| ... | ... | @@ -67,7 +67,10 @@ public class IotDeviceUpstreamServiceImpl implements IotDeviceUpstreamService { |
| 67 | 67 | } |
| 68 | 68 | // 2.2 情况二:事件上报 |
| 69 | 69 | if (Objects.equals(simulatorReqVO.getType(), IotDeviceMessageTypeEnum.EVENT.getType())) { |
| 70 | - // TODO 芋艿:待实现 | |
| 70 | + reportDeviceEvent(((IotDeviceEventReportReqDTO) | |
| 71 | + new IotDeviceEventReportReqDTO().setRequestId(requestId).setReportTime(LocalDateTime.now()) | |
| 72 | + .setProductKey(device.getProductKey()).setDeviceName(device.getDeviceName())) | |
| 73 | + .setIdentifier(simulatorReqVO.getIdentifier()).setParams((Map<String, Object>) simulatorReqVO.getData())); | |
| 71 | 74 | return; |
| 72 | 75 | } |
| 73 | 76 | // 2.3 情况三:状态变更 |
| ... | ... | @@ -120,7 +123,7 @@ public class IotDeviceUpstreamServiceImpl implements IotDeviceUpstreamService { |
| 120 | 123 | @Override |
| 121 | 124 | public void reportDeviceProperty(IotDevicePropertyReportReqDTO reportReqDTO) { |
| 122 | 125 | // 1.1 获得设备 |
| 123 | - log.info("[reportDevicePropertyData][上报设备属性数据: {}]", reportReqDTO); | |
| 126 | + log.info("[reportDevicePropertyData][上报设备属性: {}]", reportReqDTO); | |
| 124 | 127 | IotDeviceDO device = deviceService.getDeviceByProductKeyAndDeviceNameFromCache( |
| 125 | 128 | reportReqDTO.getProductKey(), reportReqDTO.getDeviceName()); |
| 126 | 129 | if (device == null) { |
| ... | ... | @@ -141,9 +144,24 @@ public class IotDeviceUpstreamServiceImpl implements IotDeviceUpstreamService { |
| 141 | 144 | |
| 142 | 145 | @Override |
| 143 | 146 | public void reportDeviceEvent(IotDeviceEventReportReqDTO reportReqDTO) { |
| 144 | - log.info("[reportDeviceEventData][上报设备事件数据: {}]", reportReqDTO); | |
| 147 | + // 1.1 获得设备 | |
| 148 | + log.info("[reportDeviceEventData][上报设备事件: {}]", reportReqDTO); | |
| 149 | + IotDeviceDO device = deviceService.getDeviceByProductKeyAndDeviceNameFromCache( | |
| 150 | + reportReqDTO.getProductKey(), reportReqDTO.getDeviceName()); | |
| 151 | + if (device == null) { | |
| 152 | + log.error("[reportDeviceEventData][设备({}/{})不存在]", | |
| 153 | + reportReqDTO.getProductKey(), reportReqDTO.getDeviceName()); | |
| 154 | + return; | |
| 155 | + } | |
| 156 | + // 1.2 记录设备的最后时间 | |
| 157 | + updateDeviceLastTime(device, reportReqDTO); | |
| 145 | 158 | |
| 146 | - // TODO 芋艿:待实现 | |
| 159 | + // 2. 发送设备消息 | |
| 160 | + IotDeviceMessage message = BeanUtils.toBean(reportReqDTO, IotDeviceMessage.class) | |
| 161 | + .setType(IotDeviceMessageTypeEnum.EVENT.getType()) | |
| 162 | + .setIdentifier(reportReqDTO.getIdentifier()) | |
| 163 | + .setData(reportReqDTO.getParams()); | |
| 164 | + sendDeviceMessage(message, device); | |
| 147 | 165 | } |
| 148 | 166 | |
| 149 | 167 | private void updateDeviceLastTime(IotDeviceDO device, IotDeviceUpstreamAbstractReqDTO reqDTO) { | ... | ... |