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
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; package com.ruoyi.business.controller;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.io.IOException; import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; 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.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.page.TableDataInfo;
/** /**
* Controller * Controller
* *
* @author xins * @author YINQ
* @date 2023-09-14 * @date 2023-08-31
*/ */
@RestController @RestController
@RequestMapping("/monitorUnit") @RequestMapping("/monitorUnit")
@ -33,18 +47,28 @@ public class HwMonitorUnitController extends BaseController
{ {
@Autowired @Autowired
private IHwMonitorUnitService hwMonitorUnitService; private IHwMonitorUnitService hwMonitorUnitService;
@Autowired
private IHwDeviceService hwDeviceService;
@Autowired
private IHwSceneService hwSceneService;
@Autowired
private IHwElectronicFenceService hwElectronicFenceService;
/** /**
* *
*/ */
@RequiresPermissions("business:monitorUnit:list") @RequiresPermissions("business:monitorUnit:list")
@GetMapping("/list") @GetMapping("/list")
public AjaxResult list(HwMonitorUnit hwMonitorUnit) public TableDataInfo list(HwMonitorUnit hwMonitorUnit)
{ {
// startPage();
List<HwMonitorUnit> list = hwMonitorUnitService.selectHwMonitorUnitList(hwMonitorUnit); 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)); return success(hwMonitorUnitService.selectHwMonitorUnitByMonitorUnitId(monitorUnitId));
} }
/** /**
* *
*/ */
@ -76,8 +101,14 @@ public class HwMonitorUnitController extends BaseController
@PostMapping @PostMapping
public AjaxResult add(@RequestBody HwMonitorUnit hwMonitorUnit) 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}") @DeleteMapping("/{monitorUnitIds}")
public AjaxResult remove(@PathVariable Long[] 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}") @DeleteMapping("/{monitorUnitTypeIds}")
public AjaxResult remove(@PathVariable Long[] monitorUnitTypeIds) public AjaxResult remove(@PathVariable Long[] monitorUnitTypeIds)
{ {
if (hwMonitorUnitTypeService.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds)==0){
return AjaxResult.error("该类型下仍有监控单元,不可删除");
}
else{
return toAjax(hwMonitorUnitTypeService.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds)); return toAjax(hwMonitorUnitTypeService.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds));
} }}
} }

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

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

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

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

@ -62,4 +62,6 @@ public interface HwMonitorUnitTypeMapper
* @return * @return
*/ */
public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds); 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> selectHwSceneBySceneModeId(Long sceneModeId);
public List<HwScene> selectHwSceneByTenantId0(Long tenantId); public List<HwScene> selectHwSceneByTenantId0(Long tenantId);
public List<HwScene> selectHwSceneByTenantIdNot0(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.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import com.ruoyi.business.domain.HwMonitorUnit; import com.ruoyi.business.domain.HwMonitorUnit;
import com.ruoyi.business.domain.VO.*; import com.ruoyi.business.domain.VO.*;
@ -31,25 +30,21 @@ public interface IHwMonitorUnitService
/** /**
* *
* */ * */
public AllNumsVo selectAllNums(Long sceneId); public AllNumsVo selectAllNums();
// public List<AllNumsVo> selectSenceAllNums(); public List<AllNumsVo> selectSenceAllNums();
/** /**
* *
* */ * */
public List<HwMonitorUnit> selectLimitSubMonitorUnit(); 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 SubDeviceSumVo selectSubDeviceSum(Long sceneId);
/**
*
* */
public Integer selectElectronicNum(Long sceneId);
/** /**
* *
* */ * */
@ -71,9 +69,19 @@ public interface IHwMonitorUnitService
* *
* */ * */
public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId); 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 * @param hwMonitorUnit
@ -106,27 +114,9 @@ public interface IHwMonitorUnitService
public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId); public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId);
/**
*
*
* @param hwMonitorUnit
* @return
*/
public List<TreeSelectVo> selectMonitorTreeList(HwMonitorUnit hwMonitorUnit);
/** /**
* * id
* * */
* @param hwMonitorUnits int getMonitorIsRelevancy(Long monitorUnitId);
* @return }
*/
public List<TreeSelectVo> buildMonitorUnitTreeSelect(List<HwMonitorUnit> hwMonitorUnits);
/**
*
*
* @param hwMonitorUnits
* @return
*/
public List<HwMonitorUnit> buildMonitorUnitTree(List<HwMonitorUnit> hwMonitorUnits);
}

@ -1,27 +1,5 @@
package com.ruoyi.business.service.impl; 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.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
@ -30,6 +8,26 @@ import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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 * Service
* *
@ -37,7 +35,8 @@ import java.util.stream.Collectors;
* @date 2023-08-31 * @date 2023-08-31
*/ */
@Service @Service
public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService { public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService
{
@Autowired @Autowired
private HwMonitorUnitMapper hwMonitorUnitMapper; private HwMonitorUnitMapper hwMonitorUnitMapper;
@Autowired @Autowired
@ -46,8 +45,9 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
private RemoteTdEngineService remoteTdEgineService; private RemoteTdEngineService remoteTdEgineService;
@Autowired @Autowired
private HwDeviceMapper hwDeviceMapper; private HwDeviceMapper hwDeviceMapper;
@Autowired
private HwAlarmInfoMapper hwAlarmInfoMapper;
/** /**
* *
@ -56,106 +56,106 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return * @return
*/ */
@Override @Override
public HwMonitorUnit selectHwMonitorUnitByMonitorUnitId(Long monitorUnitId) { public HwMonitorUnit selectHwMonitorUnitByMonitorUnitId(Long monitorUnitId)
{
return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId); return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId);
} }
/** /**
* *
*/ * */
@Override @Override
public List<HwMonitorUnitVo> selectMonitorPercentage() { 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> list = hwMonitorUnitMapper.selectMonitorPercentage();
List<HwMonitorUnitVo> hwScenes = hwMonitorUnitMapper.selectSceneNameById(); List<HwMonitorUnitVo> hwScenes = hwMonitorUnitMapper.selectSceneNameById();
list.stream().forEach(l -> { int count = hwScenes.size();
for (int i = 0; i < hwScenes.size(); i++) { if (list.size()<=hwScenes.size()) {
if (l.getSceneId().equals(hwScenes.get(i).getSceneId())) { count = list.size();
l.setSceneName(hwScenes.get(i).getSceneName()); }
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 value = 0;
// //
Integer sums = 0; Integer sums = 0;
// if (list.size() > 5) { if (list.size()>5){
// for (int i = 4; i < list.size(); i++) {//这是剩下的总数 for (int i = 4; i < list.size(); i++){
// if (list.get(i).sum == null) { if (list.get(i).sum==null){
// list.get(i).sum = 0; list.get(i).sum = 0;
// } }
// value = value + list.get(i).sum; value = value+list.get(i).sum;
// } }
// } }
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size();i++){
if (list.get(i).sum == null) { if (list.get(i).sum==null){
list.get(i).sum = 0; 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++) { for (int i=0;i<list.size();i++){
HwMonitorUnitVo hwMonitorUnitVo = list.get(i); list.get(i).setPercentage((double) (list.get(i).getSum()/sums));
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);
} }
HwMonitorUnitVo hwMonitorUnitVo = new HwMonitorUnitVo();
hwMonitorUnitVo.setSceneName("其他");
hwMonitorUnitVo.setSum(value);
// HwMonitorUnitVo hwMonitorUnitVo = new HwMonitorUnitVo(); if (list.size()>5){
// hwMonitorUnitVo.setSceneName("其他"); list.add(5,hwMonitorUnitVo);
// hwMonitorUnitVo.setSum(value); return list.subList(0,5);
}
// if (list.size() > 5) { else {
// list.add(5, hwMonitorUnitVo); return list;
// return list.subList(0, 5); }
// } else {
// return list;
// }
return list;
} }
//获取总的设备数量与监控单元数量 //获取总的设备数量与监控单元数量
@Override @Override
public AllNumsVo selectAllNums(Long sceneId) { public AllNumsVo selectAllNums() {
//监控单元 //监控单元
Integer monitor = hwMonitorUnitMapper.selectSubSetNums(sceneId) == null ? 0 String monitor = hwMonitorUnitMapper.selectSubSetNums();
: hwMonitorUnitMapper.selectSubSetNums(sceneId); String integer = hwMonitorUnitMapper.selectDeviceNums();
Integer integer = hwMonitorUnitMapper.selectDeviceNums(sceneId) == null ? 0 System.out.println(monitor+" dsaas "+integer);
: hwMonitorUnitMapper.selectDeviceNums(sceneId); Integer monitor1 = 0;
Integer monitor2 = 0;
AllNumsVo vo = new AllNumsVo(); AllNumsVo vo = new AllNumsVo();
vo.setSubSum(monitor); if (monitor == null){
vo.setSum(integer); 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; return vo;
} }
// @Override
// public List<AllNumsVo> selectSenceAllNums() { @Override
// List<AllNumsVo> allNumsVos = hwMonitorUnitMapper.selectAllNums(); public List<AllNumsVo> selectSenceAllNums() {
// List<AllNumsVo> allNums = hwMonitorUnitMapper.selectsum(); List<AllNumsVo> allNumsVos = hwMonitorUnitMapper.selectAllNums();
// for (int i = 0; i < allNums.size(); i++) { List<AllNumsVo> allNums = hwMonitorUnitMapper.selectsum();
// for (int j = 0; j < allNums.size(); j++) { for (int i=0;i< allNums.size();i++){
// if (allNums.get(i).getSceneId().equals(allNumsVos.get(i).getSceneId())) { for (int j=0;j< allNums.size();j++){
// allNums.get(i).setSubSum(allNumsVos.get(i).getSubSum()); if (allNums.get(i).getSceneId().equals(allNumsVos.get(i).getSceneId())){
// } allNums.get(i).setSubSum(allNumsVos.get(i).getSubSum());
// } }
// } }
// return allNums; }
// } return allNums;
}
@Override @Override
public List<HwMonitorUnit> selectLimitSubMonitorUnit() { public List<HwMonitorUnit> selectLimitSubMonitorUnit() {
@ -165,8 +165,8 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
} }
@Override @Override
public List<AlarmStatsVo> selectAlarmStats(Long sceneId) { public List<AlarmStatsVo> selectAlarmStats() {
return hwMonitorUnitMapper.selectAlarmStats(sceneId); return hwMonitorUnitMapper.selectAlarmStats();
} }
@ -177,72 +177,155 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return * @return
*/ */
@Override @Override
public List<HwMonitorUnit> selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit) { public List<HwMonitorUnit> selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit)
{
return hwMonitorUnitMapper.selectHwMonitorUnitList(hwMonitorUnit); return hwMonitorUnitMapper.selectHwMonitorUnitList(hwMonitorUnit);
} }
@Override @Override
public SubDeviceSumVo selectSubDeviceSum(Long sceneId) { public SubDeviceSumVo selectSubDeviceSum(Long sceneId) {
AllNumsVo numsVo = selectAllNums(sceneId); int SubSum = hwMonitorUnitMapper.selectSubDeviceSum(sceneId);
int onlineDeviceNum = hwDeviceMapper.getOnlineDeviceNum(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 subDeviceSumVo = new SubDeviceSumVo();
subDeviceSumVo.setSubSum(numsVo.getSubSum());//监控单元数量 subDeviceSumVo.setSubSum(String.valueOf(SubSum));
subDeviceSumVo.setDeviceNum(numsVo.getSum());//设备数量 subDeviceSumVo.setDeviceNum(String.valueOf(hwDevices.size()));
subDeviceSumVo.setOnlineDeviceNum(onlineDeviceNum);//在线设备数量 subDeviceSumVo.setOnlineDeviceNum(String.valueOf(onlineDevice));
return subDeviceSumVo; return subDeviceSumVo;
} }
//todo 电子围栏
@Override
public Integer selectElectronicNum(Long sceneId) {
List<Long> longs = hwMonitorUnitMapper.selectEleInScene(sceneId);
return null;
}
@Override @Override
public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId) { public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId) {
return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId); return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId);
} }
//todo SysDeptServiceImpl类中的递归方法recursionFn(以实现)
@Override @Override
public List<HwMonitorUnit> selectTreeList(List<HwMonitorUnit> hwMonitorUnits) { // 加一个begintime参数endtime参数 stream时间戳 从开始时间0点开始结束时间23.59.59结束
List<HwMonitorUnit> returnList = new ArrayList<>(); public Map<Object, Integer> selectTdengine(String beginTime, String endTime, Long sceneId) {
List<Long> tempList = hwMonitorUnits.stream().map(HwMonitorUnit::getMonitorUnitId).collect(Collectors.toList()); DeviceStatus queryDeviceStatus = new DeviceStatus();
List<HwMonitorUnit> treeList = new ArrayList<>();
for (HwMonitorUnit hwMonitorUnit : hwMonitorUnits) { Map<String, Object> params = queryDeviceStatus.getParams();
if (!tempList.contains(hwMonitorUnit.getParentId())) DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);
recursionFn(hwMonitorUnits, hwMonitorUnit); System.out.println(ofPattern);
returnList.add(hwMonitorUnit); 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) { int sum = 0;
treeList.add(returnList.get(i)); 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); List<HwMonitorUnit> childList = getChildList(list, t);
t.setChild(childList); t.setChild(childList);
for (HwMonitorUnit tChild : childList) { for (HwMonitorUnit tChild : childList)
if (hasChild(list, tChild)) { {
if (hasChild(list, tChild))
{
recursionFn(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>(); List<HwMonitorUnit> tlist = new ArrayList<HwMonitorUnit>();
Iterator<HwMonitorUnit> it = list.iterator(); Iterator<HwMonitorUnit> it = list.iterator();
while (it.hasNext()) { while (it.hasNext())
{
HwMonitorUnit n = (HwMonitorUnit) it.next(); 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); tlist.add(n);
} }
} }
return tlist; 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; return getChildList(list, t).size() > 0 ? true : false;
} }
@ -253,9 +336,32 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return * @return
*/ */
@Override @Override
public int insertHwMonitorUnit(HwMonitorUnit hwMonitorUnit) { public int insertHwMonitorUnit(HwMonitorUnit hwMonitorUnit)
hwMonitorUnit.setCreateTime(DateUtils.getNowDate()); {
return hwMonitorUnitMapper.insertHwMonitorUnit(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 * @return
*/ */
@Override @Override
public int updateHwMonitorUnit(HwMonitorUnit hwMonitorUnit) { public int updateHwMonitorUnit(HwMonitorUnit hwMonitorUnit)
{
hwMonitorUnit.setUpdateTime(DateUtils.getNowDate()); hwMonitorUnit.setUpdateTime(DateUtils.getNowDate());
return hwMonitorUnitMapper.updateHwMonitorUnit(hwMonitorUnit); return hwMonitorUnitMapper.updateHwMonitorUnit(hwMonitorUnit);
} }
@ -277,7 +384,18 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return * @return
*/ */
@Override @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); return hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitIds(monitorUnitIds);
} }
@ -288,93 +406,38 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService {
* @return * @return
*/ */
@Override @Override
public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId) { public int deleteHwMonitorUnitByMonitorUnitId(Long monitorUnitId)
{
return hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitId(monitorUnitId); return hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitId(monitorUnitId);
} }
/**
*
*
* @param hwMonitorUnit
* @return
*/
@Override @Override
@DataScope(tenantAlias = "hmu") public int getMonitorIsRelevancy(Long monitorUnitId) {
public List<TreeSelectVo> selectMonitorTreeList(HwMonitorUnit hwMonitorUnit) { if (hwMonitorUnitMapper.selectDeviceRelevancyMontiorUnit(monitorUnitId)==0
List<HwMonitorUnit> hwMonitorUnits = this.selectHwMonitorUnitList(hwMonitorUnit); && hwMonitorUnitMapper.selectElectronicFenceRelevancyMonitorUnit(monitorUnitId)==0
return buildMonitorUnitTreeSelect(hwMonitorUnits); ){
} return 1;
/**
*
*
* @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);
}
} }
if (returnList.isEmpty()) { return 0;
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;
} }
} }
//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.business.domain.VO.HwMonitorUnitVo;
import com.ruoyi.common.core.utils.DateUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.HwMonitorUnitTypeMapper; import com.ruoyi.business.mapper.HwMonitorUnitTypeMapper;
@ -43,6 +46,11 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override @Override
public List<HwMonitorUnitType> selectHwMonitorUnitTypeList(HwMonitorUnitType hwMonitorUnitType) 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); return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeList(hwMonitorUnitType);
} }
@ -56,6 +64,12 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override @Override
public int insertHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType) 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()); hwMonitorUnitType.setCreateTime(DateUtils.getNowDate());
return hwMonitorUnitTypeMapper.insertHwMonitorUnitType(hwMonitorUnitType); return hwMonitorUnitTypeMapper.insertHwMonitorUnitType(hwMonitorUnitType);
} }
@ -69,6 +83,9 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override @Override
public int updateHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType) public int updateHwMonitorUnitType(HwMonitorUnitType hwMonitorUnitType)
{ {
LoginUser loginUser = SecurityUtils.getLoginUser();
SysUser sysUser = loginUser.getSysUser();
hwMonitorUnitType.setCreateBy(sysUser.getNickName());
hwMonitorUnitType.setUpdateTime(DateUtils.getNowDate()); hwMonitorUnitType.setUpdateTime(DateUtils.getNowDate());
return hwMonitorUnitTypeMapper.updateHwMonitorUnitType(hwMonitorUnitType); return hwMonitorUnitTypeMapper.updateHwMonitorUnitType(hwMonitorUnitType);
} }
@ -82,6 +99,12 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override @Override
public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds) public int deleteHwMonitorUnitTypeByMonitorUnitTypeIds(Long[] monitorUnitTypeIds)
{ {
for (Long monitorUnitTypeId : monitorUnitTypeIds){
if (hwMonitorUnitTypeMapper.getNumsHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId)!=0){
return 0;
}
}
return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds); return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeIds(monitorUnitTypeIds);
} }
@ -94,6 +117,11 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService
@Override @Override
public int deleteHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId) public int deleteHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId)
{ {
if (hwMonitorUnitTypeMapper.getNumsHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId)!=0){
System.out.println(hwMonitorUnitTypeMapper.getNumsHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId));
return 0;
}
return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId); return hwMonitorUnitTypeMapper.deleteHwMonitorUnitTypeByMonitorUnitTypeId(monitorUnitTypeId);
} }
} }

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

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

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

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

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

@ -1,5 +1,13 @@
package com.ruoyi.system.service.impl; 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.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils; 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.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser; 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.SysRoleDept;
import com.ruoyi.system.domain.SysRoleMenu; import com.ruoyi.system.domain.SysRoleMenu;
import com.ruoyi.system.domain.SysUserRole; 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.SysRoleMenuMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysRoleService; 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 * @return
*/ */
@Override @Override
public boolean checkRoleNameUnique(SysRole role) { public boolean checkRoleNameUnique(SysRole role)
{
Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
SysRole info = roleMapper.checkRoleNameUnique(role.getRoleName()); 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.NOT_UNIQUE;
} }
return UserConstants.UNIQUE; return UserConstants.UNIQUE;
@ -148,10 +152,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return * @return
*/ */
@Override @Override
public boolean checkRoleKeyUnique(SysRole role) { public boolean checkRoleKeyUnique(SysRole role)
{
Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId(); Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
SysRole info = roleMapper.checkRoleKeyUnique(role.getRoleKey()); 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.NOT_UNIQUE;
} }
return UserConstants.UNIQUE; return UserConstants.UNIQUE;
@ -163,8 +169,10 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @param role * @param role
*/ */
@Override @Override
public void checkRoleAllowed(SysRole role) { public void checkRoleAllowed(SysRole role)
if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) { {
if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin())
{
throw new ServiceException("不允许操作超级管理员角色"); throw new ServiceException("不允许操作超级管理员角色");
} }
} }
@ -175,12 +183,15 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @param roleId id * @param roleId id
*/ */
@Override @Override
public void checkRoleDataScope(Long roleId) { public void checkRoleDataScope(Long roleId)
if (!SysUser.isAdmin(SecurityUtils.getUserId())) { {
if (!SysUser.isAdmin(SecurityUtils.getUserId()))
{
SysRole role = new SysRole(); SysRole role = new SysRole();
role.setRoleId(roleId); role.setRoleId(roleId);
List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role); List<SysRole> roles = SpringUtils.getAopProxy(this).selectRoleList(role);
if (StringUtils.isEmpty(roles)) { if (StringUtils.isEmpty(roles))
{
throw new ServiceException("没有权限访问角色数据!"); throw new ServiceException("没有权限访问角色数据!");
} }
} }
@ -193,7 +204,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return * @return
*/ */
@Override @Override
public int countUserRoleByRoleId(Long roleId) { public int countUserRoleByRoleId(Long roleId)
{
return userRoleMapper.countUserRoleByRoleId(roleId); return userRoleMapper.countUserRoleByRoleId(roleId);
} }
@ -205,7 +217,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int insertRole(SysRole role) { public int insertRole(SysRole role)
{
// 新增角色信息 // 新增角色信息
roleMapper.insertRole(role); roleMapper.insertRole(role);
return insertRoleMenu(role); return insertRoleMenu(role);
@ -219,7 +232,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateRole(SysRole role) { public int updateRole(SysRole role)
{
// 修改角色信息 // 修改角色信息
roleMapper.updateRole(role); roleMapper.updateRole(role);
// 删除角色与菜单关联 // 删除角色与菜单关联
@ -234,7 +248,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return * @return
*/ */
@Override @Override
public int updateRoleStatus(SysRole role) { public int updateRoleStatus(SysRole role)
{
return roleMapper.updateRole(role); return roleMapper.updateRole(role);
} }
@ -246,7 +261,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int authDataScope(SysRole role) { public int authDataScope(SysRole role)
{
// 修改角色信息 // 修改角色信息
roleMapper.updateRole(role); roleMapper.updateRole(role);
// 删除角色与部门关联 // 删除角色与部门关联
@ -260,17 +276,20 @@ public class SysRoleServiceImpl implements ISysRoleService {
* *
* @param role * @param role
*/ */
public int insertRoleMenu(SysRole role) { public int insertRoleMenu(SysRole role)
{
int rows = 1; int rows = 1;
// 新增用户与角色管理 // 新增用户与角色管理
List<SysRoleMenu> list = new ArrayList<SysRoleMenu>(); List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
for (Long menuId : role.getMenuIds()) { for (Long menuId : role.getMenuIds())
{
SysRoleMenu rm = new SysRoleMenu(); SysRoleMenu rm = new SysRoleMenu();
rm.setRoleId(role.getRoleId()); rm.setRoleId(role.getRoleId());
rm.setMenuId(menuId); rm.setMenuId(menuId);
list.add(rm); list.add(rm);
} }
if (list.size() > 0) { if (list.size() > 0)
{
rows = roleMenuMapper.batchRoleMenu(list); rows = roleMenuMapper.batchRoleMenu(list);
} }
return rows; return rows;
@ -281,17 +300,20 @@ public class SysRoleServiceImpl implements ISysRoleService {
* *
* @param role * @param role
*/ */
public int insertRoleDept(SysRole role) { public int insertRoleDept(SysRole role)
{
int rows = 1; int rows = 1;
// 新增角色与部门(数据权限)管理 // 新增角色与部门(数据权限)管理
List<SysRoleDept> list = new ArrayList<SysRoleDept>(); List<SysRoleDept> list = new ArrayList<SysRoleDept>();
for (Long deptId : role.getDeptIds()) { for (Long deptId : role.getDeptIds())
{
SysRoleDept rd = new SysRoleDept(); SysRoleDept rd = new SysRoleDept();
rd.setRoleId(role.getRoleId()); rd.setRoleId(role.getRoleId());
rd.setDeptId(deptId); rd.setDeptId(deptId);
list.add(rd); list.add(rd);
} }
if (list.size() > 0) { if (list.size() > 0)
{
rows = roleDeptMapper.batchRoleDept(list); rows = roleDeptMapper.batchRoleDept(list);
} }
return rows; return rows;
@ -305,7 +327,8 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int deleteRoleById(Long roleId) { public int deleteRoleById(Long roleId)
{
// 删除角色与菜单关联 // 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(roleId); roleMenuMapper.deleteRoleMenuByRoleId(roleId);
// 删除角色与部门关联 // 删除角色与部门关联
@ -321,12 +344,15 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int deleteRoleByIds(Long[] roleIds) { public int deleteRoleByIds(Long[] roleIds)
for (Long roleId : roleIds) { {
for (Long roleId : roleIds)
{
checkRoleAllowed(new SysRole(roleId)); checkRoleAllowed(new SysRole(roleId));
checkRoleDataScope(roleId); checkRoleDataScope(roleId);
SysRole role = selectRoleById(roleId); SysRole role = selectRoleById(roleId);
if (countUserRoleByRoleId(roleId) > 0) { if (countUserRoleByRoleId(roleId) > 0)
{
throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName())); throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
} }
} }
@ -344,34 +370,38 @@ public class SysRoleServiceImpl implements ISysRoleService {
* @return * @return
*/ */
@Override @Override
public int deleteAuthUser(SysUserRole userRole) { public int deleteAuthUser(SysUserRole userRole)
{
return userRoleMapper.deleteUserRoleInfo(userRole); return userRoleMapper.deleteUserRoleInfo(userRole);
} }
/** /**
* *
* *
* @param roleId ID * @param roleId ID
* @param userIds ID * @param userIds ID
* @return * @return
*/ */
@Override @Override
public int deleteAuthUsers(Long roleId, Long[] userIds) { public int deleteAuthUsers(Long roleId, Long[] userIds)
{
return userRoleMapper.deleteUserRoleInfos(roleId, userIds); return userRoleMapper.deleteUserRoleInfos(roleId, userIds);
} }
/** /**
* *
* *
* @param roleId ID * @param roleId ID
* @param userIds ID * @param userIds ID
* @return * @return
*/ */
@Override @Override
public int insertAuthUsers(Long roleId, Long[] userIds) { public int insertAuthUsers(Long roleId, Long[] userIds)
{
// 新增用户与角色管理 // 新增用户与角色管理
List<SysUserRole> list = new ArrayList<SysUserRole>(); List<SysUserRole> list = new ArrayList<SysUserRole>();
for (Long userId : userIds) { for (Long userId : userIds)
{
SysUserRole ur = new SysUserRole(); SysUserRole ur = new SysUserRole();
ur.setUserId(userId); ur.setUserId(userId);
ur.setRoleId(roleId); ur.setRoleId(roleId);
@ -379,23 +409,4 @@ public class SysRoleServiceImpl implements ISysRoleService {
} }
return userRoleMapper.batchUserRole(list); 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" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </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-form-item label="所属场景" prop="sceneId">
<el-select v-model="queryParams.sceneId" placeholder="请选择" @input="sceneChange"> <el-input
<el-option v-model="queryParams.sceneId"
v-for="(scene, index) in scenes" placeholder="请输入所属场景"
:key="index" clearable
:label="scene.sceneName" @keyup.enter.native="handleQuery"
:value="scene.sceneId" />
></el-option> </el-form-item>
</el-select> <el-form-item label="所属监控单元" prop="monitorUnitId">
<el-input
v-model="queryParams.monitorUnitId"
placeholder="请输入所属监控单元"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> </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>
<el-form-item label="设备模型" prop="deviceModeId"> <el-form-item label="设备模型" prop="deviceModeId">
<el-select v-model="queryParams.deviceModeId" placeholder="请选择" clearable> <el-input
<el-option v-model="queryParams.deviceModeId"
v-for="(editedDeviceMode, index) in editedDeviceModes" placeholder="请输入设备模型"
:key="index" clearable
:label="editedDeviceMode.deviceModeName" @keyup.enter.native="handleQuery"
:value="editedDeviceMode.deviceModeId" />
></el-option> </el-form-item>
</el-select> <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>
<el-form-item label="租户ID" prop="tenantId">
<el-form-item label="激活状态" prop="activeStatus"> <el-input
<el-select v-model="queryParams.activeStatus" placeholder="请选择" clearable> v-model="queryParams.tenantId"
<el-option placeholder="请输入租户ID"
v-for="dict in dict.type.hw_device_active_status" clearable
:key="dict.value" @keyup.enter.native="handleQuery"
:label="dict.label" />
:value="dict.value"
></el-option>
</el-select>
</el-form-item> </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-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <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> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
@ -110,6 +118,30 @@
>新增 >新增
</el-button> </el-button>
</el-col> </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-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
@ -128,42 +160,25 @@
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="设备编号" align="center" prop="deviceCode"/> <el-table-column label="设备编号" align="center" prop="deviceCode"/>
<el-table-column label="设备名称" align="center" prop="deviceName"/> <el-table-column label="设备名称" align="center" prop="deviceName"/>
<el-table-column label="设备类型" align="center" prop="deviceType"> <el-table-column label="所属场景" align="center" prop="sceneId"/>
<template slot-scope="scope"> <el-table-column label="所属监控单元" align="center" prop="monitorUnitId"/>
<dict-tag :options="dict.type.hw_device_type" :value="scope.row.deviceType"/> <el-table-column label="设备类型" align="center" prop="deviceType"/>
</template> <el-table-column label="联网方式" align="center" prop="networkingMode"/>
</el-table-column> <el-table-column label="接入协议" align="center" prop="accessProtocol"/>
<el-table-column label="数据格式" align="center" prop="dataFormat"/>
<el-table-column label="所属租户" align="center" prop="tenantName"/> <el-table-column label="设备模型" align="center" prop="deviceModeId"/>
<el-table-column label="所属场景" align="center" prop="sceneName"/> <el-table-column label="接入网关协议" align="center" prop="accessGwProtocol"/>
<el-table-column label="监控单元" align="center" prop="monitorUnitName"/> <el-table-column label="激活状态" align="center" prop="activeStatus"/>
<el-table-column label="设备模型" align="center" prop="deviceModeName"/> <el-table-column label="设备状态" align="center" prop="deviceStatus"/>
<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="activeTime" width="180"> <el-table-column label="设备激活时间" align="center" prop="activeTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.activeTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.activeTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="设备状态" align="center" prop="deviceStatus"> <el-table-column label="设备图片地址" align="center" prop="devicePic"/>
<template slot-scope="scope"> <el-table-column label="网络地址" align="center" prop="ipAddress"/>
<el-switch <el-table-column label="租户" align="center" prop="tenantId"/>
v-model="scope.row.deviceStatus" <el-table-column label="在线状态" align="center" prop="onlineStatus"/>
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" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -196,26 +211,15 @@
<!-- 添加或修改设备信息对话框 --> <!-- 添加或修改设备信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <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-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>
<el-form-item label="设备名称" prop="deviceName"> <el-form-item label="设备名称" prop="deviceName">
<el-input v-model="form.deviceName" placeholder="请输入设备名称"/> <el-input v-model="form.deviceName" placeholder="请输入设备名称"/>
</el-form-item> </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-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 <el-option
v-for="(scene, index) in scenes" v-for="(scene, index) in scenes"
:key="index" :key="index"
@ -225,13 +229,18 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="监控单元" prop="monitorUnitId"> <el-form-item label="所属监控单元" prop="monitorUnitId">
<treeselect v-model="form.monitorUnitId" :options="editedMonitorUnits" :show-count="true" <el-select v-model="form.monitorUnitId" placeholder="请选择" :disabled="disabled">
placeholder="请选择所属监控单元" :normalizer="normalizer" :flat="true"/> <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>
<el-form-item label="联网方式" prop="networkingMode">
<el-form-item label="联网方式" prop="networkingMode" v-if="deviceVisible">
<el-select v-model="form.networkingMode" placeholder="请选择数据类型"> <el-select v-model="form.networkingMode" placeholder="请选择数据类型">
<el-option <el-option
v-for="dict in dict.type.hw_device_networking_mode" v-for="dict in dict.type.hw_device_networking_mode"
@ -240,49 +249,23 @@
:value="dict.value" :value="dict.value"
></el-option> ></el-option>
</el-select> </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>
<el-form-item label="设备模型" prop="deviceModeId" v-if="subDeviceVisible"> <el-form-item label="接入协议" prop="accessProtocol">
<el-select v-model="form.deviceModeId" placeholder="请选择"> <el-input v-model="form.accessProtocol" placeholder="请输入接入协议"/>
<el-option </el-form-item>
v-for="(editedDeviceMode, index) in editedDeviceModes" <el-form-item label="数据格式" prop="dataFormat">
:key="index" <el-input v-model="form.dataFormat" placeholder="请输入数据格式"/>
:label="editedDeviceMode.deviceModeName" </el-form-item>
:value="editedDeviceMode.deviceModeId" <el-form-item label="关联设备" prop="releatedDeviceId">
></el-option> <el-input v-model="form.releatedDeviceId" placeholder="请输入关联设备hw_device表中国的device_id"/>
</el-select> </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>
<el-form-item label="描述" prop="remark"> <el-form-item label="描述" prop="remark">
@ -333,7 +316,7 @@
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <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> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -341,25 +324,11 @@
</template> </template>
<script> <script>
import { import {listDevice, getDevice, delDevice, addDevice, updateDevice,getMonitorTree} from "@/api/business/device";
listDevice, import {getScenes} from "@/api/business/scene";
getDevice,
delDevice,
addDevice,
updateDevice,
getScenes,
getMonitorTree,
getDeviceModes,
getGatewayDevices,
changeDeviceStatus
} from "@/api/business/device";
import {getToken} from "@/utils/auth"; 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 { 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'], 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", name: "Device",
props: { props: {
@ -404,35 +373,12 @@ export default {
deviceList: [], deviceList: [],
// //
scenes: [], scenes: [],
// //
editedMonitorUnits: undefined, monitorUnits: [],
//
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,
// //
title: "", title: "",
// //
open: false, open: false,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -463,25 +409,38 @@ export default {
// //
rules: { rules: {
deviceCode: [ deviceCode: [
{required: true, message: "设备编号不能为空", trigger: "blur"}, {required: true, message: "设备编号不能为空", trigger: "blur"}
{
pattern: /^[a-z][a-z0-9_]+$/,
message: "2-20个字符由小写字母、数字或下划线组成开头必须为小写字母",
trigger: "blur"
}
], ],
deviceName: [ deviceName: [
{required: true, message: "设备名称不能为空", trigger: "blur"} {required: true, message: "设备名称不能为空", trigger: "blur"}
], ],
sceneId: [ sceneId: [
{required: true, message: "所属场景不能为空", trigger: "change"} {required: true, message: "所属场景关联hw_scene表的scene_id字段不能为空", trigger: "blur"}
], ],
deviceType: [ deviceType: [
{required: true, message: "设备类型不能为空", trigger: "change"} {required: true, message: "设备类型不能为空", trigger: "change"}
], ],
monitorUnitId: [ networkingMode: [
{required: true, message: "监控单元不能为空", trigger: "change"} {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, number: 0,
uploadList: [], uploadList: [],
@ -496,7 +455,9 @@ export default {
}; };
}, },
created() { created() {
getMonitorTree().then(response => {
alert(JSON.stringify(response.data));
});
this.getList(); this.getList();
getScenes().then(response => { getScenes().then(response => {
this.scenes = response.data; this.scenes = response.data;
@ -512,18 +473,11 @@ export default {
showTip() { showTip() {
return this.isShowTip && (this.fileType || this.fileSize); 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: { methods: {
getMonitorUnitTree(){
},
/** 查询设备信息列表 */ /** 查询设备信息列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -540,15 +494,13 @@ export default {
}, },
// //
reset() { reset() {
this.subDeviceVisible = true;
this.deviceVisible = false;
this.form = { this.form = {
deviceId: null, deviceId: null,
deviceCode: null, deviceCode: null,
deviceName: null, deviceName: null,
sceneId: null, sceneId: null,
monitorUnitId: null, monitorUnitId: null,
deviceType: "2", deviceType: 2,
networkingMode: null, networkingMode: null,
accessProtocol: null, accessProtocol: null,
dataFormat: null, dataFormat: null,
@ -588,41 +540,15 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.deviceTypeDisabled = false;
this.fileList = [];
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "添加设备信息"; this.title = "添加设备信息";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.deviceTypeDisabled = true;
this.reset(); this.reset();
this.fileList = [];
const deviceId = row.deviceId || this.ids const deviceId = row.deviceId || this.ids
getDevice(deviceId).then(response => { 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.form = response.data;
this.open = true; this.open = true;
this.title = "修改设备信息"; this.title = "修改设备信息";
@ -634,31 +560,6 @@ export default {
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (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) { if (this.form.deviceId != null) {
updateDevice(this.form).then(response => { updateDevice(this.form).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
@ -733,7 +634,7 @@ export default {
// //
handleExceed() { handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} !`); this.$modal.msgError(`上传文件数量不能超过 ${this.limit} limit!`);
}, },
// //
handleUploadSuccess(res, file) { handleUploadSuccess(res, file) {
@ -790,94 +691,7 @@ export default {
} }
} }
return strs != '' ? strs.substr(0, strs.length - 1) : ''; 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> </script>

Loading…
Cancel
Save