perf:【IoT 物联网】场景联动优化统一类型定义,简化告警配置

This commit is contained in:
puhui999
2025-08-05 11:59:46 +08:00
parent 694de3f0d1
commit 6c954c4ff1
11 changed files with 134 additions and 423 deletions

View File

@@ -1,5 +1,5 @@
import request from '@/config/axios'
import { IotRuleScene } from './scene.types'
import { IotSceneRule } from './scene.types'
// IoT 场景联动 API
export const RuleSceneApi = {
@@ -14,21 +14,24 @@ export const RuleSceneApi = {
},
// 新增场景联动
createRuleScene: async (data: IotRuleScene) => {
createRuleScene: async (data: IotSceneRule) => {
return await request.post({ url: `/iot/rule-scene/create`, data })
},
// 修改场景联动
updateRuleScene: async (data: IotRuleScene) => {
updateRuleScene: async (data: IotSceneRule) => {
return await request.put({ url: `/iot/rule-scene/update`, data })
},
// 修改场景联动
updateRuleSceneStatus: async (id: number, status: number) => {
return await request.put({ url: `/iot/rule-scene/update-status`, data: {
id,
status
}})
return await request.put({
url: `/iot/rule-scene/update-status`,
data: {
id,
status
}
})
},
// 删除场景联动

View File

@@ -137,122 +137,18 @@ export interface PropertySelectorItem {
// ========== 场景联动规则相关接口定义 ==========
// 基础接口(如果项目中有全局的 BaseDO可以使用全局的
interface TenantBaseDO {
createTime?: Date // 创建时间
updateTime?: Date // 更新时间
creator?: string // 创建者
updater?: string // 更新者
deleted?: boolean // 是否删除
tenantId?: number // 租户编号
}
// 触发条件参数
interface TriggerConditionParameter {
identifier0?: string // 标识符(事件、服务)
identifier?: string // 标识符(属性)
operator: string // 操作符(必填)
value: string // 比较值(必填,多值用逗号分隔)
}
// 触发条件
interface TriggerCondition {
type: string // 消息类型
identifier: string // 消息标识符
parameters: TriggerConditionParameter[] // 参数数组
}
// 触发器配置
interface TriggerConfig {
key?: string // 组件唯一标识符,用于解决索引重用问题
type: number // 触发类型(必填)
productKey?: string // 产品标识(设备触发时必填)
deviceNames?: string[] // 设备名称数组(设备触发时必填)
conditions?: TriggerCondition[] // 触发条件数组(设备触发时必填)
cronExpression?: string // CRON表达式定时触发时必填
}
// 执行设备控制
interface ActionDeviceControl {
productKey: string // 产品标识(必填)
deviceNames: string[] // 设备名称数组(必填)
type: string // 消息类型(必填)
identifier: string // 消息标识符(必填)
params: Record<string, any> // 参数对象(必填)- 统一使用 params 字段
}
// 执行器配置
interface ActionConfig {
key?: string // 组件唯一标识符,用于解决索引重用问题
type: number // 执行类型(必填)
deviceControl?: ActionDeviceControl // 设备控制(设备控制时必填)
alertConfigId?: number // 告警配置ID告警恢复时必填
}
// 表单数据接口 - 直接对应后端 DO 结构
interface RuleSceneFormData {
id?: number
name: string
description?: string
status: number
triggers: TriggerFormData[] // 支持多个触发器
actions: ActionFormData[]
}
// 触发器表单数据 - 直接对应 TriggerDO
interface TriggerFormData {
type: number // 触发类型
productId?: number // 产品编号
deviceId?: number // 设备编号
identifier?: string // 物模型标识符
operator?: string // 操作符
value?: string // 参数值
cronExpression?: string // CRON 表达式
conditionGroups?: TriggerConditionFormData[][] // 条件组(二维数组)
}
// 触发条件表单数据 - 直接对应 TriggerConditionDO
interface TriggerConditionFormData {
type: number // 条件类型1-设备状态2-设备属性3-当前时间
productId?: number // 产品编号
deviceId?: number // 设备编号
identifier?: string // 标识符
operator: string // 操作符
param: string // 参数值
}
// 执行器表单数据 - 直接对应 ActionDO
interface ActionFormData {
type: number // 执行类型
productId?: number // 产品编号
deviceId?: number // 设备编号
identifier?: string // 物模型标识符(服务调用时使用)
params?: Record<string, any> // 请求参数
alertConfigId?: number // 告警配置编号
}
// 主接口 - 原有的 API 接口格式(保持兼容性)
interface IotRuleScene extends TenantBaseDO {
id?: number // 场景编号(新增时为空)
name: string // 场景名称(必填)
description?: string // 场景描述(可选)
status: number // 场景状态0-开启1-关闭
triggers: TriggerConfig[] // 触发器数组(必填,至少一个)
actions: ActionConfig[] // 执行器数组(必填,至少一个)
}
// 后端 DO 接口 - 匹配后端数据结构
interface IotRuleSceneDO {
interface IotSceneRule {
id?: number // 场景编号
name: string // 场景名称
description?: string // 场景描述
status: number // 场景状态0-开启1-关闭
triggers: TriggerDO[] // 触发器数组
actions: ActionDO[] // 执行器数组
triggers: Trigger[] // 触发器数组
actions: Action[] // 执行器数组
}
// 触发器 DO 结构
interface TriggerDO {
interface Trigger {
type: number // 触发类型
productId?: number // 产品编号
deviceId?: number // 设备编号
@@ -260,12 +156,12 @@ interface TriggerDO {
operator?: string // 操作符
value?: string // 参数值
cronExpression?: string // CRON 表达式
conditionGroups?: TriggerConditionDO[][] // 条件组(二维数组)
conditionGroups?: TriggerCondition[][] // 条件组(二维数组)
}
// 触发条件 DO 结构
interface TriggerConditionDO {
type: number // 条件类型
interface TriggerCondition {
type: number // 条件类型1-设备状态2-设备属性3-当前时间
productId?: number // 产品编号
deviceId?: number // 设备编号
identifier?: string // 标识符
@@ -274,7 +170,7 @@ interface TriggerConditionDO {
}
// 执行器 DO 结构
interface ActionDO {
interface Action {
type: number // 执行类型
productId?: number // 产品编号
deviceId?: number // 设备编号
@@ -300,21 +196,4 @@ interface FormValidationRules {
// TODO @puhui999这个文件目标最终没有哈和别的模块一致
export {
IotRuleScene,
IotRuleSceneDO,
TriggerDO,
TriggerConditionDO,
ActionDO,
TriggerConfig,
TriggerCondition,
TriggerConditionParameter,
ActionConfig,
ActionDeviceControl,
RuleSceneFormData,
TriggerFormData,
TriggerConditionFormData,
ActionFormData,
ValidationRule,
FormValidationRules
}
export { IotSceneRule, Trigger, TriggerCondition, Action, ValidationRule, FormValidationRules }