From c167b547ad8bc422601da773ec202e13fabffd78 Mon Sep 17 00:00:00 2001 From: xins Date: Tue, 14 Nov 2023 15:49:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=A5=E4=BE=9D=E5=BE=AE=E6=9C=8D=E5=8A=A11.?= =?UTF-8?q?9.7=20business=EF=BC=9A=201=E3=80=81=E7=A6=BB=E7=BA=BF=E6=8A=A5?= =?UTF-8?q?=E8=AD=A6=E8=A7=84=E5=88=99=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?= =?UTF-8?q?=EF=BC=8C=E9=85=8D=E7=BD=AE=E8=AE=BE=E5=A4=87=E5=88=97=E8=A1=A8?= =?UTF-8?q?=202=E3=80=81=E6=96=B0=E5=A2=9E=E5=92=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=83=A8=E9=97=A8bug=E4=BF=AE=E6=94=B9=203=E3=80=81=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=9B=91=E6=8E=A7=E5=8D=95=E5=85=83=E6=9C=89=E7=88=B6?= =?UTF-8?q?=E7=BA=A7=E6=97=B6bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/domain/HwAlarmRuleLink.java | 156 ++++ .../com/ruoyi/business/domain/HwDevice.java | 9 + .../ruoyi/business/domain/HwOfflineRule.java | 337 +++++++ .../business/domain/HwOfflineTarget.java | 64 ++ .../ruoyi/business/mapper/HwDeviceMapper.java | 19 + .../mapper/HwOfflineTargetMapper.java | 41 + .../business/service/IHwDeviceService.java | 35 +- .../service/impl/HwDeviceServiceImpl.java | 26 + .../mapper/business/HwAlarmRuleMapper.xml | 9 +- .../mapper/business/HwDeviceMapper.xml | 35 + .../mapper/business/HwOfflineRuleMapper.xml | 239 +++++ .../mapper/business/HwOfflineTargetMapper.xml | 32 + ruoyi-ui/src/api/business/offlineRule.js | 134 +++ ruoyi-ui/src/router/index.js | 17 +- .../src/views/business/alarmRule/index.vue | 69 +- ruoyi-ui/src/views/business/device/index.vue | 2 +- .../src/views/business/monitorUnit/index.vue | 4 +- .../business/offlineRule/allocateDevice.vue | 253 +++++ .../src/views/business/offlineRule/index.vue | 866 ++++++++++++++++++ .../business/offlineRule/selectDevie.vue | 182 ++++ ruoyi-ui/src/views/system/dept/index.vue | 18 +- 21 files changed, 2488 insertions(+), 59 deletions(-) create mode 100644 ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwAlarmRuleLink.java create mode 100644 ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineRule.java create mode 100644 ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineTarget.java create mode 100644 ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwOfflineTargetMapper.java create mode 100644 ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineRuleMapper.xml create mode 100644 ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineTargetMapper.xml create mode 100644 ruoyi-ui/src/api/business/offlineRule.js create mode 100644 ruoyi-ui/src/views/business/offlineRule/allocateDevice.vue create mode 100644 ruoyi-ui/src/views/business/offlineRule/index.vue create mode 100644 ruoyi-ui/src/views/business/offlineRule/selectDevie.vue diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwAlarmRuleLink.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwAlarmRuleLink.java new file mode 100644 index 0000000..0c1ec18 --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwAlarmRuleLink.java @@ -0,0 +1,156 @@ +package com.ruoyi.business.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +/** + * 报警规则联动信息对象 hw_alarm_rule_link + * + * @author xins + * @date 2023-11-13 + */ +public class HwAlarmRuleLink extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 报警规则关联ID,主键 */ + private Long ruleLinkId; + + /** 报警规则类型(1=设备报警规则,2=离线报警规则) */ + @Excel(name = "报警规则类型(1=设备报警规则,2=离线报警规则)") + private String alarmRuleType; + + /** 报警规则类型为1时:关联报警规则ID,关联hw_alarm_rule的alarm_rule_id; + 报警规则类型为2时:关联离线报警规则ID,关联hw_offline_rule的offline_rule_id */ + @Excel(name = "报警规则ID,关联hw_alarm_rule的alarm_rule_id") + private Long alarmRuleId; + + /** 联动类型(1、控制,2、采集) */ + @Excel(name = "联动类型", readConverterExp = "1=、控制,2、采集") + private String linkType; + + /** 联动设备,关联表hw_device字段device_id */ + @Excel(name = "联动设备,关联表hw_device字段device_id") + private Long linkDeviceId; + + /** 联动设备功能,关联表hw_device_mode_function字段mode_function_id */ + @Excel(name = "联动设备功能,关联表hw_device_mode_function字段mode_function_id") + private Long linkDeviceFunctionId; + + /** 标识符(支持大小写字母、数字和下划线,对外暂时不超过30个字符) */ + @Excel(name = "标识符", readConverterExp = "支=持大小写字母、数字和下划线,对外暂时不超过30个字符") + private String linkDeviceFunctionIdentifier; + + /** 联动设备服务的参数值,json格式保存 */ + @Excel(name = "联动设备服务的参数值,json格式保存") + private String linkDeviceFunctionData; + + private String linkDeviceName; + + private String linkDeviceModeFunctionName; + + public void setRuleLinkId(Long ruleLinkId) + { + this.ruleLinkId = ruleLinkId; + } + + public Long getRuleLinkId() + { + return ruleLinkId; + } + public void setAlarmRuleType(String alarmRuleType) + { + this.alarmRuleType = alarmRuleType; + } + + public String getAlarmRuleType() + { + return alarmRuleType; + } + public void setAlarmRuleId(Long alarmRuleId) + { + this.alarmRuleId = alarmRuleId; + } + + public Long getAlarmRuleId() + { + return alarmRuleId; + } + public void setLinkType(String linkType) + { + this.linkType = linkType; + } + + public String getLinkType() + { + return linkType; + } + public void setLinkDeviceId(Long linkDeviceId) + { + this.linkDeviceId = linkDeviceId; + } + + public Long getLinkDeviceId() + { + return linkDeviceId; + } + public void setLinkDeviceFunctionId(Long linkDeviceFunctionId) + { + this.linkDeviceFunctionId = linkDeviceFunctionId; + } + + public Long getLinkDeviceFunctionId() + { + return linkDeviceFunctionId; + } + public void setLinkDeviceFunctionIdentifier(String linkDeviceFunctionIdentifier) + { + this.linkDeviceFunctionIdentifier = linkDeviceFunctionIdentifier; + } + + public String getLinkDeviceFunctionIdentifier() + { + return linkDeviceFunctionIdentifier; + } + public void setLinkDeviceFunctionData(String linkDeviceFunctionData) + { + this.linkDeviceFunctionData = linkDeviceFunctionData; + } + + public String getLinkDeviceFunctionData() + { + return linkDeviceFunctionData; + } + + public String getLinkDeviceName() { + return linkDeviceName; + } + + public void setLinkDeviceName(String linkDeviceName) { + this.linkDeviceName = linkDeviceName; + } + + public String getLinkDeviceModeFunctionName() { + return linkDeviceModeFunctionName; + } + + public void setLinkDeviceModeFunctionName(String linkDeviceModeFunctionName) { + this.linkDeviceModeFunctionName = linkDeviceModeFunctionName; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("ruleLinkId", getRuleLinkId()) + .append("alarmRuleType", getAlarmRuleType()) + .append("alarmRuleId", getAlarmRuleId()) + .append("linkType", getLinkType()) + .append("linkDeviceId", getLinkDeviceId()) + .append("linkDeviceFunctionId", getLinkDeviceFunctionId()) + .append("linkDeviceFunctionIdentifier", getLinkDeviceFunctionIdentifier()) + .append("linkDeviceFunctionData", getLinkDeviceFunctionData()) + .toString(); + } +} diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwDevice.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwDevice.java index 3e35eea..3f736a1 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwDevice.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwDevice.java @@ -178,6 +178,7 @@ public class HwDevice extends BaseEntity { private String gpsFlag; + private Long offlineRuleId; public void setDeviceId(Long deviceId) { this.deviceId = deviceId; @@ -419,6 +420,14 @@ public class HwDevice extends BaseEntity { this.gpsFlag = gpsFlag; } + public Long getOfflineRuleId() { + return offlineRuleId; + } + + public void setOfflineRuleId(Long offlineRuleId) { + this.offlineRuleId = offlineRuleId; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineRule.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineRule.java new file mode 100644 index 0000000..f79baa9 --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineRule.java @@ -0,0 +1,337 @@ +package com.ruoyi.business.domain; + +import java.math.BigDecimal; +import java.util.List; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +/** + * 离线报警规则对象 hw_offline_rule + * + * @author xins + * @date 2023-11-13 + */ +public class HwOfflineRule extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 离线报警规则ID */ + @Excel(name = "离线报警规则ID") + private Long offlineRuleId; + + /** 离线报警规则名称 */ + @Excel(name = "离线报警规则名称") + private String offlineRuleName; + + /** 租户ID,关联hw_tenant的tenant_id */ + @Excel(name = "租户ID") + private Long tenantId; + + /** 所属场景,关联hw_scene表的scene_id字段 */ + @Excel(name = "所属场景ID") + private Long sceneId; + + /** 报警级别,关联表hw_alarm_level字段alarm_level_id */ + @Excel(name = "报警级别ID") + private Long alarmLevelId; + + /** 规则类型(1设备,2监控单元,3场景) */ + @Excel(name = "规则类型", readConverterExp = "1=设备,2=监控单元,3=场景") + private String ruleType; + + /** 离线时间(单位:秒,大于此时间的) */ + @Excel(name = "离线时间(单位:秒)") + private Long offlineTime; + + /** 几分钟内掉线次数的分钟 */ + @Excel(name = "几分钟内掉线次数的分钟") + private Long offlineNumberTime; + + /** 几分钟内掉线次数的次数 */ + @Excel(name = "几分钟内掉线次数的次数") + private Long offlineNumber; + + /** 无线信号强度(小于等于,1=极弱,2=弱,3=中,4=强,5=极强) */ + private String triggerTimeFrame; + + /** 当月消耗流量(大于) */ + private Long consumeTraffic; + + /** 电池电量(小于),范围是0.01-1 */ + private BigDecimal batteryLevel; + + /** 设备掉电报警(1=是,0=否) */ + private String powerDownFlag; + + /** 联动标识(1是,0否) */ + @Excel(name = "联动标识", readConverterExp = "1=是,0=否") + private String linkFlag; + + /** 报警启用状态(1是,0否) */ + @Excel(name = "状态(1=启用,0=禁用)") + private String alarmRuleStatus; + + /** 报警推送标识(1是,0否) */ + private String alarmPushFlag; + + /** 报警推送内容 */ + private String alarmPushContent; + + /** 恢复正常推送内容 */ + private String alarmRecoverContent; + + /** 预留字段 */ + private String offlineRuleField; + + /** 报警规则联动信息信息 */ + private List hwAlarmRuleLinkList; + + @Excel(name = "租户名称") + private String tenantName; + + @Excel(name = "场景名称") + private String sceneName; + + @Excel(name = "报警级别名称") + private String alarmLevelName; + + + public void setOfflineRuleId(Long offlineRuleId) + { + this.offlineRuleId = offlineRuleId; + } + + public Long getOfflineRuleId() + { + return offlineRuleId; + } + public void setOfflineRuleName(String offlineRuleName) + { + this.offlineRuleName = offlineRuleName; + } + + public String getOfflineRuleName() + { + return offlineRuleName; + } + public void setTenantId(Long tenantId) + { + this.tenantId = tenantId; + } + + public Long getTenantId() + { + return tenantId; + } + public void setSceneId(Long sceneId) + { + this.sceneId = sceneId; + } + + public Long getSceneId() + { + return sceneId; + } + public void setAlarmLevelId(Long alarmLevelId) + { + this.alarmLevelId = alarmLevelId; + } + + public Long getAlarmLevelId() + { + return alarmLevelId; + } + public void setRuleType(String ruleType) + { + this.ruleType = ruleType; + } + + public String getRuleType() + { + return ruleType; + } + public void setOfflineTime(Long offlineTime) + { + this.offlineTime = offlineTime; + } + + public Long getOfflineTime() + { + return offlineTime; + } + public void setOfflineNumberTime(Long offlineNumberTime) + { + this.offlineNumberTime = offlineNumberTime; + } + + public Long getOfflineNumberTime() + { + return offlineNumberTime; + } + public void setOfflineNumber(Long offlineNumber) + { + this.offlineNumber = offlineNumber; + } + + public Long getOfflineNumber() + { + return offlineNumber; + } + public void setTriggerTimeFrame(String triggerTimeFrame) + { + this.triggerTimeFrame = triggerTimeFrame; + } + + public String getTriggerTimeFrame() + { + return triggerTimeFrame; + } + public void setConsumeTraffic(Long consumeTraffic) + { + this.consumeTraffic = consumeTraffic; + } + + public Long getConsumeTraffic() + { + return consumeTraffic; + } + public void setBatteryLevel(BigDecimal batteryLevel) + { + this.batteryLevel = batteryLevel; + } + + public BigDecimal getBatteryLevel() + { + return batteryLevel; + } + public void setPowerDownFlag(String powerDownFlag) + { + this.powerDownFlag = powerDownFlag; + } + + public String getPowerDownFlag() + { + return powerDownFlag; + } + public void setLinkFlag(String linkFlag) + { + this.linkFlag = linkFlag; + } + + public String getLinkFlag() + { + return linkFlag; + } + public void setAlarmRuleStatus(String alarmRuleStatus) + { + this.alarmRuleStatus = alarmRuleStatus; + } + + public String getAlarmRuleStatus() + { + return alarmRuleStatus; + } + public void setAlarmPushFlag(String alarmPushFlag) + { + this.alarmPushFlag = alarmPushFlag; + } + + public String getAlarmPushFlag() + { + return alarmPushFlag; + } + public void setAlarmPushContent(String alarmPushContent) + { + this.alarmPushContent = alarmPushContent; + } + + public String getAlarmPushContent() + { + return alarmPushContent; + } + public void setAlarmRecoverContent(String alarmRecoverContent) + { + this.alarmRecoverContent = alarmRecoverContent; + } + + public String getAlarmRecoverContent() + { + return alarmRecoverContent; + } + public void setOfflineRuleField(String offlineRuleField) + { + this.offlineRuleField = offlineRuleField; + } + + public String getOfflineRuleField() + { + return offlineRuleField; + } + + public List getHwAlarmRuleLinkList() + { + return hwAlarmRuleLinkList; + } + + public void setHwAlarmRuleLinkList(List hwAlarmRuleLinkList) + { + this.hwAlarmRuleLinkList = hwAlarmRuleLinkList; + } + + public String getTenantName() { + return tenantName; + } + + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getAlarmLevelName() { + return alarmLevelName; + } + + public void setAlarmLevelName(String alarmLevelName) { + this.alarmLevelName = alarmLevelName; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("offlineRuleId", getOfflineRuleId()) + .append("offlineRuleName", getOfflineRuleName()) + .append("tenantId", getTenantId()) + .append("sceneId", getSceneId()) + .append("alarmLevelId", getAlarmLevelId()) + .append("ruleType", getRuleType()) + .append("offlineTime", getOfflineTime()) + .append("offlineNumberTime", getOfflineNumberTime()) + .append("offlineNumber", getOfflineNumber()) + .append("triggerTimeFrame", getTriggerTimeFrame()) + .append("consumeTraffic", getConsumeTraffic()) + .append("batteryLevel", getBatteryLevel()) + .append("powerDownFlag", getPowerDownFlag()) + .append("linkFlag", getLinkFlag()) + .append("alarmRuleStatus", getAlarmRuleStatus()) + .append("alarmPushFlag", getAlarmPushFlag()) + .append("alarmPushContent", getAlarmPushContent()) + .append("alarmRecoverContent", getAlarmRecoverContent()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("offlineRuleField", getOfflineRuleField()) + .append("hwAlarmRuleLinkList", getHwAlarmRuleLinkList()) + .toString(); + } +} diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineTarget.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineTarget.java new file mode 100644 index 0000000..14e2ddd --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwOfflineTarget.java @@ -0,0 +1,64 @@ +package com.ruoyi.business.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +/** + * 离线报警规则目标对象 hw_offline_target + * + * @author xins + * @date 2023-11-13 + */ +public class HwOfflineTarget extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 离线报警规则ID */ + private Long offlineRuleId; + + /** 目标类型(1、设备,2、监控单元) */ + private String targetType; + + /** target_type为1时,关联表hw_device字段device_id +target_type为2时,关联表hw_monitor_unit字段monitor_unit_id */ + private Long targetId; + + public void setOfflineRuleId(Long offlineRuleId) + { + this.offlineRuleId = offlineRuleId; + } + + public Long getOfflineRuleId() + { + return offlineRuleId; + } + public void setTargetType(String targetType) + { + this.targetType = targetType; + } + + public String getTargetType() + { + return targetType; + } + public void setTargetId(Long targetId) + { + this.targetId = targetId; + } + + public Long getTargetId() + { + return targetId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("offlineRuleId", getOfflineRuleId()) + .append("targetType", getTargetType()) + .append("targetId", getTargetId()) + .toString(); + } +} diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java index 359950d..ce781f0 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java @@ -115,4 +115,23 @@ public interface HwDeviceMapper public List selectHwDeviceListByMonitor(HwDevice hwDevice); + + + /** + * @param: hwDevice + * @description 获取离线设备报警规则已分配的设备 + * @author xins + * @date 2023-11-14 9:13 + * @return List + */ + public List selectAllocatedList(HwDevice hwDevice); + + /** + * @param: hwDevice + * @description 获取离线报警规则未分配的设备 + * @author xins + * @date 2023-11-14 9:13 + * @return List + */ + public List selectUnallocatedList(HwDevice hwDevice); } diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwOfflineTargetMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwOfflineTargetMapper.java new file mode 100644 index 0000000..5740b3b --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwOfflineTargetMapper.java @@ -0,0 +1,41 @@ +package com.ruoyi.business.mapper; + +import java.util.List; + +import com.ruoyi.business.domain.HwOfflineTarget; +import org.apache.ibatis.annotations.Param; + +/** + * 离线报警规则目标Mapper接口 + * + * @author xins + * @date 2023-11-13 + */ +public interface HwOfflineTargetMapper { + /** + * 批量新增离线报警规则目标列表 + * + * @param offlineTargetList 离线报警规则分配目标列表 + * @return 结果 + */ + public int batchInsertOfflineTarget(List offlineTargetList); + + /** + * 删除离线报警规则和目标关联信息 + * + * @param offlineTarget 离线报警规则和目标关联信息 + * @return 结果 + */ + public int deleteOfflineTarget(HwOfflineTarget offlineTarget); + + /** + * 批量取消已分配离线报警规则目标列表 + * + * @param offlineRuleId 离线报警规则ID + * @param targetType 目标类型 + * @param targetIds 需要删除的目标数据ID + * @return 结果 + */ + public int deleteOfflineTargets(@Param("offlineRuleId") Long offlineRuleId, + @Param("targetType") String targetType, @Param("targetIds") Long[] targetIds); +} diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java index a17b72a..1ca2caf 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java @@ -15,8 +15,7 @@ import com.ruoyi.common.datascope.annotation.DataScope; * @author xins * @date 2023-08-24 */ -public interface IHwDeviceService -{ +public interface IHwDeviceService { /** * 查询设备信息 * @@ -35,7 +34,7 @@ public interface IHwDeviceService /** * 查询3. 设备各类型占所有设备数量百分比饼状图(左下角) - * */ + */ public List selectDeviceModeNameVo(); /** @@ -103,12 +102,12 @@ public interface IHwDeviceService public int deleteHwDeviceByDeviceId(Long deviceId); /** - * @return Map> + * @return Map> * @description 设备监测页面,根据监控单元获取设备监控信息 * @author xins * @date 2023-09-15 16:59 */ - public Map> getDevicesByMonitor(HwDevice queryHwDevice); + public Map> getDevicesByMonitor(HwDevice queryHwDevice); /** * 查询设备信息列表,join监控单元、设备模型等表 @@ -147,29 +146,29 @@ public interface IHwDeviceService public void publishControlCommand(DeviceControlVo deviceControlVo); /** + * @return HwDevice * @param: deviceCode * @description 根据设备编号获取设备信息 * @author xins * @date 2023-09-28 13:24 - * @return HwDevice */ public HwDevice selectHwDeviceByDeviceCode(String deviceCode); /** + * @return JSONObject * @param: sceneId * @description 获取最近几天在线设备数量 * @author xins * @date 2023-09-21 9:09 - * @return JSONObject */ public JSONObject getOnlineDevicesCount(Long sceneId); /** + * @return DevicesInfoVo * @param: monitorUnitId * @description 根据监控单元ID获取设备情况(包括在线和离线设备数量,正常的设备数量和报警的设备数量) * @author xins * @date 2023-09-28 14:25 - * @return DevicesInfoVo */ public DevicesInfoVo getDevicesInfoByMonitorUnitId(Long monitorUnitId); @@ -181,11 +180,11 @@ public interface IHwDeviceService public void rebuildTdTables(); /** + * @return JSONObject * @param: device * @description 获取正上设备数量和有报警的设备数量 * @author xins * @date 2023-10-20 10:08 - * @return JSONObject */ public JSONObject selectDeviceNum(HwDevice device); @@ -196,4 +195,22 @@ public interface IHwDeviceService * @return 设备信息 */ public List selectHwDeviceListWithDeviceMode(HwDevice hwDevice); + + + /** + * 根据条件分页查询离线报警规则已分配设备列表 + * + * @param device 设备信息 + * @return 设备信息集合信息 + */ + public List selectAllocatedList(HwDevice device); + + /** + * 根据条件分页查询离线报警规则未分配设备列表 + * + * @param device 设备信息 + * @return 设备信息集合信息 + */ + public List selectUnallocatedList(HwDevice device); + } diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java index 578a91e..9fab36e 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java @@ -20,6 +20,7 @@ import com.ruoyi.common.core.utils.NumberUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.datascope.annotation.DataScope; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.tdengine.api.RemoteTdEngineService; import com.ruoyi.tdengine.api.domain.*; import org.springframework.beans.factory.annotation.Autowired; @@ -1082,4 +1083,29 @@ public class HwDeviceServiceImpl implements IHwDeviceService { return ""; } + + /** + * 根据条件分页查询离线报警规则已分配设备列表 + * + * @param device 设备信息 + * @return 设备信息集合信息 + */ + @Override + @DataScope(tenantAlias = "hd") + public List selectAllocatedList(HwDevice device) { + return hwDeviceMapper.selectAllocatedList(device); + } + + /** + * 根据条件分页查询离线报警规则未分配设备列表 + * + * @param device 设备信息 + * @return 设备信息集合信息 + */ + @Override + @DataScope(tenantAlias = "hd") + public List selectUnallocatedList(HwDevice device) { + return hwDeviceMapper.selectUnallocatedList(device); + } + } diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwAlarmRuleMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwAlarmRuleMapper.xml index 8ab27df..66c43e1 100644 --- a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwAlarmRuleMapper.xml +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwAlarmRuleMapper.xml @@ -40,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -119,9 +120,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + \ No newline at end of file diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineRuleMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineRuleMapper.xml new file mode 100644 index 0000000..0741226 --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineRuleMapper.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select offline_rule_id, offline_rule_name, tenant_id, scene_id, alarm_level_id, rule_type, offline_time, offline_number_time, offline_number, trigger_time_frame, consume_traffic, battery_level, power_down_flag, link_flag, alarm_rule_status, alarm_push_flag, alarm_push_content, alarm_recover_content, remark, create_by, create_time, update_by, update_time, offline_rule_field from hw_offline_rule + + + + + + + + insert into hw_offline_rule + + offline_rule_name, + tenant_id, + scene_id, + alarm_level_id, + rule_type, + offline_time, + offline_number_time, + offline_number, + trigger_time_frame, + consume_traffic, + battery_level, + power_down_flag, + link_flag, + alarm_rule_status, + alarm_push_flag, + alarm_push_content, + alarm_recover_content, + remark, + create_by, + create_time, + update_by, + update_time, + offline_rule_field, + + + #{offlineRuleName}, + #{tenantId}, + #{sceneId}, + #{alarmLevelId}, + #{ruleType}, + #{offlineTime}, + #{offlineNumberTime}, + #{offlineNumber}, + #{triggerTimeFrame}, + #{consumeTraffic}, + #{batteryLevel}, + #{powerDownFlag}, + #{linkFlag}, + #{alarmRuleStatus}, + #{alarmPushFlag}, + #{alarmPushContent}, + #{alarmRecoverContent}, + #{remark}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{offlineRuleField}, + + + + + update hw_offline_rule + + offline_rule_name = #{offlineRuleName}, + tenant_id = #{tenantId}, + scene_id = #{sceneId}, + alarm_level_id = #{alarmLevelId}, + rule_type = #{ruleType}, + offline_time = #{offlineTime}, + offline_number_time = #{offlineNumberTime}, + offline_number = #{offlineNumber}, + trigger_time_frame = #{triggerTimeFrame}, + consume_traffic = #{consumeTraffic}, + battery_level = #{batteryLevel}, + power_down_flag = #{powerDownFlag}, + link_flag = #{linkFlag}, + alarm_rule_status = #{alarmRuleStatus}, + alarm_push_flag = #{alarmPushFlag}, + alarm_push_content = #{alarmPushContent}, + alarm_recover_content = #{alarmRecoverContent}, + remark = #{remark}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + offline_rule_field = #{offlineRuleField}, + + where offline_rule_id = #{offlineRuleId} + + + + delete from hw_offline_rule where offline_rule_id = #{offlineRuleId} + + + + update hw_offline_rule set deleted_flag='1' where offline_rule_id in + + #{offlineRuleId} + + + + + delete from hw_alarm_rule_link where alarm_rule_id in + + #{alarmRuleId} + + + + + delete from hw_alarm_rule_link where alarm_rule_id = #{alarmRuleId} + + + + insert into hw_alarm_rule_link( rule_link_id, alarm_rule_type, alarm_rule_id, link_type, link_device_id, link_device_function_id, link_device_function_identifier, link_device_function_data) values + + ( #{item.ruleLinkId}, #{item.alarmRuleType}, #{item.alarmRuleId}, #{item.linkType}, #{item.linkDeviceId}, #{item.linkDeviceFunctionId}, #{item.linkDeviceFunctionIdentifier}, #{item.linkDeviceFunctionData}) + + + + + + + + \ No newline at end of file diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineTargetMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineTargetMapper.xml new file mode 100644 index 0000000..9b5bd5a --- /dev/null +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwOfflineTargetMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + insert into hw_offline_target (offline_rule_id, target_type,target_id) values + + (#{item.offlineRuleId},#{item.targetType},#{item.targetId}) + + + + + + delete from hw_offline_target where offline_rule_id=#{offlineRuleId} and target_type=#{targetType} and target_id=#{targetId} + + + + delete from hw_offline_target where offline_rule_id=#{offlineRuleId} and target_type=#{targetType} and target_id in + + #{targetId} + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/business/offlineRule.js b/ruoyi-ui/src/api/business/offlineRule.js new file mode 100644 index 0000000..150684e --- /dev/null +++ b/ruoyi-ui/src/api/business/offlineRule.js @@ -0,0 +1,134 @@ +import request from '@/utils/request' + +// 查询离线报警规则列表 +export function listOfflineRule(query) { + return request({ + url: '/business/offlineRule/list', + method: 'get', + params: query + }) +} + +// 查询离线报警规则详细 +export function getOfflineRule(offlineRuleId) { + return request({ + url: '/business/offlineRule/' + offlineRuleId, + method: 'get' + }) +} + +// 新增离线报警规则 +export function addOfflineRule(data) { + return request({ + url: '/business/offlineRule', + method: 'post', + data: data + }) +} + +// 修改离线报警规则 +export function updateOfflineRule(data) { + return request({ + url: '/business/offlineRule', + method: 'put', + data: data + }) +} + +// 删除离线报警规则 +export function delOfflineRule(offlineRuleId) { + return request({ + url: '/business/offlineRule/' + offlineRuleId, + method: 'delete' + }) +} + +// 查询场景信息列表供查询页面选择使用(例如下拉列表) +export function getScenes(query) { + return request({ + url: '/business/alarmRule/getScenes', + method: 'get', + params: query + }) +} + +// 查询场景信息列表供编辑页面选择使用(例如下拉列表) +export function getEditedScenes(query) { + return request({ + url: '/business/alarmRule/getEditedScenes', + method: 'get', + params: query + }) +} + +export function getSelectListBySceneId(sceneId) { + return request({ + url: '/business/alarmRule/getSelectListBySceneId/' + sceneId, + method: 'get' + }) +} + +export function getDeviceModeByDeviceId(deviceId) { + return request({ + url: '/business/alarmRule/getDeviceModeByDeviceId/' + deviceId, + method: 'get' + }) +} + + +// 查询监控单元树 +export function monitorUnitTree(query) { + return request({ + url: '/business/offlineRule/allocateDevice/monitorUnitTree', + method: 'get', + params: query + }) +} + +// 查询离线报警规则已分配设备列表 +export function allocatedDeviceList(query) { + return request({ + url: '/business/offlineRule/allocateDevice/allocatedList', + method: 'get', + params: query + }) +} + +// 查询离线报警规则未分配设备列表 +export function unallocatedDeviceList(query) { + return request({ + url: '/business/offlineRule/allocateDevice/unallocatedList', + method: 'get', + params: query + }) +} + + +// 批量分配离线报警规则目标列表 +export function batchInsertOfflineTarget(data) { + return request({ + url: '/business/offlineRule/allocateTarget/batchInsertOfflineTarget', + method: 'put', + params: data + }) +} + + +// 取消离线报警规则分配目标 +export function cancelAllocateDevice(data) { + return request({ + url: '/business/offlineRule/allocateTarget/cancelAllocateDevice', + method: 'put', + data: data + }) +} + +// 批量取消离线报警规则目标列表 +export function cancelAllocateDevices(data) { + return request({ + url: '/business/offlineRule/allocateTarget/cancelAllocateDevices', + method: 'put', + params: data + }) +} + diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 6f56a0e..25aaac7 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -260,7 +260,22 @@ export const dynamicRoutes = [ meta: { title: '修改电子围栏', activeMenu: '/business/electronicFence' } } ] - } + }, + + { + path: '/offlineRule/offline-device', + component: Layout, + hidden: true, + permissions: ['business:offlineRule:edit'], + children: [ + { + path: 'device/:offlineRuleId(\\d+)/:sceneId(\\d+)', + component: () => import('@/views/business/offlineRule/allocateDevice.vue'), + name: 'AllocateDevice', + meta: { title: '分配设备', activeMenu: '/business/offlineRule' } + } + ] + }, ] diff --git a/ruoyi-ui/src/views/business/alarmRule/index.vue b/ruoyi-ui/src/views/business/alarmRule/index.vue index b0f8d19..ef15893 100644 --- a/ruoyi-ui/src/views/business/alarmRule/index.vue +++ b/ruoyi-ui/src/views/business/alarmRule/index.vue @@ -55,7 +55,7 @@ - + - + { - this.scenes = response.data; - }); - }, - - sceneChange(sceneId) { - this.devices = []; - this.alarmTypes = []; - this.alarmLevels = []; - this.queryParams.alarmTypeId = null; - this.queryParams.alarmLevelId = null; - this.queryParams.ruleDeviceId = null; - this.getSelectListBySceneId(sceneId); - }, - - getSelectListBySceneId(sceneId) { - if (sceneId != null && sceneId !== '') { - getSelectListBySceneId(sceneId).then(response => { - this.devices = response.data["devices"]; - this.alarmTypes = response.data["alarmTypes"]; - this.alarmLevels = response.data["alarmLevels"]; - }) - } - }, - /** 搜索按钮操作 */ handleQuery() { this.queryParams.pageNum = 1; @@ -724,8 +697,8 @@ export default { handleUpdate(row) { this.reset(); this.sceneDisabled = true; - const alarmRuleId = row.alarmRuleId || this.ids this.getEditedScenes(); + const alarmRuleId = row.alarmRuleId || this.ids getAlarmRule(alarmRuleId).then(response => { this.form = response.data; @@ -819,6 +792,31 @@ export default { }, `alarmRule_${new Date().getTime()}.xlsx`) }, + getScenes() { + getScenes().then(response => { + this.scenes = response.data; + }); + }, + + sceneChange(sceneId) { + this.devices = []; + this.alarmTypes = []; + this.alarmLevels = []; + this.queryParams.alarmTypeId = null; + this.queryParams.alarmLevelId = null; + this.queryParams.ruleDeviceId = null; + this.getSelectListBySceneId(sceneId); + }, + + getSelectListBySceneId(sceneId) { + if (sceneId != null && sceneId !== '') { + getSelectListBySceneId(sceneId).then(response => { + this.devices = response.data["devices"]; + this.alarmTypes = response.data["alarmTypes"]; + this.alarmLevels = response.data["alarmLevels"]; + }) + } + }, getEditedScenes() { getEditedScenes().then(response => { @@ -929,6 +927,7 @@ export default { // 报警规则联动设备表单重置 resetAlarmRuleLink() { this.alarmRuleLinkForm = { + alarmRuleType:'1', linkType: null, linkDeviceId: null, linkDeviceFunctionId: null, diff --git a/ruoyi-ui/src/views/business/device/index.vue b/ruoyi-ui/src/views/business/device/index.vue index fb9ee22..fb572ec 100644 --- a/ruoyi-ui/src/views/business/device/index.vue +++ b/ruoyi-ui/src/views/business/device/index.vue @@ -66,7 +66,7 @@ @keyup.enter.native="handleQuery" /> - + +
+ + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + 添加设备 + + + + 批量取消分配 + + + + 关闭 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/ruoyi-ui/src/views/business/offlineRule/index.vue b/ruoyi-ui/src/views/business/offlineRule/index.vue new file mode 100644 index 0000000..b28766d --- /dev/null +++ b/ruoyi-ui/src/views/business/offlineRule/index.vue @@ -0,0 +1,866 @@ + + + diff --git a/ruoyi-ui/src/views/business/offlineRule/selectDevie.vue b/ruoyi-ui/src/views/business/offlineRule/selectDevie.vue new file mode 100644 index 0000000..1018513 --- /dev/null +++ b/ruoyi-ui/src/views/business/offlineRule/selectDevie.vue @@ -0,0 +1,182 @@ + + + diff --git a/ruoyi-ui/src/views/system/dept/index.vue b/ruoyi-ui/src/views/system/dept/index.vue index 361f6a1..18739c4 100644 --- a/ruoyi-ui/src/views/system/dept/index.vue +++ b/ruoyi-ui/src/views/system/dept/index.vue @@ -202,8 +202,6 @@ export default { showSearch: true, // 表格树数据 deptList: [], - // 部门树选项 - deptOptions: [], // 新增和编辑时父级部门树选项 editedDeptOptions: [], // 弹出层标题 @@ -309,13 +307,12 @@ export default { this.reset(); if (row != undefined) { this.form.parentId = row.deptId; + this.form.tenantId = row.tenantId; } this.open = true; this.title = "添加部门"; this.tenantDisabled = false; - listDept().then(response => { - this.deptOptions = this.handleTree(response.data, "deptId"); - }); + this.listDeptTree(this.form.tenantId); }, /** 展开/折叠操作 */ toggleExpandAll() { @@ -328,14 +325,17 @@ export default { /** 修改按钮操作 */ handleUpdate(row) { this.tenantDisabled = true; + this.editedDeptOptions = []; this.reset(); getDept(row.deptId).then(response => { this.form = response.data; this.open = true; this.title = "修改部门"; }); + + //过滤在修改上级部门时,不能选择自己的下级部门 listDeptExcludeChild(row.deptId,row.tenantId).then(response => { - this.deptOptions = this.handleTree(response.data, "deptId"); + this.editedDeptOptions = this.handleTree(response.data, "deptId"); }); }, /** 提交按钮 */ @@ -379,10 +379,14 @@ export default { tenantChange(tenantId) { this.editedDeptOptions = []; this.form.parentId = undefined; + this.listDeptTree(tenantId); + }, + + listDeptTree(tenantId){ listDept({"tenantId":tenantId}).then(response => { this.editedDeptOptions = this.handleTree(response.data, "deptId"); }); - }, + } } };