From 4e4dc227406edcd78d427b3d681c84315125f3e0 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 20 Sep 2025 12:14:24 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E3=80=90iot=20=E7=89=A9=E8=81=94?= =?UTF-8?q?=E7=BD=91=E3=80=91=E5=A2=9E=E5=BC=BA=20jdk8=20=E7=9A=84?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protocol/http/IotHttpDownstreamSubscriber.java | 2 ++ .../protocol/mqtt/manager/IotMqttConnectionManager.java | 2 +- .../iot/gateway/service/device/IotDeviceServiceImpl.java | 4 ++-- .../gateway/service/device/remote/IotDeviceApiImpl.java | 8 ++++---- .../module/iot/dal/mysql/device/IotDeviceMapper.java | 1 + .../iot/framework/web/config/IotWebConfiguration.java | 2 +- .../module/iot/service/device/IotDeviceServiceImpl.java | 1 + .../iot/service/rule/scene/IotSceneRuleServiceImpl.java | 4 ++-- .../rule/scene/matcher/IotSceneRuleMatcherManager.java | 7 ++++--- 9 files changed, 18 insertions(+), 13 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotHttpDownstreamSubscriber.java b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotHttpDownstreamSubscriber.java index 4312c0c55..157d24168 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotHttpDownstreamSubscriber.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/http/IotHttpDownstreamSubscriber.java @@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.iot.core.util.IotDeviceMessageUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import javax.annotation.PostConstruct; + /** * IoT 网关 HTTP 订阅者:接收下行给设备的消息 * diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/manager/IotMqttConnectionManager.java b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/manager/IotMqttConnectionManager.java index 3fd1a3a04..d7c4adbd0 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/manager/IotMqttConnectionManager.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/protocol/mqtt/manager/IotMqttConnectionManager.java @@ -125,7 +125,7 @@ public class IotMqttConnectionManager { */ public IotMqttConnectionManager.ConnectionInfo getConnectionInfoByDeviceId(Long deviceId) { // 通过设备 ID 获取连接端点 - var endpoint = getDeviceEndpoint(deviceId); + MqttEndpoint endpoint = getDeviceEndpoint(deviceId); if (endpoint == null) { return null; } diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/IotDeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/IotDeviceServiceImpl.java index 0ad51f403..1c580b91b 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/IotDeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/IotDeviceServiceImpl.java @@ -32,7 +32,7 @@ public class IotDeviceServiceImpl implements IotDeviceService { */ private final LoadingCache deviceCaches = buildAsyncReloadingCache( CACHE_EXPIRE, - new CacheLoader<>() { + new CacheLoader() { @Override public IotDeviceRespDTO load(Long id) { @@ -51,7 +51,7 @@ public class IotDeviceServiceImpl implements IotDeviceService { */ private final LoadingCache, IotDeviceRespDTO> deviceCaches2 = buildAsyncReloadingCache( CACHE_EXPIRE, - new CacheLoader<>() { + new CacheLoader, IotDeviceRespDTO>() { @Override public IotDeviceRespDTO load(KeyValue kv) { diff --git a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/remote/IotDeviceApiImpl.java b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/remote/IotDeviceApiImpl.java index 58e42f93e..690beac13 100644 --- a/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/remote/IotDeviceApiImpl.java +++ b/yudao-module-iot/yudao-module-iot-gateway/src/main/java/cn/iocoder/yudao/module/iot/gateway/service/device/remote/IotDeviceApiImpl.java @@ -40,19 +40,19 @@ public class IotDeviceApiImpl implements IotDeviceCommonApi { IotGatewayProperties.RpcProperties rpc = gatewayProperties.getRpc(); restTemplate = new RestTemplateBuilder() .rootUri(rpc.getUrl() + "/rpc-api/iot/device") - .readTimeout(rpc.getReadTimeout()) - .connectTimeout(rpc.getConnectTimeout()) + .setReadTimeout(rpc.getReadTimeout()) + .setConnectTimeout(rpc.getConnectTimeout()) .build(); } @Override public CommonResult authDevice(IotDeviceAuthReqDTO authReqDTO) { - return doPost("/auth", authReqDTO, new ParameterizedTypeReference<>() { }); + return doPost("/auth", authReqDTO, new ParameterizedTypeReference>() { }); } @Override public CommonResult getDevice(IotDeviceGetReqDTO getReqDTO) { - return doPost("/get", getReqDTO, new ParameterizedTypeReference<>() { }); + return doPost("/get", getReqDTO, new ParameterizedTypeReference>() { }); } private CommonResult doPost(String url, T body, diff --git a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/IotDeviceMapper.java b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/IotDeviceMapper.java index 33cd9ec7b..ae21b3cc3 100644 --- a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/IotDeviceMapper.java +++ b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/IotDeviceMapper.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; +import javax.annotation.Nullable; import java.time.LocalDateTime; import java.util.Collection; import java.util.List; diff --git a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/framework/web/config/IotWebConfiguration.java b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/framework/web/config/IotWebConfiguration.java index 6b3cc6ae5..84b3d63e9 100644 --- a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/framework/web/config/IotWebConfiguration.java +++ b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/framework/web/config/IotWebConfiguration.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.iot.framework.web.config; import cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration; -import org.springdoc.core.models.GroupedOpenApi; +import org.springdoc.core.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java index f7237631c..7c1bdc8df 100644 --- a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Nullable; import javax.annotation.Resource; +import javax.validation.ConstraintViolationException; import java.time.LocalDateTime; import java.util.*; diff --git a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/IotSceneRuleServiceImpl.java b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/IotSceneRuleServiceImpl.java index 901a077c6..c08f11afb 100644 --- a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/IotSceneRuleServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/IotSceneRuleServiceImpl.java @@ -219,14 +219,14 @@ public class IotSceneRuleServiceImpl implements IotSceneRuleService { IotDeviceDO device = deviceService.getDeviceFromCache(message.getDeviceId()); if (device == null) { log.warn("[getMatchedSceneRuleListByMessage][设备({}) 不存在]", message.getDeviceId()); - return List.of(); + return ListUtil.of(); } // 1.2 通过 productId 获取产品信息 IotProductDO product = productService.getProductFromCache(device.getProductId()); if (product == null) { log.warn("[getMatchedSceneRuleListByMessage][产品({}) 不存在]", device.getProductId()); - return List.of(); + return ListUtil.of(); } // 1.3 获取匹配的规则场景 diff --git a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java index 3658fc07c..22278ae9f 100644 --- a/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java +++ b/yudao-module-iot/yudao-module-iot-server/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Component; import java.util.*; import java.util.function.Function; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; @@ -48,17 +49,17 @@ public class IotSceneRuleMatcherManager { List allMatchers = matchers.stream() .filter(IotSceneRuleMatcher::isEnabled) .sorted(Comparator.comparing(IotSceneRuleMatcher::getPriority)) - .toList(); + .collect(Collectors.toList()); // 分离触发器匹配器和条件匹配器 List triggerMatchers = allMatchers.stream() .filter(matcher -> matcher instanceof IotSceneRuleTriggerMatcher) .map(matcher -> (IotSceneRuleTriggerMatcher) matcher) - .toList(); + .collect(Collectors.toList()); List conditionMatchers = allMatchers.stream() .filter(matcher -> matcher instanceof IotSceneRuleConditionMatcher) .map(matcher -> (IotSceneRuleConditionMatcher) matcher) - .toList(); + .collect(Collectors.toList()); // 构建触发器匹配器映射表 this.triggerMatchers = convertMap(triggerMatchers, IotSceneRuleTriggerMatcher::getSupportedTriggerType,