diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java index 9d12b2c..61b040e 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java @@ -84,4 +84,12 @@ return busMonipoiInfoService.monitorDetail(id); } + /** + * 设备列表(地图) + */ + @RequestMapping(value = "/overview") + public Object mapOverview() throws Exception { + return ResponseData.success(busMonipoiInfoService.overviewMap()); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java index 9d12b2c..61b040e 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java @@ -84,4 +84,12 @@ return busMonipoiInfoService.monitorDetail(id); } + /** + * 设备列表(地图) + */ + @RequestMapping(value = "/overview") + public Object mapOverview() throws Exception { + return ResponseData.success(busMonipoiInfoService.overviewMap()); + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java index 7fbf4f8..a74ae3b 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import org.apache.ibatis.annotations.Param; @@ -24,4 +25,6 @@ List monitorListPage(@Param("scope") DataScope dataScope, @Param("stationId")Long stationId,@Param("keyword")String keyword); MonitorBaseInfo selectInfoByDeviceIp(@Param("deviceIp") String deviceIp); + + List overviewMap(@Param("scope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java index 9d12b2c..61b040e 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java @@ -84,4 +84,12 @@ return busMonipoiInfoService.monitorDetail(id); } + /** + * 设备列表(地图) + */ + @RequestMapping(value = "/overview") + public Object mapOverview() throws Exception { + return ResponseData.success(busMonipoiInfoService.overviewMap()); + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java index 7fbf4f8..a74ae3b 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import org.apache.ibatis.annotations.Param; @@ -24,4 +25,6 @@ List monitorListPage(@Param("scope") DataScope dataScope, @Param("stationId")Long stationId,@Param("keyword")String keyword); MonitorBaseInfo selectInfoByDeviceIp(@Param("deviceIp") String deviceIp); + + List overviewMap(@Param("scope") DataScope dataScope); } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml index 8599633..5d5c18d 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml @@ -82,4 +82,23 @@ LEFT JOIN bus_station_info b on a.STATION_ID = b.ID WHERE a.VALID = '0' and b.VALID = '0' and a.DEVICE_IP = #{deviceIp} + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java index 9d12b2c..61b040e 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java @@ -84,4 +84,12 @@ return busMonipoiInfoService.monitorDetail(id); } + /** + * 设备列表(地图) + */ + @RequestMapping(value = "/overview") + public Object mapOverview() throws Exception { + return ResponseData.success(busMonipoiInfoService.overviewMap()); + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java index 7fbf4f8..a74ae3b 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import org.apache.ibatis.annotations.Param; @@ -24,4 +25,6 @@ List monitorListPage(@Param("scope") DataScope dataScope, @Param("stationId")Long stationId,@Param("keyword")String keyword); MonitorBaseInfo selectInfoByDeviceIp(@Param("deviceIp") String deviceIp); + + List overviewMap(@Param("scope") DataScope dataScope); } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml index 8599633..5d5c18d 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml @@ -82,4 +82,23 @@ LEFT JOIN bus_station_info b on a.STATION_ID = b.ID WHERE a.VALID = '0' and b.VALID = '0' and a.DEVICE_IP = #{deviceIp} + + + diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java new file mode 100644 index 0000000..ab55163 --- /dev/null +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.enums.DictEnum; +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class MonitorOverviewMap { + /** + * 设备ID + */ + private Long monitorId; + /** + * 设备名称 + */ + private String monitorName; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 场站名 + */ + private String stationName; + + /** + * 位置 + */ + private String location; + + /** + * 设备状态(字典) + */ + @DictCodeField(message = "设备类型描述不合法", cacheName = DictEnum.DEVICE_TYPE) + private String deviceStatus; + + /** + * 设备状态名称 + */ + private String deviceStatusName; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java index 9d12b2c..61b040e 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java @@ -84,4 +84,12 @@ return busMonipoiInfoService.monitorDetail(id); } + /** + * 设备列表(地图) + */ + @RequestMapping(value = "/overview") + public Object mapOverview() throws Exception { + return ResponseData.success(busMonipoiInfoService.overviewMap()); + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java index 7fbf4f8..a74ae3b 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import org.apache.ibatis.annotations.Param; @@ -24,4 +25,6 @@ List monitorListPage(@Param("scope") DataScope dataScope, @Param("stationId")Long stationId,@Param("keyword")String keyword); MonitorBaseInfo selectInfoByDeviceIp(@Param("deviceIp") String deviceIp); + + List overviewMap(@Param("scope") DataScope dataScope); } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml index 8599633..5d5c18d 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml @@ -82,4 +82,23 @@ LEFT JOIN bus_station_info b on a.STATION_ID = b.ID WHERE a.VALID = '0' and b.VALID = '0' and a.DEVICE_IP = #{deviceIp} + + + diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java new file mode 100644 index 0000000..ab55163 --- /dev/null +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.enums.DictEnum; +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class MonitorOverviewMap { + /** + * 设备ID + */ + private Long monitorId; + /** + * 设备名称 + */ + private String monitorName; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 场站名 + */ + private String stationName; + + /** + * 位置 + */ + private String location; + + /** + * 设备状态(字典) + */ + @DictCodeField(message = "设备类型描述不合法", cacheName = DictEnum.DEVICE_TYPE) + private String deviceStatus; + + /** + * 设备状态名称 + */ + private String deviceStatusName; +} diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java index e3afbe1..7c41879 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import com.baomidou.mybatisplus.extension.service.IService; @@ -31,6 +32,8 @@ ResponseData monitorDetail(Long id); + List overviewMap() throws Exception; + MonitorBaseInfo selectInfoByDeviceIp(String deviceIp); BusMonipoiInfo selectByDeviceIp(String deviceIp); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java index 39aa9cf..e7186cf 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/controller/AlarmRecordController.java @@ -9,13 +9,16 @@ import com.casic.missiles.dto.IdDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.AlarmCancelRequest; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.service.IAlarmRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -131,4 +134,29 @@ }); return ResponseData.success(alarmRecordService.detail(idDTO.getId())); } + + /** + * 各类报警统计 + */ + @RequestMapping(value = "/typeStatistics") + @ResponseBody + public Object typeStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.typeStatistics(alarmStatisticsDTO)); + } + + /** + * 报警趋势分析 + */ + @RequestMapping(value = "/dateStatistics") + @ResponseBody + public Object dateStatistics(@RequestBody @Valid AlarmStatisticsDTO alarmStatisticsDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return ResponseData.success(alarmRecordService.dateStatistics(alarmStatisticsDTO)); + } + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java index afe42ba..e98fed1 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/AlarmRecordMapper.java @@ -4,6 +4,7 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.AlarmRecordRequest; import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.AlarmStatisticsDTO; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,9 @@ @Param("alarmDirection") Double alarmDirection, @Param("alarmPitch") Double alarmPitch); + List> typeStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); + + List> dateStatistics(@Param("request") AlarmStatisticsDTO alarmStatisticsDTO, + @Param("dataScope") DataScope dataScope); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml index 2c3c748..a93305a 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dao/mapping/AlarmRecordMapper.xml @@ -106,4 +106,57 @@ and ALARM_PITCH = #{alarmPitch} + + + + + diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java new file mode 100644 index 0000000..7ee4af8 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmStatisticsDTO.java @@ -0,0 +1,21 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmStatisticsDTO { + + @NotNull + private String startTime; + @NotNull + private String endTime; + + private Long stationId; + private Long monitorId; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java new file mode 100644 index 0000000..b9848ed --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTrendStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTrendStatisticsVO { + private String date; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java new file mode 100644 index 0000000..8a370a5 --- /dev/null +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/dto/AlarmTypeStatisticsVO.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.system.dto; + +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class AlarmTypeStatisticsVO { + private String type; + private Integer num; +} diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java index e419b7a..8e473ed 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/IAlarmRecordService.java @@ -2,9 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.IdDTO; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +31,8 @@ int clearByMonitor(Long monitorId,Double alarmDirection, Double alarmPitch); + List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + + List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java index 84119b2..248eb7b 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/system/service/impl/AlarmRecordServiceImpl.java @@ -8,21 +8,23 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.model.auth.AuthUser; -import com.casic.missiles.modular.system.dto.AlarmCancelRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordRequest; -import com.casic.missiles.modular.system.dto.AlarmRecordResponse; +import com.casic.missiles.modular.system.dto.*; import com.casic.missiles.modular.system.model.AlarmRecord; import com.casic.missiles.modular.system.dao.AlarmRecordMapper; +import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.modular.system.service.IAlarmRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.enums.DictEnum; import com.casic.missiles.weigeng.CommDoorUtil; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -126,4 +128,78 @@ } + @Override + public List typeStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> typeStatisticMaps = this.baseMapper.typeStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmStatisticsByType(typeStatisticMaps); + } + + @Override + public List dateStatistics(AlarmStatisticsDTO alarmStatisticsDTO) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List> dateStatisticMaps = this.baseMapper.dateStatistics(alarmStatisticsDTO, dataScope); + return this.doAlarmTrendStatisticsByDay(dateStatisticMaps, alarmStatisticsDTO); + } + + /** + * 日期趋势的报警统计 + * 1、转换dateStatisticMaps为map集合作为日期遍历做准备 + * 2、取消息类型集合 + * 3、从startTime和endTime分别设置日期 + * 4、遍历开始道结束日期,填充alarmTypeStatisticsVOS集合 + */ + private List doAlarmTrendStatisticsByDay(List> dateStatisticMaps, AlarmStatisticsDTO alarmStatisticsDTO) { + Map alarmsMap = dateStatisticMaps.stream().collect( + Collectors.toMap(e -> String.valueOf(e.get("alarmTime")), e -> String.valueOf(e.get("count"))) + ); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); + List alarmTypeStatisticsVOS = new ArrayList<>(); + Calendar beginDate = Calendar.getInstance(); + Calendar endDate = Calendar.getInstance(); + try { + beginDate.setTime(sdf1.parse(alarmStatisticsDTO.getStartTime())); + endDate.setTime(sdf1.parse(alarmStatisticsDTO.getEndTime())); + } catch (ParseException dtpe) { + log.error(""); + } + while (beginDate.getTime().compareTo(endDate.getTime()) <= 0) { + AlarmTrendStatisticsVO alarmTrendStatisticsVO = new AlarmTrendStatisticsVO(); + alarmTrendStatisticsVO.setDate(sdf1.format(beginDate.getTime())); + alarmTrendStatisticsVO.setNum(alarmsMap.containsKey(sdf1.format(beginDate.getTime())) + ? Integer.valueOf(alarmsMap.get(sdf1.format(beginDate.getTime()))) : 0); + alarmTypeStatisticsVOS.add(alarmTrendStatisticsVO); + beginDate.add(Calendar.DAY_OF_MONTH, 1); + } + return alarmTypeStatisticsVOS; + } + + /** + * 各种消息的报警统计 + * 1、取消息类型集合 + * 2、遍历消息,填充alarmTypeStatisticsVO集合 + * + * @param typeStatisticMaps + * @return + */ + private List doAlarmStatisticsByType(List> typeStatisticMaps) { + List dictList = dictService.findInDictByCode(DictEnum.ALARM_TYPE); + Map alarmTypeMap = dictList.stream().collect( + Collectors.toMap(Dict::getCode, Dict::getName)); + List alarmTypeStatisticsVOS = new ArrayList<>(); + for (Map typeStatisticMap : typeStatisticMaps) { + AlarmTypeStatisticsVO alarmTypeStatisticsVO = new AlarmTypeStatisticsVO(); + String alarmType = String.valueOf(typeStatisticMap.get("alarmType")); + if (StringUtils.isNotEmpty(alarmType) && alarmTypeMap.containsKey(alarmType)) { + alarmTypeStatisticsVO.setType(alarmTypeMap.get(alarmType)); + alarmTypeStatisticsVO.setNum(typeStatisticMap.containsKey("count") + ? Integer.valueOf(String.valueOf(typeStatisticMap.get("count"))) : 0); + alarmTypeStatisticsVOS.add(alarmTypeStatisticsVO); + } + } + return alarmTypeStatisticsVOS; + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java index 9d12b2c..61b040e 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/controller/BusMonipoiInfoController.java @@ -84,4 +84,12 @@ return busMonipoiInfoService.monitorDetail(id); } + /** + * 设备列表(地图) + */ + @RequestMapping(value = "/overview") + public Object mapOverview() throws Exception { + return ResponseData.success(busMonipoiInfoService.overviewMap()); + } + } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java index 7fbf4f8..a74ae3b 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/BusMonipoiInfoMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import org.apache.ibatis.annotations.Param; @@ -24,4 +25,6 @@ List monitorListPage(@Param("scope") DataScope dataScope, @Param("stationId")Long stationId,@Param("keyword")String keyword); MonitorBaseInfo selectInfoByDeviceIp(@Param("deviceIp") String deviceIp); + + List overviewMap(@Param("scope") DataScope dataScope); } diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml index 8599633..5d5c18d 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusMonipoiInfoMapper.xml @@ -82,4 +82,23 @@ LEFT JOIN bus_station_info b on a.STATION_ID = b.ID WHERE a.VALID = '0' and b.VALID = '0' and a.DEVICE_IP = #{deviceIp} + + + diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java new file mode 100644 index 0000000..ab55163 --- /dev/null +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/dto/MonitorOverviewMap.java @@ -0,0 +1,49 @@ +package com.casic.missiles.modular.system.dto; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.enums.DictEnum; +import lombok.Data; + +/** + * @author cz + * @date 2023-04-21 + */ +@Data +public class MonitorOverviewMap { + /** + * 设备ID + */ + private Long monitorId; + /** + * 设备名称 + */ + private String monitorName; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 场站名 + */ + private String stationName; + + /** + * 位置 + */ + private String location; + + /** + * 设备状态(字典) + */ + @DictCodeField(message = "设备类型描述不合法", cacheName = DictEnum.DEVICE_TYPE) + private String deviceStatus; + + /** + * 设备状态名称 + */ + private String deviceStatusName; +} diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java index e3afbe1..7c41879 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/IBusMonipoiInfoService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import com.baomidou.mybatisplus.extension.service.IService; @@ -31,6 +32,8 @@ ResponseData monitorDetail(Long id); + List overviewMap() throws Exception; + MonitorBaseInfo selectInfoByDeviceIp(String deviceIp); BusMonipoiInfo selectByDeviceIp(String deviceIp); diff --git a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java index f05c778..13591f6 100644 --- a/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java +++ b/casic-station/src/main/java/com/casic/missiles/modular/system/service/impl/BusMonipoiInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.system.dto.MonitorBaseInfo; +import com.casic.missiles.modular.system.dto.MonitorOverviewMap; import com.casic.missiles.modular.system.dto.MonitorPointList; import com.casic.missiles.modular.system.model.BusMonipoiInfo; import com.casic.missiles.modular.system.dao.BusMonipoiInfoMapper; @@ -119,4 +120,16 @@ } } + + @Override + public List overviewMap() throws Exception { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + dataScope.setScopeName("DEPT_ID"); + List monitorOverviewMaps = this.baseMapper.overviewMap(dataScope); + for (MonitorOverviewMap monitorOverviewMap : monitorOverviewMaps) { + DictCodeUtils.convertDictCodeToName(monitorOverviewMap); + } + return monitorOverviewMaps; + } + }