diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index dd49c8f..ea96b37 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,21 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; import com.casic.missiles.modular.device.dao.BusWellMonitorMapper; -import com.casic.missiles.modular.device.dto.*; +import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; import com.casic.missiles.modular.system.model.Dept; -import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,10 +45,11 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { - Page pageList = this.baseMapper.pageList(dataScope, page, request); + Page pageList = this.baseMapper.pageList(getDeptScopeIds(request.getDeptid()), page, request); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 @@ -62,7 +67,7 @@ public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 // 直接返回 - return this.baseMapper.list(dataScope, request); + return this.baseMapper.list(getDeptScopeIds(request.getDeptid()), request); } @Override @@ -111,9 +116,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index dd49c8f..ea96b37 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,21 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; import com.casic.missiles.modular.device.dao.BusWellMonitorMapper; -import com.casic.missiles.modular.device.dto.*; +import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; import com.casic.missiles.modular.system.model.Dept; -import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,10 +45,11 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { - Page pageList = this.baseMapper.pageList(dataScope, page, request); + Page pageList = this.baseMapper.pageList(getDeptScopeIds(request.getDeptid()), page, request); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 @@ -62,7 +67,7 @@ public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 // 直接返回 - return this.baseMapper.list(dataScope, request); + return this.baseMapper.list(getDeptScopeIds(request.getDeptid()), request); } @Override @@ -111,9 +116,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java index 0212e42..dc516a3 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -11,7 +11,8 @@ CONFIRMED("5", "已确认"), UNPROCESS("6", "待处置"), PROCESSED("7", "已处置"), - DELETED("8", "删除"); + FINISHED("8", "数据恢复正常,报警解除"), + DELETED("9", "删除"); private String code; private String value; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index dd49c8f..ea96b37 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,21 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; import com.casic.missiles.modular.device.dao.BusWellMonitorMapper; -import com.casic.missiles.modular.device.dto.*; +import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; import com.casic.missiles.modular.system.model.Dept; -import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,10 +45,11 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { - Page pageList = this.baseMapper.pageList(dataScope, page, request); + Page pageList = this.baseMapper.pageList(getDeptScopeIds(request.getDeptid()), page, request); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 @@ -62,7 +67,7 @@ public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 // 直接返回 - return this.baseMapper.list(dataScope, request); + return this.baseMapper.list(getDeptScopeIds(request.getDeptid()), request); } @Override @@ -111,9 +116,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java index 0212e42..dc516a3 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -11,7 +11,8 @@ CONFIRMED("5", "已确认"), UNPROCESS("6", "待处置"), PROCESSED("7", "已处置"), - DELETED("8", "删除"); + FINISHED("8", "数据恢复正常,报警解除"), + DELETED("9", "删除"); private String code; private String value; diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 3652873..0cba757 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -63,4 +63,14 @@ String MONTH= "3"; String DAYS= "4"; + String DEPT_ALL= "corporate"; + String DEPT_COMPANY= "company"; + + //1、报警类、2确认/处置类、3消警类、4施工类 + String MESSAGE_TYPE_1= "1"; + String MESSAGE_TYPE_2= "2"; + String MESSAGE_TYPE_3= "3"; + String MESSAGE_TYPE_4= "4"; + + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index dd49c8f..ea96b37 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,21 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; import com.casic.missiles.modular.device.dao.BusWellMonitorMapper; -import com.casic.missiles.modular.device.dto.*; +import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; import com.casic.missiles.modular.system.model.Dept; -import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,10 +45,11 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { - Page pageList = this.baseMapper.pageList(dataScope, page, request); + Page pageList = this.baseMapper.pageList(getDeptScopeIds(request.getDeptid()), page, request); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 @@ -62,7 +67,7 @@ public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 // 直接返回 - return this.baseMapper.list(dataScope, request); + return this.baseMapper.list(getDeptScopeIds(request.getDeptid()), request); } @Override @@ -111,9 +116,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java index 0212e42..dc516a3 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -11,7 +11,8 @@ CONFIRMED("5", "已确认"), UNPROCESS("6", "待处置"), PROCESSED("7", "已处置"), - DELETED("8", "删除"); + FINISHED("8", "数据恢复正常,报警解除"), + DELETED("9", "删除"); private String code; private String value; diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 3652873..0cba757 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -63,4 +63,14 @@ String MONTH= "3"; String DAYS= "4"; + String DEPT_ALL= "corporate"; + String DEPT_COMPANY= "company"; + + //1、报警类、2确认/处置类、3消警类、4施工类 + String MESSAGE_TYPE_1= "1"; + String MESSAGE_TYPE_2= "2"; + String MESSAGE_TYPE_3= "3"; + String MESSAGE_TYPE_4= "4"; + + } 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 c120409..8e219e7 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 @@ -12,6 +12,7 @@ LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), PIPE_LINE_EXPORT("pipeLine", "pipeLine", "管线基础信息"), + ALARM_POSITION_EXPORT("alarmPosition", "alarmPosition", "异常位置分析导出"), BUSPATROL_LOG_EXPORT("BusPatrolLogResponse", "BusPatrolLogResponse", "巡检日志"); ExportEnum(String fileName, String sheetName, String description) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index dd49c8f..ea96b37 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,21 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; import com.casic.missiles.modular.device.dao.BusWellMonitorMapper; -import com.casic.missiles.modular.device.dto.*; +import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; import com.casic.missiles.modular.system.model.Dept; -import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,10 +45,11 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { - Page pageList = this.baseMapper.pageList(dataScope, page, request); + Page pageList = this.baseMapper.pageList(getDeptScopeIds(request.getDeptid()), page, request); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 @@ -62,7 +67,7 @@ public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 // 直接返回 - return this.baseMapper.list(dataScope, request); + return this.baseMapper.list(getDeptScopeIds(request.getDeptid()), request); } @Override @@ -111,9 +116,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java index 0212e42..dc516a3 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -11,7 +11,8 @@ CONFIRMED("5", "已确认"), UNPROCESS("6", "待处置"), PROCESSED("7", "已处置"), - DELETED("8", "删除"); + FINISHED("8", "数据恢复正常,报警解除"), + DELETED("9", "删除"); private String code; private String value; diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 3652873..0cba757 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -63,4 +63,14 @@ String MONTH= "3"; String DAYS= "4"; + String DEPT_ALL= "corporate"; + String DEPT_COMPANY= "company"; + + //1、报警类、2确认/处置类、3消警类、4施工类 + String MESSAGE_TYPE_1= "1"; + String MESSAGE_TYPE_2= "2"; + String MESSAGE_TYPE_3= "3"; + String MESSAGE_TYPE_4= "4"; + + } 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 c120409..8e219e7 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 @@ -12,6 +12,7 @@ LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), PIPE_LINE_EXPORT("pipeLine", "pipeLine", "管线基础信息"), + ALARM_POSITION_EXPORT("alarmPosition", "alarmPosition", "异常位置分析导出"), BUSPATROL_LOG_EXPORT("BusPatrolLogResponse", "BusPatrolLogResponse", "巡检日志"); ExportEnum(String fileName, String sheetName, String description) { diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java index 617bc69..74ad131 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java @@ -8,11 +8,9 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.util.Map; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -29,11 +27,11 @@ @ApiOperation("接收设备数据入口") @PostMapping("/receiveData") @ResponseBody - public ReturnDTO getProcessResult(String jsonData) { - log.info(">>>>>>接收数<<<<<<:" + jsonData); + public ReturnDTO getProcessResult(@RequestBody Map map) { + log.info(">>>>>>接收数<<<<<<:" + map.get("jsonData").toString()); threadPoolExecutor.execute( () -> { - ResponseResolver.makeResponse(jsonData); + ResponseResolver.makeResponse(map.get("jsonData").toString()); } ); return ReturnUtil.success(); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java index 67a0783..1196323 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmDeviceController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdDTO; @@ -12,11 +13,9 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.DictEnum; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.modular.alarm.dto.AlarmRecordDTO; -import com.casic.missiles.modular.alarm.dto.DeviceAlarmResponseDTO; -import com.casic.missiles.modular.alarm.dto.HandleDTO; -import com.casic.missiles.modular.alarm.dto.SuspendDTO; +import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; @@ -24,6 +23,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; import java.util.Objects; /** @@ -41,7 +42,8 @@ public class AlarmDeviceController extends ExportController { private final IAlarmRecordsService iAlarmRecordsService; - private final AbstractPermissionContext permissionContext; + private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("设备报警分页接口") @PostMapping("/listPage") @@ -49,10 +51,22 @@ public ReturnDTO deviceAlarmListPage(@RequestBody AlarmRecordDTO request) { DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmListPage(page, request, dataScope))); } - @ApiOperation("查询历史告警分页接口") + @ApiOperation("导出设备报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmList", 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("查询设备历史告警分页接口") @PostMapping("/historyListPage") @ResponseBody public ReturnDTO deviceAlarmHistoryListPage(@RequestBody AlarmRecordDTO request) { @@ -61,7 +75,19 @@ Page page = PageFactory.defaultPage(); - return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page,request,dataScope))); + return ReturnUtil.success(super.packForBT(iAlarmRecordsService.deviceAlarmHistoryListPage(page, request, dataScope))); + } + + @ApiOperation("导出设备历史报警列表,待优化") + @RequestMapping(value = "/batchExportDeviceAlarmHistoryList", method = RequestMethod.GET) + public void batchDeviceAlarmHistoryList(@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(); + } } 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 06a9654..8ff7872 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 @@ -4,7 +4,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.application.context.AbstractPermissionContext; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; @@ -42,7 +41,7 @@ @RestController @RequestMapping("/system/alarmRecords") public class AlarmRecordsController extends ExportController { - private final AbstractDictService dictService; + private final IAlarmRecordsService iAlarmRecordsService; private final AbstractPermissionContext permissionContext; private final IBaseExportService iBaseExportService; @@ -182,6 +181,18 @@ } + + @ApiOperation("获取责任人,需传deptid") + @PostMapping("/getPrincipals") + @ResponseBody + public ReturnDTO getPrincipals(@RequestBody IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(iAlarmRecordsService.getPrincipals(idDTO.getId())); + + } + @PostMapping("/test") @ResponseBody public void test( ) { diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java index f7357ac..7dcae94 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -3,8 +3,10 @@ import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.service.IBaseExportService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.modular.alarm.dto.*; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; @@ -14,6 +16,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + /** *

* 报警统计 前端控制器 @@ -30,6 +35,7 @@ private final IAlarmStaticsService iAlarmStaticsService; private final AbstractPermissionContext permissionContext; + private final IBaseExportService iBaseExportService; @ApiOperation("报警总体情况") @PostMapping("/overall") @@ -76,5 +82,18 @@ return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO)); } + + @ApiOperation("异常位置分析导出") + @RequestMapping(value = "/batchExport", method = RequestMethod.GET) + public void batchExport(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO, HttpServletResponse response) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType = ""; + List dtoList = iAlarmStaticsService.alarmPosition(alarmType, dataScope.getDeptIds(), alarmPositionRequestDTO); + try { + iBaseExportService.exportExcel(response, AlarmPositionResponseDTO.class, dtoList, ExportEnum.ALARM_POSITION_EXPORT.getSheetName()); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java index 95feca1..0e50316 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmTypeController.java @@ -3,7 +3,6 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.dto.IdsDTO; @@ -12,7 +11,6 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; -import com.casic.missiles.modular.device.service.IBaseDeviceTypeService; import com.casic.missiles.util.ReturnUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,8 +34,7 @@ public class AlarmTypeController extends ExportController { private final IAlarmTypeService iAlarmTypeService; - private final AbstractDictService dictService; - private final IBaseDeviceTypeService iBaseDeviceTypeService; + @ApiOperation("查询分页接口") @PostMapping("/listPage") @@ -82,5 +79,12 @@ public ReturnDTO selectList() { return ReturnUtil.success(iAlarmTypeService.list()); } + + @ApiOperation("获取分类报警类型") + @PostMapping("/alarmTypeList") + @ResponseBody + public ReturnDTO alarmTypeList() { + return ReturnUtil.success(iAlarmTypeService.selectList()); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java index df6bf48..994a319 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/OverViewController.java @@ -39,6 +39,7 @@ private final IAlarmRecordsService iAlarmRecordsService; + @ApiOperation("基本概况") @PostMapping("/overall") @ResponseBody @@ -47,7 +48,7 @@ return ReturnUtil.success(iOverViewService.overall()); } - @ApiOperation("设备运行情况,1:在线,0:离线,2:停用") + @ApiOperation("设备运行情况,1和2:在线,0:离线,3:停用") @PostMapping("/deviceStatus") @ResponseBody public ReturnDTO deviceStatus() { @@ -59,9 +60,9 @@ @PostMapping("/note") @ResponseBody public ReturnDTO note() { - //toDo:查看权限 Page page = PageFactory.defaultPage(); - Page messageLogPage = iMessageLogService.page(page); + + Page messageLogPage = iMessageLogService.notePage(page); return ReturnUtil.success(super.packForBT(messageLogPage)); } 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 c80c613..91a9c9b 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 @@ -22,7 +22,7 @@ @Mapper public interface AlarmRecordsMapper extends BaseMapper { - Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); + Page pageList(Page page, @Param("request") AlarmRecordDTO request, @Param("deptIdStr") String deptIdStr); Page tracksList(Page page, @Param("request") TrackRequestDTO request, @Param("dataScope") DataScope dataScope, @Param("deptIdStr") String deptIdStr); @@ -36,6 +36,8 @@ AlarmRecordDetailDTO historyAlarmDetail(@Param("id") Long id); + List getPrincipals(@Param("id") Long id); + DeviceAlarmDetailDTO deviceAlarmDetail(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 1ad006f..800549c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,7 +28,7 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); - @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.FLOW_STATUS = #{processStatus} order by APPROVAL_TIME DESC LIMIT 1") String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java index 281593e..5143053 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/MessageLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.entity.MessageLog; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** *

@@ -15,4 +18,6 @@ @Mapper public interface MessageLogMapper extends BaseMapper { + Page notePage(Page page, @Param("deptIds") String deptIds); + } 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 d06600c..79af220 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 @@ -217,8 +217,9 @@ AND lr.VALID =1 LEFT JOIN alarm_type ay ON ay.id = rd.ALARM_TYPE_ID LEFT JOIN alarm_level_control ac ON ac.id = rd.ALARM_LEVEL - where rd.STATUS = 0 - and rd.id=#{id} + where rd.id=#{id} + + @@ -302,15 +303,16 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} and lr.DEPTID in (${deptIdStr}) + + and ay.ALARM_CATEGORY =#{request.alarmCategory} + ORDER BY rd.ALARM_TIME DESC @@ -573,9 +575,7 @@ and rd.POSITION like concat('%', #{request.position}, '%') - - and lr.DEPTID in (${request.position}) - + and rd.ALARM_LEVEL =#{request.alarmLevel} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml index b6c5595..de7ec8d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRuleMapper.xml @@ -33,11 +33,17 @@ ',', IF ( ac.IS_TEXT = 1, '消息提醒', '' )) AS alarmNote, - ay.ALARM_TYPE AS alarmTypeName + ay.ALARM_TYPE AS alarmTypeName, + bp.product_name, + bt.type_name, + bm.`name` as manufacturerName FROM `alarm_rule` ar LEFT JOIN alarm_level_control ac ON ar.ALARM_LEVEL_ID = ac.ID LEFT JOIN alarm_type ay ON ar.ALARM_TYPE_ID = ay.ID + LEFT JOIN base_product bp on bp.id = ar.product_id + LEFT JOIN base_device_type bt on bt.id = bp.device_type + LEFT JOIN bus_manufacturer bm on bm.id = bp.manufacturer_id and ar.ALARM_NAME like concat('%', #{request.alarmName}, '%') @@ -45,6 +51,15 @@ and ac.ID =#{request.alarmLevelId} + + and bt.ID =#{request.typeId} + + + and bm.ID =#{request.manufactureId} + + + and bp.ID =#{request.productId} + ORDER BY ar.TS desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml index c9e7840..ba47bca 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -79,9 +79,8 @@ and av.watchObject = #{request.ledgerType} GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml index 6143aaa..c7b3033 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/MessageLogMapper.xml @@ -14,7 +14,22 @@ - ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TS + ID, MESSAGE_TYPE, MESSAGE_TYPE_DETAIL, MESSAGE_CONTENT, REMARK, TAG_NUMBER,TS + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml index 2925d1c..5b3c63d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/OverViewMapper.xml @@ -44,11 +44,10 @@ LEFT join bus_ledger_all_view bv on lr.LEDGER_ID=bv.ID and lr.type = bv.type - and lr.DEPTID in (${deptStrs}) + and bv.DEPTID in (${deptStrs}) - - ) - SELECT count(1) as `value`, '2' as `name` FROM device_temp bt where bt.VALID>1 + ) + SELECT count(1) as `value`, '3' as `name` FROM device_temp bt where bt.VALID>1 UNION ALL SELECT count(1) as `value`, bt.ONLINE_STATE as `name` FROM device_temp bt where bt.VALID>0 GROUP BY bt.ONLINE_STATE @@ -74,11 +73,18 @@ and av.watchObject = #{request.ledgerType} + + and av.deptid in (${deptIds}) + GROUP BY ledgerCode) - SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid,ad.FULL_NAME as deptName, bv.marker FROM alarm_position_group ap + SELECT ap.alarmSum,bv.type,tagNumber,bv.ledgerName,bv.place,bv.deptid, bv.marker FROM alarm_position_group ap left join bus_ledger_all_view bv on ap.ledgerCode=bv.ledgerCode - left join sys_dept ad on bv.deptid= ad.id + + + and bv.deptid in (${deptIds}) + + order by ap.alarmSum desc diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java index b4787ad..efa6807 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmDeviceTypeDTO.java @@ -9,7 +9,7 @@ @ApiModelProperty("报警类型名称,区分场站、闸井、管线") private String alarmName; - @ApiModelProperty("报警类型大类每次") + @ApiModelProperty("报警类型大类名称") private String alarmType; @ApiModelProperty("监测类型") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java index de56ef6..7503100 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -1,29 +1,39 @@ package com.casic.missiles.modular.alarm.dto; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmPositionResponseDTO { + @ExcelProperty(value = "报警次数", order = 7) @ApiModelProperty("报警数量") private Long alarmSum; + @ExcelProperty(value = "位置类型", order = 1) @ApiModelProperty("位置类型 ") private String type; + @ExcelProperty(value = "位号", order = 2) @ApiModelProperty("位号") private String tagNumber; + @ExcelProperty(value = "位置", order = 4) @ApiModelProperty("位置") private String place; + @ExcelProperty(value = "名称", order = 3) @ApiModelProperty("名称") private String ledgerName; + @ExcelProperty(value = "管理单位", order = 5) @ApiModelProperty("管理单位") private String deptName; + private Long deptid; + + @ExcelProperty(value = "标签", order = 6) @ApiModelProperty("标签") private String marker; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java index 4896273..78b852d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmRuleRequestDTO.java @@ -4,7 +4,7 @@ import lombok.Data; @Data -public class AlarmRuleRequestDTO implements Cloneable{ +public class AlarmRuleRequestDTO implements Cloneable { @ApiModelProperty("报警名称") private String alarmName; @@ -12,6 +12,12 @@ @ApiModelProperty("产品类型id") private Long productId; + @ApiModelProperty("设备类型id") + private Long typeId; + + @ApiModelProperty("厂商id") + private Long manufactureId; + @ApiModelProperty("报警等级id") private Long alarmLevelId; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java index 0e0cfbd..3a984dc 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/BusAlarmLedgerDTO.java @@ -21,5 +21,7 @@ @ApiModelProperty("位置") private String place; + private String ledgerName; + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java new file mode 100644 index 0000000..6827906 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/PrincipalDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PrincipalDTO { + + @ApiModelProperty("责任人角色名称") + private String roleName; + + @ApiModelProperty("姓名") + private String personName; + + @ApiModelProperty("部门") + private String deptName; + + @ApiModelProperty("联系方式") + private String telephone; + + @ApiModelProperty("同步人员id") + private String synId; + +} 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 bf6e543..b1b47f2 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 @@ -95,7 +95,7 @@ @TableField("POSITION") private String position; - @ApiModelProperty("是否误报(0:是,1:否)") + @ApiModelProperty("是否误报(0:是,1、2:否)") @TableField("REAL_ALARM") private String realAlarm; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java index 1ed316f..61094ff 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/AlarmRule.java @@ -85,6 +85,17 @@ @TableField(exist = false) private String alarmNote; + @ApiModelProperty("产品") + @TableField(exist = false) + private String productName; + + @ApiModelProperty("厂商") + @TableField(exist = false) + private String manufacturerName; + + @ApiModelProperty("设备类型") + @TableField(exist = false) + private String typeName; // @ApiModelProperty("报警规则list") diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java index 0c3d9f8..b4d00b1 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/MessageLog.java @@ -49,9 +49,23 @@ @TableField("REMARK") private String remark; + @ApiModelProperty("台账编号") + @TableField("TAG_NUMBER") + private String tagNumber; + + @ApiModelProperty("创建时间") @TableField("TS") private Date ts; + public MessageLog() { + } + public MessageLog(String messageType, String messageTypeDetail, String messageContent,String tagNumber) { + this.messageType = messageType; + this.messageTypeDetail = messageTypeDetail; + this.messageContent = messageContent; + this.tagNumber = tagNumber; + + } } 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 1f7f5da..23758e3 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 @@ -48,6 +48,8 @@ List changeProcessStatus(List ids); + List getPrincipals(Long id); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java index 67d4f14..216e892 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmTypeService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import java.util.List; @@ -22,6 +23,8 @@ boolean editAlarmType(AlarmType alarmType); + List selectList(); + Page listPage(Page page); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java index 975d25e..953ae97 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IMessageLogService.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.modular.alarm.entity.MessageLog; @@ -13,4 +14,6 @@ */ public interface IMessageLogService extends IService { + Page notePage(Page page ); + } 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 5fe196e..71e46df 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 @@ -25,6 +25,7 @@ import com.casic.missiles.modular.alarm.entity.*; import com.casic.missiles.modular.alarm.service.IAlarmLevelControlService; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IMessageLogService; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; @@ -60,6 +61,7 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final IAlarmLevelControlService iAlarmLevelControlService; + private final IMessageLogService iMessageLogService; private final WebSocket webSocket; private final PoolConfig threadPoolTaskExecutor; @@ -69,7 +71,7 @@ @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { - Page alarmRecordsPage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page alarmRecordsPage = this.baseMapper.pageList(page, request, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); @@ -104,7 +106,7 @@ String deptIdStr = ""; DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } Page page = PageFactory.defaultPage(); @@ -117,7 +119,7 @@ Page alarmRecordsPage = this.baseMapper.historyListPage(page, request, dataScope, getDeptIds(request.getDeptId())); List alarmRecordsList = alarmRecordsPage.getRecords(); alarmRecordsList.forEach(alarmRecords -> { - alarmRecords.setRealAlarmName(DictEnum.REAL_ALARM.equals(alarmRecords.getRealAlarm()) ? "否" : "是"); + 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())); @@ -128,7 +130,7 @@ @Override public AlarmRecordDetailDTO historyAlarmDetail(Long id) { AlarmRecordDetailDTO detailDTO = this.baseMapper.historyAlarmDetail(id); - detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "否" : "是"); + detailDTO.setRealAlarmName(DictEnum.REAL_ALARM.equals(detailDTO.getRealAlarm()) ? "是" : "否"); detailDTO.setCancelDuration(TimeConverter(detailDTO.getCancelDuration())); detailDTO.setDeptName(getDeptNamesByDeptId(detailDTO.getDeptid())); detailDTO.setAddress(detailDTO.getLedgerNumber().concat("|").concat(detailDTO.getLedgerName())); @@ -137,6 +139,12 @@ } @Override + public List getPrincipals(Long id) { + this.baseMapper.getPrincipals(id); + return null; + } + + @Override public DeviceAlarmDetailDTO deviceAlarmDetail(Long id) { DeviceAlarmDetailDTO alarmDetail = this.baseMapper.deviceAlarmDetail(id); @@ -168,6 +176,7 @@ @Override public Map view(Long id, String exceptionType) { Map resultMap = this.baseMapper.view(id); + if (ObjectUtil.isEmpty(resultMap)) return new HashMap<>(); //若状态为未读时,改为已读 if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? @@ -176,6 +185,7 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); + alarmRecords.setProcessTime(new Date()); updateById(alarmRecords); //2、写入流程日志 AuthUser user = permissionContext.getAuthService().getLoginUser(); @@ -191,10 +201,17 @@ resultMap.put("processContent", "未处置"); resultMap.put("confirmContent", "未确认"); String processStatus = resultMap.get("PROCESS_STATUS").toString(); - if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { - resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); - } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { - resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + if (ApprovalStatusEnum.CONFIRMED.getCode().equals(processStatus) || + ApprovalStatusEnum.UNPROCESS.equals(processStatus) || + ApprovalStatusEnum.PROCESSED.getCode().equals(processStatus) || + ApprovalStatusEnum.FINISHED.getCode().equals(processStatus)) { + String confirmMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.CONFIRMED.getCode()); + String confirmMsg1 = approvalLogMapper.getMsg(id, ApprovalStatusEnum.UNPROCESS.getCode()); + String processMsg = approvalLogMapper.getMsg(id, ApprovalStatusEnum.PROCESSED.getCode()); + if (ObjectUtil.isNotEmpty(confirmMsg) || ObjectUtil.isNotEmpty(confirmMsg1)) + resultMap.put("confirmContent", ObjectUtil.isNotEmpty(confirmMsg) ? confirmMsg : confirmMsg1); + if (ObjectUtil.isNotEmpty(processMsg)) + resultMap.put("processContent", processMsg); } return resultMap; } @@ -336,7 +353,7 @@ List> resultMapList = approvalLogMapper.getListByAlarmId(alarmId); resultMapList.forEach(map -> { map.put("process_name", ApprovalStatusEnum.getValue(map.get("FLOW_STATUS").toString())); - map.put("dept_name", getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString()))); + map.put("dept_name", ObjectUtil.isNotEmpty(map.get("DEPT_ID")) ? getDeptNamesByDeptId(Long.valueOf(map.get("DEPT_ID").toString())) : ""); }); return resultMapList; } @@ -352,29 +369,38 @@ * @param resultParams * @return */ + @Transactional @Override public boolean processAppContent(Map resultParams) { - String alarmId = resultParams.get("alarmId").toString(); - String msgType = resultParams.get("msgType").toString(); - String isAlarm = resultParams.get("isAlarm").toString(); - String isProcess = resultParams.get("isProcess").toString(); - String processStatus = resultParams.get("processStatus").toString(); - String processorId = resultParams.get("processorId").toString(); - String processContent = resultParams.get("processContent").toString(); - String processTime = resultParams.get("processTime").toString(); - //若为处置类型 todo:判断空 - AlarmRecords alarmRecords = new AlarmRecords(); + String alarmId = ObjectUtil.isNotEmpty(resultParams.get("alarmId")) ? resultParams.get("alarmId").toString() : ""; + String msgType = ObjectUtil.isNotEmpty(resultParams.get("msgType")) ? resultParams.get("msgType").toString() : ""; + String isAlarm = ObjectUtil.isNotEmpty(resultParams.get("isAlarm")) ? resultParams.get("isAlarm").toString() : ""; + String isProcess = ObjectUtil.isNotEmpty(resultParams.get("isProcess")) ? resultParams.get("isProcess").toString() : ""; + String processStatus = ObjectUtil.isNotEmpty(resultParams.get("processStatus")) ? resultParams.get("processStatus").toString() : ""; + String processorId = ObjectUtil.isNotEmpty(resultParams.get("processorId")) ? resultParams.get("processorId").toString() : ""; + String processContent = ObjectUtil.isNotEmpty(resultParams.get("processContent")) ? resultParams.get("processContent").toString() : ""; + String processTime = ObjectUtil.isNotEmpty(resultParams.get("processTime")) ? resultParams.get("processTime").toString() : ""; + AlarmRecords alarmRecords = this.baseMapper.selectById(alarmId); + if (null == alarmRecords) return false; alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setRealAlarm(isAlarm); alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); if (DictEnum.PROCESS_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场处置完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场处置完毕"), alarmRecords.getLedgerNumber())); } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? ApprovalStatusEnum.CONFIRMED.getCode() : ApprovalStatusEnum.UNPROCESS.getCode()); + alarmRecords.setProcessTime(new Date()); this.baseMapper.updateById(alarmRecords); + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_2, "现场确认完毕", + alarmRecords.getLedgerNumber().concat(alarmRecords.getAlarmContent()). + concat("现场确认完毕"), alarmRecords.getLedgerNumber())); } //2、写入流程日志 User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); @@ -392,20 +418,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } public String getDeptIds(Long deptId) { + List deptIds = new ArrayList<>(); if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 - List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); - return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIds = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds(); + } } - return ""; + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } /** @@ -513,7 +546,7 @@ @Override public boolean saveAlarms(String devCode, String data, String upTime, List busWellDTOList, AlarmRuleResponseDTO alarmRuleResponseDTO, String typeName) { - Long alarmId=0L; + Long alarmId = 0L; for (BusAlarmLedgerDTO busLedgerDTO : busWellDTOList) { try { AlarmRecords alarmRecords = new AlarmRecords(devCode, busLedgerDTO.getLedgerCode(), @@ -522,13 +555,21 @@ alarmRuleResponseDTO.getAlarmLevelId(), CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime)), alarmRuleResponseDTO.getAlarmTypeName(), busLedgerDTO.getPlace(), "0"); this.save(alarmRecords); - alarmId=alarmRecords.getId(); + alarmId = alarmRecords.getId(); } catch (Exception e) { e.printStackTrace(); return false; } } - final Long alarmIds= alarmId; + //保存消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_1, alarmRuleResponseDTO.getAlarmTypeName(), + ObjectUtil.isNotEmpty(busWellDTOList) ? busWellDTOList.get(0).getTagNumber(). + concat(busWellDTOList.get(0).getLedgerName()). + concat(alarmRuleResponseDTO.getAlarmTypeName()). + concat(",浓度值为").concat(data).concat("%LEL") : "", + ObjectUtil.isNotEmpty(busWellDTOList) ? + busWellDTOList.get(0).getTagNumber() : "")); + final Long alarmIds = alarmId; //向前端推送websocket报警消息 threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { @Override @@ -552,7 +593,6 @@ return true; } - @Override public boolean saveDeviceAlarms(String devCode, String logTime, List busWellDTOList, Optional alarmRuleResponseDTO) { @@ -579,14 +619,31 @@ */ @Override public void cancelDataAlarm(String devCode) { - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("DEVCODE", devCode); - updateWrapper.eq("EXCEPTION_TYPE", "0"); + //更新报警信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DEVCODE", devCode); + queryWrapper.eq("EXCEPTION_TYPE", "0"); //只有未读、已读、已确认、已处置、挂起的才消 - updateWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); - updateWrapper.eq("STATUS", "1"); - updateWrapper.set("STATUS", "0"); - this.update(updateWrapper); + queryWrapper.in("PROCESS_STATUS", Arrays.asList("1", "2", "3", "5", "7")); + queryWrapper.eq("STATUS", "1"); + List alarmRecordsList = this.list(queryWrapper); + if (alarmRecordsList != null && alarmRecordsList.size() > 0) { + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setStatus("0"); + alarmRecords.setCancelTime(new Date()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.FINISHED.getCode()); + this.updateById(alarmRecords); + }); + //添加流程日志 + approvalLogMapper.insert(new ApprovalLog(alarmRecordsList.get(0).getId(), "1", + "", "8", + null)); + //添加消息通知 + iMessageLogService.save(new MessageLog(DictEnum.MESSAGE_TYPE_3, "报警解除", + alarmRecordsList.get(0).getLedgerNumber().concat(alarmRecordsList.get(0).getAlarmContent()). + concat("报警解除"), alarmRecordsList.get(0).getLedgerNumber())); + } } /** diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java index 57ddbac..98d41f0 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; @@ -17,10 +18,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +50,7 @@ List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, deptStrs, request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -115,33 +114,72 @@ return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override - public List< Map> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { + public List> alarmCompany(String alarmType, AlarmPositionRequestDTO request) { if (ObjectUtil.isNotEmpty(request.getBegTime()) || ObjectUtil.isNotEmpty(request.getEndTime())) { request.setTimeType(""); } - List< Map> resultMapList = new ArrayList<>(); - List responseDTOList = this.baseMapper.alarmCompany(alarmType, getDeptIds(null), request); - List deptIds = abstractDeptService.getListByTips("company"); - List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); - for(Dept dept:deptIds){ - Map deptMap = new HashMap<>(); - deptMap.put("dept",dept.getFullName()); - List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(),""); - deptChildIds.add(dept.getId()); - for(String alarm : alarmList){ - deptMap.put(alarm,0); - for(AlarmCompanyResponseDTO responseDTO:responseDTOList){ - - if (alarm.equals(responseDTO.getAlarmName())&& - null!=responseDTO.getDeptid()&& - deptChildIds.contains(responseDTO.getDeptid())){ - deptMap.put(alarm,Integer.valueOf(deptMap.get(alarm).toString())+responseDTO.getAlarmSum()); - } + List> resultMapList = new ArrayList<>(); + String deptIdStrs = getDeptIds(null); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + boolean isAdmin = deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips())); + if (isAdmin) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); } } - resultMapList.add(deptMap); + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + if (null != deptIds && deptIds.size() > 0) { + List responseDTOList = this.baseMapper.alarmCompany(alarmType, deptIdStrs, request); + List alarmList = responseDTOList.stream().map(AlarmCompanyResponseDTO::getAlarmName).distinct().collect(Collectors.toList()); + for (Dept dept : deptIds) { + Map deptMap = new HashMap<>(); + deptMap.put("dept", dept.getFullName()); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (String alarm : alarmList) { + deptMap.put(alarm, 0); + for (AlarmCompanyResponseDTO responseDTO : responseDTOList) { + if (alarm.equals(responseDTO.getAlarmName()) && + null != responseDTO.getDeptid() && + deptChildIds.contains(responseDTO.getDeptid())) { + deptMap.put(alarm, Integer.valueOf(deptMap.get(alarm).toString()) + responseDTO.getAlarmSum()); + } + } + } + resultMapList.add(deptMap); + } } return resultMapList; } + + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java index 0bd5b9d..d6f388c 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmTypeServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; import com.casic.missiles.modular.alarm.dao.AlarmTypeMapper; +import com.casic.missiles.modular.alarm.dto.AlarmDeviceTypeDTO; import com.casic.missiles.modular.alarm.entity.AlarmType; import com.casic.missiles.modular.alarm.service.IAlarmTypeDevicetypeService; import com.casic.missiles.modular.alarm.service.IAlarmTypeService; @@ -29,6 +31,8 @@ private final IAlarmTypeDevicetypeService iAlarmTypeDevicetypeService; private final AbstractDictService dictService; + private final AlarmStaticsMapper alarmStaticsMapper; + @Transactional @Override public boolean saveAlarmType(AlarmType alarmType) { @@ -62,4 +66,9 @@ }); return alarmTypePage; } + + @Override + public List selectList() { + return alarmStaticsMapper.alarmTypeJoinList(); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java index 03811ab..bc1883d 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/MessageLogServiceImpl.java @@ -1,11 +1,18 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.MessageLogMapper; import com.casic.missiles.modular.alarm.entity.MessageLog; import com.casic.missiles.modular.alarm.service.IMessageLogService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.stream.Collectors; + /** *

* 协议管理 服务实现类 @@ -14,7 +21,25 @@ * @author zt * @since 2024-08-22 */ +@RequiredArgsConstructor @Service public class MessageLogServiceImpl extends ServiceImpl implements IMessageLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public Page notePage(Page page) { + return this.baseMapper.notePage(page,getDeptIds()); + } + + public String getDeptIds() { + String deptIdStr = ""; + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + deptIdStr =permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + return deptIdStr; + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java index a3e50f3..e799c7a 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/OverViewServiceImpl.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.modular.alarm.dao.OverViewMapper; import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; @@ -10,6 +13,7 @@ import com.casic.missiles.modular.alarm.dto.CommonResponseDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.service.IOverViewService; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -29,6 +33,7 @@ public class OverViewServiceImpl extends ServiceImpl implements IOverViewService { private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; @Override public List overall() { @@ -42,10 +47,10 @@ @Override public List alarmPosition(String alarmType, AlarmPositionRequestDTO request) { - //Todo:加入报警类型 List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType, getDeptIds(), request); alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType()) ? "闸井" : ("2".equals(alarmPositionResponseDTO.getType()) ? "场站" : "管线")); + alarmPositionResponseDTO.setDeptName(getDeptNamesByDeptId(alarmPositionResponseDTO.getDeptid())); }); return alarmPositionResponseDTOList; } @@ -55,10 +60,20 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr=permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } } 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 17c56ec..ffee49e 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 @@ -23,7 +23,7 @@ @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 " + + "SELECT bv.ledgerName,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/entity/DataGas.java b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java index 0fd7b22..702e329 100644 --- a/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java +++ b/casic-data/src/main/java/com/casic/missiles/modular/data/entity/DataGas.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -19,6 +20,7 @@ * @author zt * @since 2024-07-16 */ +@Builder @Getter @Setter @TableName("data_gas") @@ -35,6 +37,10 @@ @TableField("WELL_CODE") private String wellCode; + @ApiModelProperty("井编号") + @TableField("WELL_NUMBER") + private String wellNumber; + @ApiModelProperty("设备编号") @TableField("DEVCODE") private String devcode; 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 7cfc619..8b4534e 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 @@ -20,8 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; +import java.sql.Timestamp; +import java.util.*; /** *

@@ -123,6 +123,9 @@ @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); + String pci = null != jsonObject.get("pci") ? jsonObject.get("pci").toString() : ""; + String rsrp = null != jsonObject.get("rsrp") ? jsonObject.get("rsrp").toString() : ""; + String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = jsonObject.getJSONArray("datas"); List busWellDTOList = getBusAlarmLedgerList(devCode); for (int i = 0; i < jsonArray.size(); i++) { @@ -131,7 +134,18 @@ String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); //1.存数据 -// saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 + save(DataGas.builder() + .wellCode(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getLedgerCode() : "") + .wellNumber(busWellDTOList != null && busWellDTOList.size() > 0 ? busWellDTOList.get(0).getTagNumber() : "") + .devcode(devCode) + .cell(cell) + .strength(gas) + .uptime(CommonUtil.sdf4.parse(CommonUtil.DateFormat(upTime))) + .logtime(new Date()) + .pci(pci) + .rsrp(rsrp) + .snr(snr) + .build());//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; @@ -156,7 +170,9 @@ } } //5.清数据报警 - alarmRecordsService.cancelDataAlarm(devCode); + if (!alarmFlag) { + alarmRecordsService.cancelDataAlarm(devCode); + } //6.更新电量及状态 (1:正常,2:报警) alarmRecordsService.updateCell(devCode, alarmFlag ? "2" : "1", cell); @@ -166,4 +182,6 @@ } } } + + } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java index d8e334f..2f3a0dd 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/BusPipelineController.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; @@ -11,6 +12,8 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.response.ErrorResponseData; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.device.dto.BusPipelineRequestDTO; import com.casic.missiles.modular.device.entity.BusPipeline; import com.casic.missiles.modular.device.service.IBusPipelineService; @@ -19,9 +22,10 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.util.Objects; +import java.util.*; /** *

@@ -58,8 +62,6 @@ } - - @ApiOperation("编辑") @PostMapping("/edit") @ResponseBody @@ -80,6 +82,40 @@ return ReturnUtil.success(iBusPipelineService.removeByIds(idsDTO.getIds())); } + @ApiOperation("批量导入,待开发") + @RequestMapping(value = "/batchImport", method = RequestMethod.POST) + @ResponseBody + public Object batchImport(@RequestParam("file") MultipartFile file) { +// List results = new ArrayList<>(); +// //设置表头与字段映射,可通过反射获取 +// Map mapper = new HashMap<>(); +// //判断唯一 +// mapper.put("管线编号", "devcode"); +// mapper.put("管线位置", "productId"); +// mapper.put("压力级制", "tagNumber"); +// mapper.put("材质", "valid"); +// mapper.put("管径", "installDate"); +// mapper.put("建设年代", "installDate"); +// mapper.put("管理单位", "installDate"); +// mapper.put("产权单位", "installDate"); +// mapper.put("管理方式", "installDate"); +// mapper.put("起点经度", "installDate"); +// mapper.put("起点纬度", "installDate"); +// mapper.put("终点经度", "installDate"); +// mapper.put("终点纬度", "installDate"); +// try { +// results = this.importExcel(BusPipelineRequestDTO.class, file, null, null); +// List list = iBusPipelineService.addPipeBatch(results); +// if (!CollectionUtil.isEmpty(list)) { +// //获取校验报错信息 +// return new ErrorResponseData(list.get(0)); +// } +// } catch (Exception e) { +// return catchMybatisPlusException(e, "导入设备失败"); +// } + return ResponseData.success(); + } + @ApiOperation("导出") @RequestMapping(value = "/batchExport", method = RequestMethod.GET) public void batchExport(@RequestBody BusPipelineRequestDTO request, HttpServletResponse response) { diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java new file mode 100644 index 0000000..8b062b9 --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/controller/TemplateController.java @@ -0,0 +1,75 @@ +package com.casic.missiles.modular.device.controller; + +import com.casic.missiles.config.DeviceServerProperties; +import com.casic.missiles.core.base.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; + +/** + * 模板管理包 + * + * @author dev123 + * @Date 2018-11-19 13:15:14 + */ +@Api(tags = "文件下载") +@RestController +public class TemplateController extends BaseController { + private static Logger logger = LoggerFactory.getLogger(TemplateController.class); + @Autowired + private DeviceServerProperties gunsProperties; + + + @ApiOperation("文件下载:1、设备导入模板:device_template.xlsx") + @GetMapping("/template/download") + public void doPost(@RequestParam("filename") String filename, HttpServletResponse response) + throws ServletException, IOException { + String path = gunsProperties.getConfigPath(); + logger.info(path); + if (path.startsWith("/")) { + path = path.substring(1); + } + File file = new File(path, filename); + // 获取文件名 + String fileName = null; + if (filename.contains("/")) { + fileName = filename.substring(filename.lastIndexOf("/") + 1); + } else { + fileName = filename; + } + + // 设置以流的形式下载文件,这样可以实现任意格式的文件下载 + response.setContentType("application/octet-stream"); + response.addHeader("Content-Disposition", " attachment;filename=" + fileName); + response.setContentLength((int) file.length()); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + byte[] buffer = new byte[1024]; + int readTmp = 0; + while ((readTmp = fis.read(buffer)) != -1) { + response.getOutputStream().write(buffer, 0, readTmp); + } + } catch (Exception e) { + logger.info(e.getMessage()); + e.printStackTrace(); + } finally { + response.getOutputStream().flush(); + response.getOutputStream().close(); + fis.close(); + } + } + + +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java index 0e884a7..71ce704 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceMapper.java @@ -27,7 +27,6 @@ Page pageList(Page page, @Param("request") BusDeviceDTO request, - @Param("scope") DataScope dataScope, @Param("deptStrs") String deptStrs); List> monitorData(@Param("tableName") String tableName, 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 29455ef..18cf18a 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 @@ -27,7 +27,7 @@ List offLine(@Param("deptStrs") String deptStrs); - List company(@Param("deptStrs") String deptStrs); + List company(@Param("deptStrs") String deptStrs); Page offLineList(@Param("deptStrs") String deptStrs, @Param("request") OffLineRequestDTO request, diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java index e5e9927..2c80c6f 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/BusWellMonitorMapper.java @@ -26,11 +26,11 @@ */ @Mapper public interface BusWellMonitorMapper extends BaseMapper { - Page pageList(@Param("scope") DataScope dataScope, + Page pageList(@Param("deptIds") String deptIds, Page page, @Param("request") BusLedgerDTO request); - List list(@Param("scope") DataScope dataScope, + List list(@Param("deptIds") String deptIds, @Param("request") BusLedgerDTO request); @Select("WITH device_tmp as (SELECT bd.devcode,bd.DEVICE_TYPE FROM bus_device bd where " + diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml index 1017129..6990532 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceMapper.xml @@ -24,16 +24,15 @@ , DEVCODE, DEVICE_NAME, ONLINE_STATE, DEVICE_TYPE, PRODUCT_ID, VALID, INSTALL_DATE, LOGTIME, CELL, NB_DEVICE_ID, NB_PRODUCT_ID - WITH device_temp AS ( SELECT bd.DEVCODE, @@ -197,14 +199,13 @@ ), device_group AS ( SELECT count( DEVCODE ) AS deviceCount, DEPTID FROM device_temp GROUP BY DEPTID ) SELECT - sd.FULL_NAME as `name`, - IFNULL(dg.deviceCount ,0) as `value` + dg.DEPTID, + IFNULL(dg.deviceCount ,0) as deviceCount FROM - sys_dept sd - LEFT JOIN device_group dg ON dg.DEPTID = sd.id + device_group dg - and sd.id in (${deptStrs}) + and dg.DEPTID in (${deptStrs}) order by dg.deviceCount desc diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml index 8e9d17c..d9d669c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusLedgerPipeMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN bus_ledger_pipe bp ON bp.id = bl.LEDGER_ID AND bl.type =3 - and bp.DEPTID in ${deptids} + and bp.DEPTID in (${deptids}) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml index f9cf228..73c398a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusWellMonitorMapper.xml @@ -42,8 +42,7 @@ SELECT t.LEDGER_ID, t.TYPE, - CONCAT(sum( t.ONLINE_STATE ) ,'/',count( t.DEVCODE )) AS deviceCount - + CONCAT(sum(IF(t.ONLINE_STATE='1'||t.ONLINE_STATE='2',1,0)) ,'/',count( t.DEVCODE )) AS deviceCount FROM ( SELECT @@ -56,6 +55,7 @@ LEFT JOIN bus_device bd ON bd.id = bdl.DEVICE_ID AND bd.valid = 1 AND bdl.VALID = 1 + where bdl.TYPE =1 ) t GROUP BY t.LEDGER_ID, @@ -99,6 +99,9 @@ and bl.MONITOR_STATE = #{request.monitorState} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC @@ -139,6 +142,9 @@ and bl.MARKER = #{request.marker} + + and bl.DEPTID in (${deptIds}) + ORDER BY bl.TS DESC diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java index 288c40d..7f1f1bb 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/BusLedgerDTO.java @@ -30,10 +30,10 @@ @ApiModelProperty("台账类型(1:闸井,2:场站)") private String type; - @ApiModelProperty("管理单位") + @ApiModelProperty("负责单位") private Long responsibleDept; - @ApiModelProperty("所属单位") + @ApiModelProperty("管理单位") private Long deptid; @ApiModelProperty("管理方式(0:自有,1:自管)") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java new file mode 100644 index 0000000..5879c2b --- /dev/null +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/dto/DeviceCompanyDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.device.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DeviceCompanyDTO { + + @ApiModelProperty("部门id") + private Long deptid; + + @ApiModelProperty("设备数量") + private Long deviceCount; +} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java index 2f96a10..9d6ddce 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusDevice.java @@ -157,6 +157,9 @@ @TableField(exist = false) private String lat; + @TableField(exist = false) + private Long deptid; + public BusDevice() { } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java index 7a1a075..79cdcb5 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceServiceImpl.java @@ -3,8 +3,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; @@ -14,6 +16,7 @@ import com.casic.missiles.modular.device.dto.*; import com.casic.missiles.modular.device.entity.*; import com.casic.missiles.modular.device.service.*; +import com.casic.missiles.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Service; @@ -44,6 +47,7 @@ private final IBaseProductService baseProductService; private final IBusLedgerService iBusLedgerService; private final IBaseDeviceTypeService deviceTypeService; + private final AbstractPermissionContext permissionContext; @Transactional @Override @@ -68,11 +72,13 @@ @Override public Page listPage(Page page, BusDeviceDTO request, DataScope dataScope) { - Page busDevicePage = this.baseMapper.pageList(page, request, dataScope, getDeptIds(request.getDeptId())); + Page busDevicePage = this.baseMapper.pageList(page, request, getDeptScopeIds(request.getDeptId())); List busDeviceList = busDevicePage.getRecords(); busDeviceList.forEach(busDevice -> { busDevice.setWatchObject(abstractDictService.getDictNameByCode("watchObject", busDevice.getWatchObject())); - busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus",busDevice.getValid())); + busDevice.setValidName(abstractDictService.getDictNameByCode("useStatus", busDevice.getValid())); + if (ObjectUtil.isNotEmpty(busDevice.getDeptid())) + busDevice.setDeptName(getDeptNamesByDeptId(busDevice.getDeptid())); }); return busDevicePage; } @@ -86,8 +92,8 @@ public List> monitorData(MonitorDataRequestDTO request) { List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.monitorData(deviceDataEnum.getTableName(), deviceDataEnum.getTableColumns(), queryColumns[0], @@ -110,8 +116,8 @@ //toDo:采集时间字段配置 List> resultMap = new ArrayList<>(); DeviceDataEnum deviceDataEnum = DeviceDataEnum.typeOf(request.getTypeName()); - if(null!=deviceDataEnum){ - String[] queryColumns = deviceDataEnum.getQueryColumns().split(",",3); + if (null != deviceDataEnum) { + String[] queryColumns = deviceDataEnum.getQueryColumns().split(",", 3); resultMap = this.baseMapper.cellAnalysis(deviceDataEnum.getTableName(), "cell,uptime", queryColumns[0], @@ -232,14 +238,32 @@ return list; } - public String getDeptIds(Long deptId) { + public String getDeptScopeIds(Long deptId) { if (ObjectUtil.isNotEmpty(deptId)) { //获取子级单位 List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); deptIds.add(deptId); return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } } return ""; } + public String getDeptNamesByDeptId(Long deptId) { + List deptIds = abstractDeptService.getParentListById(deptId); + deptIds.add(deptId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); + List deptList = abstractDeptService.list(queryWrapper); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + return String.join("/", nameList); + } + } 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 fd9554e..e94d674 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 @@ -2,18 +2,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.enums.DictEnum; import com.casic.missiles.modular.device.dao.BusDeviceStaticsMapper; 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.modular.system.model.Dept; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,6 +36,8 @@ private final AbstractPermissionContext permissionContext; + private final AbstractDeptService abstractDeptService; + @Override public List deviceStatus() { return this.baseMapper.deviceStatus(getDeptIds()); @@ -48,14 +55,65 @@ return this.baseMapper.offLine(getDeptIds()); } + + public List getDeptList(String deptIdStrs) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", Arrays.stream(deptIdStrs.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + return abstractDeptService.list(queryWrapper); + } + @Override public List company() { - return this.baseMapper.company(getDeptIds()); + List resultDTOList = new ArrayList<>(); + String deptIdStrs = getDeptIds(); + List deptIds = new ArrayList<>(); + //根据权限只统计分公司级和工程组级 + if (ObjectUtil.isNotEmpty(deptIdStrs)) { + //获取对应的下级部门 + deptIds = getDeptList(deptIdStrs); + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_ALL.equals(dept.getTips()))) { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } else { + //分公司权限 + if (deptIds.stream().anyMatch(dept -> DictEnum.DEPT_COMPANY.equals(dept.getTips()))) { + deptIds = deptIds.stream().filter(dept -> "dept".equals(dept.getTips())).collect(Collectors.toList()); + } + } + } else { + //管理员权限 + deptIds = abstractDeptService.getListByTips("company"); + } + + if (null != deptIds && deptIds.size() > 0) { + List deviceCompanyDTOList = this.baseMapper.company(deptIdStrs); + for (Dept dept : deptIds) { + ResultDTO resultDTO = new ResultDTO(); + resultDTO.setName(dept.getFullName()); + resultDTO.setValue("0"); + List deptChildIds = abstractDeptService.getIdsRecursionByPid(dept.getId(), ""); + deptChildIds.add(dept.getId()); + for (DeviceCompanyDTO dto : deviceCompanyDTOList) { + if (deptChildIds.contains(dto.getDeptid())) { + resultDTO.setValue((Long.valueOf(resultDTO.getValue())+dto.getDeviceCount())+""); + } + } + resultDTOList.add(resultDTO); + } + } + return resultDTOList; } @Override public Page offLineList(OffLineRequestDTO requestDTO, Page page) { - Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(),requestDTO,page); + //toDo:其他预测类型需要补充 + Page responseDTOPage = this.baseMapper.offLineList(getDeptIds(), requestDTO, page); + List dtoList = responseDTOPage.getRecords(); + dtoList.forEach(dto -> { + dto.setReasons("1".equals(dto.getReasons()) ? "电量低" : "其他"); + }); return responseDTOPage; } @@ -74,7 +132,7 @@ //获取登录权限 DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { - permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + deptIdStr = permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); } return deptIdStr; diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java index 9d82e24..a61f077 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusLedgerPipeServiceImpl.java @@ -84,12 +84,13 @@ @Override public BusLedgerPipeResponseDTO detail(Long id, String devcode) { BusLedgerPipeResponseDTO busLedgerPipeResponseDTO = this.baseMapper.detail(id, devcode); - - busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); - busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 - busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 - busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 - busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + if (null != busLedgerPipeResponseDTO) { + busLedgerPipeResponseDTO.setStatus("1".equals(busLedgerPipeResponseDTO.getStatus()) ? "正常" : "异常"); + busLedgerPipeResponseDTO.setOnState(abstractDictService.getDictNameByCode("useStatus", busLedgerPipeResponseDTO.getOnState())); // 使用状态字典值 + busLedgerPipeResponseDTO.setDeptName(getDeptNamesByDeptId(busLedgerPipeResponseDTO.getDeptid())); // 管理单位名称 + busLedgerPipeResponseDTO.setPressType(abstractDictService.getDictNameByCode("wellType", busLedgerPipeResponseDTO.getPressType())); // 位置状态字典值 + busLedgerPipeResponseDTO.setManageType(abstractDictService.getDictNameByCode("manageType", busLedgerPipeResponseDTO.getManageType())); // 位置状态字典值 + } return busLedgerPipeResponseDTO; } @@ -127,8 +128,9 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); - List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); + List nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java index dd49c8f..ea96b37 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusWellMonitorServiceImpl.java @@ -1,21 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.application.service.AbstractDeptService; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.enums.DeviceDataEnum; import com.casic.missiles.modular.device.dao.BusWellMonitorMapper; -import com.casic.missiles.modular.device.dto.*; +import com.casic.missiles.modular.device.dto.BusLedgerDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorDTO; +import com.casic.missiles.modular.device.dto.DeviceMonitorRequestDTO; +import com.casic.missiles.modular.device.dto.LifeCycleRecordDTO; import com.casic.missiles.modular.device.entity.BusDeviceLog; import com.casic.missiles.modular.device.entity.BusLedger; import com.casic.missiles.modular.device.service.IBusLedgerService; import com.casic.missiles.modular.device.service.IBusWellMonitorService; import com.casic.missiles.modular.system.model.Dept; -import com.casic.missiles.util.TimeConvertUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -41,10 +45,11 @@ private final AbstractDictService abstractDictService; private final IBusLedgerService iBusLedgerService; private final AbstractDeptService abstractDeptService; + private final AbstractPermissionContext permissionContext; public Page pageList(Page page, BusLedgerDTO request, DataScope dataScope) { - Page pageList = this.baseMapper.pageList(dataScope, page, request); + Page pageList = this.baseMapper.pageList(getDeptScopeIds(request.getDeptid()), page, request); List busLedgerList = pageList.getRecords(); busLedgerList.forEach(busLedger -> { busLedger.setManageTypeName(abstractDictService.getDictNameByCode("manageType", busLedger.getManageType())); // 管理方式字典值 @@ -62,7 +67,7 @@ public List list(BusLedgerDTO request, DataScope dataScope) { // 地图不分页接口不再查字典值了 // 直接返回 - return this.baseMapper.list(dataScope, request); + return this.baseMapper.list(getDeptScopeIds(request.getDeptid()), request); } @Override @@ -111,9 +116,27 @@ deptIds.add(deptId); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", deptIds); + queryWrapper.orderByAsc("pids"); List deptList = abstractDeptService.list(queryWrapper); List nameList = deptList.stream().filter(dept->ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList()); return String.join("/", nameList); } + public String getDeptScopeIds(Long deptId) { + if (ObjectUtil.isNotEmpty(deptId)) { + //获取子级单位 + List deptIds = abstractDeptService.getIdsRecursionByPid(deptId, ""); + deptIds.add(deptId); + return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } else { + //获取登录权限 + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + if (!"ALL_TYPE".equals(dataScope.getScopeEnums().name())) { + return permissionContext.getAuthService().getLoginUserDataScope().getDeptIds() + .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + } + } + return ""; + } + } diff --git a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java index 0212e42..dc516a3 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -11,7 +11,8 @@ CONFIRMED("5", "已确认"), UNPROCESS("6", "待处置"), PROCESSED("7", "已处置"), - DELETED("8", "删除"); + FINISHED("8", "数据恢复正常,报警解除"), + DELETED("9", "删除"); private String code; private String value; diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 3652873..0cba757 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -63,4 +63,14 @@ String MONTH= "3"; String DAYS= "4"; + String DEPT_ALL= "corporate"; + String DEPT_COMPANY= "company"; + + //1、报警类、2确认/处置类、3消警类、4施工类 + String MESSAGE_TYPE_1= "1"; + String MESSAGE_TYPE_2= "2"; + String MESSAGE_TYPE_3= "3"; + String MESSAGE_TYPE_4= "4"; + + } 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 c120409..8e219e7 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 @@ -12,6 +12,7 @@ LIFE_CYCLE_RECORD_EXPORT("lifeCycleRecord", "lifeCycleRecord", "全生命周期记录"), REPAIR_LOG_EXPORT("repairLog", "repairLog", "厂商运维记录"), PIPE_LINE_EXPORT("pipeLine", "pipeLine", "管线基础信息"), + ALARM_POSITION_EXPORT("alarmPosition", "alarmPosition", "异常位置分析导出"), BUSPATROL_LOG_EXPORT("BusPatrolLogResponse", "BusPatrolLogResponse", "巡检日志"); ExportEnum(String fileName, String sheetName, String description) { diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java index 617bc69..74ad131 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/sensorHub/controller/ReceiveDataController.java @@ -8,11 +8,9 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.util.Map; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -29,11 +27,11 @@ @ApiOperation("接收设备数据入口") @PostMapping("/receiveData") @ResponseBody - public ReturnDTO getProcessResult(String jsonData) { - log.info(">>>>>>接收数<<<<<<:" + jsonData); + public ReturnDTO getProcessResult(@RequestBody Map map) { + log.info(">>>>>>接收数<<<<<<:" + map.get("jsonData").toString()); threadPoolExecutor.execute( () -> { - ResponseResolver.makeResponse(jsonData); + ResponseResolver.makeResponse(map.get("jsonData").toString()); } ); return ReturnUtil.success(); diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index a8084b8..9029096 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -19,12 +19,17 @@ redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/webjars/**,/device/receiveData + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/webjars/**,/device/receiveData,/api/receiveProcessResult #flowable数据源和多数据源配置 db: init: enable: false brAppUrl: http://127.0.0.1:8083/api/receiveProcessResult + +smartcity: + config: + #模板下载路径 + config-path: D:\code\br\iot\casic-iot-platform\casic-web\src\main\resources\config\temp logging: level: root: info