Commit 1e17e3578dca74eeb2a8a01397543f9d634e074b

Authored by puhui999
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  
... ...