diff --git a/.idea/httpRequests/http-requests-log.http b/.idea/httpRequests/http-requests-log.http index c227406..ec4c717 100644 --- a/.idea/httpRequests/http-requests-log.http +++ b/.idea/httpRequests/http-requests-log.http @@ -1,3 +1,21 @@ +POST http://localhost/monitorUnit/getDeviceOperations + + } + +### + +POST http://localhost:9601/monitorUnit/export + +<> 2023-09-05T031749.200.json + +### + +GET http://localhost:9601/monitorUnit/ElectronicNumVo + +<> 2023-09-05T031734.200.json + +### + POST http://localhost:9602/tdengine/getOnlineDevicesGroupByDay Content-Type: application/json Content-Length: 71 @@ -1306,93 +1324,3 @@ Accept-Encoding: br,deflate,gzip,x-gzip ### -POST http://localhost:9602/tdengine/insertTable -Content-Type: application/json -Content-Length: 293 -Connection: Keep-Alive -User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.8) -Accept-Encoding: br,deflate,gzip,x-gzip - -{ - "databaseName": "db_scene_1", - "tableName": "t_ds_1", - "schemaFields": [ - { - "fieldName": "onlineStatus", - "fieldValue": 0 - }, - { - "fieldName": "deviceType", - "fieldValue": 1 - }, - { - "fieldName": "ts", - "fieldValue": 1693696189106 - } - ] -} - -<> 2023-09-05T142206.200.json - -### - -POST http://localhost:9602/tdengine/insertTable -Content-Type: application/json -Content-Length: 293 -Connection: Keep-Alive -User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.8) -Accept-Encoding: br,deflate,gzip,x-gzip - -{ - "databaseName": "db_scene_1", - "tableName": "t_ds_1", - "schemaFields": [ - { - "fieldName": "onlineStatus", - "fieldValue": 0 - }, - { - "fieldName": "deviceType", - "fieldValue": 1 - }, - { - "fieldName": "ts", - "fieldValue": 1693296189106 - } - ] -} - -<> 2023-09-05T142158.200.json - -### - -POST http://localhost:9602/tdengine/insertTable -Content-Type: application/json -Content-Length: 293 -Connection: Keep-Alive -User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.8) -Accept-Encoding: br,deflate,gzip,x-gzip - -{ - "databaseName": "db_scene_1", - "tableName": "t_ds_1", - "schemaFields": [ - { - "fieldName": "onlineStatus", - "fieldValue": 1 - }, - { - "fieldName": "deviceType", - "fieldValue": 1 - }, - { - "fieldName": "ts", - "fieldValue": 1693296188106 - } - ] -} - -<> 2023-09-05T142143.200.json - -### - diff --git a/ruoyi-modules/hw-business/pom.xml b/ruoyi-modules/hw-business/pom.xml index d193c8e..f2407d2 100644 --- a/ruoyi-modules/hw-business/pom.xml +++ b/ruoyi-modules/hw-business/pom.xml @@ -94,6 +94,16 @@ + + junit + junit + + + com.ruoyi + hw-api-tdengine + 3.6.3 + compile + @@ -113,4 +123,4 @@ - \ No newline at end of file + diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwDeviceController.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwDeviceController.java index b5b8c91..2c9a3a2 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwDeviceController.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwDeviceController.java @@ -1,8 +1,11 @@ package com.ruoyi.business.controller; import java.util.List; -import java.io.IOException; +import java.util.Map; import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.business.domain.VO.DeviceModeVo; +import com.ruoyi.business.domain.VO.HwMonitorUnitVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -24,7 +27,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo; /** * 设备信息Controller - * + * * @author xins * @date 2023-08-24 */ @@ -47,6 +50,9 @@ public class HwDeviceController extends BaseController return getDataTable(list); } + + + /** * 导出设备信息列表 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitController.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitController.java index 7545138..ce91657 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitController.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitController.java @@ -1,8 +1,17 @@ package com.ruoyi.business.controller; +import java.util.ArrayList; import java.util.List; -import java.io.IOException; +import java.util.Map; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.business.domain.HwScene; +import com.ruoyi.business.domain.VO.*; +import com.ruoyi.business.mapper.HwSceneMapper; +import com.ruoyi.business.service.IHwDeviceService; +import com.ruoyi.business.service.IHwSceneService; +import com.ruoyi.common.core.domain.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -24,7 +33,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo; /** * 监控单元Controller - * + * * @author YINQ * @date 2023-08-31 */ @@ -34,6 +43,12 @@ public class HwMonitorUnitController extends BaseController { @Autowired private IHwMonitorUnitService hwMonitorUnitService; + @Autowired + private IHwDeviceService hwDeviceService; + @Autowired + private IHwSceneService hwSceneService; + + /** * 查询监控单元列表 @@ -46,7 +61,136 @@ public class HwMonitorUnitController extends BaseController List list = hwMonitorUnitService.selectHwMonitorUnitList(hwMonitorUnit); return getDataTable(list); } + /** + * 树状获取监控单元列表 + * */ + @GetMapping("/treeList") + public TableDataInfo treeList(List hwMonitorUnits){ + List list = hwMonitorUnitService.selectTreeList(hwMonitorUnits); + return getDataTable(list); + } + //选择场景 + @GetMapping("/selectHwSceneBySceneModeId") + public TableDataInfo selectHwSceneBySceneModeId(Long sceneModeId){ + List hwScenes = hwSceneService.selectHwSceneBySceneModeId(sceneModeId); + return getDataTable(hwScenes); + } + /** + * 查询3. 设备各类型占所有设备数量百分比饼状图(左下角) + * */ + @GetMapping("/monitorUnitPercentage") + public TableDataInfo monitorUnitPercentage(){ + List maps = hwDeviceService.selectDeviceModeNameVo(); + return getDataTable(maps); + } + //获取有开关属性的设备 + @PostMapping("/selectDeviceByDeviceModeByMonitorUnitId") + public Map> selectDeviceByDeviceModeByMonitorUnitId(Long monitorUnitId){ + startPage(); + Map> maps = hwDeviceService.selectDeviceByDeviceModeByMonitorUnitId(monitorUnitId); + return maps; + } + //获取直采变量的设备 + @PostMapping("/selectDeviceModeFunctionByFunctionType") + public Map> selectDeviceModeFunctionByFunctionType(Long monitorUnitId){ + startPage(); + Map> maps = hwDeviceService.selectDeviceModeFunctionByFunctionType(monitorUnitId); + return maps; + } + //设备历史数据 + @PostMapping("/getHistoryData") + public TableDataInfo getHistoryData(Long deviceId){ + startPage(); + List> historyData = hwDeviceService.getHistoryData(deviceId); + return getDataTable(historyData); + } + /** + * 查询区域数量站场景区总数百分比 + * */ + @GetMapping("/monitorPercentage") + public TableDataInfo monitorPercentage(){ + List maps = hwMonitorUnitService.selectMonitorPercentage(); + return getDataTable(maps); +} + /** + *  展示总的设备数量和总的监控单元数量 + * */ + @GetMapping("/allNums") + public AllNumsVo allNums(){ + AllNumsVo allNumsVos = hwMonitorUnitService.selectAllNums(); + + return allNumsVos; + } + /** + *  按场景展示总的设备数量和总的监控单元数量 + * */ + @GetMapping("/sceneAllNums") + public TableDataInfo sceneAllNums(){ + List allNumsVos = hwMonitorUnitService.selectSenceAllNums(); + + return getDataTable(allNumsVos); + } + /** + * 分页获取最子集监控单元列表 + * */ + @PostMapping("/limitSubMonitorUnit") + public TableDataInfo limitSubMonitorUnit(){ + startPage(); + List hwMonitorUnits = hwMonitorUnitService.selectLimitSubMonitorUnit(); + return getDataTable(hwMonitorUnits); + } + /** + * 监控单元报警统计 + */ + @GetMapping("/alarmStats") + public TableDataInfo alarmStats(){ + List alarmStatsVos = hwMonitorUnitService.selectAlarmStats(); + return getDataTable(alarmStatsVos); + } + /** + * 获取最子级监控单元数量、设备数量和在线设备数量 + * */ + @GetMapping("/SubDevice") + public SubDeviceSumVo subDevice(Long sceneId){ + SubDeviceSumVo subDeviceSumVos = hwMonitorUnitService.selectSubDeviceSum(sceneId); + + return subDeviceSumVos; + } + /** + * 按电子围栏定位显示其下设备数量,以及报警的设备数量。 + * */ + @PostMapping("/ElectronicNumVo") + public AjaxResult ElectronicNumVo(Long sceneId){ + Integer integer = hwMonitorUnitService.selectElectronicNum(sceneId); + return success(integer); + } + /** + * 获取监控单元详细信息 + * */ + @GetMapping("/selectMonitorUnitSub") + //ok + public HwMonitorUnit selectMonitorUnitSub(Long monitorUnitId){ + HwMonitorUnit hwMonitorUnits = hwMonitorUnitService.selectHwMonitorUnitByMonitorUnitId(monitorUnitId); + + return hwMonitorUnits; + } + /** + * 2. 设备实时在运数量曲线图 + * */ + @PostMapping("/getDeviceOperations") + public Integer selectTdengine(String beginTime,String endTime,Long sceneId){ + int ints = hwMonitorUnitService.selectTdengine(beginTime,endTime,sceneId); + return ints; + } + /** + * 通过tde获取各设备最新的一条信息 + * */ +// @PostMapping("/selectLatestDataByTags") +// public TableDataInfo selectLatestDataByTags(Long monitorUnitId){ +// List> list= hwMonitorUnitService.selectLatestDataByTags(monitorUnitId); +// return getDataTable(list); +// } /** * 导出监控单元列表 */ @@ -70,6 +214,7 @@ public class HwMonitorUnitController extends BaseController return success(hwMonitorUnitService.selectHwMonitorUnitByMonitorUnitId(monitorUnitId)); } + /** * 新增监控单元 */ @@ -102,4 +247,9 @@ public class HwMonitorUnitController extends BaseController { return toAjax(hwMonitorUnitService.deleteHwMonitorUnitByMonitorUnitIds(monitorUnitIds)); } + + + + + } diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitTypeController.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitTypeController.java index 75205aa..421159e 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitTypeController.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwMonitorUnitTypeController.java @@ -1,8 +1,8 @@ package com.ruoyi.business.controller; import java.util.List; -import java.io.IOException; import javax.servlet.http.HttpServletResponse; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -24,7 +24,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo; /** * 监控单元类型Controller - * + * * @author YINQ * @date 2023-08-31 */ @@ -47,6 +47,7 @@ public class HwMonitorUnitTypeController extends BaseController return getDataTable(list); } + /** * 导出监控单元类型列表 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwSceneController.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwSceneController.java index 006bc04..a2a88bb 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwSceneController.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/controller/HwSceneController.java @@ -24,7 +24,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo; /** * 场景信息Controller - * + * * @author xins * @date 2023-08-23 */ @@ -58,6 +58,7 @@ public class HwSceneController extends BaseController return getDataTable(list); } + /** * 导出场景信息列表 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwMonitorUnit.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwMonitorUnit.java index e2bcd05..6772942 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwMonitorUnit.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/domain/HwMonitorUnit.java @@ -1,6 +1,9 @@ package com.ruoyi.business.domain; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.core.annotation.Excel; @@ -8,7 +11,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity; /** * 监控单元对象 hw_monitor_unit - * + * * @author YINQ * @date 2023-08-31 */ @@ -58,103 +61,112 @@ public class HwMonitorUnit extends BaseEntity /** 预留字段 */ @Excel(name = "预留字段") private String monitorUnitField; + private List child = new ArrayList(); + + public List getChild() { + return child; + } + + public void setChild(List child) { + this.child = child; + } - public void setMonitorUnitId(Long monitorUnitId) + public void setMonitorUnitId(Long monitorUnitId) { this.monitorUnitId = monitorUnitId; } - public Long getMonitorUnitId() + public Long getMonitorUnitId() { return monitorUnitId; } - public void setMonitorUnitName(String monitorUnitName) + public void setMonitorUnitName(String monitorUnitName) { this.monitorUnitName = monitorUnitName; } - public String getMonitorUnitName() + public String getMonitorUnitName() { return monitorUnitName; } - public void setSceneId(Long sceneId) + public void setSceneId(Long sceneId) { this.sceneId = sceneId; } - public Long getSceneId() + public Long getSceneId() { return sceneId; } - public void setParentId(Long parentId) + public void setParentId(Long parentId) { this.parentId = parentId; } - public Long getParentId() + public Long getParentId() { return parentId; } - public void setMonitorUnitTypeId(Long monitorUnitTypeId) + public void setMonitorUnitTypeId(Long monitorUnitTypeId) { this.monitorUnitTypeId = monitorUnitTypeId; } - public Long getMonitorUnitTypeId() + public Long getMonitorUnitTypeId() { return monitorUnitTypeId; } - public void setAreaId(Long areaId) + public void setAreaId(Long areaId) { this.areaId = areaId; } - public Long getAreaId() + public Long getAreaId() { return areaId; } - public void setMonitorAddress(String monitorAddress) + public void setMonitorAddress(String monitorAddress) { this.monitorAddress = monitorAddress; } - public String getMonitorAddress() + public String getMonitorAddress() { return monitorAddress; } - public void setMonitorPic(String monitorPic) + public void setMonitorPic(String monitorPic) { this.monitorPic = monitorPic; } - public String getMonitorPic() + public String getMonitorPic() { return monitorPic; } - public void setPreserveTime(BigDecimal preserveTime) + public void setPreserveTime(BigDecimal preserveTime) { this.preserveTime = preserveTime; } - public BigDecimal getPreserveTime() + public BigDecimal getPreserveTime() { return preserveTime; } - public void setMonitorUnitStatus(Long monitorUnitStatus) + public void setMonitorUnitStatus(Long monitorUnitStatus) { this.monitorUnitStatus = monitorUnitStatus; } - public Long getMonitorUnitStatus() + public Long getMonitorUnitStatus() { return monitorUnitStatus; } - public void setMonitorUnitField(String monitorUnitField) + public void setMonitorUnitField(String monitorUnitField) { this.monitorUnitField = monitorUnitField; } - public String getMonitorUnitField() + public String getMonitorUnitField() { return monitorUnitField; } diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java index 6bd4696..0a96cf5 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwDeviceMapper.java @@ -2,34 +2,47 @@ package com.ruoyi.business.mapper; import java.util.List; import com.ruoyi.business.domain.HwDevice; +import com.ruoyi.business.domain.VO.DeviceModeVo; +import com.ruoyi.business.domain.VO.HwMonitorUnitVo; /** * 设备信息Mapper接口 - * + * * @author xins * @date 2023-08-24 */ -public interface HwDeviceMapper +public interface HwDeviceMapper { /** * 查询设备信息 - * + * * @param deviceId 设备信息主键 * @return 设备信息 */ public HwDevice selectHwDeviceByDeviceId(Long deviceId); + List selectDeviceByMonitorId(Long monitorUnitId); + /** + * 查询3. 设备各类型占所有设备数量百分比饼状图(左下角) + * */ + public List selectDeviceModeNameVo(); /** * 查询设备信息列表 - * + * * @param hwDevice 设备信息 * @return 设备信息集合 */ public List selectHwDeviceList(HwDevice hwDevice); + public List selectDeviceByDeviceModeBySceneId(Long sceneId); + public List selectDeviceByDeviceModeByMonitorUnitId(Long monitor_unit_id); + String selectDeviceByDeviceModeByDeviceModeFunction(Long deviceId); + String selectDeviceModeFunctionByFunctionType(Long deviceId); + List selectDeviceNum(Long sceneId); + /** * 新增设备信息 - * + * * @param hwDevice 设备信息 * @return 结果 */ @@ -37,7 +50,7 @@ public interface HwDeviceMapper /** * 修改设备信息 - * + * * @param hwDevice 设备信息 * @return 结果 */ @@ -45,7 +58,7 @@ public interface HwDeviceMapper /** * 删除设备信息 - * + * * @param deviceId 设备信息主键 * @return 结果 */ @@ -53,7 +66,7 @@ public interface HwDeviceMapper /** * 批量删除设备信息 - * + * * @param deviceIds 需要删除的数据主键集合 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwElectronicFenceMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwElectronicFenceMapper.java index 9abc269..d28058c 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwElectronicFenceMapper.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwElectronicFenceMapper.java @@ -5,23 +5,27 @@ import com.ruoyi.business.domain.HwElectronicFence; /** * 电子围栏Mapper接口 - * + * * @author xins * @date 2023-09-04 */ -public interface HwElectronicFenceMapper +public interface HwElectronicFenceMapper { /** * 查询电子围栏 - * + * * @param electronicFenceId 电子围栏主键 * @return 电子围栏 */ public HwElectronicFence selectHwElectronicFenceByElectronicFenceId(Long electronicFenceId); + /** + * 根据场景查询电子围栏信息 + * */ + public List selectElectronicByScene(Long sceneId); /** * 查询电子围栏列表 - * + * * @param hwElectronicFence 电子围栏 * @return 电子围栏集合 */ @@ -29,7 +33,7 @@ public interface HwElectronicFenceMapper /** * 新增电子围栏 - * + * * @param hwElectronicFence 电子围栏 * @return 结果 */ @@ -37,7 +41,7 @@ public interface HwElectronicFenceMapper /** * 修改电子围栏 - * + * * @param hwElectronicFence 电子围栏 * @return 结果 */ @@ -45,7 +49,7 @@ public interface HwElectronicFenceMapper /** * 删除电子围栏 - * + * * @param electronicFenceId 电子围栏主键 * @return 结果 */ @@ -53,7 +57,7 @@ public interface HwElectronicFenceMapper /** * 批量删除电子围栏 - * + * * @param electronicFenceIds 需要删除的数据主键集合 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitMapper.java index d3357a6..df73d1d 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitMapper.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitMapper.java @@ -1,35 +1,89 @@ package com.ruoyi.business.mapper; import java.util.List; + +import com.alibaba.druid.support.http.MonitorClientContextListener; import com.ruoyi.business.domain.HwMonitorUnit; +import com.ruoyi.business.domain.HwScene; +import com.ruoyi.business.domain.VO.*; /** * 监控单元Mapper接口 - * + * * @author YINQ * @date 2023-08-31 */ -public interface HwMonitorUnitMapper +public interface HwMonitorUnitMapper { /** * 查询监控单元 - * + * * @param monitorUnitId 监控单元主键 * @return 监控单元 */ public HwMonitorUnit selectHwMonitorUnitByMonitorUnitId(Long monitorUnitId); + /** + * 查询区域数量站场景区总数百分比(左上角) + * */ + public List selectMonitorPercentage(); + /** + *  展示总的设备数量和总的监控单元数量(最低级的监控单元) + * */ + public List selectAllNums(); + public List selectsum(); + //查询id与name的结果集 + List selectSceneNameById(); + String selectSubSetNums(); + + /** + * 分页获取最子集监控单元列表 + * */ + public List selectLimitSubMonitorUnit(); + Integer selectReleatedDeviceIdNums(Long deviceCode); + Integer selectDeviceNums(); + Integer selectSubDeviceSum(Long sceneId); + + /** + * 监控单元报警统计 + * */ + public List selectAlarmStats(); + /** + * 获取最子级监控单元数量、设备数量和在线设备数量 + * */ + public List selectSubDeviceSum(); + /** + * 按电子围栏定位显示其下设备数量,以及报警的设备数量。 + * */ + public List selectElectronicNum(Long sceneId); + //查询场景下电子围栏 + public List selectEleInScene(Long sceneId); + public String selectEleType2(Long electronicFenceId); + public String selectEleType3(Long sceneId); + + public Integer selectDeviceType2Nums(Long sceneId); /** * 查询监控单元列表 - * + * * @param hwMonitorUnit 监控单元 * @return 监控单元集合 */ public List selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit); + /** + * 树状获取监控单元列表 + * */ + //查询子集 + public List selectHwMonitorUnitByParent(Long monitorUnitId); + //查询最小单元的详细信息 + public List selectHwmonitorUnitSub(Long monitorUnitId); + //查询是否为最小单元 + public String selectHwMonitorUnitIsParent(Long monitorUnitId); + public List selectHaveEleDevice(Long sceneId); + public List selectMonitorUnitHaveEle(Long sceneId); /** * 新增监控单元 - * + * * @param hwMonitorUnit 监控单元 * @return 结果 */ @@ -37,7 +91,7 @@ public interface HwMonitorUnitMapper /** * 修改监控单元 - * + * * @param hwMonitorUnit 监控单元 * @return 结果 */ @@ -45,7 +99,7 @@ public interface HwMonitorUnitMapper /** * 删除监控单元 - * + * * @param monitorUnitId 监控单元主键 * @return 结果 */ @@ -53,7 +107,7 @@ public interface HwMonitorUnitMapper /** * 批量删除监控单元 - * + * * @param monitorUnitIds 需要删除的数据主键集合 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitTypeMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitTypeMapper.java index 8494d32..7b35a50 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitTypeMapper.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwMonitorUnitTypeMapper.java @@ -2,18 +2,19 @@ package com.ruoyi.business.mapper; import java.util.List; import com.ruoyi.business.domain.HwMonitorUnitType; +import com.ruoyi.business.domain.VO.DeviceModeVo; /** * 监控单元类型Mapper接口 - * + * * @author YINQ * @date 2023-08-31 */ -public interface HwMonitorUnitTypeMapper +public interface HwMonitorUnitTypeMapper { /** * 查询监控单元类型 - * + * * @param monitorUnitTypeId 监控单元类型主键 * @return 监控单元类型 */ @@ -21,15 +22,18 @@ public interface HwMonitorUnitTypeMapper /** * 查询监控单元类型列表 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 监控单元类型集合 */ public List selectHwMonitorUnitTypeList(HwMonitorUnitType hwMonitorUnitType); + + + /** * 新增监控单元类型 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 结果 */ @@ -37,7 +41,7 @@ public interface HwMonitorUnitTypeMapper /** * 修改监控单元类型 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 结果 */ @@ -45,7 +49,7 @@ public interface HwMonitorUnitTypeMapper /** * 删除监控单元类型 - * + * * @param monitorUnitTypeId 监控单元类型主键 * @return 结果 */ @@ -53,7 +57,7 @@ public interface HwMonitorUnitTypeMapper /** * 批量删除监控单元类型 - * + * * @param monitorUnitTypeIds 需要删除的数据主键集合 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwSceneMapper.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwSceneMapper.java index ecaeea9..3cb3497 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwSceneMapper.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/mapper/HwSceneMapper.java @@ -5,23 +5,25 @@ import com.ruoyi.business.domain.HwScene; /** * 场景信息Mapper接口 - * + * * @author xins * @date 2023-08-23 */ -public interface HwSceneMapper +public interface HwSceneMapper { /** * 查询场景信息 - * + * * @param sceneId 场景信息主键 * @return 场景信息 */ public HwScene selectHwSceneBySceneId(Long sceneId); + public List selectHwSceneBySceneModeId(Long sceneModeId); + /** * 查询场景信息列表 - * + * * @param hwScene 场景信息 * @return 场景信息集合 */ @@ -29,7 +31,7 @@ public interface HwSceneMapper /** * 新增场景信息 - * + * * @param hwScene 场景信息 * @return 结果 */ @@ -37,7 +39,7 @@ public interface HwSceneMapper /** * 修改场景信息 - * + * * @param hwScene 场景信息 * @return 结果 */ @@ -45,7 +47,7 @@ public interface HwSceneMapper /** * 删除场景信息 - * + * * @param sceneId 场景信息主键 * @return 结果 */ @@ -53,7 +55,7 @@ public interface HwSceneMapper /** * 批量删除场景信息 - * + * * @param sceneIds 需要删除的数据主键集合 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java index 3a2afc2..479c2a1 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwDeviceService.java @@ -1,27 +1,41 @@ package com.ruoyi.business.service; import java.util.List; +import java.util.Map; + import com.ruoyi.business.domain.HwDevice; +import com.ruoyi.business.domain.VO.DeviceModeVo; +import com.ruoyi.business.domain.VO.HwMonitorUnitVo; + /** * 设备信息Service接口 - * + * * @author xins * @date 2023-08-24 */ -public interface IHwDeviceService +public interface IHwDeviceService { /** * 查询设备信息 - * + * * @param deviceId 设备信息主键 * @return 设备信息 */ public HwDevice selectHwDeviceByDeviceId(Long deviceId); + /** + * 查询3. 设备各类型占所有设备数量百分比饼状图(左下角) + * */ + public List selectDeviceModeNameVo(); + + public Map> selectDeviceByDeviceModeByMonitorUnitId(Long monitorUnitId); + public Map> selectDeviceModeFunctionByFunctionType(Long monitorUnitId); + + public List> getHistoryData(Long deviceId); /** * 查询设备信息列表 - * + * * @param hwDevice 设备信息 * @return 设备信息集合 */ @@ -29,7 +43,7 @@ public interface IHwDeviceService /** * 新增设备信息 - * + * * @param hwDevice 设备信息 * @return 结果 */ @@ -37,7 +51,7 @@ public interface IHwDeviceService /** * 修改设备信息 - * + * * @param hwDevice 设备信息 * @return 结果 */ @@ -45,7 +59,7 @@ public interface IHwDeviceService /** * 批量删除设备信息 - * + * * @param deviceIds 需要删除的设备信息主键集合 * @return 结果 */ @@ -53,7 +67,7 @@ public interface IHwDeviceService /** * 删除设备信息信息 - * + * * @param deviceId 设备信息主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwElectronicFenceService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwElectronicFenceService.java index 2f340b0..17c3106 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwElectronicFenceService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwElectronicFenceService.java @@ -5,23 +5,26 @@ import com.ruoyi.business.domain.HwElectronicFence; /** * 电子围栏Service接口 - * + * * @author xins * @date 2023-09-04 */ -public interface IHwElectronicFenceService +public interface IHwElectronicFenceService { /** * 查询电子围栏 - * + * * @param electronicFenceId 电子围栏主键 * @return 电子围栏 */ public HwElectronicFence selectHwElectronicFenceByElectronicFenceId(Long electronicFenceId); - + /** + * 根据场景查询电子围栏信息 + * */ + public List selectElectronicByScene(Long sceneId); /** * 查询电子围栏列表 - * + * * @param hwElectronicFence 电子围栏 * @return 电子围栏集合 */ @@ -29,7 +32,7 @@ public interface IHwElectronicFenceService /** * 新增电子围栏 - * + * * @param hwElectronicFence 电子围栏 * @return 结果 */ @@ -37,7 +40,7 @@ public interface IHwElectronicFenceService /** * 修改电子围栏 - * + * * @param hwElectronicFence 电子围栏 * @return 结果 */ @@ -45,7 +48,7 @@ public interface IHwElectronicFenceService /** * 批量删除电子围栏 - * + * * @param electronicFenceIds 需要删除的电子围栏主键集合 * @return 结果 */ @@ -53,7 +56,7 @@ public interface IHwElectronicFenceService /** * 删除电子围栏信息 - * + * * @param electronicFenceId 电子围栏主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitService.java index 32d5c29..eb21539 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitService.java @@ -1,35 +1,87 @@ package com.ruoyi.business.service; import java.util.List; +import java.util.Map; + import com.ruoyi.business.domain.HwMonitorUnit; +import com.ruoyi.business.domain.VO.*; + /** * 监控单元Service接口 - * + * * @author YINQ * @date 2023-08-31 */ -public interface IHwMonitorUnitService +public interface IHwMonitorUnitService { /** * 查询监控单元 - * + * * @param monitorUnitId 监控单元主键 * @return 监控单元 */ public HwMonitorUnit selectHwMonitorUnitByMonitorUnitId(Long monitorUnitId); + /** + * 查询区域数量站场景区总数百分比 + * */ + public List selectMonitorPercentage(); + /** + *  展示总的设备数量和总的监控单元数量(最低级的监控单元) + * */ + public AllNumsVo selectAllNums(); + public List selectSenceAllNums(); + + /** + * 分页获取最子集监控单元列表 + * */ + public List selectLimitSubMonitorUnit(); + + + /** + * 监控单元报警统计 + * */ + public List selectAlarmStats(); /** * 查询监控单元列表 - * + * * @param hwMonitorUnit 监控单元 * @return 监控单元集合 */ public List selectHwMonitorUnitList(HwMonitorUnit hwMonitorUnit); /** + * 获取最子级监控单元数量、设备数量和在线设备数量 + * */ + public SubDeviceSumVo selectSubDeviceSum(Long sceneId); + /** + * 按电子围栏定位显示其下设备数量,以及报警的设备数量。 + * */ + public Integer selectElectronicNum(Long sceneId); + /** + * 树状获取监控单元列表 + * */ + public List selectTreeList(List hwMonitorUnits); + /** + * 获取监控单元详细信息 + * */ + public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId); + /** + * 通过tdengine获取设备运行情况 + * + * @return*/ + public int selectTdengine(String beginTime,String endTime,Long sceneId); + /** + * 通过tde获取最新的一条信息 + * + * @return*/ +// public List> selectLatestDataByTags(Long monitorUnitId); + + + /** * 新增监控单元 - * + * * @param hwMonitorUnit 监控单元 * @return 结果 */ @@ -37,7 +89,7 @@ public interface IHwMonitorUnitService /** * 修改监控单元 - * + * * @param hwMonitorUnit 监控单元 * @return 结果 */ @@ -45,7 +97,7 @@ public interface IHwMonitorUnitService /** * 批量删除监控单元 - * + * * @param monitorUnitIds 需要删除的监控单元主键集合 * @return 结果 */ @@ -53,7 +105,7 @@ public interface IHwMonitorUnitService /** * 删除监控单元信息 - * + * * @param monitorUnitId 监控单元主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitTypeService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitTypeService.java index 27db2f5..7264789 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitTypeService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwMonitorUnitTypeService.java @@ -5,31 +5,35 @@ import com.ruoyi.business.domain.HwMonitorUnitType; /** * 监控单元类型Service接口 - * + * * @author YINQ * @date 2023-08-31 */ -public interface IHwMonitorUnitTypeService +public interface IHwMonitorUnitTypeService { /** * 查询监控单元类型 - * + * * @param monitorUnitTypeId 监控单元类型主键 * @return 监控单元类型 */ public HwMonitorUnitType selectHwMonitorUnitTypeByMonitorUnitTypeId(Long monitorUnitTypeId); + /** * 查询监控单元类型列表 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 监控单元类型集合 */ public List selectHwMonitorUnitTypeList(HwMonitorUnitType hwMonitorUnitType); + + + /** * 新增监控单元类型 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 结果 */ @@ -37,7 +41,7 @@ public interface IHwMonitorUnitTypeService /** * 修改监控单元类型 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 结果 */ @@ -45,7 +49,7 @@ public interface IHwMonitorUnitTypeService /** * 批量删除监控单元类型 - * + * * @param monitorUnitTypeIds 需要删除的监控单元类型主键集合 * @return 结果 */ @@ -53,7 +57,7 @@ public interface IHwMonitorUnitTypeService /** * 删除监控单元类型信息 - * + * * @param monitorUnitTypeId 监控单元类型主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwSceneService.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwSceneService.java index f4c4ff6..c3eb04a 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwSceneService.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/IHwSceneService.java @@ -5,23 +5,25 @@ import com.ruoyi.business.domain.HwScene; /** * 场景信息Service接口 - * + * * @author xins * @date 2023-08-23 */ -public interface IHwSceneService +public interface IHwSceneService { /** * 查询场景信息 - * + * * @param sceneId 场景信息主键 * @return 场景信息 */ public HwScene selectHwSceneBySceneId(Long sceneId); + //选择场景 + public List selectHwSceneBySceneModeId(Long sceneModeId); /** * 查询场景信息列表 - * + * * @param hwScene 场景信息 * @return 场景信息集合 */ @@ -29,7 +31,7 @@ public interface IHwSceneService /** * 新增场景信息 - * + * * @param hwScene 场景信息 * @return 结果 */ @@ -37,7 +39,7 @@ public interface IHwSceneService /** * 修改场景信息 - * + * * @param hwScene 场景信息 * @return 结果 */ @@ -45,7 +47,7 @@ public interface IHwSceneService /** * 批量删除场景信息 - * + * * @param sceneIds 需要删除的场景信息主键集合 * @return 结果 */ @@ -53,7 +55,7 @@ public interface IHwSceneService /** * 删除场景信息信息 - * + * * @param sceneId 场景信息主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java index 8cadd7a..d349de9 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java @@ -1,7 +1,17 @@ package com.ruoyi.business.service.impl; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import com.ruoyi.business.domain.VO.DeviceModeVo; +import com.ruoyi.common.core.constant.TdEngineConstants; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.tdengine.api.RemoteTdEngineService; +import com.ruoyi.tdengine.api.domain.TdHistorySelectDto; +import com.ruoyi.tdengine.api.domain.TdSelectDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.business.mapper.HwDeviceMapper; @@ -10,19 +20,21 @@ import com.ruoyi.business.service.IHwDeviceService; /** * 设备信息Service业务层处理 - * + * * @author xins * @date 2023-08-24 */ @Service -public class HwDeviceServiceImpl implements IHwDeviceService +public class HwDeviceServiceImpl implements IHwDeviceService { @Autowired private HwDeviceMapper hwDeviceMapper; + @Autowired + private RemoteTdEngineService remoteTdEgineService; /** * 查询设备信息 - * + * * @param deviceId 设备信息主键 * @return 设备信息 */ @@ -34,7 +46,7 @@ public class HwDeviceServiceImpl implements IHwDeviceService /** * 查询设备信息列表 - * + * * @param hwDevice 设备信息 * @return 设备信息 */ @@ -46,7 +58,7 @@ public class HwDeviceServiceImpl implements IHwDeviceService /** * 新增设备信息 - * + * * @param hwDevice 设备信息 * @return 结果 */ @@ -56,10 +68,86 @@ public class HwDeviceServiceImpl implements IHwDeviceService hwDevice.setCreateTime(DateUtils.getNowDate()); return hwDeviceMapper.insertHwDevice(hwDevice); } + /** + * 查询3. 设备各类型占所有设备数量百分比饼状图(左下角) + * */ + @Override + public List selectDeviceModeNameVo() { + List list = hwDeviceMapper.selectDeviceModeNameVo(); + Integer value = 0; + if (list.size() > 10) { + for (int i = 9; i < list.size(); i++) { + value = value + list.get(i).sum; + } + } + DeviceModeVo hwMonitorUnitTypeVo = new DeviceModeVo(); + hwMonitorUnitTypeVo.setMonitorUnitTypeName("其他"); + hwMonitorUnitTypeVo.setSum(value); + Integer sums = 0; + for (int i = 0; i < list.size();i++){ + sums = sums+list.get(i).sum; + } + for (int i=0;i 10) { + list.add(10, hwMonitorUnitTypeVo); + return list.subList(0, 10); + } else { + return list; + } + } + //获取有开关属性的设备 + @Override + public Map> selectDeviceByDeviceModeByMonitorUnitId(Long monitorUnitId){ + List hwDevices = hwDeviceMapper.selectDeviceByDeviceModeByMonitorUnitId(monitorUnitId);//todo 根据监控单元(已解决) + TdSelectDto tdSelectDto = new TdSelectDto(); + Map> latestDataByTags = new HashMap>(); + for (int i = 0; i < hwDevices.size(); i++){ + String s = hwDeviceMapper.selectDeviceByDeviceModeByDeviceModeFunction(hwDevices.get(i).getDeviceId()); + if (s!=null&&s!=""){ + tdSelectDto.setDatabaseName(TdEngineConstants.PLATFORM_DB_NAME); + tdSelectDto.setSuperTableName(TdEngineConstants.DEFAULT_DEVICE_STATUS_SUPER_TABLE_NAME); + tdSelectDto.setTagsName(hwDevices.get(i).getDeviceCode()); + latestDataByTags = (Map>) remoteTdEgineService.getLatestDataByTags(tdSelectDto); + } + //todo 根据获取的device,通过devicemodeid获取devicemode,再根据devicemodeid获取devicemodefunction,(已解决) + // todo 然后根据devicemodefunction中的datatype为8的(是bool的)(以解决) + + } + return latestDataByTags; + } + //查询直采变量属性的设备 + @Override + public Map> selectDeviceModeFunctionByFunctionType(Long monitorUnitId) { + List hwDevices = hwDeviceMapper.selectDeviceByDeviceModeByMonitorUnitId(monitorUnitId);//todo 根据监控单元(已解决) + TdSelectDto tdSelectDto = new TdSelectDto(); + Map> latestDataByTags = new HashMap>(); + for (int i = 0; i < hwDevices.size(); i++){ + String s = hwDeviceMapper.selectDeviceModeFunctionByFunctionType(hwDevices.get(i).getDeviceId()); + if (s!=null&&s!=""){ + tdSelectDto.setDatabaseName(TdEngineConstants.PLATFORM_DB_NAME); + tdSelectDto.setSuperTableName(TdEngineConstants.DEFAULT_DEVICE_STATUS_SUPER_TABLE_NAME); + tdSelectDto.setTagsName(hwDevices.get(i).getDeviceCode()); + latestDataByTags = (Map>) remoteTdEgineService.getLatestDataByTags(tdSelectDto); + }} + return latestDataByTags; + } + + @Override + public List> getHistoryData(Long deviceId) { + TdHistorySelectDto tdHistorySelectDto = new TdHistorySelectDto(); + tdHistorySelectDto.setDatabaseName(TdEngineConstants.PLATFORM_DB_NAME); + tdHistorySelectDto.setTableName(TdEngineConstants.getDeviceDataTableName(deviceId)); + tdHistorySelectDto.setOrderByFieldName(tdHistorySelectDto.getFirstFieldName()); + tdHistorySelectDto.setSort(TdEngineConstants.DEFAULT_ORDER_BY_MODE); + List> historyData = (List>) remoteTdEgineService.getHistoryData(tdHistorySelectDto); + return historyData; + } /** * 修改设备信息 - * + * * @param hwDevice 设备信息 * @return 结果 */ @@ -72,7 +160,7 @@ public class HwDeviceServiceImpl implements IHwDeviceService /** * 批量删除设备信息 - * + * * @param deviceIds 需要删除的设备信息主键 * @return 结果 */ @@ -84,7 +172,7 @@ public class HwDeviceServiceImpl implements IHwDeviceService /** * 删除设备信息信息 - * + * * @param deviceId 设备信息主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwElectronicFenceServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwElectronicFenceServiceImpl.java index b30c579..351bd63 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwElectronicFenceServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwElectronicFenceServiceImpl.java @@ -10,19 +10,19 @@ import com.ruoyi.business.service.IHwElectronicFenceService; /** * 电子围栏Service业务层处理 - * + * * @author xins * @date 2023-09-04 */ @Service -public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService +public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService { @Autowired private HwElectronicFenceMapper hwElectronicFenceMapper; /** * 查询电子围栏 - * + * * @param electronicFenceId 电子围栏主键 * @return 电子围栏 */ @@ -32,9 +32,14 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService return hwElectronicFenceMapper.selectHwElectronicFenceByElectronicFenceId(electronicFenceId); } + @Override + public List selectElectronicByScene(Long sceneId) { + return hwElectronicFenceMapper.selectElectronicByScene(sceneId); + } + /** * 查询电子围栏列表 - * + * * @param hwElectronicFence 电子围栏 * @return 电子围栏 */ @@ -46,7 +51,7 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService /** * 新增电子围栏 - * + * * @param hwElectronicFence 电子围栏 * @return 结果 */ @@ -59,7 +64,7 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService /** * 修改电子围栏 - * + * * @param hwElectronicFence 电子围栏 * @return 结果 */ @@ -72,7 +77,7 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService /** * 批量删除电子围栏 - * + * * @param electronicFenceIds 需要删除的电子围栏主键 * @return 结果 */ @@ -84,7 +89,7 @@ public class HwElectronicFenceServiceImpl implements IHwElectronicFenceService /** * 删除电子围栏信息 - * + * * @param electronicFenceId 电子围栏主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitServiceImpl.java index 6dd939d..dbdda67 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitServiceImpl.java @@ -1,7 +1,26 @@ package com.ruoyi.business.service.impl; -import java.util.List; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +import com.github.pagehelper.PageHelper; +import com.ruoyi.business.domain.HwDevice; +import com.ruoyi.business.domain.HwElectronicFence; +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.utils.DateUtils; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.system.api.domain.SysDept; +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; @@ -10,19 +29,27 @@ import com.ruoyi.business.service.IHwMonitorUnitService; /** * 监控单元Service业务层处理 - * + * * @author YINQ * @date 2023-08-31 */ @Service -public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService +public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService { @Autowired private HwMonitorUnitMapper hwMonitorUnitMapper; + @Autowired + private HwElectronicFenceMapper hwElectronicFenceMapper; + @Autowired + private RemoteTdEngineService remoteTdEgineService; + @Autowired + private HwDeviceMapper hwDeviceMapper; + + /** * 查询监控单元 - * + * * @param monitorUnitId 监控单元主键 * @return 监控单元 */ @@ -31,10 +58,97 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService { return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId); } + /** + * 查询区域数量站场景区总数百分比 + * */ + @Override + public List selectMonitorPercentage() { + List list = hwMonitorUnitMapper.selectMonitorPercentage(); + List hwScenes = hwMonitorUnitMapper.selectSceneNameById(); + int count = hwScenes.size(); + if (list.size()<=hwScenes.size()) { + count = list.size(); + } + for (int i = 0; i < count; i++) { + for (int j = 0;j5){ + for (int i = 4; i < list.size(); i++){ + value = value+list.get(i).sum; + } + } + for (int i = 0; i < list.size();i++){ + sums = sums+list.get(i).sum; + } + for (int i=0;i5){ + list.add(5,hwMonitorUnitVo); + return list.subList(0,5); + } + else { + return list; + } + } + + //获取总的设备数量与监控单元数量 + @Override + public AllNumsVo selectAllNums() { + //监控单元 + String monitor = hwMonitorUnitMapper.selectSubSetNums(); + Integer integer = hwMonitorUnitMapper.selectDeviceNums(); + + + AllNumsVo vo = new AllNumsVo(); + vo.setSubSum(Integer.valueOf(monitor)); + vo.setSum(integer); + + + return vo; + } + + @Override + public List selectSenceAllNums() { + List allNumsVos = hwMonitorUnitMapper.selectAllNums(); + List allNums = hwMonitorUnitMapper.selectsum(); + for (int i=0;i< allNums.size();i++){ + for (int j=0;j< allNums.size();j++){ + if (allNums.get(i).getSceneId().equals(allNumsVos.get(i).getSceneId())){ + allNums.get(i).setSubSum(allNumsVos.get(i).getSubSum()); + } + } + } + return allNums; + } + + @Override + public List selectLimitSubMonitorUnit() { + + List hwMonitorUnits = hwMonitorUnitMapper.selectLimitSubMonitorUnit(); + return hwMonitorUnits; + } + + @Override + public List selectAlarmStats() { + return hwMonitorUnitMapper.selectAlarmStats(); + } + /** * 查询监控单元列表 - * + * * @param hwMonitorUnit 监控单元 * @return 监控单元 */ @@ -44,9 +158,141 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService return hwMonitorUnitMapper.selectHwMonitorUnitList(hwMonitorUnit); } + @Override + public SubDeviceSumVo selectSubDeviceSum(Long sceneId) { + int SubSum = hwMonitorUnitMapper.selectSubDeviceSum(sceneId); + List hwDevices = hwDeviceMapper.selectDeviceNum(sceneId); + int onlineDevice = 0; + for (int i = 0;i longs = hwMonitorUnitMapper.selectEleInScene(sceneId); + return null; + } + + + + @Override + public HwMonitorUnit selectHwmonitorUnitSub(Long monitorUnitId) { + return hwMonitorUnitMapper.selectHwMonitorUnitByMonitorUnitId(monitorUnitId); + } + + @Override + // 加一个begintime参数,endtime参数 stream时间戳 从开始时间0点开始,结束时间23.59.59结束 + public int selectTdengine(String beginTime,String endTime,Long sceneId) { + DeviceStatus queryDeviceStatus = new DeviceStatus(); + + Map params = queryDeviceStatus.getParams(); + DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA); + 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); + } + int value = 0; + int sum = 0; + //todo 使用id(以解决) + //map key时间戳,value List 对象 + List list = (List) remoteTdEgineService.getOnlineDevicesGroupByDay(queryDeviceStatus); + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getDeviceType()==1) { + sum =sum+ hwMonitorUnitMapper.selectReleatedDeviceIdNums(list.get(i).getDeviceId()); + } + else { + value++; + } + value = value+sum; + } + return value; + + //设备类型==网关 根据releated_device_id = 网关设备设备id查询个数 + //网关子设备数+非网关设备数(getDeviceType()!=1) + } + +// @Override +// public List> selectLatestDataByTags(Long monitorUnitId) { +// List> latestData = new ArrayList>; +// List 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(monitorUnitId); +// tdSelectDto.set +// latestData = (List>) remoteTdEgineService.getLatestData(tdSelectDto); +// } +// return latestData; +// } + +//todo SysDeptServiceImpl类中的递归方法recursionFn(以实现) +@Override +public List selectTreeList(List hwMonitorUnits) { + List returnList = new ArrayList<>(); + List tempList = hwMonitorUnits.stream().map(HwMonitorUnit::getMonitorUnitId).collect(Collectors.toList()); + + for (HwMonitorUnit hwMonitorUnit:hwMonitorUnits){ + if (!tempList.contains(hwMonitorUnit.getParentId())) + recursionFn(hwMonitorUnits,hwMonitorUnit); + returnList.add(hwMonitorUnit); + } + + return returnList; +} + private void recursionFn(List list, HwMonitorUnit t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChild(childList); + for (HwMonitorUnit tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + private List getChildList(List list, HwMonitorUnit t) + { + List tlist = new ArrayList(); + Iterator 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 hasChild(List list, HwMonitorUnit t) + { + return getChildList(list, t).size() > 0 ? true : false; + } + /** * 新增监控单元 - * + * * @param hwMonitorUnit 监控单元 * @return 结果 */ @@ -59,7 +305,7 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService /** * 修改监控单元 - * + * * @param hwMonitorUnit 监控单元 * @return 结果 */ @@ -72,7 +318,7 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService /** * 批量删除监控单元 - * + * * @param monitorUnitIds 需要删除的监控单元主键 * @return 结果 */ @@ -84,7 +330,7 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService /** * 删除监控单元信息 - * + * * @param monitorUnitId 监控单元主键 * @return 结果 */ @@ -94,3 +340,23 @@ public class HwMonitorUnitServiceImpl implements IHwMonitorUnitService return hwMonitorUnitMapper.deleteHwMonitorUnitByMonitorUnitId(monitorUnitId); } } + +//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 } +// } diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitTypeServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitTypeServiceImpl.java index 7d63206..19f43dc 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitTypeServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwMonitorUnitTypeServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.business.service.impl; import java.util.List; + +import com.ruoyi.business.domain.VO.HwMonitorUnitVo; import com.ruoyi.common.core.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -10,19 +12,19 @@ import com.ruoyi.business.service.IHwMonitorUnitTypeService; /** * 监控单元类型Service业务层处理 - * + * * @author YINQ * @date 2023-08-31 */ @Service -public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService +public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService { @Autowired private HwMonitorUnitTypeMapper hwMonitorUnitTypeMapper; /** * 查询监控单元类型 - * + * * @param monitorUnitTypeId 监控单元类型主键 * @return 监控单元类型 */ @@ -34,7 +36,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService /** * 查询监控单元类型列表 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 监控单元类型 */ @@ -44,9 +46,10 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService return hwMonitorUnitTypeMapper.selectHwMonitorUnitTypeList(hwMonitorUnitType); } + /** * 新增监控单元类型 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 结果 */ @@ -59,7 +62,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService /** * 修改监控单元类型 - * + * * @param hwMonitorUnitType 监控单元类型 * @return 结果 */ @@ -72,7 +75,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService /** * 批量删除监控单元类型 - * + * * @param monitorUnitTypeIds 需要删除的监控单元类型主键 * @return 结果 */ @@ -84,7 +87,7 @@ public class HwMonitorUnitTypeServiceImpl implements IHwMonitorUnitTypeService /** * 删除监控单元类型信息 - * + * * @param monitorUnitTypeId 监控单元类型主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwSceneServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwSceneServiceImpl.java index fc2db64..30bbceb 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwSceneServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwSceneServiceImpl.java @@ -10,19 +10,19 @@ import com.ruoyi.business.service.IHwSceneService; /** * 场景信息Service业务层处理 - * + * * @author xins * @date 2023-08-23 */ @Service -public class HwSceneServiceImpl implements IHwSceneService +public class HwSceneServiceImpl implements IHwSceneService { @Autowired private HwSceneMapper hwSceneMapper; /** * 查询场景信息 - * + * * @param sceneId 场景信息主键 * @return 场景信息 */ @@ -32,9 +32,18 @@ public class HwSceneServiceImpl implements IHwSceneService return hwSceneMapper.selectHwSceneBySceneId(sceneId); } + @Override + public List selectHwSceneBySceneModeId(Long sceneModeId) { + List hwScenes = hwSceneMapper.selectHwSceneBySceneModeId(sceneModeId); + + return hwScenes; + } + + + /** * 查询场景信息列表 - * + * * @param hwScene 场景信息 * @return 场景信息 */ @@ -46,7 +55,7 @@ public class HwSceneServiceImpl implements IHwSceneService /** * 新增场景信息 - * + * * @param hwScene 场景信息 * @return 结果 */ @@ -59,7 +68,7 @@ public class HwSceneServiceImpl implements IHwSceneService /** * 修改场景信息 - * + * * @param hwScene 场景信息 * @return 结果 */ @@ -72,7 +81,7 @@ public class HwSceneServiceImpl implements IHwSceneService /** * 批量删除场景信息 - * + * * @param sceneIds 需要删除的场景信息主键 * @return 结果 */ @@ -84,7 +93,7 @@ public class HwSceneServiceImpl implements IHwSceneService /** * 删除场景信息信息 - * + * * @param sceneId 场景信息主键 * @return 结果 */ diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwDeviceMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwDeviceMapper.xml index c4a8dc8..3083707 100644 --- a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwDeviceMapper.xml +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwDeviceMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -34,13 +34,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + select device_id, device_code, device_name, scene_id, monitor_unit_id, device_type, networking_mode, access_protocol, data_format, releated_device_id, device_mode_id, access_gw_protocol, active_status, device_status, active_time, device_pic, ip_address, area_id, device_location, current_module_version, current_singlechip_version, remark, create_by, create_time, update_by, update_time, device_field from hw_device + + + + + + + - + - + insert into hw_device @@ -168,9 +202,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from hw_device where device_id in + delete from hw_device where device_id in #{deviceId} - \ No newline at end of file + diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwElectronicFenceMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwElectronicFenceMapper.xml index 5c6892e..2d33c9b 100644 --- a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwElectronicFenceMapper.xml +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwElectronicFenceMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -29,10 +29,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select electronic_fence_id, electronic_fence_name, scene_id, fence_type, effective_time_flag, time_zone, effective_time, trigger_status, area_shape_flag, area_range, fence_push_flag, fence_push_content, fence_recover_content, remark, create_by, create_time, update_by, update_time, fence_field from hw_electronic_fence + + - + - + insert into hw_electronic_fence @@ -128,9 +135,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from hw_electronic_fence where electronic_fence_id in + delete from hw_electronic_fence where electronic_fence_id in #{electronicFenceId} - \ No newline at end of file + diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitMapper.xml index 378bc82..88ccd9b 100644 --- a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitMapper.xml +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitMapper.xml @@ -3,7 +3,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - @@ -22,14 +21,61 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into hw_monitor_unit @@ -113,9 +246,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from hw_monitor_unit where monitor_unit_id in + delete from hw_monitor_unit where monitor_unit_id in #{monitorUnitId} - \ No newline at end of file + diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitTypeMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitTypeMapper.xml index a69a7a8..835bec3 100644 --- a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitTypeMapper.xml +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwMonitorUnitTypeMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -25,9 +25,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 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 + - - - + + + + + insert into hw_monitor_unit_type @@ -103,9 +106,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from hw_monitor_unit_type where monitor_unit_type_id in + delete from hw_monitor_unit_type where monitor_unit_type_id in #{monitorUnitTypeId} - \ No newline at end of file + diff --git a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwSceneMapper.xml b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwSceneMapper.xml index bafc2ff..458ddd8 100644 --- a/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwSceneMapper.xml +++ b/ruoyi-modules/hw-business/src/main/resources/mapper/business/HwSceneMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + insert into hw_scene @@ -133,9 +135,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from hw_scene where scene_id in + delete from hw_scene where scene_id in #{sceneId} - \ No newline at end of file +