Commit 1e17e3578dca74eeb2a8a01397543f9d634e074b
1 parent
65cd56bc
perf:【IoT 物联网】场景联动规则根据类型,新建 trigger、condition 包
Showing
11 changed files
with
37 additions
and
30 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcher.java
| ... | ... | @@ -18,12 +18,10 @@ import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 18 | 18 | */ |
| 19 | 19 | public interface IotSceneRuleMatcher { |
| 20 | 20 | |
| 21 | - // TODO @puhui999:MatcherTypeEnum; | |
| 22 | - // TODO @puhui999:可以考虑根据类型,新建 trigger、condition 包,然后把对应的实现类放进去哈; | |
| 23 | 21 | /** |
| 24 | 22 | * 匹配器类型枚举 |
| 25 | 23 | */ |
| 26 | - enum MatcherType { | |
| 24 | + enum MatcherTypeEnum { | |
| 27 | 25 | |
| 28 | 26 | /** |
| 29 | 27 | * 触发器匹配器 - 用于匹配主触发条件 |
| ... | ... | @@ -42,7 +40,7 @@ public interface IotSceneRuleMatcher { |
| 42 | 40 | * |
| 43 | 41 | * @return 匹配器类型 |
| 44 | 42 | */ |
| 45 | - MatcherType getMatcherType(); | |
| 43 | + MatcherTypeEnum getMatcherType(); | |
| 46 | 44 | |
| 47 | 45 | // TODO @puhui999:【重要】有个思路,IotSceneRuleMatcher 拆分成 2 种 mather 接口;然后 AbstractIotSceneRuleMatcher 是个 Helper 工具类; |
| 48 | 46 | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java
| ... | ... | @@ -61,10 +61,10 @@ public class IotSceneRuleMatcherManager { |
| 61 | 61 | |
| 62 | 62 | // 分离触发器匹配器和条件匹配器 |
| 63 | 63 | List<IotSceneRuleMatcher> triggerMatchers = this.allMatchers.stream() |
| 64 | - .filter(matcher -> matcher.getMatcherType() == IotSceneRuleMatcher.MatcherType.TRIGGER) | |
| 64 | + .filter(matcher -> matcher.getMatcherType() == IotSceneRuleMatcher.MatcherTypeEnum.TRIGGER) | |
| 65 | 65 | .toList(); |
| 66 | 66 | List<IotSceneRuleMatcher> conditionMatchers = this.allMatchers.stream() |
| 67 | - .filter(matcher -> matcher.getMatcherType() == IotSceneRuleMatcher.MatcherType.CONDITION) | |
| 67 | + .filter(matcher -> matcher.getMatcherType() == IotSceneRuleMatcher.MatcherTypeEnum.CONDITION) | |
| 68 | 68 | .toList(); |
| 69 | 69 | |
| 70 | 70 | // 构建触发器匹配器映射表 | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/CurrentTimeConditionMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.condition; | |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionTypeEnum; |
| 7 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 7 | 8 | import lombok.extern.slf4j.Slf4j; |
| 8 | 9 | import org.springframework.stereotype.Component; |
| 9 | 10 | |
| ... | ... | @@ -33,8 +34,8 @@ public class CurrentTimeConditionMatcher extends AbstractIotSceneRuleMatcher { |
| 33 | 34 | private static final DateTimeFormatter TIME_FORMATTER_SHORT = DateTimeFormatter.ofPattern("HH:mm"); |
| 34 | 35 | |
| 35 | 36 | @Override |
| 36 | - public MatcherType getMatcherType() { | |
| 37 | - return MatcherType.CONDITION; | |
| 37 | + public MatcherTypeEnum getMatcherType() { | |
| 38 | + return MatcherTypeEnum.CONDITION; | |
| 38 | 39 | } |
| 39 | 40 | |
| 40 | 41 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/DevicePropertyConditionMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.condition; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.util.IotDeviceMessageUtils; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionTypeEnum; |
| 7 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 7 | 8 | import org.springframework.stereotype.Component; |
| 8 | 9 | |
| 9 | 10 | /** |
| ... | ... | @@ -17,8 +18,8 @@ import org.springframework.stereotype.Component; |
| 17 | 18 | public class DevicePropertyConditionMatcher extends AbstractIotSceneRuleMatcher { |
| 18 | 19 | |
| 19 | 20 | @Override |
| 20 | - public MatcherType getMatcherType() { | |
| 21 | - return MatcherType.CONDITION; | |
| 21 | + public MatcherTypeEnum getMatcherType() { | |
| 22 | + return MatcherTypeEnum.CONDITION; | |
| 22 | 23 | } |
| 23 | 24 | |
| 24 | 25 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/DeviceStateConditionMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DeviceStateConditionMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.condition; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleConditionTypeEnum; |
| 6 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 6 | 7 | import org.springframework.stereotype.Component; |
| 7 | 8 | |
| 8 | 9 | /** |
| ... | ... | @@ -16,8 +17,8 @@ import org.springframework.stereotype.Component; |
| 16 | 17 | public class DeviceStateConditionMatcher extends AbstractIotSceneRuleMatcher { |
| 17 | 18 | |
| 18 | 19 | @Override |
| 19 | - public MatcherType getMatcherType() { | |
| 20 | - return MatcherType.CONDITION; | |
| 20 | + public MatcherTypeEnum getMatcherType() { | |
| 21 | + return MatcherTypeEnum.CONDITION; | |
| 21 | 22 | } |
| 22 | 23 | |
| 23 | 24 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/DeviceEventPostTriggerMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceEventPostTriggerMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; | |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; |
| ... | ... | @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.core.util.IotDeviceMessageUtils; |
| 7 | 7 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 8 | 8 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 9 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 9 | 10 | import org.springframework.stereotype.Component; |
| 10 | 11 | |
| 11 | 12 | /** |
| ... | ... | @@ -24,8 +25,8 @@ public class DeviceEventPostTriggerMatcher extends AbstractIotSceneRuleMatcher { |
| 24 | 25 | private static final String DEVICE_EVENT_POST_METHOD = IotDeviceMessageMethodEnum.EVENT_POST.getMethod(); |
| 25 | 26 | |
| 26 | 27 | @Override |
| 27 | - public MatcherType getMatcherType() { | |
| 28 | - return MatcherType.TRIGGER; | |
| 28 | + public MatcherTypeEnum getMatcherType() { | |
| 29 | + return MatcherTypeEnum.TRIGGER; | |
| 29 | 30 | } |
| 30 | 31 | |
| 31 | 32 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/DevicePropertyPostTriggerMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DevicePropertyPostTriggerMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.core.util.IotDeviceMessageUtils; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 7 | 7 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 8 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 8 | 9 | import org.springframework.stereotype.Component; |
| 9 | 10 | |
| 10 | 11 | /** |
| ... | ... | @@ -24,8 +25,8 @@ public class DevicePropertyPostTriggerMatcher extends AbstractIotSceneRuleMatche |
| 24 | 25 | private static final String DEVICE_PROPERTY_POST_METHOD = IotDeviceMessageMethodEnum.PROPERTY_POST.getMethod(); |
| 25 | 26 | |
| 26 | 27 | @Override |
| 27 | - public MatcherType getMatcherType() { | |
| 28 | - return MatcherType.TRIGGER; | |
| 28 | + public MatcherTypeEnum getMatcherType() { | |
| 29 | + return MatcherTypeEnum.TRIGGER; | |
| 29 | 30 | } |
| 30 | 31 | |
| 31 | 32 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/DeviceServiceInvokeTriggerMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.core.util.IotDeviceMessageUtils; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 7 | 7 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 8 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 8 | 9 | import org.springframework.stereotype.Component; |
| 9 | 10 | |
| 10 | 11 | /** |
| ... | ... | @@ -23,8 +24,8 @@ public class DeviceServiceInvokeTriggerMatcher extends AbstractIotSceneRuleMatch |
| 23 | 24 | private static final String DEVICE_SERVICE_INVOKE_METHOD = IotDeviceMessageMethodEnum.SERVICE_INVOKE.getMethod(); |
| 24 | 25 | |
| 25 | 26 | @Override |
| 26 | - public MatcherType getMatcherType() { | |
| 27 | - return MatcherType.TRIGGER; | |
| 27 | + public MatcherTypeEnum getMatcherType() { | |
| 28 | + return MatcherTypeEnum.TRIGGER; | |
| 28 | 29 | } |
| 29 | 30 | |
| 30 | 31 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/DeviceStateUpdateTriggerMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceStateUpdateTriggerMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.iot.core.enums.IotDeviceMessageMethodEnum; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 7 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 7 | 8 | import org.springframework.stereotype.Component; |
| 8 | 9 | |
| 9 | 10 | /** |
| ... | ... | @@ -23,8 +24,8 @@ public class DeviceStateUpdateTriggerMatcher extends AbstractIotSceneRuleMatcher |
| 23 | 24 | private static final String DEVICE_STATE_UPDATE_METHOD = IotDeviceMessageMethodEnum.STATE_UPDATE.getMethod(); |
| 24 | 25 | |
| 25 | 26 | @Override |
| 26 | - public MatcherType getMatcherType() { | |
| 27 | - return MatcherType.TRIGGER; | |
| 27 | + public MatcherTypeEnum getMatcherType() { | |
| 28 | + return MatcherTypeEnum.TRIGGER; | |
| 28 | 29 | } |
| 29 | 30 | |
| 30 | 31 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/TimerTriggerMatcher.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/TimerTriggerMatcher.java
| 1 | -package cn.iocoder.yudao.module.iot.service.rule.scene.matcher; | |
| 1 | +package cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger; | |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 7 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.AbstractIotSceneRuleMatcher; | |
| 7 | 8 | import org.springframework.stereotype.Component; |
| 8 | 9 | |
| 9 | 10 | /** |
| ... | ... | @@ -18,8 +19,8 @@ import org.springframework.stereotype.Component; |
| 18 | 19 | public class TimerTriggerMatcher extends AbstractIotSceneRuleMatcher { |
| 19 | 20 | |
| 20 | 21 | @Override |
| 21 | - public MatcherType getMatcherType() { | |
| 22 | - return MatcherType.TRIGGER; | |
| 22 | + public MatcherTypeEnum getMatcherType() { | |
| 23 | + return MatcherTypeEnum.TRIGGER; | |
| 23 | 24 | } |
| 24 | 25 | |
| 25 | 26 | @Override | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleTriggerMatcherTest.java
| ... | ... | @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; |
| 4 | 4 | import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; |
| 5 | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.rule.IotSceneRuleDO; |
| 6 | 6 | import cn.iocoder.yudao.module.iot.enums.rule.IotSceneRuleTriggerTypeEnum; |
| 7 | +import cn.iocoder.yudao.module.iot.service.rule.scene.matcher.trigger.*; | |
| 7 | 8 | import org.junit.jupiter.api.BeforeEach; |
| 8 | 9 | import org.junit.jupiter.api.Test; |
| 9 | 10 | ... | ... |