Commit 7fe4dd2368f8fb45ce3e5b206e1a80e11ff03887
1 parent
f5f8c418
【功能新增】IoT:设备模拟更新状态
Showing
2 changed files
with
18 additions
and
9 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java
| @@ -9,9 +9,9 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException; | @@ -9,9 +9,9 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException; | ||
| 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 10 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 10 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 11 | import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; | 11 | import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; |
| 12 | -import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; | ||
| 13 | import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; | 12 | import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; |
| 14 | import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO; | 13 | import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO; |
| 14 | +import cn.iocoder.yudao.module.iot.api.device.dto.IotDeviceStateUpdateReqDTO; | ||
| 15 | import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.*; | 15 | import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.*; |
| 16 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; | 16 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; |
| 17 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceGroupDO; | 17 | import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceGroupDO; |
| @@ -263,9 +263,13 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -263,9 +263,13 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | @Override | 265 | @Override |
| 266 | - @TenantIgnore | ||
| 267 | - @Cacheable(value = RedisKeyConstants.DEVICE, key = "#productKey + '_' + #deviceName", unless = "#result == null") | ||
| 268 | public IotDeviceDO getDeviceByProductKeyAndDeviceNameFromCache(String productKey, String deviceName) { | 266 | public IotDeviceDO getDeviceByProductKeyAndDeviceNameFromCache(String productKey, String deviceName) { |
| 267 | + // 保证在 @CacheEvict 之前,忽略租户 | ||
| 268 | + return TenantUtils.executeIgnore(() -> getSelf().getDeviceByProductKeyAndDeviceNameFromCache0(productKey, deviceName)); | ||
| 269 | + } | ||
| 270 | + | ||
| 271 | + @Cacheable(value = RedisKeyConstants.DEVICE, key = "#productKey + '_' + #deviceName", unless = "#result == null") | ||
| 272 | + public IotDeviceDO getDeviceByProductKeyAndDeviceNameFromCache0(String productKey, String deviceName) { | ||
| 269 | return deviceMapper.selectByProductKeyAndDeviceName(productKey, deviceName); | 273 | return deviceMapper.selectByProductKeyAndDeviceName(productKey, deviceName); |
| 270 | } | 274 | } |
| 271 | 275 | ||
| @@ -386,6 +390,7 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -386,6 +390,7 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 386 | return respVO; | 390 | return respVO; |
| 387 | } | 391 | } |
| 388 | 392 | ||
| 393 | + // TODO @芋艿:要不改成 simulationUpstream,原因:里面不只有上报,还有更新状态,那么 upstream 更适合 | ||
| 389 | @Override | 394 | @Override |
| 390 | @SuppressWarnings("unchecked") | 395 | @SuppressWarnings("unchecked") |
| 391 | public void simulationReportDevice(IotDeviceSimulationReportReqVO reportReqVO) { | 396 | public void simulationReportDevice(IotDeviceSimulationReportReqVO reportReqVO) { |
| @@ -408,9 +413,10 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -408,9 +413,10 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 408 | } | 413 | } |
| 409 | // 2.3 情况三:状态变更 | 414 | // 2.3 情况三:状态变更 |
| 410 | if (Objects.equals(reportReqVO.getType(), IotDeviceMessageTypeEnum.STATE.getType())) { | 415 | if (Objects.equals(reportReqVO.getType(), IotDeviceMessageTypeEnum.STATE.getType())) { |
| 411 | - // TODO 芋艿:待实现 | ||
| 412 | -// updateDeviceState(new IotDeviceStatusUpdateReqVO().setId(device.getId()) | ||
| 413 | -// .setStatus((Integer) reportReqVO.getData())); | 416 | + deviceUpstreamService.updateDeviceState(((IotDeviceStateUpdateReqDTO) |
| 417 | + new IotDeviceStateUpdateReqDTO().setRequestId(IdUtil.fastSimpleUUID()).setReportTime(LocalDateTime.now()) | ||
| 418 | + .setProductKey(device.getProductKey()).setDeviceName(device.getDeviceName())) | ||
| 419 | + .setState((Integer) reportReqVO.getData())); | ||
| 414 | return; | 420 | return; |
| 415 | } | 421 | } |
| 416 | throw new IllegalArgumentException("未知的类型:" + reportReqVO.getType()); | 422 | throw new IllegalArgumentException("未知的类型:" + reportReqVO.getType()); |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/thingmodel/IotThingModelServiceImpl.java
| @@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil; | @@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil; | ||
| 6 | import cn.hutool.extra.spring.SpringUtil; | 6 | import cn.hutool.extra.spring.SpringUtil; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 8 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 9 | -import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; | ||
| 10 | import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; | 9 | import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; |
| 11 | import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.ThingModelEvent; | 10 | import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.ThingModelEvent; |
| 12 | import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.ThingModelParam; | 11 | import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.ThingModelParam; |
| @@ -136,9 +135,13 @@ public class IotThingModelServiceImpl implements IotThingModelService { | @@ -136,9 +135,13 @@ public class IotThingModelServiceImpl implements IotThingModelService { | ||
| 136 | } | 135 | } |
| 137 | 136 | ||
| 138 | @Override | 137 | @Override |
| 139 | - @TenantIgnore | ||
| 140 | - @Cacheable(value = RedisKeyConstants.THING_MODEL_LIST, key = "#productKey") | ||
| 141 | public List<IotThingModelDO> getThingModelListByProductKeyFromCache(String productKey) { | 138 | public List<IotThingModelDO> getThingModelListByProductKeyFromCache(String productKey) { |
| 139 | + // 保证在 @CacheEvict 之前,忽略租户 | ||
| 140 | + return TenantUtils.executeIgnore(() -> getSelf().getThingModelListByProductKeyFromCache0(productKey)); | ||
| 141 | + } | ||
| 142 | + | ||
| 143 | + @Cacheable(value = RedisKeyConstants.THING_MODEL_LIST, key = "#productKey") | ||
| 144 | + public List<IotThingModelDO> getThingModelListByProductKeyFromCache0(String productKey) { | ||
| 142 | return thingModelMapper.selectListByProductKey(productKey); | 145 | return thingModelMapper.selectListByProductKey(productKey); |
| 143 | } | 146 | } |
| 144 | 147 |