diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java new file mode 100644 index 0000000..30cc50c --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -0,0 +1,9 @@ +package com.casic.missiles.modular.ptz.service; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; + +public interface IPtzService { + + boolean control(PtzControlDTO request); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java new file mode 100644 index 0000000..30cc50c --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -0,0 +1,9 @@ +package com.casic.missiles.modular.ptz.service; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; + +public interface IPtzService { + + boolean control(PtzControlDTO request); + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java new file mode 100644 index 0000000..d3c6c4d --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.ptz.service.impl; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.netty.DeviceCommon; +import com.casic.missiles.modular.ptz.service.IPtzService; +import org.springframework.stereotype.Service; + +@Service +public class PtzServiceImpl implements IPtzService { + @Override + public boolean control(PtzControlDTO request) { + return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java new file mode 100644 index 0000000..30cc50c --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -0,0 +1,9 @@ +package com.casic.missiles.modular.ptz.service; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; + +public interface IPtzService { + + boolean control(PtzControlDTO request); + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java new file mode 100644 index 0000000..d3c6c4d --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.ptz.service.impl; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.netty.DeviceCommon; +import com.casic.missiles.modular.ptz.service.IPtzService; +import org.springframework.stereotype.Service; + +@Service +public class PtzServiceImpl implements IPtzService { + @Override + public boolean control(PtzControlDTO request) { + return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java index 8e685a9..67948d2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java @@ -19,8 +19,8 @@ private static DataGasServiceImpl dataGasService = SpringContextUtil.getApplicationContext().getBean(DataGasServiceImpl.class); private static DataTubeOtherServiceImpl dataTubeOtherService = SpringContextUtil.getApplicationContext().getBean(DataTubeOtherServiceImpl.class); private static DataMonitorPipeOtherServiceImpl dataMonitorPipeOtherService = SpringContextUtil.getApplicationContext().getBean(DataMonitorPipeOtherServiceImpl.class); - private static Map abstractResponseHashMap = new HashMap(); + private static Map abstractResponseHashMap = new HashMap(); static { // abstractResponseHashMap.put(DeviceTypeEnum.Liquid.name(), new LiquidResponse()); // abstractResponseHashMap.put(DeviceTypeEnum.Well.name(), new WellResponse()); @@ -32,8 +32,6 @@ } - - //event的具体处理 public static void makeResponse(String content) { JSONObject json = JSONObject.parseObject(content); if (null == json) return; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java new file mode 100644 index 0000000..30cc50c --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -0,0 +1,9 @@ +package com.casic.missiles.modular.ptz.service; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; + +public interface IPtzService { + + boolean control(PtzControlDTO request); + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java new file mode 100644 index 0000000..d3c6c4d --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.ptz.service.impl; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.netty.DeviceCommon; +import com.casic.missiles.modular.ptz.service.IPtzService; +import org.springframework.stereotype.Service; + +@Service +public class PtzServiceImpl implements IPtzService { + @Override + public boolean control(PtzControlDTO request) { + return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java index 8e685a9..67948d2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java @@ -19,8 +19,8 @@ private static DataGasServiceImpl dataGasService = SpringContextUtil.getApplicationContext().getBean(DataGasServiceImpl.class); private static DataTubeOtherServiceImpl dataTubeOtherService = SpringContextUtil.getApplicationContext().getBean(DataTubeOtherServiceImpl.class); private static DataMonitorPipeOtherServiceImpl dataMonitorPipeOtherService = SpringContextUtil.getApplicationContext().getBean(DataMonitorPipeOtherServiceImpl.class); - private static Map abstractResponseHashMap = new HashMap(); + private static Map abstractResponseHashMap = new HashMap(); static { // abstractResponseHashMap.put(DeviceTypeEnum.Liquid.name(), new LiquidResponse()); // abstractResponseHashMap.put(DeviceTypeEnum.Well.name(), new WellResponse()); @@ -32,8 +32,6 @@ } - - //event的具体处理 public static void makeResponse(String content) { JSONObject json = JSONObject.parseObject(content); if (null == json) return; diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java index 6b560ec..5f540a2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java @@ -493,4 +493,13 @@ return hexString; } + public static String hexToString(String hex) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < hex.length() - 1; i += 2) { + String str = hex.substring(i, i + 2); + sb.append((char) Integer.parseInt(str, 16)); + } + return sb.toString(); + } + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java new file mode 100644 index 0000000..30cc50c --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -0,0 +1,9 @@ +package com.casic.missiles.modular.ptz.service; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; + +public interface IPtzService { + + boolean control(PtzControlDTO request); + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java new file mode 100644 index 0000000..d3c6c4d --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.ptz.service.impl; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.netty.DeviceCommon; +import com.casic.missiles.modular.ptz.service.IPtzService; +import org.springframework.stereotype.Service; + +@Service +public class PtzServiceImpl implements IPtzService { + @Override + public boolean control(PtzControlDTO request) { + return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java index 8e685a9..67948d2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java @@ -19,8 +19,8 @@ private static DataGasServiceImpl dataGasService = SpringContextUtil.getApplicationContext().getBean(DataGasServiceImpl.class); private static DataTubeOtherServiceImpl dataTubeOtherService = SpringContextUtil.getApplicationContext().getBean(DataTubeOtherServiceImpl.class); private static DataMonitorPipeOtherServiceImpl dataMonitorPipeOtherService = SpringContextUtil.getApplicationContext().getBean(DataMonitorPipeOtherServiceImpl.class); - private static Map abstractResponseHashMap = new HashMap(); + private static Map abstractResponseHashMap = new HashMap(); static { // abstractResponseHashMap.put(DeviceTypeEnum.Liquid.name(), new LiquidResponse()); // abstractResponseHashMap.put(DeviceTypeEnum.Well.name(), new WellResponse()); @@ -32,8 +32,6 @@ } - - //event的具体处理 public static void makeResponse(String content) { JSONObject json = JSONObject.parseObject(content); if (null == json) return; diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java index 6b560ec..5f540a2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java @@ -493,4 +493,13 @@ return hexString; } + public static String hexToString(String hex) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < hex.length() - 1; i += 2) { + String str = hex.substring(i, i + 2); + sb.append((char) Integer.parseInt(str, 16)); + } + return sb.toString(); + } + } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java index b6bb868..b55c406 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java @@ -6,6 +6,7 @@ public class MsgUtil { + // public static String code_ = "68-ED-A4-38-37-FF"; public static String getMsg(String data, String type, String code) { @@ -39,7 +40,7 @@ } public static void main(String[] args) { - String crc = getMsg("257", "0", ""); + String crc = getMsg("20.0", "1", "YT20240913"); System.out.println(crc); System.out.println(ByteUtil.hexStringToBytes("12654", 8)); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java index c81054f..117822b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmRecordsController.java @@ -68,17 +68,28 @@ @ApiOperation("查询历史告警详情") @PostMapping("/historyAlarmDetail") @ResponseBody - public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { + public ReturnDTO historyAlarmDetail(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); return ReturnUtil.success(iAlarmRecordsService.historyAlarmDetail(idDTO.getId())); } - //todo:历史报警导出 + + @ApiOperation("导出历史报警记录") + @RequestMapping(value = "/batchExportHistory", method = RequestMethod.GET) + public void batchExportHistory(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dtoList = iAlarmRecordsService.batchExportHistory(request, dataScope); + try { + iBaseExportService.exportExcel(response, AlarmHistoryRecordExportDTO.class, dtoList, ExportEnum.ALARM_HISTORY_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } - @ApiOperation("导出") + @ApiOperation("导出当前告警记录") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody AlarmRecordDTO request, HttpServletResponse response) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index 16477d8..59de661 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -34,7 +34,7 @@ Map view(@Param("id") Long id); - AlarmRecords historyAlarmDetail(@Param("id") Long id); + AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); @@ -42,6 +42,8 @@ List allList(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List batchExportHistory(@Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + List> viewPlace(@Param("request") TrackRequestDTO request); List> getOfflineDevices(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index b1f3839..bab7f57 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -182,7 +182,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -463,6 +463,72 @@ SELECT t.DEVCODE,t.DEVICE_TYPE,t.tagNumber,t.ledgerCode,t.TYPE_NAME,t.place from device_off t where not EXISTS(SELECT 1 from alarm_records ar where ar.DEVCODE= t.DEVCODE and ar.EXCEPTION_TYPE=1 ) + + + + + update bus_device set CELL = #{cell}, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java new file mode 100644 index 0000000..8f0f688 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmHistoryRecordExportDTO.java @@ -0,0 +1,58 @@ +package com.casic.missiles.modular.alarm.dto; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class AlarmHistoryRecordExportDTO { + + @ExcelProperty(value = "报警类别", order = 1) + private String alarmCategory; + + @ExcelProperty(value = "报警类型", order = 2) + private String alarmType; + + @ExcelProperty(value = "报警等级", order = 3) + private String alarmLevelName; + + @ExcelProperty(value = "报警原因", order = 4) + private String alarmContent; + + + @ExcelProperty(value = "安装位号", order = 5) + private String tagNumber; + + @ExcelProperty(value = "名称", order = 6) + private String ledgerName; + + + @ExcelProperty(value = "详细位置", order = 7) + private String position; + + @ExcelProperty(value = "管理单位", order = 8) + private String deptName; + + + @ExcelProperty(value = "设备编号", order = 9) + private String devcode; + + + @ExcelProperty(value = "设备类型", order = 10) + private String devTypeName; + + + @ExcelProperty(value = "报警时间", order = 11) + private Date alarmTime; + + @ExcelProperty(value = "解除时间", order = 12) + private Date cancelTime; + + @ExcelProperty(value = "解除时长", order = 13) + private String cancelDuration; + + private Long deptid; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java new file mode 100644 index 0000000..9e63423 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRecordDetailDTO.java @@ -0,0 +1,117 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class AlarmRecordDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("设备编号") + private String devcode; + + @ApiModelProperty("台账编号") + private String ledgerCode; + + @ApiModelProperty("台账位号") + private String ledgerNumber; + + @ApiModelProperty("报警类型") + private Long alarmTypeId; + + @ApiModelProperty("报警内容") + private String alarmContent; + + @ApiModelProperty("报警值") + private String alarmValue; + + @ApiModelProperty("告警等级") + private Long alarmLevel; + + @ApiModelProperty("报警时间") + private Date alarmTime; + + @ApiModelProperty("消警状态(1:正在告警,0:已取消)") + private String status; + + @ApiModelProperty("报警消息,存报警事件code") + private String alarmMsg; + + @ApiModelProperty("处置状态(1:未读,2:已读,3,挂起,4:待现场确认,5:已确认,6:待处置,7:已处置)") + private String processStatus; + + @ApiModelProperty("上个处置状态") + private String preProcessStatus; + + @ApiModelProperty("处置时间") + private Date processTime; + + @ApiModelProperty("解除时间") + private Date cancelTime; + + @ApiModelProperty("创建事件") + private Date ts; + + @ApiModelProperty("报警位置") + private String position; + + @ApiModelProperty("是否误报(0:是,1:否)") + private String realAlarm; + + @ApiModelProperty("异常类型(1:设备异常,0:数据异常)") + private String exceptionType; + + @ApiModelProperty("产权单位") + private String propertyOwner; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("处置状态名称") + private String processStatusName; + + @ApiModelProperty("是否误报名称") + private String realAlarmName; + + @ApiModelProperty("管理方式") + private String manageType; + + @ApiModelProperty("报警经度高德") + private String lngGaode; + + @ApiModelProperty("报警纬度高德") + private String latGaode; + + @ApiModelProperty("报警类型名称") + private String alarmType; + + @ApiModelProperty("管理单位id") + private Long deptid; + + @ApiModelProperty("设备类型名称") + private String devTypeName; + + @ApiModelProperty("报警等级名称") + private String alarmLevelName; + + @ApiModelProperty("解除时长") + private String cancelDuration; + + @ApiModelProperty("报警类别") + private String alarmCategory; + + @ApiModelProperty("台账id") + private Long ledgerId; + + @ApiModelProperty("监测对象id") + private String watchObject; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java index 154be07..bf6e543 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRecords.java @@ -155,14 +155,6 @@ @TableField(exist = false) private String alarmCategory; - @ApiModelProperty("台账id") - @TableField(exist = false) - private Long ledgerId; - - @ApiModelProperty("监测对象id") - @TableField(exist = false) - private String watchObject; - public AlarmRecords() { } @@ -184,6 +176,7 @@ this.position = position; this.exceptionType = exceptionType; } + public AlarmRecords(String devcode, String ledgerCode, String ledgerNumber, Long alarmTypeId, String alarmContent, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 781e8d5..d852016 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -20,39 +20,41 @@ */ public interface IAlarmRecordsService extends IService { - Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); + Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope); - Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); + Page tracksList(Page page, TrackRequestDTO request, DataScope dataScope); - Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page pop(); + Page pop(); - Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page historyListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); + Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - Map view(Long id,String exceptionType); + Map view(Long id, String exceptionType); - boolean suspend(SuspendDTO suspendDTO); + boolean suspend(SuspendDTO suspendDTO); - boolean remind(RemindDTO remindDTO); + boolean remind(RemindDTO remindDTO); - boolean handle(HandleDTO handleDTO); + boolean handle(HandleDTO handleDTO); - boolean read(Long id); + boolean read(Long id); - AlarmRecords historyAlarmDetail(Long id); + AlarmRecordDetailDTO historyAlarmDetail(Long id); - List changeProcessStatus(List ids); + List changeProcessStatus(List ids); boolean processAppContent(Map resultParams); - List> nodeDetail(Long alarmId); + List> nodeDetail(Long alarmId); - List> viewPlace(TrackRequestDTO requestDTO); + List> viewPlace(TrackRequestDTO requestDTO); - List allList(AlarmRecordDTO request, DataScope dataScope); + List allList(AlarmRecordDTO request, DataScope dataScope); + + List batchExportHistory(AlarmRecordDTO request, DataScope dataScope); void cancelDeviceAlarm(String devCode); @@ -60,13 +62,13 @@ void processOffline(); - void updateCell(String devCode,String onLineStatus,String cell); + void updateCell(String devCode, String onLineStatus, String cell); - boolean isDataAlarmByCode(String devCode,Float alarmThreshold); + boolean isDataAlarmByCode(String devCode, Float alarmThreshold); - boolean isDeviceAlarmByCode(String devCode,String alarmThreshold); + boolean isDeviceAlarmByCode(String devCode, String alarmThreshold); - boolean saveAlarms(String devCode,String gas,String upTime, List busWellDTOList,AlarmRuleResponseDTO alarmRuleResponseDTO,String typeName); + boolean saveAlarms(String devCode, String gas, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName); boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 62d6e1f..aa8ef86 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -127,13 +127,13 @@ } @Override - public AlarmRecords historyAlarmDetail(Long id) { - AlarmRecords alarmRecords = this.baseMapper.historyAlarmDetail(id); - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); - alarmRecords.setCancelDuration(TimeConverter(alarmRecords.getCancelDuration())); - alarmRecords.setDeptName(getDeptNamesByDeptId(alarmRecords.getDeptid())); - alarmRecords.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecords.getAlarmCategory())); - return alarmRecords; + public AlarmRecordDetailDTO historyAlarmDetail(Long id) { + AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); + detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); + detailDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", detailDTO.getAlarmCategory())); + return detailDTO; } @Override @@ -407,7 +407,6 @@ public List allList(AlarmRecordDTO request, DataScope dataScope) { List alarmRecordExportDTOList = this.baseMapper.allList(request, dataScope, getDeptIds(request.getDeptId())); - alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { alarmRecordExportDTO.setProcessStatus(ApprovalStatusEnum.getValue(alarmRecordExportDTO.getProcessStatus())); alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); @@ -417,6 +416,16 @@ } + @Override + public List batchExportHistory(AlarmRecordDTO request, DataScope dataScope) { + List alarmRecordExportDTOList = this.baseMapper.batchExportHistory(request, dataScope, getDeptIds(request.getDeptId())); + alarmRecordExportDTOList.forEach(alarmRecordExportDTO -> { + alarmRecordExportDTO.setDeptName(getDeptNamesByDeptId(alarmRecordExportDTO.getDeptid())); + alarmRecordExportDTO.setAlarmCategory(abstractDictService.getDictNameByCode("alarmCategory", alarmRecordExportDTO.getAlarmCategory())); + }); + return alarmRecordExportDTOList; + } + /** * 消除设备异常 * @@ -514,6 +523,7 @@ msg.put("tagNumber", busWellDTOList.get(0).getTagNumber()); msg.put("alarmTime", upTime); msg.put("status", "未读"); + msg.put("value", data); msg.put("typeName", typeName); webSocket.sendAllMessage(msg.toJSONString()); } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java index dbaa927..17c56ec 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataGasMapper.java @@ -1,8 +1,13 @@ package com.casic.missiles.modular.data.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.modular.alarm.dto.BusAlarmLedgerDTO; import com.casic.missiles.modular.data.entity.DataGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** *

@@ -15,4 +20,11 @@ @Mapper public interface DataGasMapper extends BaseMapper { + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber,bv.ledgerCode,bv.place from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1") + List getListByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java index 1b04926..01327dd 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/dao/DataPanGasMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.modular.data.entity.DataPanGas; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +17,13 @@ @Mapper public interface DataPanGasMapper extends BaseMapper { + + @Select("WITH device_temp as ( " + + "SELECT bl.LEDGER_ID,bl.TYPE from bus_device_ledger bl where bl.DEVICE_ID in ( " + + "SELECT bd.id FROM `bus_device` bd where bd.DEVCODE= #{devCode} and bd.VALID>0) and bl.VALID=1)" + + "SELECT bv.tagNumber from device_temp dt " + + "left join bus_ledger_all_view bv on bv.id= dt.LEDGER_ID and dt.TYPE=bv.TYPE and bv.VALID=1 limit 1") + + String getWellCodeByDevCode(@Param("devCode") String devCode); + } diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java index fcf31cc..80dd5e8 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataPanGas.java @@ -40,6 +40,10 @@ @TableField("DEVICE_CODE") private String deviceCode; + @ApiModelProperty("场站位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("水平角度") @TableField("DIRCETION") private String dircetion; diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java index 20dd07d..7cfc619 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataGasServiceImpl.java @@ -11,18 +11,15 @@ import com.casic.missiles.modular.alarm.service.IAlarmRuleService; import com.casic.missiles.modular.data.dao.BusWellMapper; import com.casic.missiles.modular.data.dao.DataGasMapper; -import com.casic.missiles.modular.data.dto.BusWellDTO; import com.casic.missiles.modular.data.entity.DataGas; import com.casic.missiles.modular.data.service.IDataAbstractService; import com.casic.missiles.modular.data.service.IDataGasService; import com.casic.missiles.util.CommonUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -87,15 +84,7 @@ } public List getBusAlarmLedgerList(String devCode) { - List busWellDTOList = busWellMapper.getListByDevCode(devCode); - - List busLedgerDTOList = new ArrayList<>(); - for (BusWellDTO busWellDTO : busWellDTOList) { - BusAlarmLedgerDTO busLedgerDTO = new BusAlarmLedgerDTO(); - BeanUtils.copyProperties(busWellDTO, busLedgerDTO); - busLedgerDTOList.add(busLedgerDTO); - } - return busLedgerDTOList; + return this.baseMapper.getListByDevCode(devCode); } @@ -160,7 +149,7 @@ //写入报警 //1、判断报警是否已存在 if (!alarmRecordsService.isDataAlarmByCode(devCode, Float.valueOf(alarmRuleResponseDTO.getAlarmThreshold()))) { - alarmFlag =alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO,DeviceTypeEnum.Methane.getName()); + alarmFlag = alarmRecordsService.saveAlarms(devCode, gas, upTime, busWellDTOList, alarmRuleResponseDTO, DeviceTypeEnum.Methane.getName()); } break; } @@ -169,7 +158,7 @@ //5.清数据报警 alarmRecordsService.cancelDataAlarm(devCode); //6.更新电量及状态 (1:正常,2:报警) - alarmRecordsService.updateCell(devCode,alarmFlag?"2":"1",cell); + alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); } catch (Exception e) { e.printStackTrace(); diff --git a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java index 8ea5bc8..e352185 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/service/impl/DataPanGasServiceImpl.java @@ -6,6 +6,8 @@ import com.casic.missiles.modular.data.service.IDataPanGasService; import org.springframework.stereotype.Service; +import java.util.Date; + /** *

* 云台监测数据表 服务实现类 @@ -17,4 +19,28 @@ @Service public class DataPanGasServiceImpl extends ServiceImpl implements IDataPanGasService { + public void process(String dataContent) { + + String devCode = dataContent.split(",")[0]; + String dataValue = dataContent.split(",")[1]; + //toDo:加缓存 + String stationCode = this.baseMapper.getWellCodeByDevCode(devCode); + //存储数据 + DataPanGas dataPanGas = new DataPanGas(); + dataPanGas.setDeviceCode(devCode); + dataPanGas.setConcentration(dataValue); + dataPanGas.setLogtime(new Date()); + dataPanGas.setLedgerNumber(stationCode); + this.save(dataPanGas); + //判断报警 + + + //websocket 推送 + + + + System.out.println("22222222---->"+dataContent); + + } + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java index 0147d92..18da3cd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceStaticsController.java @@ -5,10 +5,7 @@ import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import com.casic.missiles.util.ReturnUtil; @@ -52,7 +49,7 @@ @ApiOperation("离线统计") @PostMapping("/offLine") @ResponseBody - public ReturnDTO offLine() { + public ReturnDTO offLine() { return ReturnUtil.success(iBusDeviceStaticsService.offLine()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java index d7ce8b2..c4b4450 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusManufacturerController.java @@ -1,16 +1,25 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.IdsDTO; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.modular.device.entity.BusManufacturer; import com.casic.missiles.modular.device.service.IBusManufacturerService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** *

@@ -30,8 +39,42 @@ @ApiOperation("查询列表") @PostMapping("/listPage") - public ReturnDTO listPage() { - return ReturnUtil.success(busManufacturerService.list()); + public ReturnDTO listPage(@RequestBody BusManufacturer busManufacturer) { + Page page = PageFactory.defaultPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getName()), "NAME", busManufacturer.getName()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getContact()), "CONTACT", busManufacturer.getContact()); + queryWrapper.like(ObjectUtil.isNotEmpty(busManufacturer.getTel()), "TEL", busManufacturer.getTel()); + return ReturnUtil.success(super.packForBT(busManufacturerService.page(page, queryWrapper))); + } + + + @ApiOperation("新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusManufacturer busManufacturer) { + + return ReturnUtil.success(busManufacturerService.save(busManufacturer)); + } + + @ApiOperation("编辑") + @PostMapping("/edit") + @ResponseBody + public ReturnDTO edit(@RequestBody BusManufacturer busManufacturer) { + Assert.isFalse(Objects.isNull(busManufacturer.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.updateById(busManufacturer)); + } + + @ApiOperation("批量删除") + @PostMapping("/batchDelete") + @ResponseBody + public ReturnDTO batchDelete(@RequestBody IdsDTO idsDTO) { + Assert.isFalse(Objects.isNull(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(busManufacturerService.removeByIds(idsDTO.getIds())); } } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java index aaca125..868544d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusStationMonitorController.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import com.casic.missiles.util.ReturnUtil; @@ -40,4 +41,17 @@ DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); return ReturnUtil.success(busStationMonitorService.list(request, dataScope)); } + + + @ApiOperation("获取监控列表,树结构用") + @PostMapping("/treeList") + @ResponseBody + public ReturnDTO treeList(@RequestBody BusLedgerDTO request) { + DataScope dataScope = iCommonPermissionService.getAuthService().getLoginUserDataScope(); + return ReturnUtil.success(busStationMonitorService.treeList(request, dataScope)); + } + + + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java index 18d7aa1..29455ef 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceStaticsMapper.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -28,7 +25,7 @@ List deviceType(@Param("deptStrs") String deptStrs); - List offLine(@Param("deptStrs") String deptStrs); + List offLine(@Param("deptStrs") String deptStrs); List company(@Param("deptStrs") String deptStrs); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java index 220da50..1f99a9b 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusStationMonitorMapper.java @@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -24,4 +25,6 @@ Page pageList(@Param("scope") DataScope dataScope, Page page, @Param("request") BusLedgerDTO request); List list(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); + + List> treeList(@Param("scope") DataScope dataScope, @Param("request") BusLedgerDTO request); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml index 3379c6e..4b3e70c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceStaticsMapper.xml @@ -68,18 +68,19 @@ bt.IS_USED =1 - WITH device_temp AS ( SELECT - count( 1 ) AS deviceCount, + count(1) AS deviceCount, + SUM(CASE WHEN bd.ONLINE_STATE=0 THEN 1 ELSE 0 END) as offCount, bd.DEVICE_TYPE FROM bus_device bd LEFT JOIN bus_device_ledger bl ON bl.DEVICE_ID = bd.ID LEFT JOIN bus_ledger_all_view lt ON bl.LEDGER_ID = lt.ID and bl.type = lt.type WHERE - bd.VALID > 0 and bd.ONLINE_STATE=0 + bd.VALID > 0 and lt.DEPTID in (${deptStrs}) @@ -88,7 +89,8 @@ bd.DEVICE_TYPE ) SELECT bt.TYPE_NAME AS `name`, - IFNULL( dt.deviceCount, 0 ) AS `value` + IFNULL( dt.deviceCount, 0 ) AS deviceCount, + IFNULL( dt.offCount, 0 ) AS offCount FROM base_device_type bt LEFT JOIN device_temp dt ON bt.id = dt.DEVICE_TYPE diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml index 2ac1557..45e3327 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusStationMonitorMapper.xml @@ -92,4 +92,13 @@ ORDER BY bl.TS DESC + + + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java new file mode 100644 index 0000000..39bfb4d --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceOffDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceOffDTO { + + @ApiModelProperty("离线数") + private Long offCount; + + @ApiModelProperty("设备类型") + private String name; + + @ApiModelProperty("总数") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java new file mode 100644 index 0000000..2b72079 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/PtzControlDTO.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.device.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +@Data +public class PtzControlDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("云台编号") + private String devCode; + + @ApiModelProperty("指令内容") + private String instructions; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java index 106c722..d2e74bf 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusManufacturer.java @@ -31,12 +31,15 @@ @TableId("ID") private Long id; + @ApiModelProperty("厂商名称") @TableField("`NAME`") private String name; + @ApiModelProperty("厂商联系人") @TableField("CONTACT") private String contact; + @ApiModelProperty("厂商电话") @TableField("TEL") private String tel; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java index ee90853..3d371a9 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceStaticsService.java @@ -2,10 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import java.util.List; @@ -23,7 +20,7 @@ List deviceType(); - List offLine(); + List offLine(); List company(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java index de5ea57..4916c6c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/IBusStationMonitorService.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import java.util.List; +import java.util.Map; /** *

@@ -19,6 +21,9 @@ public interface IBusStationMonitorService extends IService { Page pageList(Page page, BusLedgerDTO request, DataScope dataScope); -// + List list(BusLedgerDTO request, DataScope dataScope); + + List> treeList(BusLedgerDTO request, DataScope dataScope); + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java index c4edc15..fd9554e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceStaticsServiceImpl.java @@ -7,10 +7,7 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; -import com.casic.missiles.modular.device.dto.DeviceStatusDTO; -import com.casic.missiles.modular.device.dto.OffLineRequestDTO; -import com.casic.missiles.modular.device.dto.OffLineResponseDTO; -import com.casic.missiles.modular.device.dto.ResultDTO; +import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.BusDevice; import com.casic.missiles.modular.device.service.IBusDeviceStaticsService; import lombok.RequiredArgsConstructor; @@ -47,7 +44,7 @@ @Override - public List offLine() { + public List offLine() { return this.baseMapper.offLine(getDeptIds()); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java index 2ce70f4..690d5d2 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusStationMonitorServiceImpl.java @@ -6,12 +6,14 @@ import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.device.dao.BusStationMonitorMapper; import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusStationMonitorService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -42,4 +44,11 @@ public List list(BusLedgerDTO request, DataScope dataScope) { return this.baseMapper.list(dataScope, request); } + + @Override + public List> treeList(BusLedgerDTO request, DataScope dataScope) { + return this.baseMapper.treeList(dataScope, request); + } + + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java index 2e43beb..c120409 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -6,7 +6,8 @@ * @Date: 2022/12/2 11:53 */ public enum ExportEnum { - ALARM_EXPORT("alarmRecordData", "alarmRecordData", "报警记录"), + ALARM_EXPORT("alarmRecordData", "alarmRecordData", "当前报警记录"), + ALARM_HISTORY_EXPORT("alarmHistoryRecordData", "alarmHistoryRecordData", "历史报警记录"), DEVICE_EXPORT("deviceInfo", "deviceInfo", "设备信息"), LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java index 6f4da3a..ead555c 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/DeviceCommon.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.netty; import cn.hutool.core.util.ObjectUtil; +import io.netty.buffer.Unpooled; import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.nio.charset.StandardCharsets; import java.util.concurrent.ConcurrentHashMap; /** * 全局变量,用于维护设备的登录信息 */ +@Slf4j @Component public class DeviceCommon { @@ -41,12 +46,26 @@ public static boolean removeChannelByName(String channelId) { if (CHANNEL_MAP.containsKey(channelId)) { CHANNEL_MAP.remove(channelId); - if(devcodeMap.containsValue(channelId)){ - devcodeMap.values().removeIf(value->value.equals(channelId)); + if (devcodeMap.containsValue(channelId)) { + devcodeMap.values().removeIf(value -> value.equals(channelId)); } return true; } return false; } + public static boolean sendMsg(String devCode, String msg) { + log.info("****收到控制指令*****"+devCode+"---->"+msg); + try { + Channel channel = getChannelByName(devCode); + if (null != channel) { + channel.writeAndFlush(Unpooled.copiedBuffer(msg.getBytes(StandardCharsets.UTF_8))); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("****指令发送失败*****"+devCode+"---->"+msg); + return false; + } } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java index fbdc1c9..81d0b51 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/netty/PanTiltChannelHandler.java @@ -1,17 +1,40 @@ package com.casic.missiles.modular.netty; -import io.netty.buffer.Unpooled; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.modular.data.service.impl.DataGasServiceImpl; +import com.casic.missiles.modular.data.service.impl.DataPanGasServiceImpl; +import com.casic.missiles.modular.util.RSAUtil; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.concurrent.EventExecutorGroup; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +@Slf4j +@Component public class PanTiltChannelHandler extends ChannelInboundHandlerAdapter { //保留所有与服务器建立连接的channel对象,这边的GlobalEventExecutor在写博客的时候解释一下,看其doc // private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + private final ExecutorService executor = Executors.newCachedThreadPool(); + + + private static DataPanGasServiceImpl dataPanGasService; + + public PanTiltChannelHandler() { + } + + @Autowired + public void setDataPanGasService(DataPanGasServiceImpl dataPanGasService) { + this.dataPanGasService = dataPanGasService; + } + /** * 服务器端收到任何一个客户端的消息都会触发这个方法 * 连接的客户端向服务器端发送消息,那么其他客户端都收到此消息,自己收到【自己】+消息 @@ -20,9 +43,19 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { super.channelRead(ctx, msg); Channel channel = ctx.channel(); - channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); - String devCode = "1231313123"; - DeviceCommon.devcodeMap.put(devCode,channel.id().asLongText()); +// channel.writeAndFlush(Unpooled.copiedBuffer(msg.toString().getBytes(StandardCharsets.UTF_8))); + executor.submit(new Runnable() { + @Override + public void run() { + String encryptData = msg.toString(); + String decryptData = RSAUtil.getDecryptMsg(encryptData); + if (ObjectUtil.isNotEmpty(decryptData) && decryptData.contains(",")) { + String devCode = decryptData.split(",")[0]; + DeviceCommon.devcodeMap.put(devCode, channel.id().asLongText()); + dataPanGasService.process(decryptData); + } + } + }); } //表示服务端与客户端连接建立 @@ -37,7 +70,7 @@ */ // channelGroup.writeAndFlush(" 【服务器】 -" + channel.remoteAddress() + " 加入\n"); // channelGroup.add(channel); - DeviceCommon.addChannel(channel.id().asLongText(),channel); + DeviceCommon.addChannel(channel.id().asLongText(), channel); } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java new file mode 100644 index 0000000..1c80520 --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/controller/PtzController.java @@ -0,0 +1,26 @@ +package com.casic.missiles.modular.ptz.controller; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.ptz.service.IPtzService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@Api(tags = "云台控制模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/ptz") +public class PtzController { + + private final IPtzService iPtzService; + + @ApiOperation("云台控制") + @PostMapping("/control") + @ResponseBody + public ReturnDTO control(@RequestBody PtzControlDTO request) { + return ReturnUtil.success(iPtzService.control(request)); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java new file mode 100644 index 0000000..30cc50c --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/IPtzService.java @@ -0,0 +1,9 @@ +package com.casic.missiles.modular.ptz.service; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; + +public interface IPtzService { + + boolean control(PtzControlDTO request); + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java new file mode 100644 index 0000000..d3c6c4d --- /dev/null +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/ptz/service/impl/PtzServiceImpl.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.ptz.service.impl; + +import com.casic.missiles.modular.device.dto.PtzControlDTO; +import com.casic.missiles.modular.netty.DeviceCommon; +import com.casic.missiles.modular.ptz.service.IPtzService; +import org.springframework.stereotype.Service; + +@Service +public class PtzServiceImpl implements IPtzService { + @Override + public boolean control(PtzControlDTO request) { + return DeviceCommon.sendMsg(request.getDevCode(), request.getInstructions()); + } +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java index 8e685a9..67948d2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/resolver/ResponseResolver.java @@ -19,8 +19,8 @@ private static DataGasServiceImpl dataGasService = SpringContextUtil.getApplicationContext().getBean(DataGasServiceImpl.class); private static DataTubeOtherServiceImpl dataTubeOtherService = SpringContextUtil.getApplicationContext().getBean(DataTubeOtherServiceImpl.class); private static DataMonitorPipeOtherServiceImpl dataMonitorPipeOtherService = SpringContextUtil.getApplicationContext().getBean(DataMonitorPipeOtherServiceImpl.class); - private static Map abstractResponseHashMap = new HashMap(); + private static Map abstractResponseHashMap = new HashMap(); static { // abstractResponseHashMap.put(DeviceTypeEnum.Liquid.name(), new LiquidResponse()); // abstractResponseHashMap.put(DeviceTypeEnum.Well.name(), new WellResponse()); @@ -32,8 +32,6 @@ } - - //event的具体处理 public static void makeResponse(String content) { JSONObject json = JSONObject.parseObject(content); if (null == json) return; diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java index 6b560ec..5f540a2 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/ByteUtil.java @@ -493,4 +493,13 @@ return hexString; } + public static String hexToString(String hex) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < hex.length() - 1; i += 2) { + String str = hex.substring(i, i + 2); + sb.append((char) Integer.parseInt(str, 16)); + } + return sb.toString(); + } + } diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java index b6bb868..b55c406 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/MsgUtil.java @@ -6,6 +6,7 @@ public class MsgUtil { + // public static String code_ = "68-ED-A4-38-37-FF"; public static String getMsg(String data, String type, String code) { @@ -39,7 +40,7 @@ } public static void main(String[] args) { - String crc = getMsg("257", "0", ""); + String crc = getMsg("20.0", "1", "YT20240913"); System.out.println(crc); System.out.println(ByteUtil.hexStringToBytes("12654", 8)); diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java index 78356be..51b0dd0 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/util/RSAUtil.java @@ -69,7 +69,8 @@ private static final String BR_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPpAX52jBLYqu9E3a95EV2FArV48n5LLQxajEXuuIsRr9fBykn4REeS1RIk4vQYEi1Tgs1xzXEQe2rWgTEnWj8rlscXdUZO0pnluj6YVAIc6SUJFIhLj81XLg8exLTZbSlIWzXHMXYmpkjH9yi7AB6wFRkJ0mOKD5MTdgz4IPK+QIDAQAB"; - private static final String BR_PRIVATE_KEY="MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kBfnaMEtiq70Tdr3kRXYUCtXjyfkstDFqMRe64ixGv18HKSfhER5LVEiTi9BgSLVOCzXHNcRB7ataBMSdaPyuWxxd1Rk7SmeW6PphUAhzpJQkUiEuPzVcuDx7EtNltKUhbNccxdiamSMf3KLsAHrAVGQnSY4oPkxN2DPgg8r5AgMBAAECgYBARwcBkrjP0zzE5IPbX94Rg9CBfGiyX2XXQwzq8I8rfxE+JgctuFKfutfhjl0fhyaiM2Vi0F1oEJSZfDPsBACpd9EzDGQxaomLF6rFLXhy8bgb4MLkiuesgYIr/2XnQkeuqVmS+St7j57qfytTcfOj1H0VlLEYuEKWruuTwhhdnQJBAP1HL1brSWw8oFVjjtg9njzatQinUhTrAfS90VMr47L3bHknwDGeZ3IhptfObLXyIwN6pFAkrIE4vm2C6W6SXrMCQQCRLzSnP5YM4f8B2hXkPhVQEVc0eACscIO9L7JqbYjA7uq7WYoDxmk7KRIHh/grrSMA9Mqs3ON0zNdjifKoqAWjAkEAyc4AQCc011LvBVpQJKfj/uTcPcrjsdsWMeVUdgqQYLaX7Wjo0CBAmEWL5IOLRuVpVIpRhbHS6RtHT4ZxbDKf1QJAP0sgHkW3SbiArrL/1jhGnFhi9ynVyVdn52NS2dkUxF+kD7cyVwD5wWPfS084nvnlB7awYPoPY00mHWv3URWnFwJAGrr5YA4XH4Hr2hjDdiy+tBv3e1Ecq6AGesD8yMK8UHp2wS6PRhpa/efwPle7DB/YLurPpitG71dZE2BfRC1jfg=="; + private static final String BR_PRIVATE_KEY = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+kBfnaMEtiq70Tdr3kRXYUCtXjyfkstDFqMRe64ixGv18HKSfhER5LVEiTi9BgSLVOCzXHNcRB7ataBMSdaPyuWxxd1Rk7SmeW6PphUAhzpJQkUiEuPzVcuDx7EtNltKUhbNccxdiamSMf3KLsAHrAVGQnSY4oPkxN2DPgg8r5AgMBAAECgYBARwcBkrjP0zzE5IPbX94Rg9CBfGiyX2XXQwzq8I8rfxE+JgctuFKfutfhjl0fhyaiM2Vi0F1oEJSZfDPsBACpd9EzDGQxaomLF6rFLXhy8bgb4MLkiuesgYIr/2XnQkeuqVmS+St7j57qfytTcfOj1H0VlLEYuEKWruuTwhhdnQJBAP1HL1brSWw8oFVjjtg9njzatQinUhTrAfS90VMr47L3bHknwDGeZ3IhptfObLXyIwN6pFAkrIE4vm2C6W6SXrMCQQCRLzSnP5YM4f8B2hXkPhVQEVc0eACscIO9L7JqbYjA7uq7WYoDxmk7KRIHh/grrSMA9Mqs3ON0zNdjifKoqAWjAkEAyc4AQCc011LvBVpQJKfj/uTcPcrjsdsWMeVUdgqQYLaX7Wjo0CBAmEWL5IOLRuVpVIpRhbHS6RtHT4ZxbDKf1QJAP0sgHkW3SbiArrL/1jhGnFhi9ynVyVdn52NS2dkUxF+kD7cyVwD5wWPfS084nvnlB7awYPoPY00mHWv3URWnFwJAGrr5YA4XH4Hr2hjDdiy+tBv3e1Ecq6AGesD8yMK8UHp2wS6PRhpa/efwPle7DB/YLurPpitG71dZE2BfRC1jfg=="; + /** * 获取公钥字符串 * @@ -327,8 +328,27 @@ return encodeMsg; } + public final static String PRE_FIX = "010304"; + + public static String getDecryptMsg(String msg) { + String decryptMsg = ""; + try { + decryptMsg = decrypt(msg, BR_PRIVATE_KEY); + if (decryptMsg.startsWith(PRE_FIX) && decryptMsg.length() >= 22) { + int dataValue = Integer.parseInt(decryptMsg.substring(6, 14), 16); + String devCode = ByteUtil.hexToString(decryptMsg.substring(22)); + decryptMsg = devCode + "," + dataValue; + } + } catch (Exception e) { + e.printStackTrace(); + } + return decryptMsg; + } + public static void main(String[] args) throws Exception { + + getDecryptMsg("010304000187038802000136382D45592D41342D33382D32332D4646"); // 初始化密钥对 Map keyMap = initKey(); // 获取公钥字符串 @@ -350,7 +370,7 @@ System.out.println("\n"); // 待加密内容,例:123 - String s = "010304000001013A63000136382D45442D41342D33382D33372D4345"; + String s = "01030400000014FA3C000159543230323430393133"; // 进行RSA加密 String encrypt = encrypt(s.getBytes(), BR_PUBLIC_KEY); // 打印加密后内容