Merge remote-tracking branch 'origin/master'

# Conflicts:
#	ruoyi-ui/src/api/business/device.js
master
xins 2 years ago
commit 4089c5f8b6

@ -1,210 +0,0 @@
package com.ruoyi.basic.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* hw_tenant
*
* @author xins
* @date 2023-09-04
*/
public class HwTenant extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 租户ID */
private Long tenantId;
/** 租户类型,(1、企业2、个人) */
@Excel(name = "租户类型,(1、企业2、个人)")
private String tenantType;
/** 租户名称 */
@Excel(name = "租户名称")
private String tenantName;
/** 行业类型关联sys_dict_data的dict_type是hw_tenant_industry的dict_value */
@Excel(name = "行业类型关联sys_dict_data的dict_type是hw_tenant_industry的dict_value")
private Long tenantIndustry;
/** 联系人姓名 */
@Excel(name = "联系人姓名")
private String contactName;
/** 联系人电话 */
@Excel(name = "联系人电话")
private String contactPhone;
/** 邮箱地址 */
@Excel(name = "邮箱地址")
private String email;
/** 区域ID管理区域hw_area */
@Excel(name = "区域ID管理区域hw_area")
private Long areaId;
/** 联系人地址 */
@Excel(name = "联系人地址")
private String contactAddress;
/** 状态1、正常 9、删除 */
@Excel(name = "状态", readConverterExp = "1=、正常,9=、删除")
private String tenantStatus;
/** 是否外部注册1、是 0、否 */
@Excel(name = "是否外部注册", readConverterExp = "1=、是,0=、否")
private String isRegister;
/** 租户等级,预留字段 */
@Excel(name = "租户等级,预留字段")
private Long tenantGrade;
/** 预留字段 */
@Excel(name = "预留字段")
private String tenantField;
public void setTenantId(Long tenantId)
{
this.tenantId = tenantId;
}
public Long getTenantId()
{
return tenantId;
}
public void setTenantType(String tenantType)
{
this.tenantType = tenantType;
}
public String getTenantType()
{
return tenantType;
}
public void setTenantName(String tenantName)
{
this.tenantName = tenantName;
}
public String getTenantName()
{
return tenantName;
}
public void setTenantIndustry(Long tenantIndustry)
{
this.tenantIndustry = tenantIndustry;
}
public Long getTenantIndustry()
{
return tenantIndustry;
}
public void setContactName(String contactName)
{
this.contactName = contactName;
}
public String getContactName()
{
return contactName;
}
public void setContactPhone(String contactPhone)
{
this.contactPhone = contactPhone;
}
public String getContactPhone()
{
return contactPhone;
}
public void setEmail(String email)
{
this.email = email;
}
public String getEmail()
{
return email;
}
public void setAreaId(Long areaId)
{
this.areaId = areaId;
}
public Long getAreaId()
{
return areaId;
}
public void setContactAddress(String contactAddress)
{
this.contactAddress = contactAddress;
}
public String getContactAddress()
{
return contactAddress;
}
public void setTenantStatus(String tenantStatus)
{
this.tenantStatus = tenantStatus;
}
public String getTenantStatus()
{
return tenantStatus;
}
public void setIsRegister(String isRegister)
{
this.isRegister = isRegister;
}
public String getIsRegister()
{
return isRegister;
}
public void setTenantGrade(Long tenantGrade)
{
this.tenantGrade = tenantGrade;
}
public Long getTenantGrade()
{
return tenantGrade;
}
public void setTenantField(String tenantField)
{
this.tenantField = tenantField;
}
public String getTenantField()
{
return tenantField;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("tenantId", getTenantId())
.append("tenantType", getTenantType())
.append("tenantName", getTenantName())
.append("tenantIndustry", getTenantIndustry())
.append("contactName", getContactName())
.append("contactPhone", getContactPhone())
.append("email", getEmail())
.append("areaId", getAreaId())
.append("contactAddress", getContactAddress())
.append("remark", getRemark())
.append("tenantStatus", getTenantStatus())
.append("isRegister", getIsRegister())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("tenantGrade", getTenantGrade())
.append("tenantField", getTenantField())
.toString();
}
}

@ -5,3 +5,6 @@ com.ruoyi.system.api.factory.RemoteConfigFallbackFactory
com.ruoyi.system.api.factory.RemoteConfigFallbackFactory
com.ruoyi.system.api.factory.RemoteConfigFallbackFactory
com.ruoyi.system.api.factory.RemoteConfigFallbackFactory
com.ruoyi.system.api.factory.RemoteConfigFallbackFactory
com.ruoyi.system.api.factory.RemoteConfigFallbackFactory
com.ruoyi.system.api.factory.RemoteConfigFallbackFactory

@ -1,123 +0,0 @@
package com.ruoyi.basic.controller;
import com.ruoyi.basic.api.domain.HwTenant;
import com.ruoyi.basic.service.IHwTenantService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* Controller
*
* @author xins
* @date 2023-09-04
*/
@RestController
@RequestMapping("/tenant")
public class HwTenantController extends BaseController
{
@Autowired
private IHwTenantService hwTenantService;
/**
*
*/
@RequiresPermissions("business:tenant:list")
@GetMapping("/list")
public TableDataInfo list(HwTenant hwTenant)
{
List<HwTenant> list = new ArrayList<HwTenant>();
startPage();
//todo 放到add中
list = hwTenantService.selectHwTenantList(hwTenant);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("business:tenant:export")
@Log(title = "租户信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, HwTenant hwTenant)
{
List<HwTenant> list = hwTenantService.selectHwTenantList(hwTenant);
ExcelUtil<HwTenant> util = new ExcelUtil<HwTenant>(HwTenant.class);
util.exportExcel(response, list, "租户信息数据");
}
/**
*
*/
@RequiresPermissions("business:tenant:query")
@GetMapping(value = "/{tenantId}")
public AjaxResult getInfo(@PathVariable("tenantId") Long tenantId)
{
return success(hwTenantService.selectHwTenantByTenantId(tenantId));
}
/**
*
*/
@RequiresPermissions("business:tenant:add")
@Log(title = "租户信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody HwTenant hwTenant)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwTenant.setIsRegister("0");
hwTenant.setCreateBy(sysUser.getNickName());
return toAjax(hwTenantService.insertHwTenant(hwTenant));
}
/**
*
*/
@RequiresPermissions("business:tenant:edit")
@Log(title = "租户信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody HwTenant hwTenant)
{LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwTenant.setUpdateBy(sysUser.getNickName());
return toAjax(hwTenantService.updateHwTenant(hwTenant));
}
/**
*
*/
@RequiresPermissions("business:tenant:remove")
@Log(title = "租户信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{tenantIds}")
public AjaxResult remove(@PathVariable Long[] tenantIds)
{
return toAjax(hwTenantService.deleteHwTenantByTenantIds(tenantIds));
}
/**
*
*/
@GetMapping("/getTenants")
public R<List<HwTenant>> getTenants(HwTenant hwTenant)
{
return R.ok(hwTenantService.selectHwTenantList(hwTenant));
}
}

@ -1,8 +1,21 @@
package com.ruoyi.business.controller;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.business.domain.HwScene;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.mapper.HwSceneMapper;
import com.ruoyi.business.service.IHwDeviceService;
import com.ruoyi.business.service.IHwElectronicFenceService;
import com.ruoyi.business.service.IHwSceneService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -20,12 +33,13 @@ import com.ruoyi.business.service.IHwMonitorUnitService;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author xins
* @date 2023-09-14
*
* @author YINQ
* @date 2023-08-31
*/
@RestController
@RequestMapping("/monitorUnit")
@ -33,18 +47,28 @@ public class HwMonitorUnitController extends BaseController
{
@Autowired
private IHwMonitorUnitService hwMonitorUnitService;
@Autowired
private IHwDeviceService hwDeviceService;
@Autowired
private IHwSceneService hwSceneService;
@Autowired
private IHwElectronicFenceService hwElectronicFenceService;
/**
*
*/
@RequiresPermissions("business:monitorUnit:list")
@GetMapping("/list")
public AjaxResult list(HwMonitorUnit hwMonitorUnit)
public TableDataInfo list(HwMonitorUnit hwMonitorUnit)
{
// startPage();
List<HwMonitorUnit> list = hwMonitorUnitService.selectHwMonitorUnitList(hwMonitorUnit);
return success(list);
return getDataTable(list);
}
/**
*
*/
@ -68,6 +92,7 @@ public class HwMonitorUnitController extends BaseController
return success(hwMonitorUnitService.selectHwMonitorUnitByMonitorUnitId(monitorUnitId));
}
/**
*
*/
@ -76,8 +101,14 @@ public class HwMonitorUnitController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody HwMonitorUnit hwMonitorUnit)
{
return toAjax(hwMonitorUnitService.insertHwMonitorUnit(hwMonitorUnit));
}
if (hwMonitorUnitService.insertHwMonitorUnit(hwMonitorUnit)!=0){
return AjaxResult.success();
}
else{
return AjaxResult.error("以关联设备不可作为父集设备");
}}
/**
*
@ -98,6 +129,25 @@ public class HwMonitorUnitController extends BaseController
@DeleteMapping("/{monitorUnitIds}")
public AjaxResult remove(@PathVariable Long[] monitorUnitIds)
{
return toAjax(hwMonitorUnitService.deleteHwMonitorUnitByMonitorUnitIds(monitorUnitIds));
if (hwMonitorUnitService.deleteHwMonitorUnitByMonitorUnitIds(monitorUnitIds)==0){
return AjaxResult.error("带有子集设备的监控单元不可删除");
}
else
return AjaxResult.success("删除成功");
}
/**
* id
* */
@GetMapping("/getMonitorIsRelevancy")
public String getMonitorIsRelevancy(Long monitorUnitId){
//如果关联设备 不能作为父级监控单元
if (hwMonitorUnitService.getMonitorIsRelevancy(monitorUnitId)==0){
return "y";
}
return "n";
}
}

@ -101,6 +101,11 @@ public class HwMonitorUnitTypeController extends BaseController
@DeleteMapping("/{monitorUnitTypeIds}")
public AjaxResult remove(@PathVariable Long[] monitorUnitTypeIds)
{
if (hwMonitorUnitTypeService.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds)==0){
return AjaxResult.error("该类型下仍有监控单元,不可删除");
}
else{
return toAjax(hwMonitorUnitTypeService.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds));
}
}}
}

@ -66,6 +66,16 @@ public class HwSceneController extends BaseController
return getDataTable(list);
}
/**
* id
* */
@GetMapping("/sceneIdAndName")
public TableDataInfo sceneIdAndName()
{
HwSceneVo hwScene = new HwSceneVo();
List<HwSceneVo> list = hwSceneService.selectHwSceneList2(hwScene);
return getDataTable(list);
}
/**
*
@ -140,13 +150,7 @@ public class HwSceneController extends BaseController
}
}
/**
* 使
*/
@GetMapping("/getScenes")
public AjaxResult getScenes(HwScene hwScene) {
return success(hwSceneService.selectHwSceneList(hwScene));
}
}

@ -54,6 +54,15 @@ public class HwTenantController extends BaseController
list = hwTenantService.selectHwTenantList(hwTenant);
return getDataTable(list);
}
/**
* id
* */
@GetMapping("/tenantIdAndName")
public TableDataInfo tenantIdAndName(){
HwTenant hwTenant = new HwTenant();
return getDataTable(hwTenantService.selectHwTenantList(hwTenant));
}
/**
*

@ -4,7 +4,6 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.system.api.domain.SysDept;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
@ -62,27 +61,26 @@ public class HwMonitorUnit extends BaseEntity
/** 预留字段 */
@Excel(name = "预留字段")
private String monitorUnitField;
private List<HwMonitorUnit> child = new ArrayList<HwMonitorUnit>();
/** 子部门 */
private List<HwMonitorUnit> children = new ArrayList<HwMonitorUnit>();
private Long tenantId;
private List<HwMonitorUnit> child = new ArrayList<HwMonitorUnit>();
public List<HwMonitorUnit> getChild() {
return child;
}
public Long getTenantId() {
return tenantId;
}
public void setTenantId(Long tenantId) {
this.tenantId = tenantId;
}
public void setChild(List<HwMonitorUnit> child) {
this.child = child;
}
public List<HwMonitorUnit> getChildren() {
return children;
}
public void setChildren(List<HwMonitorUnit> children) {
this.children = children;
}
public void setMonitorUnitId(Long monitorUnitId)
{
this.monitorUnitId = monitorUnitId;
@ -185,23 +183,20 @@ public class HwMonitorUnit extends BaseEntity
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("monitorUnitId", getMonitorUnitId())
.append("monitorUnitName", getMonitorUnitName())
.append("sceneId", getSceneId())
.append("parentId", getParentId())
.append("monitorUnitTypeId", getMonitorUnitTypeId())
.append("areaId", getAreaId())
.append("monitorAddress", getMonitorAddress())
.append("monitorPic", getMonitorPic())
.append("preserveTime", getPreserveTime())
.append("remark", getRemark())
.append("monitorUnitStatus", getMonitorUnitStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("monitorUnitField", getMonitorUnitField())
.toString();
return "HwMonitorUnit{" +
"monitorUnitId=" + monitorUnitId +
", monitorUnitName='" + monitorUnitName + '\'' +
", sceneId=" + sceneId +
", parentId=" + parentId +
", monitorUnitTypeId=" + monitorUnitTypeId +
", areaId=" + areaId +
", monitorAddress='" + monitorAddress + '\'' +
", monitorPic='" + monitorPic + '\'' +
", preserveTime=" + preserveTime +
", monitorUnitStatus=" + monitorUnitStatus +
", monitorUnitField='" + monitorUnitField + '\'' +
", tenantId=" + tenantId +
", child=" + child +
'}';
}
}
}

@ -7,7 +7,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
/**
* hw_monitor_unit_type
*
*
* @author YINQ
* @date 2023-08-31
*/
@ -41,6 +41,8 @@ public class HwMonitorUnitType extends BaseEntity
/** 所属场景 */
@Excel(name = "所属场景")
private Long sceneId;
//租户id
private Long tenantId;
/** 监控单元类型图标 */
@Excel(name = "监控单元类型图标")
@ -50,84 +52,93 @@ public class HwMonitorUnitType extends BaseEntity
@Excel(name = "预留字段")
private String unitTypeField;
public void setMonitorUnitTypeId(Long monitorUnitTypeId)
public Long getTenantId() {
return tenantId;
}
public void setTenantId(Long tenantId) {
this.tenantId = tenantId;
}
public void setMonitorUnitTypeId(Long monitorUnitTypeId)
{
this.monitorUnitTypeId = monitorUnitTypeId;
}
public Long getMonitorUnitTypeId()
public Long getMonitorUnitTypeId()
{
return monitorUnitTypeId;
}
public void setMonitorUnitTypeName(String monitorUnitTypeName)
public void setMonitorUnitTypeName(String monitorUnitTypeName)
{
this.monitorUnitTypeName = monitorUnitTypeName;
}
public String getMonitorUnitTypeName()
public String getMonitorUnitTypeName()
{
return monitorUnitTypeName;
}
public void setVitualFlag(String vitualFlag)
public void setVitualFlag(String vitualFlag)
{
this.vitualFlag = vitualFlag;
}
public String getVitualFlag()
public String getVitualFlag()
{
return vitualFlag;
}
public void setMonitorUnitTypeStatus(String monitorUnitTypeStatus)
public void setMonitorUnitTypeStatus(String monitorUnitTypeStatus)
{
this.monitorUnitTypeStatus = monitorUnitTypeStatus;
}
public String getMonitorUnitTypeStatus()
public String getMonitorUnitTypeStatus()
{
return monitorUnitTypeStatus;
}
public void setLanguageCode(String languageCode)
public void setLanguageCode(String languageCode)
{
this.languageCode = languageCode;
}
public String getLanguageCode()
public String getLanguageCode()
{
return languageCode;
}
public void setCommonFlag(String commonFlag)
public void setCommonFlag(String commonFlag)
{
this.commonFlag = commonFlag;
}
public String getCommonFlag()
public String getCommonFlag()
{
return commonFlag;
}
public void setSceneId(Long sceneId)
public void setSceneId(Long sceneId)
{
this.sceneId = sceneId;
}
public Long getSceneId()
public Long getSceneId()
{
return sceneId;
}
public void setUnitTypeIcon(String unitTypeIcon)
public void setUnitTypeIcon(String unitTypeIcon)
{
this.unitTypeIcon = unitTypeIcon;
}
public String getUnitTypeIcon()
public String getUnitTypeIcon()
{
return unitTypeIcon;
}
public void setUnitTypeField(String unitTypeField)
public void setUnitTypeField(String unitTypeField)
{
this.unitTypeField = unitTypeField;
}
public String getUnitTypeField()
public String getUnitTypeField()
{
return unitTypeField;
}
@ -149,6 +160,7 @@ public class HwMonitorUnitType extends BaseEntity
.append("updateTime", getUpdateTime())
.append("unitTypeIcon", getUnitTypeIcon())
.append("unitTypeField", getUnitTypeField())
.append("tenantId", getTenantId())
.toString();
}
}

@ -9,26 +9,26 @@ package com.ruoyi.business.domain.VO;
public class HwMonitorUnitVo {
public String sceneName;
public Long sceneId;
public String sceneId;
public Integer sum;
public Integer err;
public String percentage;
public Double percentage;
public String getPercentage() {
public Double getPercentage() {
return percentage;
}
public void setPercentage(String percentage) {
public void setPercentage(Double percentage) {
this.percentage = percentage;
}
public Long getSceneId() {
public String getSceneId() {
return sceneId;
}
public void setSceneId(Long sceneId) {
public void setSceneId(String sceneId) {
this.sceneId = sceneId;
}

@ -33,20 +33,20 @@ public interface HwMonitorUnitMapper
public List<AllNumsVo> selectsum();
//查询id与name的结果集
List<HwMonitorUnitVo> selectSceneNameById();
Integer selectSubSetNums(Long sceneId);
String selectSubSetNums();
/**
*
* */
public List<HwMonitorUnit> selectLimitSubMonitorUnit();
Integer selectReleatedDeviceIdNums(Long deviceCode);
Integer selectDeviceNums(Long sceneId);
String selectDeviceNums();
Integer selectSubDeviceSum(Long sceneId);
/**
*
* */
public List<AlarmStatsVo> selectAlarmStats(Long sceneId);
public List<AlarmStatsVo> selectAlarmStats();
/**
* 线
* */
@ -113,12 +113,10 @@ public interface HwMonitorUnitMapper
*/
public int deleteHwMonitorUnitByMonitorUnitIds(Long[] monitorUnitIds);
/**
* join
*
* @param hwMonitorUnit
* @return
*/
public List<HwMonitorUnit> selectHwMonitorUnitListJoinScene(HwMonitorUnit hwMonitorUnit);
int selectIsParent(Long monitorUnitId);
}
//查询设备是否关联了该监控单元
Integer selectDeviceRelevancyMontiorUnit(Long monitorUnitId);
//查询电子围栏是否关联了该监控单元
Integer selectElectronicFenceRelevancyMonitorUnit(Long monitorUnitId);
}

@ -62,4 +62,6 @@ public interface HwMonitorUnitTypeMapper
* @return
*/
public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds);
public int getNumsHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId);
}

@ -22,6 +22,7 @@ public interface HwSceneMapper
public List<HwScene> selectHwSceneBySceneModeId(Long sceneModeId);
public List<HwScene> selectHwSceneByTenantId0(Long tenantId);
public List<HwScene> selectHwSceneByTenantIdNot0(Long tenantId);
List<HwSceneVo> selectHwSceneVoListByTenantId(Long tenantId);
/**

@ -2,7 +2,6 @@ package com.ruoyi.business.service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.domain.VO.*;
@ -31,25 +30,21 @@ public interface IHwMonitorUnitService
/**
*
* */
public AllNumsVo selectAllNums(Long sceneId);
// public List<AllNumsVo> selectSenceAllNums();
public AllNumsVo selectAllNums();
public List<AllNumsVo> selectSenceAllNums();
/**
*
* */
public List<HwMonitorUnit> selectLimitSubMonitorUnit();
/**
*
* */
/**
*
* */
public List<AlarmStatsVo> selectAlarmStats(Long sceneId);
public List<AlarmStatsVo> selectAlarmStats();
/**
*
*
@ -62,7 +57,10 @@ public interface IHwMonitorUnitService
* 线
* */
public SubDeviceSumVo selectSubDeviceSum(Long sceneId);
/**
*
* */
public Integer selectElectronicNum(Long sceneId);
/**
*
* */
@ -71,9 +69,19 @@ public interface IHwMonitorUnitService
*
* */
public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId);
/**
* tdengine
*
* @return*/
public Map<Object, Integer> selectTdengine(String beginTime, String endTime, Long sceneId);
/**
*
*
* @return*/
public R<Map<String, Map<String, Object>>> selectLatestDataByTags(Long monitorUnitId);
/**
*
*
* @param hwMonitorUnit
@ -106,27 +114,9 @@ public interface IHwMonitorUnitService
public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId);
/**
*
*
* @param hwMonitorUnit
* @return
*/
public List<TreeSelectVo> selectMonitorTreeList(HwMonitorUnit hwMonitorUnit);
/**
*
*
* @param hwMonitorUnits
* @return
*/
public List<TreeSelectVo> buildMonitorUnitTreeSelect(List<HwMonitorUnit> hwMonitorUnits);
/**
*
*
* @param hwMonitorUnits
* @return
*/
public List<HwMonitorUnit> buildMonitorUnitTree(List<HwMonitorUnit> hwMonitorUnits);
}
* id
* */
int getMonitorIsRelevancy(Long monitorUnitId);
}

@ -1,27 +1,5 @@
package com.ruoyi.business.service.impl;
import com.ruoyi.business.domain.HwAlarmInfo;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.mapper.HwAlarmInfoMapper;
import com.ruoyi.business.mapper.HwDeviceMapper;
import com.ruoyi.business.mapper.HwElectronicFenceMapper;
import com.ruoyi.business.mapper.HwMonitorUnitMapper;
import com.ruoyi.business.service.IHwMonitorUnitService;
import com.ruoyi.common.core.constant.TdEngineConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.NumberUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.tdengine.api.RemoteTdEngineService;
import com.ruoyi.tdengine.api.domain.DeviceStatus;
import com.ruoyi.tdengine.api.domain.TdSelectDto;
import com.ruoyi.tdengine.api.domain.TdSuperTableSelectVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@ -30,6 +8,26 @@ import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import com.ruoyi.business.domain.HwDevice;
import com.ruoyi.business.domain.VO.*;
import com.ruoyi.business.mapper.HwDeviceMapper;
import com.ruoyi.business.mapper.HwElectronicFenceMapper;
import com.ruoyi.common.core.constant.TdEngineConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.tdengine.api.RemoteTdEngineService;
import com.ruoyi.tdengine.api.domain.DeviceStatus;
import com.ruoyi.tdengine.api.domain.TdSelectDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.HwMonitorUnitMapper;
import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.service.IHwMonitorUnitService;
/**
* Service
*
@ -37,7 +35,8 @@ import java.util.stream.Collectors;
* @date 2023-08-31
*/
@Service
public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService
{
@Autowired
private HwMonitorUnitMapper hwMonitorUnitMapper;
@Autowired
@ -46,8 +45,9 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
private RemoteTdEngineService remoteTdEgineService;
@Autowired
private HwDeviceMapper hwDeviceMapper;
@Autowired
private HwAlarmInfoMapper hwAlarmInfoMapper;
/**
*
@ -56,106 +56,106 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return
*/
@Override
public HwMonitorUnit selectHwMonitorUnitByMonitorUnitId(Long monitorUnitId) {
public HwMonitorUnit selectHwMonitorUnitByMonitorUnitId(Long monitorUnitId)
{
return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId);
}
/**
*
*/
* */
@Override
public List<HwMonitorUnitVo> selectMonitorPercentage() {
// HwMonitorUnit queryMonitorUnit = new HwMonitorUnit();
// List<HwMonitorUnit> list = hwMonitorUnitMapper.selectHwMonitorUnitListJoinScene(queryMonitorUnit);
// Map<Long, List<HwMonitorUnit>> monitorUnitMap = list.stream()
// .collect(Collectors.groupingBy(HwMonitorUnit::getSceneId));
// List<HwMonitorUnitVo> monitorUnitVoList = new ArrayList<>();
//
//
// Set<Long> keys = monitorUnitMap.keySet();
// for(Long key:keys){
// Integer value = monitorUnitMap.get(key);
// System.out.println(key+"\t"+value);
// }
List<HwMonitorUnitVo> list = hwMonitorUnitMapper.selectMonitorPercentage();
List<HwMonitorUnitVo> hwScenes = hwMonitorUnitMapper.selectSceneNameById();
list.stream().forEach(l -> {
for (int i = 0; i < hwScenes.size(); i++) {
if (l.getSceneId().equals(hwScenes.get(i).getSceneId())) {
l.setSceneName(hwScenes.get(i).getSceneName());
int count = hwScenes.size();
if (list.size()<=hwScenes.size()) {
count = list.size();
}
for (int i = 0; i < count; i++) {
for (int j = 0;j<count;j++){
if (list.get(i).getSceneId().equals(hwScenes.get(i).getSceneId())){
list.get(i).setSceneName(hwScenes.get(i).getSceneName());
}
}
});
}
Integer value = 0;
//
Integer sums = 0;
// if (list.size() > 5) {
// for (int i = 4; i < list.size(); i++) {//这是剩下的总数
// if (list.get(i).sum == null) {
// list.get(i).sum = 0;
// }
// value = value + list.get(i).sum;
// }
// }
for (int i = 0; i < list.size(); i++) {
if (list.get(i).sum == null) {
if (list.size()>5){
for (int i = 4; i < list.size(); i++){
if (list.get(i).sum==null){
list.get(i).sum = 0;
}
value = value+list.get(i).sum;
}
}
for (int i = 0; i < list.size();i++){
if (list.get(i).sum==null){
list.get(i).sum = 0;
}
sums = sums + list.get(i).sum;
sums = sums+list.get(i).sum;
}
for (int i = 0; i < list.size(); i++) {
HwMonitorUnitVo hwMonitorUnitVo = list.get(i);
hwMonitorUnitVo.setPercentage(NumberUtils.getPercentage(list.get(i).getSum(), sums));
Long sceneId = hwMonitorUnitVo.getSceneId();
HwAlarmInfo queryAlarmInfo = new HwAlarmInfo();
queryAlarmInfo.setSceneId(sceneId);
List<HwAlarmInfo> alarmInfos = hwAlarmInfoMapper.selectHwAlarmInfoList(queryAlarmInfo);
Integer alarmInfoSize = alarmInfos == null ? 0 : alarmInfos.size();
hwMonitorUnitVo.setErr(alarmInfoSize);
for (int i=0;i<list.size();i++){
list.get(i).setPercentage((double) (list.get(i).getSum()/sums));
}
HwMonitorUnitVo hwMonitorUnitVo = new HwMonitorUnitVo();
hwMonitorUnitVo.setSceneName("其他");
hwMonitorUnitVo.setSum(value);
// HwMonitorUnitVo hwMonitorUnitVo = new HwMonitorUnitVo();
// hwMonitorUnitVo.setSceneName("其他");
// hwMonitorUnitVo.setSum(value);
// if (list.size() > 5) {
// list.add(5, hwMonitorUnitVo);
// return list.subList(0, 5);
// } else {
// return list;
// }
return list;
if (list.size()>5){
list.add(5,hwMonitorUnitVo);
return list.subList(0,5);
}
else {
return list;
}
}
//获取总的设备数量与监控单元数量
@Override
public AllNumsVo selectAllNums(Long sceneId) {
public AllNumsVo selectAllNums() {
//监控单元
Integer monitor = hwMonitorUnitMapper.selectSubSetNums(sceneId) == null ? 0
: hwMonitorUnitMapper.selectSubSetNums(sceneId);
Integer integer = hwMonitorUnitMapper.selectDeviceNums(sceneId) == null ? 0
: hwMonitorUnitMapper.selectDeviceNums(sceneId);
String monitor = hwMonitorUnitMapper.selectSubSetNums();
String integer = hwMonitorUnitMapper.selectDeviceNums();
System.out.println(monitor+" dsaas "+integer);
Integer monitor1 = 0;
Integer monitor2 = 0;
AllNumsVo vo = new AllNumsVo();
vo.setSubSum(monitor);
vo.setSum(integer);
if (monitor == null){
monitor1 = 0;
}
else {
monitor1 = Integer.valueOf(monitor);
}
if (integer == null){
monitor2 = 0;
}
else {
monitor2 = Integer.valueOf(integer);
}
vo.setSubSum(monitor1);
vo.setSum(monitor2);
return vo;
}
// @Override
// public List<AllNumsVo> selectSenceAllNums() {
// List<AllNumsVo> allNumsVos = hwMonitorUnitMapper.selectAllNums();
// List<AllNumsVo> allNums = hwMonitorUnitMapper.selectsum();
// for (int i = 0; i < allNums.size(); i++) {
// for (int j = 0; j < allNums.size(); j++) {
// if (allNums.get(i).getSceneId().equals(allNumsVos.get(i).getSceneId())) {
// allNums.get(i).setSubSum(allNumsVos.get(i).getSubSum());
// }
// }
// }
// return allNums;
// }
@Override
public List<AllNumsVo> selectSenceAllNums() {
List<AllNumsVo> allNumsVos = hwMonitorUnitMapper.selectAllNums();
List<AllNumsVo> allNums = hwMonitorUnitMapper.selectsum();
for (int i=0;i< allNums.size();i++){
for (int j=0;j< allNums.size();j++){
if (allNums.get(i).getSceneId().equals(allNumsVos.get(i).getSceneId())){
allNums.get(i).setSubSum(allNumsVos.get(i).getSubSum());
}
}
}
return allNums;
}
@Override
public List<HwMonitorUnit> selectLimitSubMonitorUnit() {
@ -165,8 +165,8 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
}
@Override
public List<AlarmStatsVo> selectAlarmStats(Long sceneId) {
return hwMonitorUnitMapper.selectAlarmStats(sceneId);
public List<AlarmStatsVo> selectAlarmStats() {
return hwMonitorUnitMapper.selectAlarmStats();
}
@ -177,72 +177,155 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return
*/
@Override
public List<HwMonitorUnit> selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit) {
public List<HwMonitorUnit> selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit)
{
return hwMonitorUnitMapper.selectHwMonitorUnitList(hwMonitorUnit);
}
@Override
public SubDeviceSumVo selectSubDeviceSum(Long sceneId) {
AllNumsVo numsVo = selectAllNums(sceneId);
int onlineDeviceNum = hwDeviceMapper.getOnlineDeviceNum(sceneId);
int SubSum = hwMonitorUnitMapper.selectSubDeviceSum(sceneId);
List<HwDevice> hwDevices = hwDeviceMapper.selectDeviceNum(sceneId);
int onlineDevice = 0;
for (int i = 0;i<hwDevices.size();i++){
if (hwDevices.get(i).getActiveStatus().equals("1")&&hwDevices.get(i).getDeviceStatus().equals("1")){
onlineDevice = onlineDevice+1;
}
}
SubDeviceSumVo subDeviceSumVo = new SubDeviceSumVo();
subDeviceSumVo.setSubSum(numsVo.getSubSum());//监控单元数量
subDeviceSumVo.setDeviceNum(numsVo.getSum());//设备数量
subDeviceSumVo.setOnlineDeviceNum(onlineDeviceNum);//在线设备数量
subDeviceSumVo.setSubSum(String.valueOf(SubSum));
subDeviceSumVo.setDeviceNum(String.valueOf(hwDevices.size()));
subDeviceSumVo.setOnlineDeviceNum(String.valueOf(onlineDevice));
return subDeviceSumVo;
}
//todo 电子围栏
@Override
public Integer selectElectronicNum(Long sceneId) {
List<Long> longs = hwMonitorUnitMapper.selectEleInScene(sceneId);
return null;
}
@Override
public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId) {
return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId);
return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId);
}
//todo SysDeptServiceImpl类中的递归方法recursionFn(以实现)
@Override
public List<HwMonitorUnit> selectTreeList(List<HwMonitorUnit> hwMonitorUnits) {
List<HwMonitorUnit> returnList = new ArrayList<>();
List<Long> tempList = hwMonitorUnits.stream().map(HwMonitorUnit::getMonitorUnitId).collect(Collectors.toList());
List<HwMonitorUnit> treeList = new ArrayList<>();
for (HwMonitorUnit hwMonitorUnit : hwMonitorUnits) {
if (!tempList.contains(hwMonitorUnit.getParentId()))
recursionFn(hwMonitorUnits, hwMonitorUnit);
returnList.add(hwMonitorUnit);
// 加一个begintime参数endtime参数 stream时间戳 从开始时间0点开始结束时间23.59.59结束
public Map<Object, Integer> selectTdengine(String beginTime, String endTime, Long sceneId) {
DeviceStatus queryDeviceStatus = new DeviceStatus();
Map<String, Object> params = queryDeviceStatus.getParams();
DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
System.out.println(ofPattern);
LocalDate parse = LocalDate.parse(beginTime, ofPattern);
long begintime = parse.atStartOfDay().toInstant(ZoneOffset.of("+8")).toEpochMilli();
DateTimeFormatter ofPattern1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
LocalDate parse1 = LocalDate.parse(endTime, ofPattern);
long endtime = LocalDateTime.of(parse1, LocalTime.MAX).toInstant(ZoneOffset.of("+8")).toEpochMilli();
params.put("beginTime",begintime);
params.put("endTime", endtime);
queryDeviceStatus.setParams(params);
if (sceneId != null) {
queryDeviceStatus.setSceneId(sceneId);
}
for (int i = 0; i < returnList.size(); i++) {
if (returnList.get(i).getParentId() == null) {
treeList.add(returnList.get(i));
int sum = 0;
int values[] = new int[10];
Map<Object,Integer> valuesMap = new HashMap<>();
//todo 使用id(以解决)
//map key时间戳value List<DeviceStatus> 对象
R<?> r = remoteTdEgineService.getOnlineDevicesGroupByDay(queryDeviceStatus);
Map<Long, List<DeviceStatus>> deviceStatusMap = (Map<Long, List<DeviceStatus>>) r.getData();
List<DeviceStatus> list = (List<DeviceStatus>) remoteTdEgineService.getOnlineDevicesGroupByDay(queryDeviceStatus);
Set<Long> longs = deviceStatusMap.keySet();
for (Object key:longs){
List<DeviceStatus> deviceStatuses = deviceStatusMap.get(key);
for (int i=0;i<deviceStatuses.size();i++){
if (deviceStatuses.get(i).getDeviceType()==1){
sum=sum+hwMonitorUnitMapper.selectReleatedDeviceIdNums(list.get(i).getDeviceId());
}
else {
sum = sum+1;
}
valuesMap.put(key,sum);
}
}
return treeList;
return valuesMap;
//设备类型==网关 根据releated_device_id = 网关设备设备id查询个数
//网关子设备数+非网关设备数getDeviceType()=1
}
private void recursionFn(List<HwMonitorUnit> list, HwMonitorUnit t) {
@Override
public R<Map<String, Map<String, Object>>> selectLatestDataByTags(Long monitorUnitId) {
//
R<Map<String, Map<String, Object>>> latestDataByTags = new R<Map<String,Map<String, Object>>>();
List<HwDevice> hwDevices = hwDeviceMapper.selectDeviceByMonitorId(monitorUnitId);
TdSelectDto tdSelectDto = new TdSelectDto();
for (int i = 0; i < hwDevices.size(); i++){
tdSelectDto.setDatabaseName(TdEngineConstants.PLATFORM_DB_NAME);
tdSelectDto.setTableName(TdEngineConstants.getDeviceDataTableName(hwDevices.get(i).getDeviceId()));
tdSelectDto.setTagsName(hwDevices.get(i).getDeviceCode());
latestDataByTags = remoteTdEgineService.getLatestDataByTags(tdSelectDto);
}
return latestDataByTags;
}
//todo SysDeptServiceImpl类中的递归方法recursionFn(以实现)
@Override
public List<HwMonitorUnit> selectTreeList(List<HwMonitorUnit> hwMonitorUnits) {
List<HwMonitorUnit> returnList = new ArrayList<>();
List<Long> tempList = hwMonitorUnits.stream().map(HwMonitorUnit::getMonitorUnitId).collect(Collectors.toList());
List<HwMonitorUnit> treeList = new ArrayList<>();
for (HwMonitorUnit hwMonitorUnit:hwMonitorUnits){
if (!tempList.contains(hwMonitorUnit.getParentId()))
recursionFn(hwMonitorUnits,hwMonitorUnit);
returnList.add(hwMonitorUnit);
}
for (int i = 0; i < returnList.size(); i++){
if (returnList.get(i).getParentId()==null){
treeList.add(returnList.get(i));
}
}
return treeList;
}
private void recursionFn(List<HwMonitorUnit> list, HwMonitorUnit t)
{
// 得到子节点列表
List<HwMonitorUnit> childList = getChildList(list, t);
t.setChild(childList);
for (HwMonitorUnit tChild : childList) {
if (hasChild(list, tChild)) {
for (HwMonitorUnit tChild : childList)
{
if (hasChild(list, tChild))
{
recursionFn(list, tChild);
}
}
}
private List<HwMonitorUnit> getChildList(List<HwMonitorUnit> list, HwMonitorUnit t) {
private List<HwMonitorUnit> getChildList(List<HwMonitorUnit> list, HwMonitorUnit t)
{
List<HwMonitorUnit> tlist = new ArrayList<HwMonitorUnit>();
Iterator<HwMonitorUnit> it = list.iterator();
while (it.hasNext()) {
while (it.hasNext())
{
HwMonitorUnit n = (HwMonitorUnit) it.next();
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getMonitorUnitId().longValue()) {
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getMonitorUnitId().longValue())
{
tlist.add(n);
}
}
return tlist;
}
private boolean hasChild(List<HwMonitorUnit> list, HwMonitorUnit t) {
private boolean hasChild(List<HwMonitorUnit> list, HwMonitorUnit t)
{
return getChildList(list, t).size() > 0 ? true : false;
}
@ -253,9 +336,32 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return
*/
@Override
public int insertHwMonitorUnit(HwMonitorUnit hwMonitorUnit) {
hwMonitorUnit.setCreateTime(DateUtils.getNowDate());
return hwMonitorUnitMapper.insertHwMonitorUnit(hwMonitorUnit);
public int insertHwMonitorUnit(HwMonitorUnit hwMonitorUnit)
{
//少一个离线报警规则 todo
//根据父级监控单元id查询是否关联了设备若关联则不能添加
if (
hwMonitorUnitMapper.selectDeviceRelevancyMontiorUnit(hwMonitorUnit.getParentId())==0
&& hwMonitorUnitMapper.selectElectronicFenceRelevancyMonitorUnit(hwMonitorUnit.getParentId())==0
){ //如果是无父级的监控单元后台赋null前端赋null会报错
if (hwMonitorUnit.getParentId()==0){
hwMonitorUnit.setParentId(null);
}
//如果该监控单元拥有父级监控单元,则场景继承其父级监控单元
else if (hwMonitorUnit.getParentId()!=0&&hwMonitorUnit.getParentId()!=null){
hwMonitorUnit.setSceneId(
hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(
hwMonitorUnit.getParentId()).getSceneId());
}
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwMonitorUnit.setTenantId(sysUser.getTenantId());
hwMonitorUnit.setCreateTime(DateUtils.getNowDate());
return hwMonitorUnitMapper.insertHwMonitorUnit(hwMonitorUnit);
}
return 0;
}
/**
@ -265,7 +371,8 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return
*/
@Override
public int updateHwMonitorUnit(HwMonitorUnit hwMonitorUnit) {
public int updateHwMonitorUnit(HwMonitorUnit hwMonitorUnit)
{
hwMonitorUnit.setUpdateTime(DateUtils.getNowDate());
return hwMonitorUnitMapper.updateHwMonitorUnit(hwMonitorUnit);
}
@ -277,7 +384,18 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return
*/
@Override
public int deleteHwMonitorUnitByMonitorUnitIds(Long[] monitorUnitIds) {
public int deleteHwMonitorUnitByMonitorUnitIds(Long[] monitorUnitIds)
{
//先查询是否有子集如果有返回error 如果没有则逻辑删除
for (Long monitorUnitId : monitorUnitIds){
if (hwMonitorUnitMapper.selectIsParent(monitorUnitId)!=0){
return 0;
}
else{
hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitId(monitorUnitId);
return 1;
}
}
return hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitIds(monitorUnitIds);
}
@ -288,93 +406,38 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return
*/
@Override
public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId) {
public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId)
{
return hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitId(monitorUnitId);
}
/**
*
*
* @param hwMonitorUnit
* @return
*/
@Override
@DataScope(tenantAlias = "hmu")
public List<TreeSelectVo> selectMonitorTreeList(HwMonitorUnit hwMonitorUnit) {
List<HwMonitorUnit> hwMonitorUnits = this.selectHwMonitorUnitList(hwMonitorUnit);
return buildMonitorUnitTreeSelect(hwMonitorUnits);
}
/**
*
*
* @param hwMonitorUnits
* @return
*/
@Override
public List<TreeSelectVo> buildMonitorUnitTreeSelect(List<HwMonitorUnit> hwMonitorUnits) {
List<HwMonitorUnit> monitorUnitTrees = buildMonitorUnitTree(hwMonitorUnits);
return monitorUnitTrees.stream().map(TreeSelectVo::new).collect(Collectors.toList());
}
/**
*
*
* @param hwMonitorUnits
* @return
*/
@Override
public List<HwMonitorUnit> buildMonitorUnitTree(List<HwMonitorUnit> hwMonitorUnits) {
List<HwMonitorUnit> returnList = new ArrayList<HwMonitorUnit>();
List<Long> tempList = hwMonitorUnits.stream().map(HwMonitorUnit::getMonitorUnitId).collect(Collectors.toList());
for (HwMonitorUnit monitorUnit : hwMonitorUnits) {
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(monitorUnit.getParentId())) {
recursionFn1(hwMonitorUnits, monitorUnit);
returnList.add(monitorUnit);
}
public int getMonitorIsRelevancy(Long monitorUnitId) {
if (hwMonitorUnitMapper.selectDeviceRelevancyMontiorUnit(monitorUnitId)==0
&& hwMonitorUnitMapper.selectElectronicFenceRelevancyMonitorUnit(monitorUnitId)==0
){
return 1;
}
if (returnList.isEmpty()) {
returnList = hwMonitorUnits;
}
return returnList;
}
/**
*
*/
private void recursionFn1(List<HwMonitorUnit> list, HwMonitorUnit t) {
// 得到子节点列表
List<HwMonitorUnit> childList = getChildList1(list, t);
t.setChildren(childList);
for (HwMonitorUnit tChild : childList) {
if (hasChild1(list, tChild)) {
recursionFn1(list, tChild);
}
}
}
/**
*
*/
private List<HwMonitorUnit> getChildList1(List<HwMonitorUnit> list, HwMonitorUnit t) {
List<HwMonitorUnit> tlist = new ArrayList<HwMonitorUnit>();
Iterator<HwMonitorUnit> it = list.iterator();
while (it.hasNext()) {
HwMonitorUnit n = (HwMonitorUnit) it.next();
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getMonitorUnitId().longValue()) {
tlist.add(n);
}
}
return tlist;
}
/**
*
*/
private boolean hasChild1(List<HwMonitorUnit> list, HwMonitorUnit t) {
return getChildList1(list, t).size() > 0 ? true : false;
return 0;
}
}
//remoteTdEngineSevice.getOnlineDevicesGroupByDay方法获取
// 参数实例:
// // params.put("beginTime", beginTime);
//// params.put("endTime", endTime);
//// queryDeviceStatus.setParams(params);
//// if (sceneId != null) {
//// queryDeviceStatus.setSceneId(sceneId);
//// }
//
// 这是IDEA参数传的参数Content-Type: application/json
// {
// "params": { "beginTime":1666666666666,"endTime":1766666666666 }
//
// }
//
// 如果在IDEA测试可以{
// "params": {"databaseName":"db_scene_1","superTableName":"st_ds_1",
// "beginTime":1666666666666,"endTime":1766666666666 }
// }

@ -4,6 +4,9 @@ import java.util.List;
import com.ruoyi.business.domain.VO.HwMonitorUnitVo;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.HwMonitorUnitTypeMapper;
@ -43,6 +46,11 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override
public List<HwMonitorUnitType> selectHwMonitorUnitTypeList(HwMonitorUnitType hwMonitorUnitType)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
if (!sysUser.getUserName().equals("admin")){
hwMonitorUnitType.setTenantId(sysUser.getTenantId());
}
return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeList(hwMonitorUnitType);
}
@ -56,6 +64,12 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override
public int insertHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwMonitorUnitType.setMonitorUnitTypeStatus("1");
hwMonitorUnitType.setCommonFlag("1");
hwMonitorUnitType.setTenantId(sysUser.getTenantId());
hwMonitorUnitType.setCreateBy(sysUser.getNickName());
hwMonitorUnitType.setCreateTime(DateUtils.getNowDate());
return hwMonitorUnitTypeMapper.insertHwMonitorUnitType(hwMonitorUnitType);
}
@ -69,6 +83,9 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override
public int updateHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType)
{
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwMonitorUnitType.setCreateBy(sysUser.getNickName());
hwMonitorUnitType.setUpdateTime(DateUtils.getNowDate());
return hwMonitorUnitTypeMapper.updateHwMonitorUnitType(hwMonitorUnitType);
}
@ -82,6 +99,12 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override
public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds)
{
for (Long monitorUnitTypeId : monitorUnitTypeIds){
if (hwMonitorUnitTypeMapper.getNumsHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId)!=0){
return 0;
}
}
return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds);
}
@ -94,6 +117,11 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override
public int deleteHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId)
{
if (hwMonitorUnitTypeMapper.getNumsHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId)!=0){
System.out.println(hwMonitorUnitTypeMapper.getNumsHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId));
return 0;
}
return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId);
}
}

@ -10,19 +10,19 @@ import com.ruoyi.business.service.IHwTenantService;
/**
* Service
*
*
* @author xins
* @date 2023-09-04
*/
@Service
public class HwTenantServiceImpl implements IHwTenantService
public class HwTenantServiceImpl implements IHwTenantService
{
@Autowired
private HwTenantMapper hwTenantMapper;
/**
*
*
*
* @param tenantId
* @return
*/
@ -34,7 +34,7 @@ public class HwTenantServiceImpl implements IHwTenantService
/**
*
*
*
* @param hwTenant
* @return
*/
@ -46,7 +46,7 @@ public class HwTenantServiceImpl implements IHwTenantService
/**
*
*
*
* @param hwTenant
* @return
*/
@ -59,7 +59,7 @@ public class HwTenantServiceImpl implements IHwTenantService
/**
*
*
*
* @param hwTenant
* @return
*/
@ -72,25 +72,27 @@ public class HwTenantServiceImpl implements IHwTenantService
/**
*
*
*
* @param tenantIds
* @return
*/
@Override
public int deleteHwTenantByTenantIds(Long[] tenantIds)
{
return hwTenantMapper.deleteHwTenantByTenantIds(tenantIds);
}
/**
*
*
*
* @param tenantId
* @return
*/
@Override
public int deleteHwTenantByTenantId(Long tenantId)
{
return hwTenantMapper.deleteHwTenantByTenantId(tenantId);
}
}

@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.business.mapper.HwMonitorUnitMapper">
<resultMap type="HwMonitorUnit" id="HwMonitorUnitResult">
<result property="monitorUnitId" column="monitor_unit_id" />
<result property="monitorUnitName" column="monitor_unit_name" />
<result property="sceneId" column="scene_id" />
<result property="tenantId" column="tenant_id" />
<result property="parentId" column="parent_id" />
<result property="monitorUnitTypeId" column="monitor_unit_type_id" />
<result property="areaId" column="area_id" />
@ -20,7 +21,6 @@
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="monitorUnitField" column="monitor_unit_field" />
<result property="sceneName" column="scene_name" />
</resultMap>
<resultMap type="HwMonitorUnitVo" id="HwMonitorUnitVoResult" >
<result property="sceneName" column="scene_name"/>
@ -58,77 +58,66 @@
</resultMap>
<sql id="selectHwMonitorUnitVo">
select monitor_unit_id, monitor_unit_name, scene_id, parent_id, monitor_unit_type_id, area_id, monitor_address, monitor_pic, preserve_time, remark, monitor_unit_status, create_by, create_time, update_by, update_time, monitor_unit_field from hw_monitor_unit hmu
select monitor_unit_id, monitor_unit_name, scene_id, parent_id, monitor_unit_type_id, area_id, monitor_address, monitor_pic, preserve_time, remark, monitor_unit_status, create_by, create_time, update_by, update_time, monitor_unit_field from hw_monitor_unit
</sql>
<sql id="selectHwMonitorUnitJoinScene">
select hmu.monitor_unit_id, hmu.monitor_unit_name, hmu.scene_id, hmu.parent_id,
hmu.monitor_unit_type_id, hmu.area_id, hmu.monitor_address, hmu.monitor_pic,
hmu.preserve_time, hmu.monitor_unit_status, hc.scene_name
from hw_monitor_unit hmu left join hw_scene hc on hmu.scene_id = hc.scene_id
</sql>
<select id="selectHaveEleDevice" parameterType="Long" resultMap="MonitorUnitNumVoResult">
SELECT monitor_unit_id,count(*) as num from hw_device where monitor_unit_id
= (select monitor_unit_id from hw_monitor_unit where monitor_unit_id =
(select target_id from hw_fence_target where target_type = '2'and
electronic_fence_id = (select electronic_fence_id from hw_electronic_fence
where scene_id = #{sceneId}) )) GROUP BY monitor_unit_id
= (select monitor_unit_id from hw_monitor_unit where monitor_unit_id =
(select target_id from hw_fence_target where target_type = '2'and
electronic_fence_id = (select electronic_fence_id from hw_electronic_fence
where scene_id = #{sceneId}) )) GROUP BY monitor_unit_id
</select>
<select id="selectMonitorUnitHaveEle" parameterType="Long" resultMap="MonitorUnitNumVoResult">
select monitor_unit_id,count(*) as num from hw_device where
monitor_unit_id = (select target_id from hw_fence_target where
target_type = '2'and electronic_fence_id =
(select electronic_fence_id from hw_electronic_fence where scene_id = #{sceneId}) )
monitor_unit_id = (select target_id from hw_fence_target where
target_type = '2'and electronic_fence_id =
(select electronic_fence_id from hw_electronic_fence where scene_id = #{sceneId}) )
GROUP BY monitor_unit_id
</select>
<select id="selectHwMonitorUnitList" parameterType="HwMonitorUnit" resultMap="HwMonitorUnitResult">
<include refid="selectHwMonitorUnitVo"/>
<where>
<if test="monitorUnitName != null and monitorUnitName != ''"> and monitor_unit_name like concat('%', #{monitorUnitName}, '%')</if>
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
<if test="tenantId != null "> and tenant_id = #{tenantId}</if>
<if test="parentId != null "> and parent_id = #{parentId}</if>
<if test="monitorUnitTypeId != null "> and monitor_unit_type_id = #{monitorUnitTypeId}</if>
<if test="areaId != null "> and area_id = #{areaId}</if>
<if test="monitorAddress != null and monitorAddress != ''"> and monitor_address = #{monitorAddress}</if>
<if test="monitorPic != null and monitorPic != ''"> and monitor_pic = #{monitorPic}</if>
<if test="preserveTime != null "> and preserve_time = #{preserveTime}</if>
<if test="monitorUnitStatus != null "> and monitor_unit_status = #{monitorUnitStatus}</if>
<if test="monitorUnitStatus==monitorUnitStatus"> and monitor_unit_status = '1'</if>
<if test="monitorUnitField != null and monitorUnitField != ''"> and monitor_unit_field = #{monitorUnitField}</if>
<!-- 租户数据范围过滤 -->
<!-- todo ${params.tenantDataScope}-->
</where>
</select>
</where>
</select>
<select id="selectHwMonitorUnitByMonitorUnitId" parameterType="Long" resultMap="HwMonitorUnitResult">
<include refid="selectHwMonitorUnitVo"/>
where monitor_unit_id = #{monitorUnitId}
</select>
<!--查询最子集监控单元以场景进行分组-->
<select id="selectHwMonitorUnitByMonitorUnitId" parameterType="Long" resultMap="HwMonitorUnitResult">
<include refid="selectHwMonitorUnitVo"/>
where monitor_unit_id = #{monitorUnitId}
</select>
<!--查询最子集监控单元以场景进行分组-->
<select id="selectAllNums" resultMap="AllNumsVoResult">
select scene_id,count(*) as sub_sum from
(select monitor_unit_id,scene_id from hw_monitor_unit
where monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null))as temp
(select monitor_unit_id,scene_id from hw_monitor_unit
where monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null))as temp
GROUP BY scene_id
</select>
<select id="selectSubSetNums" resultType="Integer">
<select id="selectSubSetNums" resultType="String">
select count(*)from hw_monitor_unit
where monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null)
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
select count(*)from hw_monitor_unit
where monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null)
</select>
<select id="selectDeviceNums" resultType="Integer">
<select id="selectDeviceNums" resultType="String">
select count(*) as sum from hw_device
where device_status = '1'
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
where device_status = '1'
</select>
<!-- 通过场景分组,查询设备数量 todo 已解决 -->
<!-- 通过场景分组,查询设备数量 todo 已解决 -->
<select id="selectsum" resultMap="AllNumsVoResult">
select scene_id,count(*) as sum from hw_device
where device_status = '1'GROUP BY scene_id
select scene_id,count(*) as sum from hw_device
where device_status = '1'GROUP BY scene_id
</select>
<!-- 通过id查询子集并返回-->
<!-- 通过id查询子集并返回-->
<select id="selectHwMonitorUnitByParent" parameterType="Long" resultMap="HwMonitorUnitResult">
<include refid="selectHwMonitorUnitVo"/>
where parent_id = #{monitorUnitId}
@ -137,11 +126,11 @@
select count(*) from hw_device where releated_device_id = #{deviceId}
</select>
<!-- 查询该监控单元是否为最小单元-->
<!-- 查询该监控单元是否为最小单元-->
<select id="selectHwMonitorUnitIsParent" parameterType="Long" resultType="String">
SELECT count(*) from hw_monitor_unit where parent_id = #{monitorUnitId} GROUP BY parent_id
SELECT count(*) from hw_monitor_unit where parent_id = #{monitorUnitId} GROUP BY parent_id
</select>
<!-- todo 查询最小单元详细信息根据主键 byid 已解决-->
<!-- todo 查询最小单元详细信息根据主键 byid 已解决-->
<select id="selectHwmonitorUnitSub" resultType="Long" resultMap="HwMonitorUnitResult">
<include refid="selectHwMonitorUnitVo"/>
where monitor_unit_id = #{monitorUnitId}
@ -150,56 +139,57 @@
<select id="selectSceneNameById" resultMap="HwMonitorUnitVoResult">
select scene_id,scene_name from hw_scene
</select>
<!-- 分页查询在impl实现分页-->
<!-- 分页查询在impl实现分页-->
<select id="selectLimitSubMonitorUnit" resultMap="HwMonitorUnitResult">
select * from hw_monitor_unit where monitor_unit_id
not in (select parent_id from hw_monitor_unit where parent_id is not null)
not in (select parent_id from hw_monitor_unit where parent_id is not null)
</select>
<!-- 查询最子集监控单元使用sceneid进行分组-->
<!-- 查询最子集监控单元使用sceneid进行分组-->
<select id="selectMonitorPercentage" resultMap="HwMonitorUnitVoResult">
select scene_id,count(*) as sum from (select monitor_unit_id,scene_id
from hw_monitor_unit where monitor_unit_id not in
(select parent_id from hw_monitor_unit where parent_id is not null))as temp
GROUP BY scene_id order by sum desc
select scene_id,count(*) as sum from (select monitor_unit_id,scene_id
from hw_monitor_unit where monitor_unit_id not in
(select parent_id from hw_monitor_unit where parent_id is not null))as temp
GROUP BY scene_id order by sum desc
</select>
<!-- 先通过报警信息表查询报警的监控单元id与数量在查询监控单元的名字-->
<!-- 先通过报警信息表查询报警的监控单元id与数量在查询监控单元的名字-->
<select id="selectAlarmStats" resultMap="AlarmStatsResult">
select b.monitor_unit_id,b.monitor_unit_name,sum from
(select monitor_unit_id,count(*)as sum from hw_alarm_info where scene_id = #{sceneId} GROUP BY monitor_unit_id
)as a left join hw_monitor_unit b on a.monitor_unit_id = b.monitor_unit_id order BY sum
select b.monitor_unit_id,b.monitor_unit_name,sum from
(select monitor_unit_id,count(*)as sum from hw_alarm_info GROUP BY monitor_unit_id
)as a left join hw_monitor_unit b on a.monitor_unit_id = b.monitor_unit_id order BY sum
</select>
<!-- sub_sum 最子集监控单元数量device_num 设备数量 online_device_num在线设备数量 todo 传一个sceneid 监控单元和设备数量拆开查询 设备拿全部在后端判断 orderby 主键 -->
<!-- sub_sum 最子集监控单元数量device_num 设备数量 online_device_num在线设备数量 todo 传一个sceneid 监控单元和设备数量拆开查询 设备拿全部在后端判断 orderby 主键 -->
<select id="selectSubDeviceSum" parameterType="Long" resultType="Integer">
select count(*) from (select monitor_unit_id,scene_id
from hw_monitor_unit where monitor_unit_id not in
(select parent_id from hw_monitor_unit where parent_id is not null))as temp where scene_id = #{sceneId}
select count(*) from (select monitor_unit_id,scene_id
from hw_monitor_unit where monitor_unit_id not in
(select parent_id from hw_monitor_unit where parent_id is not null))as temp where scene_id = #{sceneId}
</select>
<!-- 先查询监控单元/设备的总量与报警未处理数量再通过场景id与电子围栏相连接-->
<!-- 先查询监控单元/设备的总量与报警未处理数量再通过场景id与电子围栏相连接-->
<select id="selectElectronicNum" resultMap="ElectronicNumVoResult">
select a.electronic_fence_id,a.electronic_fence_name,a.area_shape_flag,a.area_range,a.fence_type,b.num,b.alarm_num
from hw_electronic_fence as a left join ( select scene_id,count(*)as num,count(case when handle_status = '0' then 1 end ) as alarm_num from hw_alarm_info GROUP BY scene_id) as b on a.scene_id = b.scene_id
</select>
<select id="selectEleInScene" parameterType="Long" resultType="List">
select electronic_fence_id from hw_electronic_fence where scene_id = #{sceneId}
select electronic_fence_id from hw_electronic_fence where scene_id = #{sceneId}
</select>
<select id="selectEleType2" parameterType="Long" resultType="String">
select count(*) from hw_device where monitor_unit_id = (select target_id from hw_fence_target where target_type='2' and electronic_fence_id = #{electronicFenceId})
</select>
select count(*) from hw_device where monitor_unit_id = (select target_id from hw_fence_target where target_type='2' and electronic_fence_id = #{electronicFenceId})
</select>
<select id="selectEleType3" parameterType="Long" resultType="String">
select count(*) from hw_device where scene_id = #{sceneId}
</select>
<select id="selectDeviceType2Nums" parameterType="Long" resultType="Integer">
select count(*) from hw_device
where scene_id = #{sceneId}and device_type = '2' GROUP BY device_id
select count(*) from hw_device
where scene_id = #{sceneId}and device_type = '2' GROUP BY device_id
</select>
<insert id="insertHwMonitorUnit" parameterType="HwMonitorUnit" useGeneratedKeys="true" keyProperty="monitorUnitId">
insert into hw_monitor_unit
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="monitorUnitName != null and monitorUnitName != ''">monitor_unit_name,</if>
<if test="sceneId != null">scene_id,</if>
<if test="tenantId != null">tenant_id,</if>
<if test="parentId != null">parent_id,</if>
<if test="monitorUnitTypeId != null">monitor_unit_type_id,</if>
<if test="areaId != null">area_id,</if>
@ -213,10 +203,11 @@
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="monitorUnitField != null">monitor_unit_field,</if>
</trim>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="monitorUnitName != null and monitorUnitName != ''">#{monitorUnitName},</if>
<if test="sceneId != null">#{sceneId},</if>
<if test="tenantId != null">#{tenantId},</if>
<if test="parentId != null">#{parentId},</if>
<if test="monitorUnitTypeId != null">#{monitorUnitTypeId},</if>
<if test="areaId != null">#{areaId},</if>
@ -230,7 +221,7 @@
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="monitorUnitField != null">#{monitorUnitField},</if>
</trim>
</trim>
</insert>
<update id="updateHwMonitorUnit" parameterType="HwMonitorUnit">
@ -238,6 +229,7 @@
<trim prefix="SET" suffixOverrides=",">
<if test="monitorUnitName != null and monitorUnitName != ''">monitor_unit_name = #{monitorUnitName},</if>
<if test="sceneId != null">scene_id = #{sceneId},</if>
<if test="tenantId != null">scene_id = #{tenantId},</if>
<if test="parentId != null">parent_id = #{parentId},</if>
<if test="monitorUnitTypeId != null">monitor_unit_type_id = #{monitorUnitTypeId},</if>
<if test="areaId != null">area_id = #{areaId},</if>
@ -256,32 +248,23 @@
</update>
<delete id="deleteHwMonitorUnitByMonitorUnitId" parameterType="Long">
delete from hw_monitor_unit where monitor_unit_id = #{monitorUnitId}
UPDATE hw_monitor_unit SET monitor_unit_status='9' where monitor_unit_id= #{monitorUnitId}
</delete>
<delete id="deleteHwMonitorUnitByMonitorUnitIds" parameterType="String">
delete from hw_monitor_unit where monitor_unit_id in
UPDATE hw_monitor_unit SET monitor_unit_status='9' where monitor_unit_id =
<foreach item="monitorUnitId" collection="array" open="(" separator="," close=")">
#{monitorUnitId}
</foreach>
</delete>
<select id="selectHwMonitorUnitListJoinScene" parameterType="HwMonitorUnit" resultMap="HwMonitorUnitResult">
<include refid="selectHwMonitorUnitJoinScene"/>
<where>
hmu.monitor_unit_id not in (select parent_id from hw_monitor_unit where parent_id is not null)
<if test="monitorUnitName != null and monitorUnitName != ''"> and monitor_unit_name like concat('%', #{monitorUnitName}, '%')</if>
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
<if test="parentId != null "> and parent_id = #{parentId}</if>
<if test="monitorUnitTypeId != null "> and monitor_unit_type_id = #{monitorUnitTypeId}</if>
<if test="areaId != null "> and area_id = #{areaId}</if>
<if test="monitorAddress != null and monitorAddress != ''"> and monitor_address = #{monitorAddress}</if>
<if test="monitorPic != null and monitorPic != ''"> and monitor_pic = #{monitorPic}</if>
<if test="preserveTime != null "> and preserve_time = #{preserveTime}</if>
<if test="monitorUnitStatus != null "> and monitor_unit_status = #{monitorUnitStatus}</if>
<if test="monitorUnitField != null and monitorUnitField != ''"> and monitor_unit_field = #{monitorUnitField}</if>
</where>
<select id="selectIsParent" parameterType="Long" resultType="Integer">
select count(*) from hw_monitor_unit where parent_id = #{monitorUnitId}
</select>
<select id="selectDeviceRelevancyMontiorUnit" parameterType="Long" resultType="Integer" >
SELECT count(*) from hw_device where monitor_unit_id = #{monitorUnitId}
</select>
<select id="selectElectronicFenceRelevancyMonitorUnit" parameterType="Long" resultType="Integer" >
SELECT count(*) from hw_fence_target where target_type = '2' and target_id = #{monitorUnitId}
</select>
</mapper>
</mapper>

@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="languageCode" column="language_code" />
<result property="commonFlag" column="common_flag" />
<result property="sceneId" column="scene_id" />
<result property="tenantId" column="tenant_id" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@ -22,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectHwMonitorUnitTypeVo">
select monitor_unit_type_id, monitor_unit_type_name, vitual_flag, monitor_unit_type_status, language_code, common_flag, scene_id, remark, create_by, create_time, update_by, update_time, unit_type_icon, unit_type_field from hw_monitor_unit_type
select monitor_unit_type_id, monitor_unit_type_name, vitual_flag, monitor_unit_type_status, language_code, common_flag, scene_id,tenant_id, remark, create_by, create_time, update_by, update_time, unit_type_icon, unit_type_field from hw_monitor_unit_type
</sql>
<select id="selectHwMonitorUnitTypeByMonitorUnitTypeId" parameterType="Long" resultMap="HwMonitorUnitTypeResult">
@ -31,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectHwMonitorUnitTypeList" parameterType="HwMonitorUnitType" resultMap="HwMonitorUnitTypeResult">
<include refid="selectHwMonitorUnitTypeVo"/>
<where>
<if test="monitorUnitTypeName != null and monitorUnitTypeName != ''"> and monitor_unit_type_name like concat('%', #{monitorUnitTypeName}, '%')</if>
<if test="vitualFlag != null and vitualFlag != ''"> and vitual_flag = #{vitualFlag}</if>
@ -38,8 +40,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="languageCode != null and languageCode != ''"> and language_code = #{languageCode}</if>
<if test="commonFlag != null and commonFlag != ''"> and common_flag = #{commonFlag}</if>
<if test="sceneId != null "> and scene_id = #{sceneId}</if>
<if test="tenantId != null "> and tenant_id = #{tenantId}</if>
<if test="unitTypeIcon != null and unitTypeIcon != ''"> and unit_type_icon = #{unitTypeIcon}</if>
<if test="unitTypeField != null and unitTypeField != ''"> and unit_type_field = #{unitTypeField}</if>
<if test="monitorUnitTypeStatus == null"> and monitor_unit_type_status = '1'</if>
</where>
</select>
@ -56,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="languageCode != null">language_code,</if>
<if test="commonFlag != null and commonFlag != ''">common_flag,</if>
<if test="sceneId != null">scene_id,</if>
<if test="tenantId != null ">tenant_id,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
@ -71,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="languageCode != null">#{languageCode},</if>
<if test="commonFlag != null and commonFlag != ''">#{commonFlag},</if>
<if test="sceneId != null">#{sceneId},</if>
<if test="tenantId != null ">#{tenantId},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
@ -90,6 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="languageCode != null">language_code = #{languageCode},</if>
<if test="commonFlag != null and commonFlag != ''">common_flag = #{commonFlag},</if>
<if test="sceneId != null">scene_id = #{sceneId},</if>
<if test="tenantId != null ">tenant_id = #{tenantId},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
@ -102,13 +109,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update>
<delete id="deleteHwMonitorUnitTypeByMonitorUnitTypeId" parameterType="Long">
delete from hw_monitor_unit_type where monitor_unit_type_id = #{monitorUnitTypeId}
update hw_monitor_unit_type set monitor_unit_type_status = '9' where monitor_unit_type_id = #{monitorUnitTypeId}
</delete>
<delete id="deleteHwMonitorUnitTypeByMonitorUnitTypeIds" parameterType="String">
delete from hw_monitor_unit_type where monitor_unit_type_id in
update hw_monitor_unit_type set monitor_unit_type_status = '9' where monitor_unit_type_id in
<foreach item="monitorUnitTypeId" collection="array" open="(" separator="," close=")">
#{monitorUnitTypeId}
</foreach>
</delete>
<select id="getNumsHwMonitorUnitTypeByMonitorUnitTypeId" parameterType="Long" resultType="int">
select count(*) from hw_monitor_unit where monitor_unit_type_id = #{monitorUnitTypeId}
</select>
</mapper>

@ -54,13 +54,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectHwSceneVo">
select scene_id, scene_name, tenant_id, scene_mode_id, scene_pic, default_flag, scene_status, auth_mode, mode_account, mode_key, mode_secret, preserve_time, test_preserve_time, remark, create_by, create_time, update_by, update_time, scene_environment, scene_field from hw_scene hs
select scene_id, scene_name, tenant_id, scene_mode_id, scene_pic, default_flag, scene_status, auth_mode, mode_account, mode_key, mode_secret, preserve_time, test_preserve_time, remark, create_by, create_time, update_by, update_time, scene_environment, scene_field from hw_scene
</sql>
<select id="selectHwSceneVoList" parameterType="HwSceneVo" resultMap="HwSceneVoResult">
select a.*,b.tenant_name,c.scene_mode_name from hw_scene as a
left join hw_tenant as b on a.tenant_id = b.tenant_id
left join hw_scene_mode as c on a.scene_mode_id = c.scene_mode_id
where a.scene_status = '1'
<where>
<if test="sceneName != null and sceneName != ''"> and a.scene_name like concat('%', #{sceneName}, '%')</if>
<if test="contactName != null and contactName != ''"> and b.contact_name like concat('%', #{contactName}, '%')</if>
@ -87,10 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="testPreserveTime != null "> and test_preserve_time = #{testPreserveTime}</if>
<if test="sceneEnvironment != null and sceneEnvironment != ''"> and scene_environment = #{sceneEnvironment}</if>
<if test="sceneField != null and sceneField != ''"> and scene_field = #{sceneField}</if>
<!-- 租户数据范围过滤 -->
${params.tenantDataScope}
</where>
order by scene_id desc
</select>
<select id="selectHwSceneByTenantId0" parameterType="Long" resultMap="HwSceneResult">
<include refid="selectHwSceneVo"/>
@ -99,7 +97,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectHwSceneByTenantIdNot0" parameterType="Long" resultMap="HwSceneResult">
<include refid="selectHwSceneVo"/>
where tenant_id = #{tenantId}
order by update_time desc
</select>
<select id="selectHwSceneBySceneId" parameterType="Long" resultMap="HwSceneResult">
@ -191,9 +188,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteHwSceneBySceneIds" parameterType="String">
update hw_scene set scene_status = '9' where scene_id = in
update hw_scene set scene_status = '9' where scene_id in
<foreach item="sceneId" collection="array" open="(" separator="," close=")">
#{sceneId}
</foreach>
</delete>
<select id="selectHwSceneVoListByTenantId" parameterType="Long" resultMap="HwSceneVoResult">
select scene_id,scene_name from hw_scene where tenant_id = #{tenantId}
</select>
</mapper>

@ -3,7 +3,7 @@ server:
port: 9602
# Spring
spring:
spring:
application:
# 应用名称
name: hw-tdengine

@ -1,5 +1,13 @@
package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils;
@ -8,7 +16,6 @@ import com.ruoyi.common.datascope.annotation.DataScope;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.domain.SysRoleDept;
import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysUserRole;
@ -17,11 +24,6 @@ import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysRoleMenuMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
*
@ -132,10 +134,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return
*/
@Override
public boolean checkRoleNameUnique(SysRole role) {
public boolean checkRoleNameUnique(SysRole role)
{
Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName());
if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
{
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
@ -148,10 +152,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return
*/
@Override
public boolean checkRoleKeyUnique(SysRole role) {
public boolean checkRoleKeyUnique(SysRole role)
{
Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey());
if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue())
{
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
@ -163,8 +169,10 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @param role
*/
@Override
public void checkRoleAllowed(SysRole role) {
if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) {
public void checkRoleAllowed(SysRole role)
{
if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
{
throw new ServiceException("不允许操作超级管理员角色");
}
}
@ -175,12 +183,15 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @param roleId id
*/
@Override
public void checkRoleDataScope(Long roleId) {
if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
public void checkRoleDataScope(Long roleId)
{
if (!SysUser.isAdmin(SecurityUtils.getUserId()))
{
SysRole role = new SysRole();
role.setRoleId(roleId);
List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
if (StringUtils.isEmpty(roles)) {
if (StringUtils.isEmpty(roles))
{
throw new ServiceException("没有权限访问角色数据!");
}
}
@ -193,7 +204,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return
*/
@Override
public int countUserRoleByRoleId(Long roleId) {
public int countUserRoleByRoleId(Long roleId)
{
return userRoleMapper.countUserRoleByRoleId(roleId);
}
@ -205,7 +217,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertRole(SysRole role) {
public int insertRole(SysRole role)
{
// 新增角色信息
roleMapper.insertRole(role);
return insertRoleMenu(role);
@ -219,7 +232,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateRole(SysRole role) {
public int updateRole(SysRole role)
{
// 修改角色信息
roleMapper.updateRole(role);
// 删除角色与菜单关联
@ -234,7 +248,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return
*/
@Override
public int updateRoleStatus(SysRole role) {
public int updateRoleStatus(SysRole role)
{
return roleMapper.updateRole(role);
}
@ -246,7 +261,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int authDataScope(SysRole role) {
public int authDataScope(SysRole role)
{
// 修改角色信息
roleMapper.updateRole(role);
// 删除角色与部门关联
@ -260,17 +276,20 @@ public class SysRoleServiceImpl implements ISysRoleService {
*
* @param role
*/
public int insertRoleMenu(SysRole role) {
public int insertRoleMenu(SysRole role)
{
int rows = 1;
// 新增用户与角色管理
List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
for (Long menuId : role.getMenuIds()) {
for (Long menuId : role.getMenuIds())
{
SysRoleMenu rm = new SysRoleMenu();
rm.setRoleId(role.getRoleId());
rm.setMenuId(menuId);
list.add(rm);
}
if (list.size() > 0) {
if (list.size() > 0)
{
rows = roleMenuMapper.batchRoleMenu(list);
}
return rows;
@ -281,17 +300,20 @@ public class SysRoleServiceImpl implements ISysRoleService {
*
* @param role
*/
public int insertRoleDept(SysRole role) {
public int insertRoleDept(SysRole role)
{
int rows = 1;
// 新增角色与部门(数据权限)管理
List<SysRoleDept> list = new ArrayList<SysRoleDept>();
for (Long deptId : role.getDeptIds()) {
for (Long deptId : role.getDeptIds())
{
SysRoleDept rd = new SysRoleDept();
rd.setRoleId(role.getRoleId());
rd.setDeptId(deptId);
list.add(rd);
}
if (list.size() > 0) {
if (list.size() > 0)
{
rows = roleDeptMapper.batchRoleDept(list);
}
return rows;
@ -305,7 +327,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleById(Long roleId) {
public int deleteRoleById(Long roleId)
{
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(roleId);
// 删除角色与部门关联
@ -321,12 +344,15 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteRoleByIds(Long[] roleIds) {
for (Long roleId : roleIds) {
public int deleteRoleByIds(Long[] roleIds)
{
for (Long roleId : roleIds)
{
checkRoleAllowed(new SysRole(roleId));
checkRoleDataScope(roleId);
SysRole role = selectRoleById(roleId);
if (countUserRoleByRoleId(roleId) > 0) {
if (countUserRoleByRoleId(roleId) > 0)
{
throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
}
}
@ -344,34 +370,38 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return
*/
@Override
public int deleteAuthUser(SysUserRole userRole) {
public int deleteAuthUser(SysUserRole userRole)
{
return userRoleMapper.deleteUserRoleInfo(userRole);
}
/**
*
*
* @param roleId ID
* @param roleId ID
* @param userIds ID
* @return
*/
@Override
public int deleteAuthUsers(Long roleId, Long[] userIds) {
public int deleteAuthUsers(Long roleId, Long[] userIds)
{
return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
}
/**
*
*
* @param roleId ID
* @param roleId ID
* @param userIds ID
* @return
*/
@Override
public int insertAuthUsers(Long roleId, Long[] userIds) {
public int insertAuthUsers(Long roleId, Long[] userIds)
{
// 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long userId : userIds) {
for (Long userId : userIds)
{
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
@ -379,23 +409,4 @@ public class SysRoleServiceImpl implements ISysRoleService {
}
return userRoleMapper.batchUserRole(list);
}
/**
*
*
* @return
*/
@Override
public List<SysRole> selectRoleAll(SysRole querySysRole) {
if(querySysRole ==null){
querySysRole = new SysRole();
}
if (querySysRole.getTenantId() == null) {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser user = loginUser.getSysUser();
querySysRole.setTenantId(user.getTenantId());
}
return roleMapper.selectAddedUserRoleList(querySysRole);
}
}

@ -43,3 +43,13 @@ export function delScene(sceneId) {
})
}
// 查询场景信息列表供选择使用(例如下拉列表)
export function getScenes(query) {
return request({
url: '/business/scene/getScenes',
method: 'get',
params: query
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 B

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 490 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 B

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 870 B

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 490 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 B

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 0 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 0 B

@ -17,81 +17,89 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备类型" prop="networkingMode">
<el-select v-model="queryParams.deviceType" placeholder="请选择设备类型" clearable>
<el-option
v-for="dict in dict.type.hw_device_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择" @input="sceneChange">
<el-option
v-for="(scene, index) in scenes"
:key="index"
:label="scene.sceneName"
:value="scene.sceneId"
></el-option>
</el-select>
<el-input
v-model="queryParams.sceneId"
placeholder="请输入所属场景"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所属监控单元" prop="monitorUnitId">
<el-input
v-model="queryParams.monitorUnitId"
placeholder="请输入所属监控单元"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监控单元" prop="monitorUnitId">
<treeselect v-model="queryParams.monitorUnitId" :options="editedMonitorUnits" :show-count="true"
placeholder="请选择所属监控单元" :normalizer="normalizer" :flat="true" clearable style="width: 200px;"/>
<el-form-item label="接入协议" prop="accessProtocol">
<el-input
v-model="queryParams.accessProtocol"
placeholder="请输入接入协议"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="数据格式" prop="dataFormat">
<el-input
v-model="queryParams.dataFormat"
placeholder="请输入数据格式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备模型" prop="deviceModeId">
<el-select v-model="queryParams.deviceModeId" placeholder="请选择" clearable>
<el-option
v-for="(editedDeviceMode, index) in editedDeviceModes"
:key="index"
:label="editedDeviceMode.deviceModeName"
:value="editedDeviceMode.deviceModeId"
></el-option>
</el-select>
<el-input
v-model="queryParams.deviceModeId"
placeholder="请输入设备模型"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="接入网关协议" prop="accessGwProtocol">
<el-input
v-model="queryParams.accessGwProtocol"
placeholder="请输入接入网关协议"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备激活时间" prop="activeTime">
<el-date-picker clearable
v-model="queryParams.activeTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择设备激活时间">
</el-date-picker>
</el-form-item>
<el-form-item label="设备图片地址" prop="devicePic">
<el-input
v-model="queryParams.devicePic"
placeholder="请输入设备图片地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="网络地址" prop="ipAddress">
<el-input
v-model="queryParams.ipAddress"
placeholder="请输入网络地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="激活状态" prop="activeStatus">
<el-select v-model="queryParams.activeStatus" placeholder="请选择" clearable>
<el-option
v-for="dict in dict.type.hw_device_active_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
<el-form-item label="租户ID" prop="tenantId">
<el-input
v-model="queryParams.tenantId"
placeholder="请输入租户ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备状态" prop="deviceStatus">
<el-select v-model="queryParams.deviceStatus" placeholder="请选择" clearable>
<el-option
v-for="dict in dict.type.hw_device_device_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="在线状态" prop="onlineStatus">
<el-select v-model="queryParams.onlineStatus" placeholder="请选择" clearable>
<el-option
v-for="dict in dict.type.hw_device_online_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -110,6 +118,30 @@
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:device:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:device:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
@ -128,42 +160,25 @@
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="设备编号" align="center" prop="deviceCode"/>
<el-table-column label="设备名称" align="center" prop="deviceName"/>
<el-table-column label="设备类型" align="center" prop="deviceType">
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_device_type" :value="scope.row.deviceType"/>
</template>
</el-table-column>
<el-table-column label="所属租户" align="center" prop="tenantName"/>
<el-table-column label="所属场景" align="center" prop="sceneName"/>
<el-table-column label="监控单元" align="center" prop="monitorUnitName"/>
<el-table-column label="设备模型" align="center" prop="deviceModeName"/>
<el-table-column label="激活状态" align="center" prop="activeStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_device_active_status" :value="scope.row.activeStatus"/>
</template>
</el-table-column>
<el-table-column label="所属场景" align="center" prop="sceneId"/>
<el-table-column label="所属监控单元" align="center" prop="monitorUnitId"/>
<el-table-column label="设备类型" align="center" prop="deviceType"/>
<el-table-column label="联网方式" align="center" prop="networkingMode"/>
<el-table-column label="接入协议" align="center" prop="accessProtocol"/>
<el-table-column label="数据格式" align="center" prop="dataFormat"/>
<el-table-column label="设备模型" align="center" prop="deviceModeId"/>
<el-table-column label="接入网关协议" align="center" prop="accessGwProtocol"/>
<el-table-column label="激活状态" align="center" prop="activeStatus"/>
<el-table-column label="设备状态" align="center" prop="deviceStatus"/>
<el-table-column label="设备激活时间" align="center" prop="activeTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.activeTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="设备状态" align="center" prop="deviceStatus">
<template slot-scope="scope">
<el-switch
v-model="scope.row.deviceStatus"
active-value="1"
inactive-value="0"
@change="handleDeviceStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<el-table-column label="在线状态" align="center" prop="onlineStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.hw_device_online_status" :value="scope.row.onlineStatus"/>
</template>
</el-table-column>
<el-table-column label="设备图片地址" align="center" prop="devicePic"/>
<el-table-column label="网络地址" align="center" prop="ipAddress"/>
<el-table-column label="租户" align="center" prop="tenantId"/>
<el-table-column label="在线状态" align="center" prop="onlineStatus"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -196,26 +211,15 @@
<!-- 添加或修改设备信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="设备编号" prop="deviceCode">
<el-input v-model="form.deviceCode" placeholder="请输入设备编号" maxlength="20"/>
<el-input v-model="form.deviceCode" placeholder="请输入设备编号"/>
</el-form-item>
<el-form-item label="设备名称" prop="deviceName">
<el-input v-model="form.deviceName" placeholder="请输入设备名称"/>
</el-form-item>
<el-form-item label="设备类型" prop="networkingMode">
<el-select v-model="form.deviceType" placeholder="请选择设备类型" @input="deviceTypeChange" :disabled="deviceTypeDisabled">
<el-option
v-for="dict in dict.type.hw_device_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="所属场景" prop="sceneId">
<el-select v-model="form.sceneId" placeholder="请选择" @input="sceneChange">
<el-select v-model="form.sceneId" placeholder="请选择" :input="getMonitorUnitTree()">
<el-option
v-for="(scene, index) in scenes"
:key="index"
@ -225,13 +229,18 @@
</el-select>
</el-form-item>
<el-form-item label="监控单元" prop="monitorUnitId">
<treeselect v-model="form.monitorUnitId" :options="editedMonitorUnits" :show-count="true"
placeholder="请选择所属监控单元" :normalizer="normalizer" :flat="true"/>
<el-form-item label="所属监控单元" prop="monitorUnitId">
<el-select v-model="form.monitorUnitId" placeholder="请选择" :disabled="disabled">
<el-option
v-for="(monitorUnit, index) in monitorUnits"
:key="index"
:label="monitorUnit.monitorUnitName"
:value="monitorUnit.monitorUnitId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="联网方式" prop="networkingMode" v-if="deviceVisible">
<el-form-item label="联网方式" prop="networkingMode">
<el-select v-model="form.networkingMode" placeholder="请选择数据类型">
<el-option
v-for="dict in dict.type.hw_device_networking_mode"
@ -240,49 +249,23 @@
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="接入协议" prop="accessProtocol" v-if="deviceVisible">
<el-select v-model="form.accessProtocol" placeholder="请选择接入协议">
<el-option
v-for="dict in dict.type.hw_device_access_protocol"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数据格式" prop="dataFormat" v-if="deviceVisible">
<el-select v-model="form.accessProtocol" placeholder="请选择数据格式">
<el-option
v-for="dict in dict.type.hw_device_data_format"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="关联网关" prop="releatedDeviceId" v-if="subDeviceVisible">
<el-select v-model="form.releatedDeviceId" placeholder="请选择">
<el-option
v-for="(editedGatewayDevice, index) in editedGatewayDevices"
:key="index"
:label="editedGatewayDevice.deviceName"
:value="editedGatewayDevice.deviceId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="设备模型" prop="deviceModeId" v-if="subDeviceVisible">
<el-select v-model="form.deviceModeId" placeholder="请选择">
<el-option
v-for="(editedDeviceMode, index) in editedDeviceModes"
:key="index"
:label="editedDeviceMode.deviceModeName"
:value="editedDeviceMode.deviceModeId"
></el-option>
</el-select>
<el-form-item label="接入协议" prop="accessProtocol">
<el-input v-model="form.accessProtocol" placeholder="请输入接入协议"/>
</el-form-item>
<el-form-item label="数据格式" prop="dataFormat">
<el-input v-model="form.dataFormat" placeholder="请输入数据格式"/>
</el-form-item>
<el-form-item label="关联设备" prop="releatedDeviceId">
<el-input v-model="form.releatedDeviceId" placeholder="请输入关联设备hw_device表中国的device_id"/>
</el-form-item>
<el-form-item label="设备模型" prop="deviceModeId">
<el-input v-model="form.deviceModeId" placeholder="请输入设备模型"/>
</el-form-item>
<el-form-item label="接入网关协议" prop="accessGwProtocol">
<el-input v-model="form.accessGwProtocol" placeholder="请输入接入网关协议"/>
</el-form-item>
<el-form-item label="描述" prop="remark">
@ -333,7 +316,7 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm" v-if="confirmBtnVisible"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -341,25 +324,11 @@
</template>
<script>
import {
listDevice,
getDevice,
delDevice,
addDevice,
updateDevice,
getScenes,
getMonitorTree,
getDeviceModes,
getGatewayDevices,
changeDeviceStatus
} from "@/api/business/device";
import {listDevice, getDevice, delDevice, addDevice, updateDevice,getMonitorTree} from "@/api/business/device";
import {getScenes} from "@/api/business/scene";
import {getToken} from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import {changeUserStatus} from "@/api/system/user";
export default {
components: {Treeselect},
dicts: ['hw_device_type', 'hw_device_networking_mode', 'hw_device_access_protocol', 'hw_device_data_format', 'hw_device_active_status', 'hw_device_device_status', 'hw_device_online_status'],
name: "Device",
props: {
@ -404,35 +373,12 @@ export default {
deviceList: [],
//
scenes: [],
//
editedMonitorUnits: undefined,
//
editedDeviceModes: [],
//
editedGatewayDevices: [],
deviceTypeDisabled:true,
subDeviceVisible: false,//
deviceVisible: false,//
DEVICE_TYPE_GATEWAY_DEVICE: "1",//
DEVICE_TYPE_GATEWAY_SUB_EQUIPMENT: "2",//
DEVICE_TYPE_DIRECT_CONNECT_DEVICE: "3",//
DEVICE_ACCESS_PROTOCOL_MQTT: 1,//,MQTT
DEVICE_NETWORKING_MODE_WIFI: "1",// WIFI
DEVICE_DATA_FORMAT_JSON: 1,// JSON
DEVICE_STATUS_PUBLISHED: "1",//:
ACTIVE_STATUS_INACTIVE: "0",//
confirmBtnVisible : true,
//
monitorUnits: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
@ -463,25 +409,38 @@ export default {
//
rules: {
deviceCode: [
{required: true, message: "设备编号不能为空", trigger: "blur"},
{
pattern: /^[a-z][a-z0-9_]+$/,
message: "2-20个字符由小写字母、数字或下划线组成开头必须为小写字母",
trigger: "blur"
}
{required: true, message: "设备编号不能为空", trigger: "blur"}
],
deviceName: [
{required: true, message: "设备名称不能为空", trigger: "blur"}
],
sceneId: [
{required: true, message: "所属场景不能为空", trigger: "change"}
{required: true, message: "所属场景关联hw_scene表的scene_id字段不能为空", trigger: "blur"}
],
deviceType: [
{required: true, message: "设备类型不能为空", trigger: "change"}
],
monitorUnitId: [
{required: true, message: "监控单元不能为空", trigger: "change"}
networkingMode: [
{required: true, message: "联网方式(1:Wi-Fi2、蜂窝(2G/3G/4G/5G),3、以太网4、其他)不能为空", trigger: "blur"}
],
accessProtocol: [
{required: true, message: "接入协议不能为空", trigger: "blur"}
],
dataFormat: [
{required: true, message: "数据格式不能为空", trigger: "blur"}
],
activeStatus: [
{required: true, message: "激活状态不能为空", trigger: "change"}
],
deviceStatus: [
{required: true, message: "设备状态不能为空", trigger: "change"}
],
tenantId: [
{required: true, message: "租户ID关联hw_tenant的tenant_id不能为空", trigger: "blur"}
],
onlineStatus: [
{required: true, message: "在线状态不能为空", trigger: "change"}
]
},
number: 0,
uploadList: [],
@ -496,7 +455,9 @@ export default {
};
},
created() {
getMonitorTree().then(response => {
alert(JSON.stringify(response.data));
});
this.getList();
getScenes().then(response => {
this.scenes = response.data;
@ -512,18 +473,11 @@ export default {
showTip() {
return this.isShowTip && (this.fileType || this.fileSize);
},
formatRow() {
return (row) => {
// let languages = this.languages;
// for (let i = 0; i < languages.length; i++) {
// if (languages[i].languageCode === row.languageCode) {
// return languages[i].languageName;
// }
// }
};
},
},
methods: {
getMonitorUnitTree(){
},
/** 查询设备信息列表 */
getList() {
this.loading = true;
@ -540,15 +494,13 @@ export default {
},
//
reset() {
this.subDeviceVisible = true;
this.deviceVisible = false;
this.form = {
deviceId: null,
deviceCode: null,
deviceName: null,
sceneId: null,
monitorUnitId: null,
deviceType: "2",
deviceType: 2,
networkingMode: null,
accessProtocol: null,
dataFormat: null,
@ -588,41 +540,15 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.deviceTypeDisabled = false;
this.fileList = [];
this.reset();
this.open = true;
this.title = "添加设备信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.deviceTypeDisabled = true;
this.reset();
this.fileList = [];
const deviceId = row.deviceId || this.ids
getDevice(deviceId).then(response => {
if(response.data.deviceStatus===this.DEVICE_STATUS_PUBLISHED){
this.confirmBtnVisible = false;
}
if (response.data.devicePic != null) {
let previewFile = {};
previewFile.url = response.data.devicePic
this.fileList.push(previewFile);
}
this.getEditedMonitorTree(response.data.sceneId);
if (response.data.deviceType === this.DEVICE_TYPE_GATEWAY_DEVICE
|| response.data.deviceType === this.DEVICE_TYPE_DIRECT_CONNECT_DEVICE) {
this.subDeviceVisible = false;
this.deviceVisible = true;
} else {
this.subDeviceVisible = true;
this.deviceVisible = false;
this.getEditedDeviceModes(response.data.sceneId);
this.getGatewayDevices(response.data.sceneId);
}
this.form = response.data;
this.open = true;
this.title = "修改设备信息";
@ -634,31 +560,6 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.deviceType === this.DEVICE_TYPE_GATEWAY_DEVICE || this.form.deviceType === this.DEVICE_TYPE_DIRECT_CONNECT_DEVICE) {
// if(this.form.net)
// networkingMode: [
// {required: true, message: "(1:Wi-Fi2(2G/3G/4G/5G),34)", trigger: "blur"}
// ],
// accessProtocol: [
// {required: true, message: "", trigger: "blur"}
// ],
// dataFormat: [
// {required: true, message: "", trigger: "blur"}
// ],
} else {
if (this.form.releatedDeviceId === null || this.form.releatedDeviceId === undefined
|| this.form.releatedDeviceId === '') {
this.$modal.msgWarning("请选择关联网关");
return;
}
if (this.form.deviceModeId === null || this.form.deviceModeId === undefined
|| this.form.deviceModeId === '') {
this.$modal.msgWarning("请选择设备模型");
return;
}
}
if (this.form.deviceId != null) {
updateDevice(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
@ -733,7 +634,7 @@ export default {
//
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} !`);
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} limit!`);
},
//
handleUploadSuccess(res, file) {
@ -790,94 +691,7 @@ export default {
}
}
return strs != '' ? strs.substr(0, strs.length - 1) : '';
},
getEditedMonitorTree(sceneId) {
getMonitorTree(sceneId).then(response => {
this.editedMonitorUnits = response.data;
});
},
getEditedDeviceModes(sceneId) {
getDeviceModes(sceneId).then(response => {
this.editedDeviceModes = response.data;
});
},
getGatewayDevices(sceneId) {
getGatewayDevices(sceneId).then(response => {
this.editedGatewayDevices = response.data;
});
},
sceneChange(sceneId) {
this.form.monitorUnitId = null;
this.queryParams.monitorUnitId = null;
this.form.deivceModeId = null;
this.queryParams.deviceModeId = null;
this.getEditedMonitorTree(sceneId);
this.getEditedDeviceModes(sceneId);
this.getGatewayDevices(sceneId);
},
deviceTypeChange(deviceType) {
if (deviceType === this.DEVICE_TYPE_GATEWAY_DEVICE || deviceType === this.DEVICE_TYPE_DIRECT_CONNECT_DEVICE) {
this.form.releatedDeviceId = null;
this.form.deviceModeId = null;
this.form.accessProtocol = this.DEVICE_ACCESS_PROTOCOL_MQTT;
this.form.networkingMode = this.DEVICE_NETWORKING_MODE_WIFI;
this.form.dataFormat = this.DEVICE_DATA_FORMAT_JSON;
this.deviceVisible = true;
this.subDeviceVisible = false;
} else {
this.form.networkingMode = null;
this.form.accessProtocol = null;
this.form.dataFormat = null;
this.subDeviceVisible = true;
this.deviceVisible = false;
}
},
monitorUnitSelect(node) {
if (node.children !== undefined) {
this.form.monitorUnitId = null;
this.$modal.msgWarning("请选择子级监控单元");
}
},
normalizer(node) {
return {
id: node.id,
label: node.label,
children: node.children,
isDisabled: node.children !== undefined
};
// if (!node.children) {
// return {
// id: node.monitorUnitId,
// label: node.monitorUnitName
// };
// }
},
//
handleDeviceStatusChange(row) {
if(row.deviceStatus==='1' && row.activeStatus === '0'){
this.$modal.msgSuccess("激活后才能修改为发布状态");
row.deviceStatus = row.deviceStatus === "0" ? "1" : "0";
return;
}
let text = row.deviceStatus === "0" ? "测试" : "发布";
this.$modal.confirm('确认要改为'+text+'状态吗?').then(function () {
return changeDeviceStatus(row.deviceId, row.deviceStatus);
}).then(() => {
this.$modal.msgSuccess("修改状态成功");
}).catch(function () {
row.deviceStatus = row.deviceStatus === "0" ? "1" : "0";
});
},
}
}
};
</script>

Loading…
Cancel
Save