From cb00505ae798195c5dc17965cf7baf69af0bf3a3 Mon Sep 17 00:00:00 2001 From: zhugongping Date: Wed, 2 Sep 2026 09:27:43 +0800 Subject: [PATCH] =?UTF-8?q?20260902:=E8=A7=84=E5=88=99=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E6=94=B9=E9=80=A0=EF=BC=8C=E6=94=AF=E6=8C=81=E7=B2=BE=E7=A1=AE?= =?UTF-8?q?=E5=88=B0=E8=AE=BE=E5=A4=87(=E5=A4=9A=E4=B8=AA=E8=AE=BE?= =?UTF-8?q?=E5=A4=87);mqtt=E6=94=AF=E6=8C=81=E9=80=9A=E9=85=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fastbee/iot/domain/Device.java | 7 +++ .../java/com/fastbee/iot/domain/Product.java | 2 +- .../java/com/fastbee/iot/domain/Script.java | 5 ++ .../fastbee/iot/model/ScriptCondition.java | 5 ++ .../fastbee/iot/ruleEngine/MqttBridge.java | 2 +- .../fastbee/iot/ruleEngine/RuleProcess.java | 1 + .../resources/mapper/iot/DeviceMapper.xml | 12 ++++ .../resources/mapper/iot/ScriptMapper.xml | 22 +++++-- sql/yack-init.sql | 1 + .../src/views/iot/device/product-list.vue | 2 +- yack-web/src/views/iot/scene/device-list.vue | 11 +--- yack-web/src/views/iot/scene/product-list.vue | 2 +- yack-web/src/views/iot/scene/script.vue | 57 +++++++++++++++++++ 13 files changed, 110 insertions(+), 19 deletions(-) diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java index acecb3a7..79d45989 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Device.java @@ -101,6 +101,13 @@ public class Device extends BaseEntity { @TableField(exist = false) private Integer deviceType; + /** + * 设备类型列表(用于多类型过滤) + */ + @ApiModelProperty("设备类型列表(用于多类型过滤,如[1,2]表示直连和网关设备)") + @TableField(exist = false) + private List deviceTypes; + /** * 设备状态(1-未激活,2-禁用,3-在线,4-离线) */ diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Product.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Product.java index 43aea31b..79318b81 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Product.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Product.java @@ -115,7 +115,7 @@ public class Product extends BaseEntity { /** * 设备类型(1-直连设备、2-网关子设备、3-网关设备) */ - @ApiModelProperty(value = "设备类型", notes = "(1-直连设备、2-网关子设备、3-网关设备、4-网关子设备)") + @ApiModelProperty(value = "设备类型", notes = "(1-直连设备、2-网关设备、3-监控设备、4-网关子设备)") @Excel(name = "设备类型", readConverterExp = "1=直连设备、2=网关设备、3=监控设备、4-网关子设备") private Integer deviceType; /** diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Script.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Script.java index 376dfcd7..f8cf1f4c 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Script.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/domain/Script.java @@ -96,6 +96,11 @@ public class Script extends BaseEntity { private String productName; + /** + * 设备编号列表(逗号分隔,为空表示全部设备) + */ + private String serialNumbers; + /** * 是否生效 */ diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ScriptCondition.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ScriptCondition.java index 626dedf2..85f5642b 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ScriptCondition.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/ScriptCondition.java @@ -46,6 +46,11 @@ public class ScriptCondition { */ private Long productId; + /** + * 当前上报设备的编号(用于设备级过滤,为空不过滤) + */ + private String serialNumber; + /** * 场景ID */ diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttBridge.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttBridge.java index 214c66b4..a5ab512e 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttBridge.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/MqttBridge.java @@ -44,7 +44,7 @@ public class MqttBridge extends NodeComponent { // 优先使用bridge.route,如果为空再使用context.topic String publishTopic = StringUtils.isNotBlank(bridge.getRoute()) - ? bridge.getRoute() + ? cxt.placeholders(bridge.getRoute()) : cxt.getTopic(); MqttMessage message = new MqttMessage(); diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/RuleProcess.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/RuleProcess.java index c2ecc79b..e49709dc 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/RuleProcess.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/ruleEngine/RuleProcess.java @@ -49,6 +49,7 @@ public class RuleProcess { .scriptPurpose(1) .scriptEvent(event) .productId(productCode.getProductId()) + .serialNumber(serialNumber) .build(); MsgContext context = MsgContext.builder() .serialNumber(serialNumber) diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml index a6ba4d5a..235adc80 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml @@ -443,6 +443,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and d.device_name like concat('%', #{deviceName}, '%') and d.product_id = #{productId} and p.device_type = #{deviceType} + + and p.device_type in + + #{deviceTypeItem} + + and d.product_name like concat('%', #{productName}, '%') and d.serial_number = #{serialNumber} and d.gw_dev_code = #{gwDevCode} @@ -1002,6 +1008,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and d.device_name like concat('%', #{deviceName}, '%') and d.product_id = #{productId} and p.device_type = #{deviceType} + + and p.device_type in + + #{deviceTypeItem} + + and d.product_name like concat('%', #{productName}, '%') and d.serial_number = #{serialNumber} and d.gw_dev_code = #{gwDevCode} diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ScriptMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ScriptMapper.xml index 4bd5373c..bb833cdc 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ScriptMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/ScriptMapper.xml @@ -10,6 +10,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -32,16 +33,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select user_id, user_name, scene_id,product_id,product_name,script_event,script_action,script_purpose,script_order,application_name, script_id, script_name, script_data, script_type, script_language,enable, del_flag, create_by, create_time, update_by, update_time, remark from iot_script + select user_id, user_name, scene_id,product_id,product_name,serial_numbers,script_event,script_action,script_purpose,script_order,application_name, script_id, script_name, script_data, script_type, script_language,enable, del_flag, create_by, create_time, update_by, update_time, remark from iot_script - select user_id, user_name, scene_id,product_id,product_name, script_event,script_action,script_purpose,script_order,application_name, script_id, script_name, script_type, script_language,enable, create_by, create_time, update_by, update_time from iot_script + select user_id, user_name, scene_id,product_id,product_name,serial_numbers, script_event,script_action,script_purpose,script_order,application_name, script_id, script_name, script_type, script_language,enable, create_by, create_time, update_by, update_time from iot_script @@ -106,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"