diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java new file mode 100644 index 0000000..b80c202 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java @@ -0,0 +1,56 @@ +package com.casic.missiles.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Slf4j +@Configuration +@Data +@ConditionalOnExpression("T(org.apache.commons.lang3.StringUtils).isNotEmpty('${xxl.job.admin.addresses}')") +public class XxlJobConfig { + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + +// @Value("${xxl.job.executor.address}") +// private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); +// xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java new file mode 100644 index 0000000..b80c202 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java @@ -0,0 +1,56 @@ +package com.casic.missiles.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Slf4j +@Configuration +@Data +@ConditionalOnExpression("T(org.apache.commons.lang3.StringUtils).isNotEmpty('${xxl.job.admin.addresses}')") +public class XxlJobConfig { + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + +// @Value("${xxl.job.executor.address}") +// private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); +// xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java new file mode 100644 index 0000000..798424c --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.job.handler; + + +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +/** + * XxlJob开发示例(Bean模式) + * + * 开发步骤: + * 1、任务开发:在Spring Bean实例中,开发Job方法; + * 2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。 + * 3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志; + * 4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果; + */ +@Slf4j +@Component +public class DemoJobHandler { + + @XxlJob(value = "demoHandler") + public ReturnT execute(String param) throws Exception { + System.out.println("调度任务Demo执行"); + XxlJobHelper.log("XXL-JOB-DEMO, Hello World."); + +// for (int i = 0; i < 5; i++) { +// XxlJobLogger.log("beat at:" + i); +// TimeUnit.SECONDS.sleep(2); +// } + return SUCCESS; + } + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java new file mode 100644 index 0000000..b80c202 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java @@ -0,0 +1,56 @@ +package com.casic.missiles.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Slf4j +@Configuration +@Data +@ConditionalOnExpression("T(org.apache.commons.lang3.StringUtils).isNotEmpty('${xxl.job.admin.addresses}')") +public class XxlJobConfig { + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + +// @Value("${xxl.job.executor.address}") +// private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); +// xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java new file mode 100644 index 0000000..798424c --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.job.handler; + + +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +/** + * XxlJob开发示例(Bean模式) + * + * 开发步骤: + * 1、任务开发:在Spring Bean实例中,开发Job方法; + * 2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。 + * 3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志; + * 4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果; + */ +@Slf4j +@Component +public class DemoJobHandler { + + @XxlJob(value = "demoHandler") + public ReturnT execute(String param) throws Exception { + System.out.println("调度任务Demo执行"); + XxlJobHelper.log("XXL-JOB-DEMO, Hello World."); + +// for (int i = 0; i < 5; i++) { +// XxlJobLogger.log("beat at:" + i); +// TimeUnit.SECONDS.sleep(2); +// } + return SUCCESS; + } + +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java new file mode 100644 index 0000000..54124d9 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java @@ -0,0 +1,63 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Component +@RequiredArgsConstructor +public class SuspendExpireJobHandler { + + private final ISuspendLogService iSuspendLogService; + private final IAlarmRecordsService iAlarmRecordsService; + private final IApprovalLogService iApprovalLogService; + + /** + * 挂起时间到期处理 + */ + @XxlJob("suspendExpireJobHandler") + public void suspendExpireJobHandler() { + XxlJobHelper.log("check suspend expire"); + Date today = getTodayStart(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", today); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + + private Date getTodayStart() { + // 获取当天日期 + LocalDate today = LocalDate.now(); + // 当天日期与午夜时间的组合 + ZonedDateTime todayStart = today.atStartOfDay(ZoneId.systemDefault()); + + // 转换为java.util.Date + return Date.from(todayStart.toInstant()); + } + +} diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java new file mode 100644 index 0000000..b80c202 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java @@ -0,0 +1,56 @@ +package com.casic.missiles.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Slf4j +@Configuration +@Data +@ConditionalOnExpression("T(org.apache.commons.lang3.StringUtils).isNotEmpty('${xxl.job.admin.addresses}')") +public class XxlJobConfig { + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + +// @Value("${xxl.job.executor.address}") +// private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); +// xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java new file mode 100644 index 0000000..798424c --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.job.handler; + + +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +/** + * XxlJob开发示例(Bean模式) + * + * 开发步骤: + * 1、任务开发:在Spring Bean实例中,开发Job方法; + * 2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。 + * 3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志; + * 4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果; + */ +@Slf4j +@Component +public class DemoJobHandler { + + @XxlJob(value = "demoHandler") + public ReturnT execute(String param) throws Exception { + System.out.println("调度任务Demo执行"); + XxlJobHelper.log("XXL-JOB-DEMO, Hello World."); + +// for (int i = 0; i < 5; i++) { +// XxlJobLogger.log("beat at:" + i); +// TimeUnit.SECONDS.sleep(2); +// } + return SUCCESS; + } + +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java new file mode 100644 index 0000000..54124d9 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java @@ -0,0 +1,63 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Component +@RequiredArgsConstructor +public class SuspendExpireJobHandler { + + private final ISuspendLogService iSuspendLogService; + private final IAlarmRecordsService iAlarmRecordsService; + private final IApprovalLogService iApprovalLogService; + + /** + * 挂起时间到期处理 + */ + @XxlJob("suspendExpireJobHandler") + public void suspendExpireJobHandler() { + XxlJobHelper.log("check suspend expire"); + Date today = getTodayStart(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", today); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + + private Date getTodayStart() { + // 获取当天日期 + LocalDate today = LocalDate.now(); + // 当天日期与午夜时间的组合 + ZonedDateTime todayStart = today.atStartOfDay(ZoneId.systemDefault()); + + // 转换为java.util.Date + return Date.from(todayStart.toInstant()); + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 6b9c5c1..03f6ef0 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -124,6 +124,11 @@ casic-data ${pro.version} + + com.casic + casic-job + ${pro.version} + org.springframework.boot diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java new file mode 100644 index 0000000..b80c202 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java @@ -0,0 +1,56 @@ +package com.casic.missiles.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Slf4j +@Configuration +@Data +@ConditionalOnExpression("T(org.apache.commons.lang3.StringUtils).isNotEmpty('${xxl.job.admin.addresses}')") +public class XxlJobConfig { + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + +// @Value("${xxl.job.executor.address}") +// private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); +// xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java new file mode 100644 index 0000000..798424c --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.job.handler; + + +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +/** + * XxlJob开发示例(Bean模式) + * + * 开发步骤: + * 1、任务开发:在Spring Bean实例中,开发Job方法; + * 2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。 + * 3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志; + * 4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果; + */ +@Slf4j +@Component +public class DemoJobHandler { + + @XxlJob(value = "demoHandler") + public ReturnT execute(String param) throws Exception { + System.out.println("调度任务Demo执行"); + XxlJobHelper.log("XXL-JOB-DEMO, Hello World."); + +// for (int i = 0; i < 5; i++) { +// XxlJobLogger.log("beat at:" + i); +// TimeUnit.SECONDS.sleep(2); +// } + return SUCCESS; + } + +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java new file mode 100644 index 0000000..54124d9 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java @@ -0,0 +1,63 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Component +@RequiredArgsConstructor +public class SuspendExpireJobHandler { + + private final ISuspendLogService iSuspendLogService; + private final IAlarmRecordsService iAlarmRecordsService; + private final IApprovalLogService iApprovalLogService; + + /** + * 挂起时间到期处理 + */ + @XxlJob("suspendExpireJobHandler") + public void suspendExpireJobHandler() { + XxlJobHelper.log("check suspend expire"); + Date today = getTodayStart(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", today); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + + private Date getTodayStart() { + // 获取当天日期 + LocalDate today = LocalDate.now(); + // 当天日期与午夜时间的组合 + ZonedDateTime todayStart = today.atStartOfDay(ZoneId.systemDefault()); + + // 转换为java.util.Date + return Date.from(todayStart.toInstant()); + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 6b9c5c1..03f6ef0 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -124,6 +124,11 @@ casic-data ${pro.version} + + com.casic + casic-job + ${pro.version} + org.springframework.boot diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 335446b..f05b894 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -32,6 +32,26 @@ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ knife4j: groups: 物联网平台业务包:com.casic.missiles.modular.device,基础业务包:com.casic.missiles.modular.system,报警业务包:com.casic.missiles.modular.alarm +xxl: + job: + admin: + # xxl-job后台管理界面的地址 + #addresses: + #生产环境 + #addresses: http://28.41.126.170:8006/xxl-job-admin + addresses: http://111.198.10.15:21605/xxl-job-admin + executor: + # 此执行器的名称 + appname: casic-iot-job + # 此执行器的ip、端口,每个节点对应自己的ip,端口用于任务执行的通信 + ip: 192.168.42.147 + port: 9999 + # 此执行器的日志存放路径 + logpath: logs/xxl-job/casic-iot + # 此执行器的日志保存时间 + logretentiondays: 7 + accessToken: default_token + #代码生成器配置 code: generate: diff --git a/casic-alarm/pom.xml b/casic-alarm/pom.xml index b04b601..7d077f1 100644 --- a/casic-alarm/pom.xml +++ b/casic-alarm/pom.xml @@ -43,11 +43,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 77a299c..272d850 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 @@ -78,7 +78,7 @@ @ApiOperation("查看") @PostMapping("/view") @ResponseBody - public ReturnDTO edit(@RequestBody IdDTO idDTO) { + public ReturnDTO view(@RequestBody IdDTO idDTO) { Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { throw new BusinessException(BusinessExceptionEnum.ID_NULL); }); 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 new file mode 100644 index 0000000..7b9ddf4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/controller/AlarmStaticsController.java @@ -0,0 +1,86 @@ +package com.casic.missiles.modular.alarm.controller; + + +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.modular.alarm.dto.AlarmPositionRequestDTO; +import com.casic.missiles.modular.alarm.dto.AlarmTypeRequestDTO; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import com.casic.missiles.util.ReturnUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 报警统计 前端控制器 + *

+ * + * @author zt + * @since 2024-08-15 + */ +@Api(tags = "报警统计模块") +@RequiredArgsConstructor +@RestController +@RequestMapping("/statics/alarmRecords") +public class AlarmStaticsController extends ExportController { + + private final IAlarmStaticsService iAlarmStaticsService; + private final AbstractPermissionContext permissionContext; + + @ApiOperation("报警总体情况") + @PostMapping("/overall") + @ResponseBody + public ReturnDTO overall() { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.overall(alarmType,dataScope.getDeptIds())); + } + + @ApiOperation("各类报警统计") + @PostMapping("/alarmType") + @ResponseBody + public ReturnDTO alarmType(@RequestBody AlarmTypeRequestDTO alarmTypeRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmType(alarmType,dataScope.getDeptIds(),alarmTypeRequestDTO)); + } +// +// @ApiOperation("报警趋势分析") +// @PostMapping("/alarmTrend") +// @ResponseBody +// public ReturnDTO alarmTrend() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmTrend(alarmType,dataScope.getDeptIds())); +// } +// +// @ApiOperation("各单位报警统计") +// @PostMapping("/alarmCompany") +// @ResponseBody +// public ReturnDTO alarmCompany() { +// +// DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); +// String alarmType=""; +// return ReturnUtil.success(iAlarmStaticsService.alarmCompany(alarmType,dataScope.getDeptIds())); +// } + + @ApiOperation("异常位置分析") + @PostMapping("/alarmPosition") + @ResponseBody + public ReturnDTO alarmPosition(@RequestBody AlarmPositionRequestDTO alarmPositionRequestDTO) { + + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + String alarmType=""; + return ReturnUtil.success(iAlarmStaticsService.alarmPosition(alarmType,dataScope.getDeptIds(),alarmPositionRequestDTO)); + } + +} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java new file mode 100644 index 0000000..acd97dc --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmStaticsMapper.java @@ -0,0 +1,35 @@ +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.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) Mapper 接口 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@Mapper +public interface AlarmStaticsMapper extends BaseMapper { + + List overall( @Param("alarmType") String alarmType, + @Param("deptStrs") String deptStrs); + + List alarmPosition(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmPositionRequestDTO request); + + List alarmType(@Param("alarmType") String alarmType, + @Param("deptIds") String deptIds, + @Param("request") AlarmTypeRequestDTO request); + +} 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 new file mode 100644 index 0000000..432c042 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmStaticsMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + ID + , DEVCODE, LEDGER_CODE, ALARM_TYPE, ALARM_CONTENT, ALARM_VALUE, ALARM_LEVEL, ALARM_TIME, `STATUS`, ALARM_MSG, PROCESS_STATUS, PROCESS_TIME + + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java new file mode 100644 index 0000000..eae86c4 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmOverDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmOverDTO { + + + @ApiModelProperty("报警数量") + private Long sum; + + @ApiModelProperty("0:正在报警,1:今日报警,2:本周报警,3:本月报警,4:全年报警 ") + private String type; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java new file mode 100644 index 0000000..e2590b9 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionRequestDTO.java @@ -0,0 +1,22 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + +} 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 new file mode 100644 index 0000000..de56ef6 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmPositionResponseDTO.java @@ -0,0 +1,30 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmPositionResponseDTO { + + @ApiModelProperty("报警数量") + private Long alarmSum; + + @ApiModelProperty("位置类型 ") + private String type; + + @ApiModelProperty("位号") + private String tagNumber; + + @ApiModelProperty("位置") + private String place; + + @ApiModelProperty("名称") + private String ledgerName; + + @ApiModelProperty("管理单位") + private String deptName; + + @ApiModelProperty("标签") + private String marker; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java new file mode 100644 index 0000000..c461cc2 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AlarmTypeRequestDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AlarmTypeRequestDTO { + + + @ApiModelProperty("时间类型 (1:今日,2:本周,3:本月)") + private String timeType; + + @ApiModelProperty("位置类型 1:闸井,2:场站,3:管线") + private String ledgerType; + + @ApiModelProperty("报警开始时间") + private String begTime; + + @ApiModelProperty("报警结束时间") + private String endTime; + + @ApiModelProperty("管理单位") + private Long deptid; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java new file mode 100644 index 0000000..8ee85f1 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/CommonResponseDTO.java @@ -0,0 +1,15 @@ +package com.casic.missiles.modular.alarm.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CommonResponseDTO { + + @ApiModelProperty("名称") + private String name; + + @ApiModelProperty("值") + private String value; + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java index 8d6d5fe..d129951 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/SuspendDTO.java @@ -12,7 +12,7 @@ @ApiModelProperty("挂起原因") private String suspendReason; - @ApiModelProperty("挂起时间") + @ApiModelProperty(value = "挂起时间(小时),必须为整数",required = true) private String suspendTime; } 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 8482de1..fc1e325 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 @@ -40,6 +40,10 @@ @TableField("LEDGER_CODE") private String ledgerCode; + @ApiModelProperty("台账位号") + @TableField("LEDGER_NUMBER") + private String ledgerNumber; + @ApiModelProperty("报警类型") @TableField("ALARM_TYPE") private String alarmType; @@ -71,6 +75,10 @@ @TableField("PROCESS_STATUS") private String processStatus; + @ApiModelProperty("上个处置状态") + @TableField("PRE_PROCESS_STATUS") + private String preProcessStatus; + @ApiModelProperty("处置时间") @TableField("PROCESS_TIME") private Date processTime; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java index fd1748b..9b8b2d5 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/SuspendLog.java @@ -48,6 +48,11 @@ @TableField("CREATE_PERSON") private String createPerson; + + @ApiModelProperty("截止日期") + @TableField("EXPIRE_TIME") + private Date expireTime; + @ApiModelProperty("创建时间") @TableField("CREATE_TIME") private Date createTime; @@ -56,13 +61,18 @@ @TableField("DESCN") private String descn; + @ApiModelProperty("是否有效,1:有,0:无") + @TableField("VALID") + private String valid; + public SuspendLog() { } - public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson) { + public SuspendLog(Long alarmId, String suspendReason, String suspendTime, String createPerson,Date expireTime) { this.alarmId = alarmId; this.suspendReason = suspendReason; this.suspendTime = suspendTime; this.createPerson = createPerson; + this.expireTime = expireTime; } } 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 f285f96..80db26d 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 @@ -8,6 +8,8 @@ import com.casic.missiles.modular.alarm.dto.SuspendDTO; import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import java.util.List; + /** *

* 报警管理(暂定) 服务类 @@ -30,4 +32,6 @@ boolean read(Long id); + List changeProcessStatus(List ids); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java new file mode 100644 index 0000000..4c1b2ea --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmStaticsService.java @@ -0,0 +1,27 @@ +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.core.datascope.DataScope; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; + +import java.util.List; + +/** + *

+ * 报警管理(暂定) 服务类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +public interface IAlarmStaticsService extends IService { + + List overall(String alarmType ,List deptIds); + + List alarmPosition(String alarmType , List deptIds,AlarmPositionRequestDTO alarmPositionRequestDTO); + + List alarmType(String alarmType , List deptIds,AlarmTypeRequestDTO alarmTypeRequestDTO); + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java index f711ef8..ef25c12 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IApprovalLogService.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.service; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 审批记录 服务类 @@ -13,4 +16,6 @@ */ public interface IApprovalLogService extends IService { + boolean saveSuspendLogs(List alarmRecordsList); + } 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 01e1d2f..85def7b 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 @@ -1,5 +1,6 @@ package com.casic.missiles.modular.alarm.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; /** @@ -75,15 +77,17 @@ @Override public boolean suspend(SuspendDTO suspendDTO) { //1、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(suspendDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(suspendDTO.getAlarmId()); + if (!ApprovalStatusEnum.SUSPEND.getCode().equals(alarmRecords.getProcessStatus())) + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.SUSPEND.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(suspendDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.SUSPEND.getCode())); + approvalLogMapper.insert(new ApprovalLog(suspendDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.SUSPEND.getCode())); //3、写入挂起日志表 - return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName))>0?true:false; + Date expireTime = DateUtil.offsetHour(new Date(), Integer.decode(suspendDTO.getSuspendTime())); + return suspendLogMapper.insert(new SuspendLog(suspendDTO.getAlarmId(), suspendDTO.getSuspendReason(), suspendDTO.getSuspendTime(), loginPersonName, expireTime)) > 0 ? true : false; } @Transactional @@ -93,9 +97,9 @@ AlarmRecords alarmRecords = new AlarmRecords(); alarmRecords.setId(id); alarmRecords.setProcessStatus(ApprovalStatusEnum.READ.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //2、写入流程日志 - return approvalLogMapper.insert( new ApprovalLog(id,"1",permissionContext.getAuthService().getLoginUser().getName(),ApprovalStatusEnum.READ.getCode()))>0?true:false; + return approvalLogMapper.insert(new ApprovalLog(id, "1", permissionContext.getAuthService().getLoginUser().getName(), ApprovalStatusEnum.READ.getCode())) > 0 ? true : false; } @@ -105,20 +109,30 @@ public boolean remind(RemindDTO remindDTO) { //toDo:1、提醒app推送,需要对接 //2、更新报警表流程状态 - AlarmRecords alarmRecords = new AlarmRecords(); - alarmRecords.setId(remindDTO.getAlarmId()); + AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords) ; + this.baseMapper.updateById(alarmRecords); //3、写入流程日志 String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); - approvalLogMapper.insert( new ApprovalLog(remindDTO.getAlarmId(),"1",loginPersonName,ApprovalStatusEnum.UNCONFIRM.getCode())); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", loginPersonName, ApprovalStatusEnum.UNCONFIRM.getCode())); //4、写入提醒日志表 return remindLogMapper.insert(RemindLog.builder() .alarmId(remindDTO.getAlarmId()) .remindContent(remindDTO.getRemindContent()) .remindPerson(remindDTO.getRemindPerson()) .telephone(remindDTO.getTelephone()) - .remindPerson(loginPersonName).build())>0?true:false; + .remindPerson(loginPersonName).build()) > 0 ? true : false; } + + @Override + public List changeProcessStatus(List ids) { + List alarmRecordsList = this.listByIds(ids); + alarmRecordsList.forEach(alarmRecords -> { + alarmRecords.setProcessStatus(alarmRecords.getPreProcessStatus()); + }); + this.updateBatchById(alarmRecordsList); + return alarmRecordsList; + } } 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 new file mode 100644 index 0000000..6502946 --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmStaticsServiceImpl.java @@ -0,0 +1,54 @@ +package com.casic.missiles.modular.alarm.service.impl; + +import cn.hutool.core.convert.Convert; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.modular.alarm.dao.AlarmStaticsMapper; +import com.casic.missiles.modular.alarm.dto.*; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.service.IAlarmStaticsService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 报警管理(暂定) 服务实现类 + *

+ * + * @author zt + * @since 2024-07-16 + */ +@RequiredArgsConstructor +@Service +public class AlarmStaticsServiceImpl extends ServiceImpl implements IAlarmStaticsService { + + @Override + public List overall(String alarmType, List deptIds) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + //Todo:加入报警类型 + return this.baseMapper.overall(alarmType,deptStrs); + } + + @Override + public List alarmPosition(String alarmType, List deptIds, AlarmPositionRequestDTO request) { + //Todo:加入报警类型 + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List alarmPositionResponseDTOList = this.baseMapper.alarmPosition(alarmType,deptStrs,request); + alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { + alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); + }); + return alarmPositionResponseDTOList; + } + + @Override + public List alarmType(String alarmType, List deptIds, AlarmTypeRequestDTO request) { + String deptStrs = deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(",")); + List commonResponseDTOList = this.baseMapper.alarmType(alarmType,deptStrs,request); +// alarmPositionResponseDTOList.forEach(alarmPositionResponseDTO -> { +// alarmPositionResponseDTO.setType("1".equals(alarmPositionResponseDTO.getType())?"闸井":("2".equals(alarmPositionResponseDTO.getType())?"场站":"管线")); +// }); + return commonResponseDTOList; + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java index 3cf81e5..bfb4f45 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/ApprovalLogServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.modular.alarm.service.impl; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.enums.ApprovalStatusEnum; import com.casic.missiles.modular.alarm.dao.ApprovalLogMapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; import com.casic.missiles.modular.alarm.entity.ApprovalLog; +import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IApprovalLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + /** *

* 审批记录 服务实现类 @@ -14,7 +22,20 @@ * @author zt * @since 2024-08-14 */ +@RequiredArgsConstructor @Service public class ApprovalLogServiceImpl extends ServiceImpl implements IApprovalLogService { + private final AbstractPermissionContext permissionContext; + + @Override + public boolean saveSuspendLogs(List alarmRecordsList) { + + String loginPersonName = permissionContext.getAuthService().getLoginUser().getName(); + List approvalLogList = new ArrayList<>(); + alarmRecordsList.forEach(alarmRecords -> { + approvalLogList.add(new ApprovalLog(alarmRecords.getId(), "1", loginPersonName, alarmRecords.getPreProcessStatus())); + }); + return this.saveBatch(approvalLogList); + } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java deleted file mode 100644 index 2f46fb0..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/util/WebSocket.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.casic.missiles.modular.alarm.util; - -import org.springframework.stereotype.Component; - -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * 此注解相当于设置访问URL - */ -@Component -@ServerEndpoint("/websocket/{userId}") -public class WebSocket { - private Session session; - - private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); - private static Map sessionPool = new HashMap(); - - @OnOpen - public void onOpen(Session session, @PathParam(value = "userId") String userId) { - this.session = session; - webSockets.add(this); - sessionPool.put(userId, session); - System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size()); - } - - @OnClose - public void onClose() { - webSockets.remove(this); - System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size()); - } - - @OnMessage - public void onMessage(String message) { - System.out.println("【websocket消息】收到客户端消息:" + message); - } - - // 此为广播消息 - public void sendAllMessage(String message) { - for (WebSocket webSocket : webSockets) { - System.out.println("【websocket消息】广播消息:" + message); - try { - webSocket.session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - // 发送列表消息 - public void sendListMessage(List userIds, String message) { - System.out.println("【websocket消息】列表消息:" + message); - for (String userId : userIds) { - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - // 发送列表消息 - -// public void sendListMessage(List userIds, Object data){ -// System.out.println("【websocket消息】列表消息:"+data); -// for (String userId : userIds) { -// Session session = sessionPool.get(userId); -// if (session != null) { -// try { -//// session.getAsyncRemote().sendText(message); -// session.getAsyncRemote().sendObject(data); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// } -// } - - // 此为单点消息 - public void sendOneMessage(String userId, String message) { - System.out.println("【websocket消息】单点消息:" + message); - Session session = sessionPool.get(userId); - if (session != null) { - try { - session.getAsyncRemote().sendText(message); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - -} diff --git a/casic-data/pom.xml b/casic-data/pom.xml index 9eb9b59..8495936 100644 --- a/casic-data/pom.xml +++ b/casic-data/pom.xml @@ -48,11 +48,11 @@ - - org.quartz-scheduler - quartz - 2.3.0 - + + + + + junit 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 2b34c63..ca05653 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 @@ -27,56 +27,56 @@ SELECT bd.*, bp.DEVICE_MODEL as deviceModel, - bt.WATCH_OBJECT as watchObject, - bt.TYPE_NAME as typeName, - bm.`NAME` as manufactureName, - bl.TAG_NUMBER as tagNumber, - bl.POSITION, - bl.DEPTID, - sd.FULL_NAME as deptName - FROM - bus_device bd - LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID - LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID - LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 - LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID - LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 - LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID - where 1=1 + + bt.TYPE_NAME as typeName, + bm.`NAME` as manufactureName, + bl.TAG_NUMBER as tagNumber, + bl.POSITION, + bl.DEPTID, + sd.FULL_NAME as deptName + FROM + bus_device bd + LEFT JOIN base_device_type bt ON bd.DEVICE_TYPE = bt.ID + LEFT JOIN base_product bp ON bd.PRODUCT_ID = bp.ID + LEFT JOIN bus_device_ledger br on br.DEVICE_ID = bd.ID AND br.VALID=1 + LEFT JOIN bus_manufacturer bm on bm.ID = bp.MANUFACTURER_ID + LEFT JOIN bus_ledger bl on bl.ID = br.LEDGER_ID AND br.VALID=1 + LEFT JOIN sys_dept sd ON sd.ID =bl.DEPTID + where 1=1 - - and bd.DEVCODE like concat('%', #{request.devCode}, '%') - - - and bt.DEVICE_TYPE =#{request.devTypeId} - - - and bp.MANUFACTURER_ID =#{request.manufacturerId} - - - and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', - #{request.devCode}, '%')) - + + and bd.DEVCODE like concat('%', #{request.devCode}, '%') + + + and bt.DEVICE_TYPE =#{request.devTypeId} + + + and bp.MANUFACTURER_ID =#{request.manufacturerId} + + + and (bl.POSITION like concat('%', #{request.devCode}, '%') or bl.TAG_NUMBER like concat('%', + #{request.devCode}, '%')) + - - and br.DEPTID =#{request.deptId} - - - and bd.ONLINE_STATE =#{request.onlineState} - - - and bd.valid =#{request.valid} - - - and bd.CELL #{request.cell} - - - and bd.LOGTIME = ]]> #{request.logtime1} - - - and bd.LOGTIME #{request.logtime2} - - ORDER BY bd.INSTALL_DATE DESC - + + and br.DEPTID =#{request.deptId} + + + and bd.ONLINE_STATE =#{request.onlineState} + + + and bd.valid =#{request.valid} + + + and bd.CELL #{request.cell} + + + and bd.LOGTIME = ]]> #{request.logtime1} + + + and bd.LOGTIME #{request.logtime2} + + ORDER BY bd.INSTALL_DATE DESC + 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 f1d1484..d272a30 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 @@ -97,6 +97,11 @@ @TableField("RIGHT_LENGTH") private String rightLength; + @ExcelProperty(value = "监测对象", order = 3) + @ApiModelProperty(value = "监测对象(1:闸井、2:场站、3:管线)",required = true) + @TableField("WATCH_OBJECT") + private String watchObject; + @ApiModelProperty("所属点位,主键ids") @TableField(exist = false) private List ledgerIds; @@ -106,14 +111,6 @@ @TableField(exist = false) private String deviceModel; - - @ExcelProperty(value = "监测对象", order = 3) - @ApiModelProperty("监测对象") - @TableField(exist = false) - private String watchObject; - - - @ExcelProperty(value = "厂商", order = 4) @ApiModelProperty("厂商") @TableField(exist = false) diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java index 95a016f..767ec9c 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/entity/BusPipeline.java @@ -57,8 +57,8 @@ private Long deptid; @ApiModelProperty("详细位置") - @TableField("POSTITION") - private String postition; + @TableField("POSITION") + private String position; @ApiModelProperty("压力级制,字典值") @TableField("PRESS_TYPE") diff --git a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java index d97a020..ef2012e 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceLedgerServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -23,7 +24,8 @@ @Override public boolean saveDeviceLedger(Long deviceID, List ledgerIds) { - + //先删除绑定关系 + this.busDeviceLedgerService(Arrays.asList(deviceID)); List busDeviceLedgers = new ArrayList<>(); ledgerIds.forEach(ledgerId->{ busDeviceLedgers.add(new BusDeviceLedger(deviceID,ledgerId)); diff --git a/casic-job/pom.xml b/casic-job/pom.xml new file mode 100644 index 0000000..90a3d24 --- /dev/null +++ b/casic-job/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.casic + casic-iot-platform + 2.0.0.alpha + ../pom.xml + + + casic-job + 2.0.0 + jar + casic-job + casic--xxljob子包 + + + + + com.casic + casic-core + ${core.version} + + + com.casic + casic-alarm + ${pro.version} + + + com.xuxueli + xxl-job-core + ${xxl-job.version} + + + + + + + + + src/main/java + + **/*.xml + + + + + \ No newline at end of file diff --git a/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java new file mode 100644 index 0000000..b80c202 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/config/XxlJobConfig.java @@ -0,0 +1,56 @@ +package com.casic.missiles.job.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +@Slf4j +@Configuration +@Data +@ConditionalOnExpression("T(org.apache.commons.lang3.StringUtils).isNotEmpty('${xxl.job.admin.addresses}')") +public class XxlJobConfig { + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @Value("${xxl.job.executor.appname}") + private String appname; + +// @Value("${xxl.job.executor.address}") +// private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + log.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); +// xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + return xxlJobSpringExecutor; + } +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java new file mode 100644 index 0000000..798424c --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/DemoJobHandler.java @@ -0,0 +1,37 @@ +package com.casic.missiles.job.handler; + + +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import static com.xxl.job.core.biz.model.ReturnT.SUCCESS; + +/** + * XxlJob开发示例(Bean模式) + * + * 开发步骤: + * 1、任务开发:在Spring Bean实例中,开发Job方法; + * 2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。 + * 3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志; + * 4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果; + */ +@Slf4j +@Component +public class DemoJobHandler { + + @XxlJob(value = "demoHandler") + public ReturnT execute(String param) throws Exception { + System.out.println("调度任务Demo执行"); + XxlJobHelper.log("XXL-JOB-DEMO, Hello World."); + +// for (int i = 0; i < 5; i++) { +// XxlJobLogger.log("beat at:" + i); +// TimeUnit.SECONDS.sleep(2); +// } + return SUCCESS; + } + +} diff --git a/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java new file mode 100644 index 0000000..54124d9 --- /dev/null +++ b/casic-job/src/main/java/com/casic/missiles/job/handler/SuspendExpireJobHandler.java @@ -0,0 +1,63 @@ +package com.casic.missiles.job.handler; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.modular.alarm.entity.AlarmRecords; +import com.casic.missiles.modular.alarm.entity.SuspendLog; +import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; +import com.casic.missiles.modular.alarm.service.IApprovalLogService; +import com.casic.missiles.modular.alarm.service.ISuspendLogService; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Component +@RequiredArgsConstructor +public class SuspendExpireJobHandler { + + private final ISuspendLogService iSuspendLogService; + private final IAlarmRecordsService iAlarmRecordsService; + private final IApprovalLogService iApprovalLogService; + + /** + * 挂起时间到期处理 + */ + @XxlJob("suspendExpireJobHandler") + public void suspendExpireJobHandler() { + XxlJobHelper.log("check suspend expire"); + Date today = getTodayStart(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lt("EXPIRE_TIME", today); + queryWrapper.eq("VALID", "1"); + List suspendLogList = iSuspendLogService.list(queryWrapper); + suspendLogList.forEach(suspendLog -> { + suspendLog.setValid("0"); + }); + iSuspendLogService.updateBatchById(suspendLogList); + //更新最新状态 + List alarmIds = suspendLogList.stream().map(SuspendLog::getAlarmId).collect(Collectors.toList()); + List alarmRecordsList = iAlarmRecordsService.changeProcessStatus(alarmIds); + //添加流转日志 + iApprovalLogService.saveSuspendLogs(alarmRecordsList); + } + + private Date getTodayStart() { + // 获取当天日期 + LocalDate today = LocalDate.now(); + // 当天日期与午夜时间的组合 + ZonedDateTime todayStart = today.atStartOfDay(ZoneId.systemDefault()); + + // 转换为java.util.Date + return Date.from(todayStart.toInstant()); + } + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 6b9c5c1..03f6ef0 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -124,6 +124,11 @@ casic-data ${pro.version} + + com.casic + casic-job + ${pro.version} + org.springframework.boot diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 335446b..f05b894 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -32,6 +32,26 @@ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ knife4j: groups: 物联网平台业务包:com.casic.missiles.modular.device,基础业务包:com.casic.missiles.modular.system,报警业务包:com.casic.missiles.modular.alarm +xxl: + job: + admin: + # xxl-job后台管理界面的地址 + #addresses: + #生产环境 + #addresses: http://28.41.126.170:8006/xxl-job-admin + addresses: http://111.198.10.15:21605/xxl-job-admin + executor: + # 此执行器的名称 + appname: casic-iot-job + # 此执行器的ip、端口,每个节点对应自己的ip,端口用于任务执行的通信 + ip: 192.168.42.147 + port: 9999 + # 此执行器的日志存放路径 + logpath: logs/xxl-job/casic-iot + # 此执行器的日志保存时间 + logretentiondays: 7 + accessToken: default_token + #代码生成器配置 code: generate: diff --git a/pom.xml b/pom.xml index e3be2bd..8c1a9df 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,7 @@ casic-device casic-public casic-data + casic-job com.casic @@ -29,6 +30,7 @@ 2.0.0.alpha 2.0.0.alpha + 2.3.0 2.0.0.alpha