diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java new file mode 100644 index 0000000..1d90837 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class DeviceTypeStatusDTO { + + + private String state; + + private String typeName; + + private Long count; + + private Long typeId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java new file mode 100644 index 0000000..1d90837 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class DeviceTypeStatusDTO { + + + private String state; + + private String typeName; + + private Long count; + + private Long typeId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java new file mode 100644 index 0000000..b058eaa --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TimeRequestDTO { + + @ApiModelProperty("时间类型 (2:近七天,3:本月,4:本年)") + private String timeType; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java new file mode 100644 index 0000000..1d90837 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class DeviceTypeStatusDTO { + + + private String state; + + private String typeName; + + private Long count; + + private Long typeId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java new file mode 100644 index 0000000..b058eaa --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TimeRequestDTO { + + @ApiModelProperty("时间类型 (2:近七天,3:本月,4:本年)") + private String timeType; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java index bf93529..b34e921 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java @@ -33,6 +33,10 @@ List deviceStatus(); + List> alarmTrend(String timeType); + + List> alarmTotalStatistics(String timeType); + List alarmList(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java new file mode 100644 index 0000000..1d90837 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class DeviceTypeStatusDTO { + + + private String state; + + private String typeName; + + private Long count; + + private Long typeId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java new file mode 100644 index 0000000..b058eaa --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TimeRequestDTO { + + @ApiModelProperty("时间类型 (2:近七天,3:本月,4:本年)") + private String timeType; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java index bf93529..b34e921 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java @@ -33,6 +33,10 @@ List deviceStatus(); + List> alarmTrend(String timeType); + + List> alarmTotalStatistics(String timeType); + List alarmList(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index d07f421..9456de3 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; +import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -43,7 +44,28 @@ @Override public List deviceStatus() { - return this.baseMapper.deviceStatus(commonServer.getDeptIds()); + List resultDTOList = new ArrayList<>(); + List dtoList = this.baseMapper.deviceStatus(commonServer.getDeptIds()); + List deviceTypeList = this.baseMapper.deviceTypeList(); + deviceTypeList.forEach(deviceType -> { + CommonResponseDTO commonResponseDTO = new CommonResponseDTO(); + commonResponseDTO.setName(deviceType.getTypeName()); + commonResponseDTO.setValue("--%"); + int sum = 0, offCount = 0; + for (DeviceTypeStatusDTO dto : dtoList) { + if (deviceType.getTypeId().equals(dto.getTypeId())) { + sum += dto.getCount(); + if (DictEnum.ALARM_OFF.equals(dto.getState())) { + offCount += dto.getCount(); + } + } + } + if (0 != sum) { + commonResponseDTO.setValue(String.format("%.2f", (sum - offCount) * 100.0 / sum) + "%"); + } + resultDTOList.add(commonResponseDTO); + }); + return resultDTOList; } @Override @@ -156,4 +178,78 @@ }); return alarmRecordDpDTOList; } + + @Override + public List> alarmTrend(String timeType) { + List> resultMapList = new ArrayList<>(); + List alarmTrendResponseDTOList = this.baseMapper.alarmTrend(commonServer.getDeptIds(), timeType); + List days = new ArrayList<>(); + if (DictEnum.WEEK.equals(timeType)) { + days = TimeConvertUtil.getPastSevenDays(); + } else if (DictEnum.MONTH.equals(timeType)) { + days = TimeConvertUtil.monthDays(); + } else if (DictEnum.YEAR.equals(timeType)) { + days = TimeConvertUtil.getYearMonth(); + } + for (String day : days) { + Map dayMap = new HashMap<>(); + dayMap.put(day, 0); + for (AlarmTrendResponseDTO responseDTO : alarmTrendResponseDTOList) { + if (ObjectUtil.isNotEmpty(responseDTO.getAlarmTime()) && responseDTO.getAlarmTime().contains(day)) { + dayMap.put(day, Integer.valueOf(dayMap.get(day).toString()) + Integer.valueOf(responseDTO.getValue())); + } + } + resultMapList.add(dayMap); + } + return resultMapList; + } + + @Override + public List> alarmTotalStatistics(String timeType) { + List> resultMapList = new ArrayList<>(); + String deptIdStrs = commonServer.getDeptScopeIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List alarmTotalDTOS = this.baseMapper.alarmTotalStatistics(commonServer.getDeptIds(), timeType); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + deptMap.put("alarmTotal", 0); + deptMap.put("processCount", 0); + for (AlarmTotalDTO responseDTO : alarmTotalDTOS) { + if (null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put("alarmTotal", Integer.valueOf(deptMap.get("alarmTotal").toString()) + responseDTO.getValue()); + if (ApprovalStatusEnum.FINISHED.equals(responseDTO.getProcessStatus()) || + ApprovalStatusEnum.PROCESSED.equals(responseDTO.getProcessStatus()) || + ApprovalStatusEnum.CONFIRMED.equals(responseDTO.getProcessStatus())) { + deptMap.put("processCount", Integer.valueOf(deptMap.get("processCount").toString()) + responseDTO.getValue()); + } + } + } + resultMapList.add(deptMap); + } + } + return resultMapList; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java new file mode 100644 index 0000000..1d90837 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class DeviceTypeStatusDTO { + + + private String state; + + private String typeName; + + private Long count; + + private Long typeId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java new file mode 100644 index 0000000..b058eaa --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TimeRequestDTO { + + @ApiModelProperty("时间类型 (2:近七天,3:本月,4:本年)") + private String timeType; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java index bf93529..b34e921 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java @@ -33,6 +33,10 @@ List deviceStatus(); + List> alarmTrend(String timeType); + + List> alarmTotalStatistics(String timeType); + List alarmList(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index d07f421..9456de3 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; +import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -43,7 +44,28 @@ @Override public List deviceStatus() { - return this.baseMapper.deviceStatus(commonServer.getDeptIds()); + List resultDTOList = new ArrayList<>(); + List dtoList = this.baseMapper.deviceStatus(commonServer.getDeptIds()); + List deviceTypeList = this.baseMapper.deviceTypeList(); + deviceTypeList.forEach(deviceType -> { + CommonResponseDTO commonResponseDTO = new CommonResponseDTO(); + commonResponseDTO.setName(deviceType.getTypeName()); + commonResponseDTO.setValue("--%"); + int sum = 0, offCount = 0; + for (DeviceTypeStatusDTO dto : dtoList) { + if (deviceType.getTypeId().equals(dto.getTypeId())) { + sum += dto.getCount(); + if (DictEnum.ALARM_OFF.equals(dto.getState())) { + offCount += dto.getCount(); + } + } + } + if (0 != sum) { + commonResponseDTO.setValue(String.format("%.2f", (sum - offCount) * 100.0 / sum) + "%"); + } + resultDTOList.add(commonResponseDTO); + }); + return resultDTOList; } @Override @@ -156,4 +178,78 @@ }); return alarmRecordDpDTOList; } + + @Override + public List> alarmTrend(String timeType) { + List> resultMapList = new ArrayList<>(); + List alarmTrendResponseDTOList = this.baseMapper.alarmTrend(commonServer.getDeptIds(), timeType); + List days = new ArrayList<>(); + if (DictEnum.WEEK.equals(timeType)) { + days = TimeConvertUtil.getPastSevenDays(); + } else if (DictEnum.MONTH.equals(timeType)) { + days = TimeConvertUtil.monthDays(); + } else if (DictEnum.YEAR.equals(timeType)) { + days = TimeConvertUtil.getYearMonth(); + } + for (String day : days) { + Map dayMap = new HashMap<>(); + dayMap.put(day, 0); + for (AlarmTrendResponseDTO responseDTO : alarmTrendResponseDTOList) { + if (ObjectUtil.isNotEmpty(responseDTO.getAlarmTime()) && responseDTO.getAlarmTime().contains(day)) { + dayMap.put(day, Integer.valueOf(dayMap.get(day).toString()) + Integer.valueOf(responseDTO.getValue())); + } + } + resultMapList.add(dayMap); + } + return resultMapList; + } + + @Override + public List> alarmTotalStatistics(String timeType) { + List> resultMapList = new ArrayList<>(); + String deptIdStrs = commonServer.getDeptScopeIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List alarmTotalDTOS = this.baseMapper.alarmTotalStatistics(commonServer.getDeptIds(), timeType); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + deptMap.put("alarmTotal", 0); + deptMap.put("processCount", 0); + for (AlarmTotalDTO responseDTO : alarmTotalDTOS) { + if (null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put("alarmTotal", Integer.valueOf(deptMap.get("alarmTotal").toString()) + responseDTO.getValue()); + if (ApprovalStatusEnum.FINISHED.equals(responseDTO.getProcessStatus()) || + ApprovalStatusEnum.PROCESSED.equals(responseDTO.getProcessStatus()) || + ApprovalStatusEnum.CONFIRMED.equals(responseDTO.getProcessStatus())) { + deptMap.put("processCount", Integer.valueOf(deptMap.get("processCount").toString()) + responseDTO.getValue()); + } + } + } + resultMapList.add(deptMap); + } + } + return resultMapList; + } } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 0cba757..5ab20e2 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -59,9 +59,12 @@ String CONFIRM_TYPE= "1"; //不需要处置 String IS_PROCESS= "0"; + String WEEK= "2"; + String MONTH= "3"; - String DAYS= "4"; + + String YEAR= "4"; String DEPT_ALL= "corporate"; String DEPT_COMPANY= "company"; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java index 3ff91e8..1a265da 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/CockpitController.java @@ -6,6 +6,7 @@ import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.dto.SfqDTO; +import com.casic.missiles.modular.alarm.dto.TimeRequestDTO; import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -79,5 +80,26 @@ public ReturnDTO alarmList() { return ReturnUtil.success(iCockpitService.alarmList()); } + + @ApiOperation("设备在线监控") + @PostMapping("/deviceStatus") + @ResponseBody + public ReturnDTO deviceStatus() { + return ReturnUtil.success(iCockpitService.deviceStatus()); + } + + @ApiOperation("设备报警趋势") + @PostMapping("/alarmTrend") + @ResponseBody + public ReturnDTO alarmTrend(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTrend(timeRequestDTO.getTimeType())); + } + + @ApiOperation("累计报警统计") + @PostMapping("/alarmTotalStatistics") + @ResponseBody + public ReturnDTO alarmStatistics(@RequestBody TimeRequestDTO timeRequestDTO) { + return ReturnUtil.success(iCockpitService.alarmTotalStatistics(timeRequestDTO.getTimeType())); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java index 99ceae7..d3a472d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/CockpitMapper.java @@ -1,13 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.modular.alarm.dto.AlarmCompanyResponseDTO; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDpDTO; -import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; -import com.casic.missiles.modular.alarm.dto.DeviceTrendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -34,9 +32,16 @@ List deviceTrendStatistics(@Param("deptStrs") String deptStrs, @Param("type") String type); - List deviceStatus(@Param("deptStrs") String deptStrs); + List deviceStatus(@Param("deptStrs") String deptStrs); + + @Select("SELECT TYPE_NAME as typeName,ID as typeId from base_device_type where IS_USED =1") + List deviceTypeList(); List alarmList(@Param("deptStrs") String deptStrs); + List alarmTrend(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + + List alarmTotalStatistics(@Param("deptStrs") String deptStrs, @Param("timeType") String timeType); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml index 5f5f9ad..485a7f6 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/CockpitMapper.xml @@ -43,21 +43,26 @@ - - WITH device_temp AS (SELECT bd.VALID,bd.ONLINE_STATE FROM `bus_device` bd - LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID - LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - + SELECT + DEVICE_TYPE AS typeId, + count( ONLINE_STATE ) AS count, + ONLINE_STATE AS state + FROM + bus_device bd + + LEFT join bus_device_ledger lr on lr.DEVICE_ID=bd.ID + LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type + + WHERE + bd.VALID > 0 and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 - UNION ALL - SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY - bt.ONLINE_STATE + GROUP BY + bd.DEVICE_TYPE, + bd.ONLINE_STATE + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java new file mode 100644 index 0000000..67a1a0f --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTotalDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AlarmTotalDTO { + + + private String processStatus; + + private Long value; + + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java new file mode 100644 index 0000000..1d90837 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/DeviceTypeStatusDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class DeviceTypeStatusDTO { + + + private String state; + + private String typeName; + + private Long count; + + private Long typeId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java new file mode 100644 index 0000000..b058eaa --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/TimeRequestDTO.java @@ -0,0 +1,12 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class TimeRequestDTO { + + @ApiModelProperty("时间类型 (2:近七天,3:本月,4:本年)") + private String timeType; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java index bf93529..b34e921 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/ICockpitService.java @@ -33,6 +33,10 @@ List deviceStatus(); + List> alarmTrend(String timeType); + + List> alarmTotalStatistics(String timeType); + List alarmList(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java index d07f421..9456de3 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/CockpitServiceImpl.java @@ -15,6 +15,7 @@ import com.casic.missiles.modular.alarm.service.ICockpitService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.server.CommonServer; +import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -43,7 +44,28 @@ @Override public List deviceStatus() { - return this.baseMapper.deviceStatus(commonServer.getDeptIds()); + List resultDTOList = new ArrayList<>(); + List dtoList = this.baseMapper.deviceStatus(commonServer.getDeptIds()); + List deviceTypeList = this.baseMapper.deviceTypeList(); + deviceTypeList.forEach(deviceType -> { + CommonResponseDTO commonResponseDTO = new CommonResponseDTO(); + commonResponseDTO.setName(deviceType.getTypeName()); + commonResponseDTO.setValue("--%"); + int sum = 0, offCount = 0; + for (DeviceTypeStatusDTO dto : dtoList) { + if (deviceType.getTypeId().equals(dto.getTypeId())) { + sum += dto.getCount(); + if (DictEnum.ALARM_OFF.equals(dto.getState())) { + offCount += dto.getCount(); + } + } + } + if (0 != sum) { + commonResponseDTO.setValue(String.format("%.2f", (sum - offCount) * 100.0 / sum) + "%"); + } + resultDTOList.add(commonResponseDTO); + }); + return resultDTOList; } @Override @@ -156,4 +178,78 @@ }); return alarmRecordDpDTOList; } + + @Override + public List> alarmTrend(String timeType) { + List> resultMapList = new ArrayList<>(); + List alarmTrendResponseDTOList = this.baseMapper.alarmTrend(commonServer.getDeptIds(), timeType); + List days = new ArrayList<>(); + if (DictEnum.WEEK.equals(timeType)) { + days = TimeConvertUtil.getPastSevenDays(); + } else if (DictEnum.MONTH.equals(timeType)) { + days = TimeConvertUtil.monthDays(); + } else if (DictEnum.YEAR.equals(timeType)) { + days = TimeConvertUtil.getYearMonth(); + } + for (String day : days) { + Map dayMap = new HashMap<>(); + dayMap.put(day, 0); + for (AlarmTrendResponseDTO responseDTO : alarmTrendResponseDTOList) { + if (ObjectUtil.isNotEmpty(responseDTO.getAlarmTime()) && responseDTO.getAlarmTime().contains(day)) { + dayMap.put(day, Integer.valueOf(dayMap.get(day).toString()) + Integer.valueOf(responseDTO.getValue())); + } + } + resultMapList.add(dayMap); + } + return resultMapList; + } + + @Override + public List> alarmTotalStatistics(String timeType) { + List> resultMapList = new ArrayList<>(); + String deptIdStrs = commonServer.getDeptScopeIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List alarmTotalDTOS = this.baseMapper.alarmTotalStatistics(commonServer.getDeptIds(), timeType); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + deptMap.put("alarmTotal", 0); + deptMap.put("processCount", 0); + for (AlarmTotalDTO responseDTO : alarmTotalDTOS) { + if (null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put("alarmTotal", Integer.valueOf(deptMap.get("alarmTotal").toString()) + responseDTO.getValue()); + if (ApprovalStatusEnum.FINISHED.equals(responseDTO.getProcessStatus()) || + ApprovalStatusEnum.PROCESSED.equals(responseDTO.getProcessStatus()) || + ApprovalStatusEnum.CONFIRMED.equals(responseDTO.getProcessStatus())) { + deptMap.put("processCount", Integer.valueOf(deptMap.get("processCount").toString()) + responseDTO.getValue()); + } + } + } + resultMapList.add(deptMap); + } + } + return resultMapList; + } } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 0cba757..5ab20e2 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -59,9 +59,12 @@ String CONFIRM_TYPE= "1"; //不需要处置 String IS_PROCESS= "0"; + String WEEK= "2"; + String MONTH= "3"; - String DAYS= "4"; + + String YEAR= "4"; String DEPT_ALL= "corporate"; String DEPT_COMPANY= "company"; diff --git a/casic-public/src/main/java/com/casic/missiles/util/TimeConvertUtil.java b/casic-public/src/main/java/com/casic/missiles/util/TimeConvertUtil.java index 71a84d0..d5e7fff 100644 --- a/casic-public/src/main/java/com/casic/missiles/util/TimeConvertUtil.java +++ b/casic-public/src/main/java/com/casic/missiles/util/TimeConvertUtil.java @@ -4,7 +4,10 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; @@ -54,4 +57,29 @@ } return betweenDays; } + + public static List getPastSevenDays() { + List dates = new ArrayList<>(); + LocalDate currentDate = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + for (int i = 6; i >= 0; i--) { + String date = currentDate.minusDays(i).format(formatter); + dates.add(date); + } + return dates; + } + + public static List getYearMonth() { + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + List list = new ArrayList<>(); + for (int i = 1; i < 13; i++) { + String month = i + ""; + if (i < 10) { + month = "0" + i; + } + list.add(year + "-" + month); + } + return list; + } }