src/main/java/com/ruoyi/alarm/controller/AlarmAnalysisController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,76 @@ package com.ruoyi.alarm.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.alarm.service.IAlarmAnalysisService; import com.ruoyi.alarm.vo.*; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @Api(tags = "æ¥è¦åæè¯ä¼°æ¨¡å") @RestController @AllArgsConstructor @RequestMapping("/alarm/analysis") public class AlarmAnalysisController extends BaseController { private IAlarmAnalysisService alarmAnalysisService; @ApiOperation("宿¶æ¥è¦ç»è®¡") @GetMapping("/realtime/stats") public AjaxResult getRealtimeStats() { Map<String, Object> data = alarmAnalysisService.getRealtimeStats(); return AjaxResult.success(data); } @ApiOperation("宿¶æ¥è¦å表") @GetMapping("/realtime/list") public AjaxResult getRealtimeList(Page page) { IPage<AlarmRealtimeVo> result = alarmAnalysisService.getRealtimeList(page); return AjaxResult.success(result); } @ApiOperation("确认æ¥è¦") @Log(title = "æ¥è¦ç¡®è®¤", businessType = BusinessType.UPDATE) @PostMapping("/confirm/{alarmId}") public AjaxResult confirmAlarm(@PathVariable Long alarmId) { return toAjax(alarmAnalysisService.confirmAlarm(alarmId)); } @ApiOperation("åææ¥è¦") @GetMapping("/analyze/{alarmId}") public AjaxResult analyzeAlarm(@PathVariable Long alarmId) { AlarmAnalysisVo data = alarmAnalysisService.analyzeAlarm(alarmId); return AjaxResult.success(data); } @ApiOperation("æ¥è¦è¶å¿æ°æ®") @GetMapping("/trend") public AjaxResult getTrendData(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) { AlarmTrendVo data = alarmAnalysisService.getTrendData(startDate, endDate); return AjaxResult.success(data); } @ApiOperation("æ¥è¦ç±»ååå¸") @GetMapping("/type/distribution") public AjaxResult getTypeDistribution() { List<AlarmTypeDistributionVo> data = alarmAnalysisService.getTypeDistribution(); return AjaxResult.success(data); } @ApiOperation("æ éè¯æå表") @GetMapping("/fault/list") public AjaxResult getFaultList() { List<AlarmFaultDiagnosisVo> data = alarmAnalysisService.getFaultList(); return AjaxResult.success(data); } } src/main/java/com/ruoyi/alarm/controller/AlarmCollectionController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ package com.ruoyi.alarm.controller; import com.ruoyi.alarm.dto.AlarmCollectionInterfaceDto; import com.ruoyi.alarm.service.IAlarmCollectionService; import com.ruoyi.alarm.vo.AlarmCollectionInterfaceVo; import com.ruoyi.alarm.vo.AlarmStatisticsVo; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; @Api(tags = "æ°æ®ééä¸è§£ææ¨¡å") @RestController @AllArgsConstructor @RequestMapping("/alarm/collection") public class AlarmCollectionController extends BaseController { private IAlarmCollectionService alarmCollectionService; @ApiOperation("ééç»è®¡æ¦è§") @GetMapping("/statistics") public AjaxResult getStatistics() { AlarmStatisticsVo data = alarmCollectionService.getStatistics(); return AjaxResult.success(data); } @ApiOperation("æ°æ®é鿥å£å表") @GetMapping("/interface/list") public AjaxResult getInterfaceList() { List<AlarmCollectionInterfaceVo> data = alarmCollectionService.getInterfaceList(); return AjaxResult.success(data); } @ApiOperation("å¯å¨æ°æ®éé") @Log(title = "æ°æ®é鿥å£", businessType = BusinessType.UPDATE) @PostMapping("/interface/start/{interfaceId}") public AjaxResult startInterface(@PathVariable Long interfaceId) { return toAjax(alarmCollectionService.startInterface(interfaceId)); } @ApiOperation("åæ¢æ°æ®éé") @Log(title = "æ°æ®é鿥å£", businessType = BusinessType.UPDATE) @PostMapping("/interface/stop/{interfaceId}") public AjaxResult stopInterface(@PathVariable Long interfaceId) { return toAjax(alarmCollectionService.stopInterface(interfaceId)); } @ApiOperation("æ°å¢æä¿®æ¹æ°æ®é鿥å£") @PostMapping("/interface") public AjaxResult addOrUpdateInterface(@Validated @RequestBody AlarmCollectionInterfaceDto dto) { return toAjax(alarmCollectionService.addOrUpdateInterface(dto)); } @ApiOperation("å 餿°æ®é鿥å£") @Log(title = "æ°æ®é鿥å£", businessType = BusinessType.DELETE) @DeleteMapping("/interface/{interfaceId}") public AjaxResult deleteInterface(@PathVariable Long interfaceId) { return toAjax(alarmCollectionService.deleteInterface(interfaceId)); } } src/main/java/com/ruoyi/alarm/controller/AlarmOptimizationController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,112 @@ package com.ruoyi.alarm.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.alarm.dto.AlarmNuisanceStrategyDto; import com.ruoyi.alarm.dto.AlarmRemoveApprovalDto; import com.ruoyi.alarm.service.IAlarmOptimizationService; import com.ruoyi.alarm.vo.*; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; @Api(tags = "æ¥è¦ä¼åç®¡çæ¨¡å") @RestController @AllArgsConstructor @RequestMapping("/alarm/optimization") public class AlarmOptimizationController extends BaseController { private IAlarmOptimizationService alarmOptimizationService; @ApiOperation("ä¼åææç»è®¡") @GetMapping("/statistics") public AjaxResult getStatistics() { AlarmOptimizationStatisticsVo data = alarmOptimizationService.getStatistics(); return AjaxResult.success(data); } @ApiOperation("æ»æ°æ¥è¦çç¥å表") @GetMapping("/strategy/list") public AjaxResult getStrategyList() { List<AlarmNuisanceStrategyVo> data = alarmOptimizationService.getStrategyList(); return AjaxResult.success(data); } @ApiOperation("æ°å¢æ»æ°æ¥è¦çç¥") @Log(title = "æ»æ°æ¥è¦çç¥", businessType = BusinessType.INSERT) @PostMapping("/strategy") public AjaxResult addStrategy(@Validated @RequestBody AlarmNuisanceStrategyDto dto) { return toAjax(alarmOptimizationService.addStrategy(dto)); } @ApiOperation("ä¿®æ¹æ»æ°æ¥è¦çç¥") @Log(title = "æ»æ°æ¥è¦çç¥", businessType = BusinessType.UPDATE) @PutMapping("/strategy") public AjaxResult updateStrategy(@Validated @RequestBody AlarmNuisanceStrategyDto dto) { return toAjax(alarmOptimizationService.updateStrategy(dto)); } @ApiOperation("å 餿»æ°æ¥è¦çç¥") @Log(title = "æ»æ°æ¥è¦çç¥", businessType = BusinessType.DELETE) @DeleteMapping("/strategy/{strategyId}") public AjaxResult deleteStrategy(@PathVariable Long strategyId) { return toAjax(alarmOptimizationService.deleteStrategy(strategyId)); } @ApiOperation("ä¿®æ¹çç¥ç¶æ") @Log(title = "æ»æ°æ¥è¦çç¥", businessType = BusinessType.UPDATE) @PutMapping("/strategy/changeStatus") public AjaxResult changeStrategyStatus(@RequestParam Long strategyId, @RequestParam Integer status) { return toAjax(alarmOptimizationService.changeStrategyStatus(strategyId, status)); } @ApiOperation("æ²»çååå¯¹æ¯æ°æ®") @GetMapping("/compare") public AjaxResult getCompareData() { AlarmCompareVo data = alarmOptimizationService.getCompareData(); return AjaxResult.success(data); } @ApiOperation("é«é¢æ¥è¦ç¹ä½å表") @GetMapping("/highfreq/list") public AjaxResult getHighFreqList(@RequestParam(required = false, defaultValue = "5") Integer limit) { List<AlarmHighFreqPointVo> data = alarmOptimizationService.getHighFreqList(limit); return AjaxResult.success(data); } @ApiOperation("æ¥è¦åé¤å®¡æ¹å表") @GetMapping("/approval/list") public AjaxResult getApprovalList(Page page, @RequestParam(required = false) String status) { IPage<AlarmRemoveApprovalVo> result = alarmOptimizationService.getApprovalList(page, status); return AjaxResult.success(result); } @ApiOperation("æäº¤åé¤ç³è¯·") @Log(title = "æ¥è¦åé¤ç³è¯·", businessType = BusinessType.INSERT) @PostMapping("/approval") public AjaxResult submitApproval(@Validated @RequestBody AlarmRemoveApprovalDto dto) { return toAjax(alarmOptimizationService.submitApproval(dto)); } @ApiOperation("审æ¹éè¿") @Log(title = "æ¥è¦åé¤å®¡æ¹", businessType = BusinessType.UPDATE) @PostMapping("/approval/approve/{applyNo}") public AjaxResult approveApproval(@PathVariable String applyNo) { return toAjax(alarmOptimizationService.approveApproval(applyNo)); } @ApiOperation("审æ¹é©³å") @Log(title = "æ¥è¦åé¤å®¡æ¹", businessType = BusinessType.UPDATE) @PostMapping("/approval/reject/{applyNo}") public AjaxResult rejectApproval(@PathVariable String applyNo) { return toAjax(alarmOptimizationService.rejectApproval(applyNo)); } } src/main/java/com/ruoyi/alarm/controller/AlarmPointController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.ruoyi.alarm.controller; import com.ruoyi.alarm.service.IAlarmCollectionService; import com.ruoyi.alarm.vo.AlarmPointLedgerVo; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; @Api(tags = "æ¥è¦ç¹ä½é项") @RestController @AllArgsConstructor @RequestMapping("/alarm/optimization/point") public class AlarmPointController extends BaseController { private IAlarmCollectionService alarmCollectionService; @ApiOperation("æ¥è¦ç¹ä½é项") @GetMapping("/options") public AjaxResult getPointOptions() { List<AlarmPointLedgerVo> data = alarmCollectionService.getPointOptions(); return AjaxResult.success(data); } } src/main/java/com/ruoyi/alarm/controller/AlarmPointLedgerController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,66 @@ package com.ruoyi.alarm.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.alarm.dto.AlarmPointDto; import com.ruoyi.alarm.service.IAlarmCollectionService; import com.ruoyi.alarm.vo.AlarmPointLedgerVo; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @Api(tags = "æ¥è¦ç¹ä½å°è´¦ç®¡ç") @RestController @AllArgsConstructor @RequestMapping("/alarm/point/ledger") public class AlarmPointLedgerController extends BaseController { private IAlarmCollectionService alarmCollectionService; @ApiOperation("æ¥è¦ç¹ä½å°è´¦å表") @GetMapping("/list") public AjaxResult getPointLedgerList(Page page, AlarmPointDto dto) { IPage<AlarmPointLedgerVo> result = alarmCollectionService.getPointLedgerList(page, dto); return AjaxResult.success(result); } @ApiOperation("æ°å¢æ¥è¦ç¹ä½") @Log(title = "æ¥è¦ç¹ä½", businessType = BusinessType.INSERT) @PostMapping public AjaxResult addPoint(@Validated @RequestBody AlarmPointDto dto) { return toAjax(alarmCollectionService.addPoint(dto)); } @ApiOperation("ä¿®æ¹æ¥è¦ç¹ä½") @Log(title = "æ¥è¦ç¹ä½", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult updatePoint(@Validated @RequestBody AlarmPointDto dto) { return toAjax(alarmCollectionService.updatePoint(dto)); } @ApiOperation("å 餿¥è¦ç¹ä½") @Log(title = "æ¥è¦ç¹ä½", businessType = BusinessType.DELETE) @DeleteMapping("/{pointId}") public AjaxResult deletePoint(@PathVariable Long pointId) { return toAjax(alarmCollectionService.deletePoint(pointId)); } @ApiOperation("ä¿®æ¹ç¹ä½ç¶æ") @Log(title = "æ¥è¦ç¹ä½", businessType = BusinessType.UPDATE) @PutMapping("/changeStatus") public AjaxResult changePointStatus(@RequestParam Long pointId, @RequestParam Integer status) { return toAjax(alarmCollectionService.changePointStatus(pointId, status)); } @ApiOperation("导åºå°è´¦æ°æ®") @GetMapping("/export") public AjaxResult exportPointLedger(AlarmPointDto dto) { return AjaxResult.success("导åºåè½å¾ å®ç°"); } } src/main/java/com/ruoyi/alarm/dto/AlarmCollectionInterfaceDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.ruoyi.alarm.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @Data public class AlarmCollectionInterfaceDto { @ApiModelProperty(value = "æ¥å£ID") private Long interfaceId; @ApiModelProperty(value = "æ¥å£åç§°") @NotBlank(message = "æ¥å£åç§°ä¸è½ä¸ºç©º") private String interfaceName; @ApiModelProperty(value = "æ¥å£ç±»å") @NotBlank(message = "æ¥å£ç±»åä¸è½ä¸ºç©º") private String interfaceType; @ApiModelProperty(value = "æå¡å¨å°å") @NotBlank(message = "æå¡å¨å°åä¸è½ä¸ºç©º") private String serverAddress; @ApiModelProperty(value = "ééé¢ç") @NotBlank(message = "ééé¢çä¸è½ä¸ºç©º") private String collectFreq; @ApiModelProperty(value = "è¿æ¥ç¶æ") private String connectStatus; } src/main/java/com/ruoyi/alarm/dto/AlarmNuisanceStrategyDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.ruoyi.alarm.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Data public class AlarmNuisanceStrategyDto { @ApiModelProperty(value = "çç¥ID") private Long strategyId; @ApiModelProperty(value = "çç¥åç§°") @NotBlank(message = "çç¥åç§°ä¸è½ä¸ºç©º") private String strategyName; @ApiModelProperty(value = "çç¥ç±»å") @NotBlank(message = "çç¥ç±»åä¸è½ä¸ºç©º") private String strategyType; @ApiModelProperty(value = "çç¥è¯´æ") @NotBlank(message = "çç¥è¯´æä¸è½ä¸ºç©º") private String description; @ApiModelProperty(value = "è§åé ç½®JSON") private String ruleConfig; @ApiModelProperty(value = "ç¶æ(1å¯ç¨/0åç¨)") @NotNull(message = "ç¶æä¸è½ä¸ºç©º") private Integer status; } src/main/java/com/ruoyi/alarm/dto/AlarmPointDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.ruoyi.alarm.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Data public class AlarmPointDto { @ApiModelProperty(value = "ç¹ä½ID") private Long pointId; @ApiModelProperty(value = "ç¹ä½ç¼ç ") @NotBlank(message = "ç¹ä½ç¼ç ä¸è½ä¸ºç©º") private String pointCode; @ApiModelProperty(value = "ç¹ä½åç§°") @NotBlank(message = "ç¹ä½åç§°ä¸è½ä¸ºç©º") private String pointName; @ApiModelProperty(value = "设å¤ç±»å") @NotBlank(message = "设å¤ç±»åä¸è½ä¸ºç©º") private String deviceType; @ApiModelProperty(value = "æ¥è¦çº§å«") @NotBlank(message = "æ¥è¦çº§å«ä¸è½ä¸ºç©º") private String alarmLevel; @ApiModelProperty(value = "æ¥è¦éå¼") @NotBlank(message = "æ¥è¦éå¼ä¸è½ä¸ºç©º") private String thresholdValue; @ApiModelProperty(value = "æå±åºå") private String area; @ApiModelProperty(value = "ç¶æ(1å¯ç¨/0åç¨)") @NotNull(message = "ç¶æä¸è½ä¸ºç©º") private Integer status; } src/main/java/com/ruoyi/alarm/dto/AlarmRemoveApprovalDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.alarm.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Data public class AlarmRemoveApprovalDto { @ApiModelProperty(value = "ç¹ä½ID") @NotNull(message = "ç¹ä½IDä¸è½ä¸ºç©º") private Long pointId; @ApiModelProperty(value = "åé¤åå ") @NotBlank(message = "åé¤åå ä¸è½ä¸ºç©º") private String removeReason; @ApiModelProperty(value = "详ç»è¯´æ") @NotBlank(message = "详ç»è¯´æä¸è½ä¸ºç©º") private String description; } src/main/java/com/ruoyi/alarm/mapper/AlarmCollectionInterfaceMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.alarm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.alarm.pojo.AlarmCollectionInterface; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AlarmCollectionInterfaceMapper extends BaseMapper<AlarmCollectionInterface> { } src/main/java/com/ruoyi/alarm/mapper/AlarmNuisanceStrategyMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.alarm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.alarm.pojo.AlarmNuisanceStrategy; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AlarmNuisanceStrategyMapper extends BaseMapper<AlarmNuisanceStrategy> { } src/main/java/com/ruoyi/alarm/mapper/AlarmPointMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.alarm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.alarm.pojo.AlarmPoint; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AlarmPointMapper extends BaseMapper<AlarmPoint> { } src/main/java/com/ruoyi/alarm/mapper/AlarmRealtimeMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.alarm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.alarm.pojo.AlarmRealtime; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AlarmRealtimeMapper extends BaseMapper<AlarmRealtime> { } src/main/java/com/ruoyi/alarm/mapper/AlarmRemoveApprovalMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.alarm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.alarm.pojo.AlarmRemoveApproval; import org.apache.ibatis.annotations.Mapper; @Mapper public interface AlarmRemoveApprovalMapper extends BaseMapper<AlarmRemoveApproval> { } src/main/java/com/ruoyi/alarm/pojo/AlarmCollectionInterface.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,54 @@ package com.ruoyi.alarm.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("alarm_collection_interface") public class AlarmCollectionInterface implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "æ¥å£ID") @TableId(type = IdType.AUTO) private Long interfaceId; @ApiModelProperty(value = "æ¥å£åç§°") private String interfaceName; @ApiModelProperty(value = "æ¥å£ç±»å") private String interfaceType; @ApiModelProperty(value = "æå¡å¨å°å") private String serverAddress; @ApiModelProperty(value = "ééé¢ç") private String collectFreq; @ApiModelProperty(value = "è¿æ¥ç¶æ") private String connectStatus; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Long createUser; @ApiModelProperty(value = "æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/alarm/pojo/AlarmNuisanceStrategy.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ package com.ruoyi.alarm.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("alarm_nuisance_strategy") public class AlarmNuisanceStrategy implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "çç¥ID") @TableId(type = IdType.AUTO) private Long strategyId; @ApiModelProperty(value = "çç¥åç§°") private String strategyName; @ApiModelProperty(value = "çç¥ç±»å") private String strategyType; @ApiModelProperty(value = "çç¥è¯´æ") private String description; @ApiModelProperty(value = "è§åé ç½®JSON") private String ruleConfig; @ApiModelProperty(value = "å·²è¿æ»¤æ°") private Integer filteredCount; @ApiModelProperty(value = "ç¶æ") private Integer status; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Long createUser; @ApiModelProperty(value = "æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/alarm/pojo/AlarmPoint.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,60 @@ package com.ruoyi.alarm.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("alarm_point") public class AlarmPoint implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "ç¹ä½ID") @TableId(type = IdType.AUTO) private Long pointId; @ApiModelProperty(value = "ç¹ä½ç¼ç ") private String pointCode; @ApiModelProperty(value = "ç¹ä½åç§°") private String pointName; @ApiModelProperty(value = "设å¤ç±»å") private String deviceType; @ApiModelProperty(value = "æ¥è¦çº§å«") private String alarmLevel; @ApiModelProperty(value = "æ¥è¦éå¼") private String thresholdValue; @ApiModelProperty(value = "æå±åºå") private String area; @ApiModelProperty(value = "ç¶æ(1å¯ç¨/0åç¨)") private Integer status; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Long createUser; @ApiModelProperty(value = "æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/alarm/pojo/AlarmRealtime.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,60 @@ package com.ruoyi.alarm.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("alarm_realtime") public class AlarmRealtime implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "æ¥è¦ID") @TableId(type = IdType.AUTO) private Long alarmId; @ApiModelProperty(value = "ç¹ä½ID") private Long pointId; @ApiModelProperty(value = "æ¥è¦æ¶é´") private LocalDateTime alarmTime; @ApiModelProperty(value = "æ¥è¦çº§å«") private String alarmLevel; @ApiModelProperty(value = "æ¥è¦ç±»å") private String alarmType; @ApiModelProperty(value = "æ¥è¦å¼") private String alarmValue; @ApiModelProperty(value = "éå¼") private String thresholdValue; @ApiModelProperty(value = "ç¶æ") private String status; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Long createUser; @ApiModelProperty(value = "æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/alarm/pojo/AlarmRemoveApproval.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,66 @@ package com.ruoyi.alarm.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("alarm_remove_approval") public class AlarmRemoveApproval implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主é®") @TableId(type = IdType.AUTO) private Long approvalId; @ApiModelProperty(value = "ç³è¯·ç¼å·") private String applyNo; @ApiModelProperty(value = "ç¹ä½ID") private Long pointId; @ApiModelProperty(value = "åé¤åå ") private String removeReason; @ApiModelProperty(value = "详ç»è¯´æ") private String description; @ApiModelProperty(value = "ç³è¯·äºº") private String applicant; @ApiModelProperty(value = "ç³è¯·æ¶é´") private LocalDateTime applyTime; @ApiModelProperty(value = "审æ¹ç¶æ") private String status; @ApiModelProperty(value = "审æ¹äºº") private String approver; @ApiModelProperty(value = "å®¡æ¹æ¶é´") private LocalDateTime approveTime; @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "åå»ºç¨æ·") @TableField(fill = FieldFill.INSERT) private Long createUser; @ApiModelProperty(value = "æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/alarm/service/IAlarmAnalysisService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.alarm.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.alarm.vo.AlarmAnalysisVo; import com.ruoyi.alarm.vo.AlarmFaultDiagnosisVo; import com.ruoyi.alarm.vo.AlarmRealtimeVo; import com.ruoyi.alarm.vo.AlarmTrendVo; import com.ruoyi.alarm.vo.AlarmTypeDistributionVo; import java.util.List; import java.util.Map; public interface IAlarmAnalysisService { Map<String, Object> getRealtimeStats(); IPage<AlarmRealtimeVo> getRealtimeList(Page page); int confirmAlarm(Long alarmId); AlarmAnalysisVo analyzeAlarm(Long alarmId); AlarmTrendVo getTrendData(String startDate, String endDate); List<AlarmTypeDistributionVo> getTypeDistribution(); List<AlarmFaultDiagnosisVo> getFaultList(); } src/main/java/com/ruoyi/alarm/service/IAlarmCollectionService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package com.ruoyi.alarm.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.alarm.dto.AlarmCollectionInterfaceDto; import com.ruoyi.alarm.dto.AlarmPointDto; import com.ruoyi.alarm.vo.AlarmCollectionInterfaceVo; import com.ruoyi.alarm.vo.AlarmPointLedgerVo; import com.ruoyi.alarm.vo.AlarmStatisticsVo; import java.util.List; public interface IAlarmCollectionService { AlarmStatisticsVo getStatistics(); IPage<AlarmPointLedgerVo> getPointLedgerList(Page page, AlarmPointDto dto); int addPoint(AlarmPointDto dto); int updatePoint(AlarmPointDto dto); int deletePoint(Long pointId); int changePointStatus(Long pointId, Integer status); List<AlarmPointLedgerVo> getPointOptions(); List<AlarmCollectionInterfaceVo> getInterfaceList(); int addOrUpdateInterface(AlarmCollectionInterfaceDto dto); int deleteInterface(Long interfaceId); int startInterface(Long interfaceId); int stopInterface(Long interfaceId); } src/main/java/com/ruoyi/alarm/service/IAlarmOptimizationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package com.ruoyi.alarm.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.alarm.dto.AlarmNuisanceStrategyDto; import com.ruoyi.alarm.dto.AlarmRemoveApprovalDto; import com.ruoyi.alarm.vo.*; import java.util.List; public interface IAlarmOptimizationService { AlarmOptimizationStatisticsVo getStatistics(); List<AlarmNuisanceStrategyVo> getStrategyList(); int addStrategy(AlarmNuisanceStrategyDto dto); int updateStrategy(AlarmNuisanceStrategyDto dto); int deleteStrategy(Long strategyId); int changeStrategyStatus(Long strategyId, Integer status); AlarmCompareVo getCompareData(); List<AlarmHighFreqPointVo> getHighFreqList(Integer limit); IPage<AlarmRemoveApprovalVo> getApprovalList(Page page, String status); int submitApproval(AlarmRemoveApprovalDto dto); int approveApproval(String applyNo); int rejectApproval(String applyNo); } src/main/java/com/ruoyi/alarm/service/impl/AlarmAnalysisServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,171 @@ package com.ruoyi.alarm.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.alarm.mapper.AlarmPointMapper; import com.ruoyi.alarm.mapper.AlarmRealtimeMapper; import com.ruoyi.alarm.pojo.AlarmPoint; import com.ruoyi.alarm.pojo.AlarmRealtime; import com.ruoyi.alarm.service.IAlarmAnalysisService; import com.ruoyi.alarm.vo.*; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.time.format.DateTimeFormatter; import java.util.*; @Service @AllArgsConstructor public class AlarmAnalysisServiceImpl extends ServiceImpl<AlarmRealtimeMapper, AlarmRealtime> implements IAlarmAnalysisService { private AlarmRealtimeMapper alarmRealtimeMapper; private AlarmPointMapper alarmPointMapper; @Override public Map<String, Object> getRealtimeStats() { Map<String, Object> result = new HashMap<>(); LambdaQueryWrapper<AlarmRealtime> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AlarmRealtime::getStatus, "æªç¡®è®¤"); List<AlarmRealtime> alarms = alarmRealtimeMapper.selectList(wrapper); int urgent = 0, important = 0, normal = 0; for (AlarmRealtime alarm : alarms) { if ("ç´§æ¥".equals(alarm.getAlarmLevel())) { urgent++; } else if ("éè¦".equals(alarm.getAlarmLevel())) { important++; } else { normal++; } } result.put("urgent", urgent); result.put("important", important); result.put("normal", normal); result.put("total", alarms.size()); return result; } @Override public IPage<AlarmRealtimeVo> getRealtimeList(Page page) { LambdaQueryWrapper<AlarmRealtime> wrapper = new LambdaQueryWrapper<>(); wrapper.orderByDesc(AlarmRealtime::getAlarmTime); IPage<AlarmRealtime> alarmPage = alarmRealtimeMapper.selectPage(page, wrapper); return alarmPage.convert(alarm -> { AlarmRealtimeVo vo = new AlarmRealtimeVo(); vo.setAlarmId(alarm.getAlarmId()); vo.setAlarmTime(alarm.getAlarmTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setAlarmLevel(alarm.getAlarmLevel()); vo.setAlarmType(alarm.getAlarmType()); vo.setAlarmValue(alarm.getAlarmValue()); vo.setThresholdValue(alarm.getThresholdValue()); vo.setStatus(alarm.getStatus()); AlarmPoint point = alarmPointMapper.selectById(alarm.getPointId()); if (point != null) { vo.setPointName(point.getPointName()); vo.setArea(point.getArea()); } return vo; }); } @Override public int confirmAlarm(Long alarmId) { AlarmRealtime alarm = new AlarmRealtime(); alarm.setAlarmId(alarmId); alarm.setStatus("已确认"); return alarmRealtimeMapper.updateById(alarm); } @Override public AlarmAnalysisVo analyzeAlarm(Long alarmId) { AlarmRealtime alarm = alarmRealtimeMapper.selectById(alarmId); AlarmAnalysisVo vo = new AlarmAnalysisVo(); vo.setFaultType("设å¤è¿è¡å¼å¸¸"); vo.setFaultReason("æ ¹æ®å岿°æ®åæï¼è¯¥ç¹ä½é¢ç¹è§¦åæ¥è¦ï¼å¯è½åå¨ä¼ æå¨æ éæå·¥èºåæ°è®¾ç½®ä¸åç"); List<AlarmStepVo> steps = new ArrayList<>(); AlarmStepVo step1 = new AlarmStepVo(); step1.setTitle("ç°åºæ£æ¥"); step1.setDesc("æ´¾é£æä½äººåå°ç°åºæ£æ¥è®¾å¤è¿è¡ç¶æ"); steps.add(step1); AlarmStepVo step2 = new AlarmStepVo(); step2.setTitle("åæ°è°æ´"); step2.setDesc("æ ¹æ®å·¥èºè¦æ±è°æ´æ¥è¦éå¼è®¾ç½®"); steps.add(step2); AlarmStepVo step3 = new AlarmStepVo(); step3.setTitle("设å¤ç»´æ¤"); step3.setDesc("å¦ç¡®è®¤è®¾å¤æ éï¼å®æç»´ä¿®ææ´æ¢"); steps.add(step3); AlarmStepVo step4 = new AlarmStepVo(); step4.setTitle("ææéªè¯"); step4.setDesc("è°æ´åæç»çæµï¼éªè¯æ¥è¦æ¯å¦æ¶é¤"); steps.add(step4); vo.setSteps(steps); return vo; } @Override public AlarmTrendVo getTrendData(String startDate, String endDate) { AlarmTrendVo vo = new AlarmTrendVo(); vo.setDates(Arrays.asList("å¨ä¸", "å¨äº", "å¨ä¸", "å¨å", "å¨äº", "å¨å ", "卿¥")); vo.setUrgent(Arrays.asList(3, 5, 2, 4, 6, 2, 3)); vo.setImportant(Arrays.asList(8, 12, 10, 15, 18, 9, 11)); vo.setNormal(Arrays.asList(15, 20, 18, 25, 30, 16, 19)); return vo; } @Override public List<AlarmTypeDistributionVo> getTypeDistribution() { List<AlarmTypeDistributionVo> list = new ArrayList<>(); AlarmTypeDistributionVo vo1 = new AlarmTypeDistributionVo(); vo1.setValue(35); vo1.setName("æ¸©åº¦è¶ é"); list.add(vo1); AlarmTypeDistributionVo vo2 = new AlarmTypeDistributionVo(); vo2.setValue(28); vo2.setName("ååå¼å¸¸"); list.add(vo2); AlarmTypeDistributionVo vo3 = new AlarmTypeDistributionVo(); vo3.setValue(20); vo3.setName("æµéå¼å¸¸"); list.add(vo3); AlarmTypeDistributionVo vo4 = new AlarmTypeDistributionVo(); vo4.setValue(15); vo4.setName("æ¶²ä½è¶ é"); list.add(vo4); AlarmTypeDistributionVo vo5 = new AlarmTypeDistributionVo(); vo5.setValue(12); vo5.setName("è®¾å¤æ é"); list.add(vo5); return list; } @Override public List<AlarmFaultDiagnosisVo> getFaultList() { List<AlarmFaultDiagnosisVo> list = new ArrayList<>(); AlarmFaultDiagnosisVo vo = new AlarmFaultDiagnosisVo(); vo.setFaultType("ä¼ æå¨æ é"); vo.setAlarmPoint("ååºéæ¸©åº¦çæµç¹"); vo.setOccurrenceCount(12); vo.setFaultReason("ä¼ æå¨èåï¼æµé弿¼ç§»"); vo.setSolution("æ´æ¢æ¸©åº¦ä¼ æå¨ï¼éæ°æ ¡å"); list.add(vo); return list; } } src/main/java/com/ruoyi/alarm/service/impl/AlarmCollectionServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,172 @@ package com.ruoyi.alarm.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.alarm.dto.AlarmCollectionInterfaceDto; import com.ruoyi.alarm.dto.AlarmPointDto; import com.ruoyi.alarm.mapper.AlarmCollectionInterfaceMapper; import com.ruoyi.alarm.mapper.AlarmPointMapper; import com.ruoyi.alarm.pojo.AlarmCollectionInterface; import com.ruoyi.alarm.pojo.AlarmPoint; import com.ruoyi.alarm.service.IAlarmCollectionService; import com.ruoyi.alarm.vo.AlarmCollectionInterfaceVo; import com.ruoyi.alarm.vo.AlarmPointLedgerVo; import com.ruoyi.alarm.vo.AlarmStatisticsVo; import com.ruoyi.common.utils.bean.BeanUtils; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Service @AllArgsConstructor public class AlarmCollectionServiceImpl extends ServiceImpl<AlarmPointMapper, AlarmPoint> implements IAlarmCollectionService { private AlarmPointMapper alarmPointMapper; private AlarmCollectionInterfaceMapper alarmCollectionInterfaceMapper; @Override public AlarmStatisticsVo getStatistics() { AlarmStatisticsVo vo = new AlarmStatisticsVo(); LambdaQueryWrapper<AlarmPoint> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AlarmPoint::getStatus, 1); Long totalPoints = alarmPointMapper.selectCount(wrapper); vo.setTotalPoints(totalPoints.intValue()); vo.setConnectedDevices((int) (totalPoints * 0.7)); vo.setTodayDataVolume(245.6); vo.setParseSuccessRate(99.8); return vo; } @Override public IPage<AlarmPointLedgerVo> getPointLedgerList(Page page, AlarmPointDto dto) { LambdaQueryWrapper<AlarmPoint> wrapper = new LambdaQueryWrapper<>(); if (dto.getPointName() != null && !dto.getPointName().isEmpty()) { wrapper.like(AlarmPoint::getPointName, dto.getPointName()); } if (dto.getDeviceType() != null && !dto.getDeviceType().isEmpty()) { wrapper.eq(AlarmPoint::getDeviceType, dto.getDeviceType()); } wrapper.orderByDesc(AlarmPoint::getCreateTime); IPage<AlarmPoint> pointPage = alarmPointMapper.selectPage(page, wrapper); return pointPage.convert(point -> { AlarmPointLedgerVo vo = new AlarmPointLedgerVo(); BeanUtils.copyProperties(point, vo); return vo; }); } @Override public int addPoint(AlarmPointDto dto) { AlarmPoint point = new AlarmPoint(); BeanUtils.copyProperties(dto, point); point.setCreateTime(LocalDateTime.now()); point.setUpdateTime(LocalDateTime.now()); return alarmPointMapper.insert(point); } @Override public int updatePoint(AlarmPointDto dto) { AlarmPoint point = new AlarmPoint(); BeanUtils.copyProperties(dto, point); point.setUpdateTime(LocalDateTime.now()); return alarmPointMapper.updateById(point); } @Override public int deletePoint(Long pointId) { return alarmPointMapper.deleteById(pointId); } @Override public int changePointStatus(Long pointId, Integer status) { AlarmPoint point = new AlarmPoint(); point.setPointId(pointId); point.setStatus(status); point.setUpdateTime(LocalDateTime.now()); return alarmPointMapper.updateById(point); } @Override public List<AlarmPointLedgerVo> getPointOptions() { LambdaQueryWrapper<AlarmPoint> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AlarmPoint::getStatus, 1); wrapper.select(AlarmPoint::getPointId, AlarmPoint::getPointName); List<AlarmPoint> points = alarmPointMapper.selectList(wrapper); return points.stream().map(point -> { AlarmPointLedgerVo vo = new AlarmPointLedgerVo(); vo.setPointId(point.getPointId()); vo.setPointName(point.getPointName()); return vo; }).collect(java.util.stream.Collectors.toList()); } @Override public List<AlarmCollectionInterfaceVo> getInterfaceList() { LambdaQueryWrapper<AlarmCollectionInterface> wrapper = new LambdaQueryWrapper<>(); wrapper.orderByDesc(AlarmCollectionInterface::getCreateTime); List<AlarmCollectionInterface> interfaces = alarmCollectionInterfaceMapper.selectList(wrapper); if (interfaces.isEmpty()) { List<AlarmCollectionInterfaceVo> mockData = new ArrayList<>(); AlarmCollectionInterfaceVo vo = new AlarmCollectionInterfaceVo(); vo.setInterfaceId(1L); vo.setInterfaceName("OPC UAæ°æ®éé"); vo.setInterfaceType("OPC UA"); vo.setServerAddress("opc.tcp://192.168.1.100:4840"); vo.setCollectFreq("1ç§"); vo.setConnectStatus("connected"); mockData.add(vo); return mockData; } return interfaces.stream().map(iface -> { AlarmCollectionInterfaceVo vo = new AlarmCollectionInterfaceVo(); BeanUtils.copyProperties(iface, vo); return vo; }).collect(java.util.stream.Collectors.toList()); } @Override public int startInterface(Long interfaceId) { AlarmCollectionInterface iface = new AlarmCollectionInterface(); iface.setInterfaceId(interfaceId); iface.setConnectStatus("connected"); iface.setUpdateTime(LocalDateTime.now()); return alarmCollectionInterfaceMapper.updateById(iface); } @Override public int stopInterface(Long interfaceId) { AlarmCollectionInterface iface = new AlarmCollectionInterface(); iface.setInterfaceId(interfaceId); iface.setConnectStatus("disconnected"); iface.setUpdateTime(LocalDateTime.now()); return alarmCollectionInterfaceMapper.updateById(iface); } @Override public int addOrUpdateInterface(AlarmCollectionInterfaceDto dto) { AlarmCollectionInterface iface = new AlarmCollectionInterface(); BeanUtils.copyProperties(dto, iface); iface.setUpdateTime(LocalDateTime.now()); if (dto.getInterfaceId() == null) { // æ°å¢ iface.setCreateTime(LocalDateTime.now()); return alarmCollectionInterfaceMapper.insert(iface); } else { // æ´æ° return alarmCollectionInterfaceMapper.updateById(iface); } } @Override public int deleteInterface(Long interfaceId) { return alarmCollectionInterfaceMapper.deleteById(interfaceId); } } src/main/java/com/ruoyi/alarm/service/impl/AlarmOptimizationServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,198 @@ package com.ruoyi.alarm.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.alarm.dto.AlarmNuisanceStrategyDto; import com.ruoyi.alarm.dto.AlarmRemoveApprovalDto; import com.ruoyi.alarm.mapper.AlarmNuisanceStrategyMapper; import com.ruoyi.alarm.mapper.AlarmPointMapper; import com.ruoyi.alarm.mapper.AlarmRemoveApprovalMapper; import com.ruoyi.alarm.pojo.AlarmNuisanceStrategy; import com.ruoyi.alarm.pojo.AlarmPoint; import com.ruoyi.alarm.pojo.AlarmRemoveApproval; import com.ruoyi.alarm.service.IAlarmOptimizationService; import com.ruoyi.alarm.vo.*; import com.ruoyi.common.utils.bean.BeanUtils; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; @Service @AllArgsConstructor public class AlarmOptimizationServiceImpl extends ServiceImpl<AlarmNuisanceStrategyMapper, AlarmNuisanceStrategy> implements IAlarmOptimizationService { private AlarmNuisanceStrategyMapper alarmNuisanceStrategyMapper; private AlarmRemoveApprovalMapper alarmRemoveApprovalMapper; private AlarmPointMapper alarmPointMapper; @Override public AlarmOptimizationStatisticsVo getStatistics() { AlarmOptimizationStatisticsVo vo = new AlarmOptimizationStatisticsVo(); vo.setFilteredCount(1568); vo.setValidRate(85.6); vo.setResponseTime(12); vo.setScore(92); return vo; } @Override public List<AlarmNuisanceStrategyVo> getStrategyList() { LambdaQueryWrapper<AlarmNuisanceStrategy> wrapper = new LambdaQueryWrapper<>(); wrapper.orderByDesc(AlarmNuisanceStrategy::getCreateTime); List<AlarmNuisanceStrategy> strategies = alarmNuisanceStrategyMapper.selectList(wrapper); return strategies.stream().map(strategy -> { AlarmNuisanceStrategyVo vo = new AlarmNuisanceStrategyVo(); vo.setStrategyId(strategy.getStrategyId()); vo.setStrategyName(strategy.getStrategyName()); vo.setStrategyType(strategy.getStrategyType()); vo.setDescription(strategy.getDescription()); vo.setFilteredCount(strategy.getFilteredCount()); vo.setStatus(strategy.getStatus()); return vo; }).collect(java.util.stream.Collectors.toList()); } @Override public int addStrategy(AlarmNuisanceStrategyDto dto) { AlarmNuisanceStrategy strategy = new AlarmNuisanceStrategy(); BeanUtils.copyProperties(dto, strategy); strategy.setFilteredCount(0); strategy.setCreateTime(LocalDateTime.now()); strategy.setUpdateTime(LocalDateTime.now()); return alarmNuisanceStrategyMapper.insert(strategy); } @Override public int updateStrategy(AlarmNuisanceStrategyDto dto) { AlarmNuisanceStrategy strategy = new AlarmNuisanceStrategy(); BeanUtils.copyProperties(dto, strategy); strategy.setUpdateTime(LocalDateTime.now()); return alarmNuisanceStrategyMapper.updateById(strategy); } @Override public int deleteStrategy(Long strategyId) { return alarmNuisanceStrategyMapper.deleteById(strategyId); } @Override public int changeStrategyStatus(Long strategyId, Integer status) { AlarmNuisanceStrategy strategy = new AlarmNuisanceStrategy(); strategy.setStrategyId(strategyId); strategy.setStatus(status); strategy.setUpdateTime(LocalDateTime.now()); return alarmNuisanceStrategyMapper.updateById(strategy); } @Override public AlarmCompareVo getCompareData() { AlarmCompareVo vo = new AlarmCompareVo(); vo.setCategories(Arrays.asList("å¨ä¸", "å¨äº", "å¨ä¸", "å¨å", "å¨äº", "å¨å ", "卿¥")); vo.setBefore(Arrays.asList(120, 132, 101, 134, 90, 230, 210)); vo.setAfter(Arrays.asList(45, 52, 38, 48, 35, 78, 65)); return vo; } @Override public List<AlarmHighFreqPointVo> getHighFreqList(Integer limit) { List<AlarmHighFreqPointVo> list = new ArrayList<>(); AlarmHighFreqPointVo vo = new AlarmHighFreqPointVo(); vo.setPointName("ååºéæ¸©åº¦çæµç¹"); vo.setAlarmCount(156); vo.setTrend("ä¸é"); list.add(vo); return list; } @Override public IPage<AlarmRemoveApprovalVo> getApprovalList(Page page, String status) { LambdaQueryWrapper<AlarmRemoveApproval> wrapper = new LambdaQueryWrapper<>(); if (status != null && !status.isEmpty()) { wrapper.eq(AlarmRemoveApproval::getStatus, status); } wrapper.orderByDesc(AlarmRemoveApproval::getApplyTime); IPage<AlarmRemoveApproval> approvalPage = alarmRemoveApprovalMapper.selectPage(page, wrapper); return approvalPage.convert(approval -> { AlarmRemoveApprovalVo vo = new AlarmRemoveApprovalVo(); vo.setApplyNo(approval.getApplyNo()); vo.setRemoveReason(approval.getRemoveReason()); vo.setApplicant(approval.getApplicant()); vo.setApplyTime(approval.getApplyTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setStatus(approval.getStatus()); AlarmPoint point = alarmPointMapper.selectById(approval.getPointId()); if (point != null) { vo.setPointName(point.getPointName()); } return vo; }); } @Override public int submitApproval(AlarmRemoveApprovalDto dto) { AlarmRemoveApproval approval = new AlarmRemoveApproval(); BeanUtils.copyProperties(dto, approval); approval.setApplyNo("AP" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + String.format("%03d", new Random().nextInt(1000))); approval.setApplicant("å½åç¨æ·"); approval.setApplyTime(LocalDateTime.now()); approval.setStatus("pending"); approval.setCreateTime(LocalDateTime.now()); approval.setUpdateTime(LocalDateTime.now()); return alarmRemoveApprovalMapper.insert(approval); } @Override public int approveApproval(String applyNo) { AlarmRemoveApproval approval = new AlarmRemoveApproval(); LambdaQueryWrapper<AlarmRemoveApproval> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AlarmRemoveApproval::getApplyNo, applyNo); AlarmRemoveApproval existing = alarmRemoveApprovalMapper.selectOne(wrapper); if (existing != null) { approval.setApprovalId(existing.getApprovalId()); approval.setStatus("approved"); approval.setApprover("审æ¹äºº"); approval.setApproveTime(LocalDateTime.now()); approval.setUpdateTime(LocalDateTime.now()); int result = alarmRemoveApprovalMapper.updateById(approval); // 审æ¹éè¿åï¼å°å¯¹åºç¹ä½çç¶ææ¹ä¸ºåç¨ AlarmPoint point = new AlarmPoint(); point.setPointId(existing.getPointId()); point.setStatus(0); // 0表示åç¨ point.setUpdateTime(LocalDateTime.now()); alarmPointMapper.updateById(point); return result; } return 0; } @Override public int rejectApproval(String applyNo) { AlarmRemoveApproval approval = new AlarmRemoveApproval(); LambdaQueryWrapper<AlarmRemoveApproval> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AlarmRemoveApproval::getApplyNo, applyNo); AlarmRemoveApproval existing = alarmRemoveApprovalMapper.selectOne(wrapper); if (existing != null) { approval.setApprovalId(existing.getApprovalId()); approval.setStatus("rejected"); approval.setApprover("审æ¹äºº"); approval.setApproveTime(LocalDateTime.now()); approval.setUpdateTime(LocalDateTime.now()); return alarmRemoveApprovalMapper.updateById(approval); } return 0; } } src/main/java/com/ruoyi/alarm/vo/AlarmAnalysisVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class AlarmAnalysisVo { @ApiModelProperty(value = "æ éç±»å") private String faultType; @ApiModelProperty(value = "æ éåå ") private String faultReason; @ApiModelProperty(value = "å¤çæ¥éª¤") private List<AlarmStepVo> steps; } src/main/java/com/ruoyi/alarm/vo/AlarmCollectionInterfaceVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmCollectionInterfaceVo { @ApiModelProperty(value = "æ¥å£ID") private Long interfaceId; @ApiModelProperty(value = "æ¥å£åç§°") private String interfaceName; @ApiModelProperty(value = "æ¥å£ç±»å") private String interfaceType; @ApiModelProperty(value = "æå¡å¨å°å") private String serverAddress; @ApiModelProperty(value = "ééé¢ç") private String collectFreq; @ApiModelProperty(value = "è¿æ¥ç¶æ") private String connectStatus; } src/main/java/com/ruoyi/alarm/vo/AlarmCompareVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class AlarmCompareVo { @ApiModelProperty(value = "æ¥æå表") private List<String> categories; @ApiModelProperty(value = "æ²»çåæ°æ®") private List<Integer> before; @ApiModelProperty(value = "æ²»çåæ°æ®") private List<Integer> after; } src/main/java/com/ruoyi/alarm/vo/AlarmFaultDiagnosisVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmFaultDiagnosisVo { @ApiModelProperty(value = "æ éç±»å") private String faultType; @ApiModelProperty(value = "å ³èæ¥è¦ç¹ä½") private String alarmPoint; @ApiModelProperty(value = "åçæ¬¡æ°") private Integer occurrenceCount; @ApiModelProperty(value = "å¯è½åå ") private String faultReason; @ApiModelProperty(value = "å¤ç½®å»ºè®®") private String solution; } src/main/java/com/ruoyi/alarm/vo/AlarmHighFreqPointVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmHighFreqPointVo { @ApiModelProperty(value = "ç¹ä½åç§°") private String pointName; @ApiModelProperty(value = "æ¥è¦æ¬¡æ°") private Integer alarmCount; @ApiModelProperty(value = "è¶å¿") private String trend; } src/main/java/com/ruoyi/alarm/vo/AlarmNuisanceStrategyVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmNuisanceStrategyVo { @ApiModelProperty(value = "çç¥ID") private Long strategyId; @ApiModelProperty(value = "çç¥åç§°") private String strategyName; @ApiModelProperty(value = "çç¥ç±»å") private String strategyType; @ApiModelProperty(value = "çç¥è¯´æ") private String description; @ApiModelProperty(value = "å·²è¿æ»¤æ¥è¦æ°") private Integer filteredCount; @ApiModelProperty(value = "ç¶æ(1å¯ç¨/0åç¨)") private Integer status; } src/main/java/com/ruoyi/alarm/vo/AlarmOptimizationStatisticsVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmOptimizationStatisticsVo { @ApiModelProperty(value = "å·²è¿æ»¤æ ææ¥è¦æ°") private Integer filteredCount; @ApiModelProperty(value = "æææ¥è¦ç(%)") private Double validRate; @ApiModelProperty(value = "å¹³åååºæ¶é´(ç§)") private Integer responseTime; @ApiModelProperty(value = "æ²»çè¯å") private Integer score; } src/main/java/com/ruoyi/alarm/vo/AlarmPointLedgerVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class AlarmPointLedgerVo { @ApiModelProperty(value = "ç¹ä½ID") private Long pointId; @ApiModelProperty(value = "ç¹ä½ç¼ç ") private String pointCode; @ApiModelProperty(value = "ç¹ä½åç§°") private String pointName; @ApiModelProperty(value = "设å¤ç±»å") private String deviceType; @ApiModelProperty(value = "æ¥è¦çº§å«") private String alarmLevel; @ApiModelProperty(value = "æ¥è¦éå¼") private String thresholdValue; @ApiModelProperty(value = "æå±åºå") private String area; @ApiModelProperty(value = "ç¶æ(1å¯ç¨/0åç¨)") private Integer status; } src/main/java/com/ruoyi/alarm/vo/AlarmRealtimeVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmRealtimeVo { @ApiModelProperty(value = "æ¥è¦ID") private Long alarmId; @ApiModelProperty(value = "æ¥è¦æ¶é´") private String alarmTime; @ApiModelProperty(value = "æ¥è¦çº§å«") private String alarmLevel; @ApiModelProperty(value = "æ¥è¦ç¹ä½åç§°") private String pointName; @ApiModelProperty(value = "æ¥è¦ç±»å") private String alarmType; @ApiModelProperty(value = "æ¥è¦å¼") private String alarmValue; @ApiModelProperty(value = "æ¥è¦éå¼") private String thresholdValue; @ApiModelProperty(value = "æå±åºå") private String area; @ApiModelProperty(value = "ç¶æ") private String status; } src/main/java/com/ruoyi/alarm/vo/AlarmRemoveApprovalVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmRemoveApprovalVo { @ApiModelProperty(value = "ç³è¯·ç¼å·") private String applyNo; @ApiModelProperty(value = "æ¥è¦ç¹ä½") private String pointName; @ApiModelProperty(value = "åé¤åå ") private String removeReason; @ApiModelProperty(value = "ç³è¯·äºº") private String applicant; @ApiModelProperty(value = "ç³è¯·æ¶é´") private String applyTime; @ApiModelProperty(value = "审æ¹ç¶æ") private String status; } src/main/java/com/ruoyi/alarm/vo/AlarmStatisticsVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmStatisticsVo { @ApiModelProperty(value = "æ¥è¦ç¹ä½æ»æ°") private Integer totalPoints; @ApiModelProperty(value = "å·²è¿æ¥è®¾å¤æ°") private Integer connectedDevices; @ApiModelProperty(value = "仿¥æ°æ®é(䏿¡)") private Double todayDataVolume; @ApiModelProperty(value = "è§£ææåç(%)") private Double parseSuccessRate; } src/main/java/com/ruoyi/alarm/vo/AlarmStepVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmStepVo { @ApiModelProperty(value = "æ¥éª¤æ é¢") private String title; @ApiModelProperty(value = "æ¥éª¤æè¿°") private String desc; } src/main/java/com/ruoyi/alarm/vo/AlarmTrendVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class AlarmTrendVo { @ApiModelProperty(value = "æ¥æå表") private List<String> dates; @ApiModelProperty(value = "ç´§æ¥æ¥è¦æ°") private List<Integer> urgent; @ApiModelProperty(value = "éè¦æ¥è¦æ°") private List<Integer> important; @ApiModelProperty(value = "ä¸è¬æ¥è¦æ°") private List<Integer> normal; } src/main/java/com/ruoyi/alarm/vo/AlarmTypeDistributionVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.alarm.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class AlarmTypeDistributionVo { @ApiModelProperty(value = "æ°é") private Integer value; @ApiModelProperty(value = "ç±»ååç§°") private String name; }