shilin 1 rok pred
rodič
commit
3502ec5b04
100 zmenil súbory, kde vykonal 29078 pridanie a 3167 odobranie
  1. 1 1
      alarm-custom/src/main/resources/application-jn.yml
  2. 10 0
      alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java
  3. 1 1
      alarm-scanner/src/main/resources/application-wt.yml
  4. 4 4
      alarm-service/src/main/java/com/gyee/alarm/controller/AlarmController.java
  5. 1 1
      alarm-service/src/main/java/com/gyee/alarm/init/CacheContext.java
  6. 4 2
      alarm-service/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java
  7. 2 0
      alarm-service/src/main/java/com/gyee/alarm/model/vo/AlarmTag.java
  8. 12 2
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmBtService.java
  9. 10 2
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmCtService.java
  10. 10 2
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmInService.java
  11. 19 5
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmWtService.java
  12. 7 1
      alarm-service/src/main/java/com/gyee/alarm/service/auto/impl/AlarmTsServiceImpl.java
  13. 23 3
      alarm-service/src/main/java/com/gyee/alarm/websocket/WebsocketSchedule.java
  14. 7 7
      alarm-service/src/test/java/com/gyee/AppTest.java
  15. 4 4
      alarm-stat/src/main/java/com/gyee/alarm/config/GeneratorCodeConfig.java
  16. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportAlarmController.java
  17. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportConclusioController.java
  18. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportController.java
  19. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportWtController.java
  20. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyWarnScoreController.java
  21. 29 14
      alarm-stat/src/main/java/com/gyee/alarm/init/CacheContext.java
  22. 21 0
      alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java
  23. 23 0
      alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportAlarmMapper.java
  24. 16 0
      alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportConclusioMapper.java
  25. 32 0
      alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportMapper.java
  26. 67 0
      alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportWtMapper.java
  27. 16 0
      alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyWarnScoreMapper.java
  28. 3 0
      alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmType.java
  29. 68 0
      alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReport.java
  30. 68 0
      alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportAlarm.java
  31. 44 0
      alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportConclusio.java
  32. 77 0
      alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportWt.java
  33. 106 0
      alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyWarnScore.java
  34. 1 1
      alarm-stat/src/main/java/com/gyee/alarm/model/vo/AlarmCustomType.java
  35. 445 0
      alarm-stat/src/main/java/com/gyee/alarm/service/EarlyReportService.java
  36. 149 150
      alarm-stat/src/main/java/com/gyee/alarm/service/FeatureStatService.java
  37. 1 1
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IAlarmTsService.java
  38. 4 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconAlarmInfoService.java
  39. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportAlarmService.java
  40. 16 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportConclusioService.java
  41. 22 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportService.java
  42. 28 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportWtService.java
  43. 16 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyWarnScoreService.java
  44. 11 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/AlarmTsServiceImpl.java
  45. 22 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconAlarmInfoServiceImpl.java
  46. 38 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportAlarmServiceImpl.java
  47. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportConclusioServiceImpl.java
  48. 55 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportServiceImpl.java
  49. 60 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportWtServiceImpl.java
  50. 20 0
      alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyWarnScoreServiceImpl.java
  51. 63 63
      alarm-stat/src/main/java/com/gyee/alarm/task/SaticScheduleTask.java
  52. 6 2
      alarm-stat/src/main/resources/application-jn.yml
  53. 0 2
      alarm-web/src/main/java/com/gyee/alarm/controller/AuthController.java
  54. 20 0
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportAlarmController.java
  55. 20 0
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportConclusioController.java
  56. 20 0
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportController.java
  57. 20 0
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportWtController.java
  58. 20 0
      alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyWarnScoreController.java
  59. 101 101
      alarm-web/src/main/java/com/gyee/alarm/init/CacheContext.java
  60. 2 2
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java
  61. 16 0
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportAlarmMapper.java
  62. 16 0
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportConclusioMapper.java
  63. 16 0
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportMapper.java
  64. 16 0
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportWtMapper.java
  65. 16 0
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyWarnScoreMapper.java
  66. 2 2
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java
  67. 63 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReport.java
  68. 68 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportAlarm.java
  69. 44 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportConclusio.java
  70. 67 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportWt.java
  71. 104 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyWarnScore.java
  72. 0 2
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AjaxResult.java
  73. 0 1
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmCustomTag.java
  74. 1 1
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmCustomType.java
  75. 1 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmSuperTalbeType.java
  76. 13 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmTag.java
  77. 2 2
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmTsVo.java
  78. 2 1
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmTypeValue.java
  79. 4 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmVo.java
  80. 1 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/DeviceTypeValue.java
  81. 1 1
      alarm-web/src/main/java/com/gyee/alarm/model/vo/SLWindpowerVo.java
  82. 8 7
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmHistoryService.java
  83. 10 10
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmReportService.java
  84. 4 4
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmRuleService.java
  85. 0 35
      alarm-web/src/main/java/com/gyee/alarm/service/TokenService.java
  86. 16 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportAlarmService.java
  87. 16 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportConclusioService.java
  88. 16 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportService.java
  89. 16 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportWtService.java
  90. 16 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyWarnScoreService.java
  91. 20 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportAlarmServiceImpl.java
  92. 20 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportConclusioServiceImpl.java
  93. 20 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportServiceImpl.java
  94. 20 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportWtServiceImpl.java
  95. 20 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyWarnScoreServiceImpl.java
  96. 0 2
      alarm-web/src/main/resources/application-jn.yml
  97. 26438 2728
      log/ota.log
  98. BIN
      log/ota.log.2023-08-28.0.gz
  99. BIN
      log/ota.log.2023-09-03.0.gz
  100. 0 0
      log/ota.log.2023-09-05.0.gz

+ 1 - 1
alarm-custom/src/main/resources/application-jn.yml

@@ -168,7 +168,7 @@ frequency:
   #切入切出
   #切入切出
   cutinandout: 1
   cutinandout: 1
 urls:
 urls:
-  alarm-service: http://127.0.0.1:6010
+  alarm-service: http://127.0.0.1:6014
 
 
 task-count: 10
 task-count: 10
 read-count: 10
 read-count: 10

+ 10 - 0
alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java

@@ -138,6 +138,16 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 					}
 					}
 
 
 					switch (alarmType){
 					switch (alarmType){
+						case "in_alarms":
+							if(!saveAlarmTags.isEmpty())
+							{
+								alarmService.saveInTags(saveAlarmTags);
+							}
+							if(!updateAlarmTags.isEmpty())
+							{
+								alarmService.updateInTags(updateAlarmTags);
+							}
+							break;
 						case "wt_alarms":
 						case "wt_alarms":
 							if(!saveAlarmTags.isEmpty())
 							if(!saveAlarmTags.isEmpty())
 							{
 							{

+ 1 - 1
alarm-scanner/src/main/resources/application-wt.yml

@@ -177,7 +177,7 @@ interval: 1
 
 
 #WT("wt_alarms", "设备报警超级表"),
 #WT("wt_alarms", "设备报警超级表"),
 #BT("bt_alarms", "升压站报警超级表"),
 #BT("bt_alarms", "升压站报警超级表"),
-#CT("custom_alarms", "自定义报警超级表");
+#IN("in_alarms", "逆变器报警超级表");
 alarmType: wt_alarms
 alarmType: wt_alarms
 read-rows: 1000
 read-rows: 1000
 
 

+ 4 - 4
alarm-service/src/main/java/com/gyee/alarm/controller/AlarmController.java

@@ -93,22 +93,22 @@ public class AlarmController {
     }
     }
 
 
     @PostMapping("/updateInTags")
     @PostMapping("/updateInTags")
-    public void updateInTags(@RequestBody List<AlarmTag> alarms ) {
+    public void updateInTags(@RequestBody List<AlarmTag> alarms ) throws EncodeException, IOException {
         alarmInService.updateAlarms(alarms);
         alarmInService.updateAlarms(alarms);
     }
     }
 
 
     @PostMapping("/updateWtTags")
     @PostMapping("/updateWtTags")
-    public void updateWtTags(@RequestBody List<AlarmTag> alarms ) {
+    public void updateWtTags(@RequestBody List<AlarmTag> alarms ) throws EncodeException, IOException {
         alarmWtService.updateAlarms(alarms);
         alarmWtService.updateAlarms(alarms);
     }
     }
 
 
     @PostMapping("/updateBtTags")
     @PostMapping("/updateBtTags")
-    public void updateBtTags(@RequestBody List<AlarmTag> alarms ) {
+    public void updateBtTags(@RequestBody List<AlarmTag> alarms ) throws EncodeException, IOException {
         alarmBtService.updateAlarms(alarms);
         alarmBtService.updateAlarms(alarms);
     }
     }
 
 
     @PostMapping("/updateCtTags")
     @PostMapping("/updateCtTags")
-    public void updateCtTags(@RequestBody List<AlarmTag> alarms ) {
+    public void updateCtTags(@RequestBody List<AlarmTag> alarms ) throws EncodeException, IOException {
         alarmCtService.updateAlarms(alarms);
         alarmCtService.updateAlarms(alarms);
     }
     }
 
 

+ 1 - 1
alarm-service/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -474,7 +474,7 @@ public class CacheContext implements CommandLineRunner {
 
 
         });
         });
 
 
-        subwpls = proBasicSubStationService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationId()) && i.getIsAble() == 1).collect(Collectors.toList());
+        subwpls = proBasicSubStationService.list().stream().filter(i ->  i.getIsAble() == 1).collect(Collectors.toList());
         subwpls.stream().forEach(sub -> {
         subwpls.stream().forEach(sub -> {
 
 
             subwpmap.put(sub.getId(),sub);
             subwpmap.put(sub.getId(),sub);

+ 4 - 2
alarm-service/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java

@@ -116,7 +116,9 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
     List<AlarmVo> selectByTbName(@Param("tbName") String tbName,@Param("limit") long limit,@Param("offset") long offset);
     List<AlarmVo> selectByTbName(@Param("tbName") String tbName,@Param("limit") long limit,@Param("offset") long offset);
 
 
 
 
-    @Select("select last_row(*),tbname from #{superTableName} where tbname in( #{tbnames} ) group by tbname")
-    List<AlarmSimpleVo> selectLastRowByTbname(@Param("superTableName") String superTableName, @Param("tbnames") String tbnames);
+//    @Select("select last_row(*),tbname from #{superTableName} where tbname in( #{tbnames} ) group by tbname")
+//List<AlarmSimpleVo> selectLastRowByTbname(@Param("superTableName") String superTableName, @Param("tbnames") String tbnames);
+    @Select("${sql}")
+    List<AlarmSimpleVo> selectLastRowByTbname(@Param("sql") String sql);
 
 
 }
 }

+ 2 - 0
alarm-service/src/main/java/com/gyee/alarm/model/vo/AlarmTag.java

@@ -71,6 +71,8 @@ public class AlarmTag {
      */
      */
     private String deviceType;
     private String deviceType;
 
 
+    private Boolean isClose;
+
     /**
     /**
      * 更新并检测是否触发报警
      * 更新并检测是否触发报警
      */
      */

+ 12 - 2
alarm-service/src/main/java/com/gyee/alarm/service/AlarmBtService.java

@@ -205,6 +205,8 @@ public class AlarmBtService {
                         po.setVal(alarm.getVal().intValue());
                         po.setVal(alarm.getVal().intValue());
                         po.setIsOpen(1);
                         po.setIsOpen(1);
 
 
+
+                        alarm.setRank(vo.getRank());
                         alarm.setDescription(vo.getDescription());
                         alarm.setDescription(vo.getDescription());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setDeviceType(vo.getDevicetype());
                         alarm.setDeviceType(vo.getDevicetype());
@@ -245,7 +247,7 @@ public class AlarmBtService {
     }
     }
 
 
 
 
-    public synchronized void updateAlarms(List<AlarmTag> ls) {
+    public synchronized void updateAlarms(List<AlarmTag> ls) throws EncodeException, IOException {
 
 
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
 
@@ -310,7 +312,7 @@ public class AlarmBtService {
                         po.setDeviceId(vo.getDeviceid());
                         po.setDeviceId(vo.getDeviceid());
                         po.setSubcomponents(vo.getSuffix());
                         po.setSubcomponents(vo.getSuffix());
                         po.setRank(vo.getRank());
                         po.setRank(vo.getRank());
-                        po.setConfirmed(false);
+                        po.setConfirmed(alarm.getConfirmed());
                         po.setUniformCode(vo.getUniformcode());
                         po.setUniformCode(vo.getUniformcode());
                         po.setAlarmType(vo.getAlarmtype());
                         po.setAlarmType(vo.getAlarmtype());
                         po.setDeviceType(vo.getDevicetype());
                         po.setDeviceType(vo.getDevicetype());
@@ -339,6 +341,14 @@ public class AlarmBtService {
                         }
                         }
 
 
                         po.setIsOpen(0);
                         po.setIsOpen(0);
+
+
+                        alarm.setRank(vo.getRank());
+                        alarm.setDescription(vo.getDescription());
+                        alarm.setAlarmType(vo.getAlarmtype());
+                        alarm.setDeviceType(vo.getDevicetype());
+                        alarm.setIsClose(false);
+                        pushData(alarm);
                         valuels.add(po);
                         valuels.add(po);
                     }
                     }
                 }
                 }

+ 10 - 2
alarm-service/src/main/java/com/gyee/alarm/service/AlarmCtService.java

@@ -373,6 +373,7 @@ public class AlarmCtService {
                         po.setVal(alarm.getVal().intValue());
                         po.setVal(alarm.getVal().intValue());
                         po.setIsOpen(1);
                         po.setIsOpen(1);
 
 
+                        alarm.setRank(vo.getRank());
                         alarm.setDescription(vo.getDescription());
                         alarm.setDescription(vo.getDescription());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setDeviceType(vo.getDevicetype());
                         alarm.setDeviceType(vo.getDevicetype());
@@ -409,7 +410,7 @@ public class AlarmCtService {
     }
     }
 
 
 
 
-    public synchronized void updateAlarms(List<AlarmTag> ls) {
+    public synchronized void updateAlarms(List<AlarmTag> ls) throws EncodeException, IOException {
 
 
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
 
@@ -465,7 +466,7 @@ public class AlarmCtService {
                             po.setDeviceId(vo.getDeviceid());
                             po.setDeviceId(vo.getDeviceid());
                             po.setSubcomponents(vo.getSuffix());
                             po.setSubcomponents(vo.getSuffix());
                             po.setRank(vo.getRank());
                             po.setRank(vo.getRank());
-                            po.setConfirmed(false);
+                            po.setConfirmed(alarm.getConfirmed());
                             po.setUniformCode(vo.getUniformcode());
                             po.setUniformCode(vo.getUniformcode());
                             po.setAlarmType(vo.getAlarmtype());
                             po.setAlarmType(vo.getAlarmtype());
                             po.setDeviceType(vo.getDevicetype());
                             po.setDeviceType(vo.getDevicetype());
@@ -488,6 +489,13 @@ public class AlarmCtService {
                             po.setVal(alarm.getVal().intValue());
                             po.setVal(alarm.getVal().intValue());
                             po.setCloseTime(new Date(alarm.getEndts()));
                             po.setCloseTime(new Date(alarm.getEndts()));
                             po.setIsOpen(0);
                             po.setIsOpen(0);
+
+                            alarm.setRank(vo.getRank());
+                            alarm.setDescription(vo.getDescription());
+                            alarm.setAlarmType(vo.getAlarmtype());
+                            alarm.setDeviceType(vo.getDevicetype());
+                            alarm.setIsClose(false);
+                            pushData(alarm);
                             valuels.add(po);
                             valuels.add(po);
                         }
                         }
                     }
                     }

+ 10 - 2
alarm-service/src/main/java/com/gyee/alarm/service/AlarmInService.java

@@ -290,6 +290,7 @@ public class AlarmInService {
                         po.setIsOpen(1);
                         po.setIsOpen(1);
                         po.setVal(alarm.getVal().intValue());
                         po.setVal(alarm.getVal().intValue());
 
 
+                        alarm.setRank(vo.getRank());
                         alarm.setDescription(vo.getDescription());
                         alarm.setDescription(vo.getDescription());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setDeviceType(vo.getDevicetype());
                         alarm.setDeviceType(vo.getDevicetype());
@@ -326,7 +327,7 @@ public class AlarmInService {
     }
     }
 
 
 
 
-    public synchronized void updateAlarms(List<AlarmTag> ls) {
+    public synchronized void updateAlarms(List<AlarmTag> ls) throws EncodeException, IOException {
 
 
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
 
@@ -382,7 +383,7 @@ public class AlarmInService {
                         po.setDeviceId(vo.getDeviceid());
                         po.setDeviceId(vo.getDeviceid());
                         po.setSubcomponents(vo.getSuffix());
                         po.setSubcomponents(vo.getSuffix());
                         po.setRank(vo.getRank());
                         po.setRank(vo.getRank());
-                        po.setConfirmed(false);
+                        po.setConfirmed(alarm.getConfirmed());
                         po.setUniformCode(vo.getUniformcode());
                         po.setUniformCode(vo.getUniformcode());
                         po.setAlarmType(vo.getAlarmtype());
                         po.setAlarmType(vo.getAlarmtype());
                         po.setDeviceType(vo.getDevicetype());
                         po.setDeviceType(vo.getDevicetype());
@@ -404,6 +405,13 @@ public class AlarmInService {
                         po.setCloseTime(new Date(alarm.getEndts()));
                         po.setCloseTime(new Date(alarm.getEndts()));
                         po.setIsOpen(0);
                         po.setIsOpen(0);
                         po.setVal(alarm.getVal().intValue());
                         po.setVal(alarm.getVal().intValue());
+
+                        alarm.setRank(vo.getRank());
+                        alarm.setDescription(vo.getDescription());
+                        alarm.setAlarmType(vo.getAlarmtype());
+                        alarm.setDeviceType(vo.getDevicetype());
+                        alarm.setIsClose(false);
+                        pushData(alarm);
                         valuels.add(po);
                         valuels.add(po);
                     }
                     }
                 }
                 }

+ 19 - 5
alarm-service/src/main/java/com/gyee/alarm/service/AlarmWtService.java

@@ -1,5 +1,6 @@
 package com.gyee.alarm.service;
 package com.gyee.alarm.service;
 
 
+import com.gyee.alarm.AlarmMain;
 import com.gyee.alarm.init.CacheContext;
 import com.gyee.alarm.init.CacheContext;
 import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.model.vo.*;
 import com.gyee.alarm.model.vo.*;
@@ -260,6 +261,10 @@ public class AlarmWtService {
 
 
         if(StringUtils.notEmp(ls) && !ls.isEmpty()) {
         if(StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
 
+            for (AlarmTag alarm : ls) {
+               alarm.setConfirmed(false);
+
+            }
             alarmTsService.insertList(ls);
             alarmTsService.insertList(ls);
 
 
 
 
@@ -300,10 +305,11 @@ public class AlarmWtService {
                         po.setIsOpen(1);
                         po.setIsOpen(1);
                         po.setVal(alarm.getVal().intValue());
                         po.setVal(alarm.getVal().intValue());
 
 
-
+                        alarm.setRank(vo.getRank());
                         alarm.setDescription(vo.getDescription());
                         alarm.setDescription(vo.getDescription());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setAlarmType(vo.getAlarmtype());
                         alarm.setDeviceType(vo.getDevicetype());
                         alarm.setDeviceType(vo.getDevicetype());
+                        alarm.setIsClose(false);
                         pushData(alarm);
                         pushData(alarm);
 
 
                         valuels.add(po);
                         valuels.add(po);
@@ -337,14 +343,14 @@ public class AlarmWtService {
     }
     }
 
 
 
 
-    public synchronized void updateAlarms(List<AlarmTag> ls) {
+    public synchronized void updateAlarms(List<AlarmTag> ls) throws EncodeException, IOException {
 
 
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
 
             StringBuilder sb=new StringBuilder();
             StringBuilder sb=new StringBuilder();
             Map<String, AlarmSimpleVo> map=new HashMap<>();
             Map<String, AlarmSimpleVo> map=new HashMap<>();
             for (AlarmTag alarm : ls) {
             for (AlarmTag alarm : ls) {
-                sb.append("'").append(alarm.getId()).append("',");
+                sb.append("'").append(alarm.getId().toLowerCase()).append("',");
 
 
             }
             }
 
 
@@ -355,7 +361,7 @@ public class AlarmWtService {
             {
             {
                 for(AlarmSimpleVo vo:alarmls)
                 for(AlarmSimpleVo vo:alarmls)
                 {
                 {
-                    map.put(vo.getTbName(),vo);
+                    map.put(vo.getTbName().toUpperCase(),vo);
                 }
                 }
             }
             }
 
 
@@ -393,7 +399,7 @@ public class AlarmWtService {
                         po.setDeviceId(vo.getDeviceid());
                         po.setDeviceId(vo.getDeviceid());
                         po.setSubcomponents(vo.getSuffix());
                         po.setSubcomponents(vo.getSuffix());
                         po.setRank(vo.getRank());
                         po.setRank(vo.getRank());
-                        po.setConfirmed(false);
+                        po.setConfirmed(alarm.getConfirmed());
                         po.setUniformCode(vo.getUniformcode());
                         po.setUniformCode(vo.getUniformcode());
                         po.setAlarmType(vo.getAlarmtype());
                         po.setAlarmType(vo.getAlarmtype());
                         po.setDeviceType(vo.getDevicetype());
                         po.setDeviceType(vo.getDevicetype());
@@ -415,6 +421,14 @@ public class AlarmWtService {
                         po.setCloseTime(new Date(alarm.getEndts()));
                         po.setCloseTime(new Date(alarm.getEndts()));
                         po.setIsOpen(0);
                         po.setIsOpen(0);
                         po.setVal(alarm.getVal().intValue());
                         po.setVal(alarm.getVal().intValue());
+
+                        alarm.setRank(vo.getRank());
+                        alarm.setDescription(vo.getDescription());
+                        alarm.setAlarmType(vo.getAlarmtype());
+                        alarm.setDeviceType(vo.getDevicetype());
+                        alarm.setIsClose(false);
+                        pushData(alarm);
+
                         valuels.add(po);
                         valuels.add(po);
                     }
                     }
                 }
                 }

+ 7 - 1
alarm-service/src/main/java/com/gyee/alarm/service/auto/impl/AlarmTsServiceImpl.java

@@ -160,7 +160,13 @@ public class AlarmTsServiceImpl extends ServiceImpl<AlarmTsMapper, AlarmTs> impl
         List<AlarmSimpleVo> ls=new ArrayList<>();
         List<AlarmSimpleVo> ls=new ArrayList<>();
         if(StringUtils.notEmp(superTableName) && StringUtils.notEmp(tbnames))
         if(StringUtils.notEmp(superTableName) && StringUtils.notEmp(tbnames))
         {
         {
-            ls= alarmTsMapper.selectLastRowByTbname(superTableName, tbnames);
+            StringBuilder sb= new StringBuilder();
+            sb.append(" select last_row(*),tbname from ")
+            .append(superTableName).append(" where tbname in( ");
+            sb.append(tbnames)
+                    .append(" ) group by tbname");
+
+            ls= alarmTsMapper.selectLastRowByTbname(String.valueOf(sb));
         }
         }
 
 
         return ls;
         return ls;

+ 23 - 3
alarm-service/src/main/java/com/gyee/alarm/websocket/WebsocketSchedule.java

@@ -31,8 +31,8 @@ public class WebsocketSchedule {
     private WebSocket webSocket;
     private WebSocket webSocket;
 
 
     // 第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次 fixedRateString 与 fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符
     // 第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次 fixedRateString 与 fixedRate 意思相同,只是使用字符串的形式。唯一不同的是支持占位符
-    @Scheduled(initialDelay=1000, fixedRateString = "5")
-    public void pushData() throws EncodeException, IOException {
+    @Scheduled(initialDelay=1000, fixedRateString = "60")
+    public void pushData() throws EncodeException, IOException, InterruptedException {
         ConcurrentHashMap<String, WebSocket> webSocketPushMap = WebSocket.webSocketMap;
         ConcurrentHashMap<String, WebSocket> webSocketPushMap = WebSocket.webSocketMap;
         ConcurrentHashMap<String, PushParams> webSocketPushParamsMap = WebSocket.webSocketParamsMap;
         ConcurrentHashMap<String, PushParams> webSocketPushParamsMap = WebSocket.webSocketParamsMap;
         if(!webSocketPushMap.isEmpty()) {
         if(!webSocketPushMap.isEmpty()) {
@@ -41,45 +41,65 @@ public class WebsocketSchedule {
                 PushParams pushParams = webSocketPushParamsMap.get(key);
                 PushParams pushParams = webSocketPushParamsMap.get(key);
 
 
                 AlarmTag alarm = new AlarmTag();
                 AlarmTag alarm = new AlarmTag();
+                alarm.setId("主键标识1");
                 alarm.setTs(new Date().getTime());
                 alarm.setTs(new Date().getTime());
                 alarm.setDescription("test1");
                 alarm.setDescription("test1");
                 alarm.setAlarmType(AlarmTypeValue.WT.getCode());
                 alarm.setAlarmType(AlarmTypeValue.WT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.WT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.WT.getCode());
+                alarm.setRank(3);
+                alarm.setIsClose(false);
                 webSocket.sendMessageByUserId(key, alarm);
                 webSocket.sendMessageByUserId(key, alarm);
                 alarm = new AlarmTag();
                 alarm = new AlarmTag();
+                alarm.setId("主键标识2");
                 alarm.setTs(new Date().getTime());
                 alarm.setTs(new Date().getTime());
                 alarm.setDescription("test2");
                 alarm.setDescription("test2");
                 alarm.setAlarmType(AlarmTypeValue.IN.getCode());
                 alarm.setAlarmType(AlarmTypeValue.IN.getCode());
                 alarm.setDeviceType(DeviceTypeValue.IN.getCode());
                 alarm.setDeviceType(DeviceTypeValue.IN.getCode());
+                alarm.setIsClose(false);
+                alarm.setRank(3);
                 webSocket.sendMessageByUserId(key, alarm);
                 webSocket.sendMessageByUserId(key, alarm);
 
 
                 alarm = new AlarmTag();
                 alarm = new AlarmTag();
+                alarm.setId("主键标识3");
                 alarm.setTs(new Date().getTime());
                 alarm.setTs(new Date().getTime());
                 alarm.setDescription("test3");
                 alarm.setDescription("test3");
+                alarm.setRank(3);
                 alarm.setAlarmType(AlarmTypeValue.BT.getCode());
                 alarm.setAlarmType(AlarmTypeValue.BT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.BT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.BT.getCode());
+                alarm.setIsClose(false);
                 webSocket.sendMessageByUserId(key, alarm);
                 webSocket.sendMessageByUserId(key, alarm);
 
 
                 alarm = new AlarmTag();
                 alarm = new AlarmTag();
+                alarm.setId("主键标识4");
                 alarm.setTs(new Date().getTime());
                 alarm.setTs(new Date().getTime());
                 alarm.setDescription("test4");
                 alarm.setDescription("test4");
-                alarm.setAlarmType(AlarmTypeValue.BTE.getCode());
+                alarm.setAlarmType(AlarmTypeValue.BT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.BT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.BT.getCode());
+                alarm.setIsClose(true);
+                alarm.setRank(3);
                 webSocket.sendMessageByUserId(key, alarm);
                 webSocket.sendMessageByUserId(key, alarm);
 
 
                 alarm = new AlarmTag();
                 alarm = new AlarmTag();
+                alarm.setId("主键标识5");
                 alarm.setTs(new Date().getTime());
                 alarm.setTs(new Date().getTime());
                 alarm.setDescription("test5");
                 alarm.setDescription("test5");
                 alarm.setAlarmType(AlarmTypeValue.CT.getCode());
                 alarm.setAlarmType(AlarmTypeValue.CT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.IN.getCode());
                 alarm.setDeviceType(DeviceTypeValue.IN.getCode());
+                alarm.setIsClose(true);
+                alarm.setRank(3);
                 webSocket.sendMessageByUserId(key, alarm);
                 webSocket.sendMessageByUserId(key, alarm);
 
 
                 alarm = new AlarmTag();
                 alarm = new AlarmTag();
+                alarm.setId("主键标识6");
                 alarm.setTs(new Date().getTime());
                 alarm.setTs(new Date().getTime());
                 alarm.setDescription("test6");
                 alarm.setDescription("test6");
                 alarm.setAlarmType(AlarmTypeValue.CT.getCode());
                 alarm.setAlarmType(AlarmTypeValue.CT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.WT.getCode());
                 alarm.setDeviceType(DeviceTypeValue.WT.getCode());
+                alarm.setIsClose(true);
+                alarm.setRank(3);
                 webSocket.sendMessageByUserId(key, alarm);
                 webSocket.sendMessageByUserId(key, alarm);
+
+                Thread.sleep(30000);
             }
             }
 
 
         }
         }

+ 7 - 7
alarm-service/src/test/java/com/gyee/AppTest.java

@@ -20,14 +20,14 @@ public class AppTest
 
 
 
 
 
 
-        alarmWtService.createSuperTable();
-        alarmWtService.initalWtAlarm();
-
-        alarmBtService.createSuperTable();
-        alarmBtService.initalBtAlarm();
+//        alarmWtService.createSuperTable();
+//        alarmWtService.initalWtAlarm();
+//
+//        alarmBtService.createSuperTable();
+//        alarmBtService.initalBtAlarm();
 //
 //
-//        alarmCtService.createSuperTable();
-//        alarmCtService.initalCtAlarm();
+        alarmCtService.createSuperTable();
+        alarmCtService.initalCtAlarm();
 
 
         System.out.println("完成!");
         System.out.println("完成!");
 
 

+ 4 - 4
alarm-stat/src/main/java/com/gyee/alarm/config/GeneratorCodeConfig.java

@@ -39,8 +39,8 @@ public class GeneratorCodeConfig {
         // 全局配置
         // 全局配置
         GlobalConfig gc = new GlobalConfig();
         GlobalConfig gc = new GlobalConfig();
         String projectPath = System.getProperty("user.dir");
         String projectPath = System.getProperty("user.dir");
-        gc.setOutputDir(projectPath+"/alarmXK"+ "/src/main/java");
-        gc.setAuthor("xieshengjie");
+        gc.setOutputDir(projectPath+"/alarm-stat"+ "/src/main/java");
+        gc.setAuthor("shilin");
         gc.setOpen(false);
         gc.setOpen(false);
         //实体属性 Swagger2 注解
         //实体属性 Swagger2 注解
         gc.setSwagger2(false);
         gc.setSwagger2(false);
@@ -61,7 +61,7 @@ public class GeneratorCodeConfig {
         dsc.setDriverName("org.postgresql.Driver");
         dsc.setDriverName("org.postgresql.Driver");
         dsc.setUsername("postgres");
         dsc.setUsername("postgres");
         dsc.setPassword("gd123");
         dsc.setPassword("gd123");
-        dsc.setUrl("jdbc:postgresql://127.0.0.1:5432/sd20230309");
+        dsc.setUrl("jdbc:postgresql://10.81.3.151:5432/IMS_NEM_JN");
 //        dsc.setDriverName("org.postgresql.Driver");
 //        dsc.setDriverName("org.postgresql.Driver");
 //        dsc.setUsername("postgres");
 //        dsc.setUsername("postgres");
 //        dsc.setPassword("postgres");
 //        dsc.setPassword("postgres");
@@ -76,7 +76,7 @@ public class GeneratorCodeConfig {
         // 包配置
         // 包配置
         PackageConfig pc = new PackageConfig();
         PackageConfig pc = new PackageConfig();
 //        pc.setModuleName(scanner("模块名"));
 //        pc.setModuleName(scanner("模块名"));
-        pc.setParent("com.gyee.generation");
+        pc.setParent("com.gyee.alarm");
         pc.setEntity("model.auto");
         pc.setEntity("model.auto");
         pc.setMapper("mapper.auto");
         pc.setMapper("mapper.auto");
         pc.setService("service.auto");
         pc.setService("service.auto");

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportAlarmController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警报告报警 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report-alarm")
+public class ProEconEarlyReportAlarmController {
+
+}

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportConclusioController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警报告结论 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report-conclusio")
+public class ProEconEarlyReportConclusioController {
+
+}

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警报告 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report")
+public class ProEconEarlyReportController {
+
+}

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportWtController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 设备预警报告 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report-wt")
+public class ProEconEarlyReportWtController {
+
+}

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/controller/ProEconEarlyWarnScoreController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警得分 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-warn-score")
+public class ProEconEarlyWarnScoreController {
+
+}

+ 29 - 14
alarm-stat/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -4,9 +4,10 @@ package com.gyee.alarm.init;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.alibaba.fastjson.TypeReference;
 import com.gyee.alarm.model.vo.AlarmCustomType;
 import com.gyee.alarm.model.vo.AlarmCustomType;
+import com.gyee.alarm.model.vo.AlarmType;
 import com.gyee.alarm.model.vo.AlarmTypeValue;
 import com.gyee.alarm.model.vo.AlarmTypeValue;
 import com.gyee.alarm.model.vo.AlarmVo;
 import com.gyee.alarm.model.vo.AlarmVo;
-import com.gyee.alarm.service.FeatureStatService;
+
 import com.gyee.common.model.StringUtils;
 import com.gyee.common.model.StringUtils;
 import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.service.auto.*;
 import com.gyee.alarm.service.auto.*;
@@ -87,8 +88,7 @@ public class CacheContext implements CommandLineRunner {
     private IProEconAlarmTypeService proEconAlarmTypeService;
     private IProEconAlarmTypeService proEconAlarmTypeService;
     @Resource
     @Resource
     private IProEconAlarmRuleService proEconAlarmRuleService;
     private IProEconAlarmRuleService proEconAlarmRuleService;
-    @Resource
-    private FeatureStatService alarmCtService;
+
     public static Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
     public static Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
     public static List<ProBasicEquipment> wtls = new ArrayList<>();
     public static List<ProBasicEquipment> wtls = new ArrayList<>();
     public static List<ProBasicEquipment> wt_fjls = new ArrayList<>();
     public static List<ProBasicEquipment> wt_fjls = new ArrayList<>();
@@ -182,7 +182,7 @@ public class CacheContext implements CommandLineRunner {
     public static Map<String,AlarmVo> alarmCtMap=new HashMap<>();
     public static Map<String,AlarmVo> alarmCtMap=new HashMap<>();
 
 
 
 
-    public static Map<String,ProEconAlarmType> alarmTypeMap=new HashMap<>();
+    public static Map<String,List<ProEconAlarmType>> alarmTypeMap=new HashMap<>();
     public static List<ProEconAlarmType> alarmTypeList=new ArrayList<>();
     public static List<ProEconAlarmType> alarmTypeList=new ArrayList<>();
 
 
     @Override
     @Override
@@ -586,7 +586,7 @@ public class CacheContext implements CommandLineRunner {
         List<ProEconAlarmRule> customls =proEconAlarmRuleService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
         List<ProEconAlarmRule> customls =proEconAlarmRuleService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
 
 
         List<ProEconAlarmRule> wtCustomls=new ArrayList<>();
         List<ProEconAlarmRule> wtCustomls=new ArrayList<>();
-        List<ProEconAlarmRule> wpCustomls=new ArrayList<>();
+        List<ProEconAlarmRule> inCustomls=new ArrayList<>();
         List<ProEconAlarmRule> btCustomls=new ArrayList<>();
         List<ProEconAlarmRule> btCustomls=new ArrayList<>();
         if(!customls.isEmpty())
         if(!customls.isEmpty())
         {
         {
@@ -595,19 +595,19 @@ public class CacheContext implements CommandLineRunner {
                 if(vo.getCategory().equals(AlarmCustomType.WT.getCode()))
                 if(vo.getCategory().equals(AlarmCustomType.WT.getCode()))
                 {
                 {
                     wtCustomls.add(vo);
                     wtCustomls.add(vo);
-                }else  if(vo.getCategory().equals(AlarmCustomType.WP.getCode()))
+                }else  if(vo.getCategory().equals(AlarmCustomType.IN.getCode()))
                 {
                 {
-                    wpCustomls.add(vo);
+                    inCustomls.add(vo);
                 }else  if(vo.getCategory().equals(AlarmCustomType.Bt.getCode()))
                 }else  if(vo.getCategory().equals(AlarmCustomType.Bt.getCode()))
                 {
                 {
-                    wpCustomls.add(vo);
+                    btCustomls.add(vo);
                 }
                 }
 
 
             }
             }
         }
         }
         alarmRulesMap.put(AlarmCustomType.Bt.getCode(),btCustomls);
         alarmRulesMap.put(AlarmCustomType.Bt.getCode(),btCustomls);
         alarmRulesMap.put(AlarmCustomType.WT.getCode(),wtCustomls);
         alarmRulesMap.put(AlarmCustomType.WT.getCode(),wtCustomls);
-//        alarmRulesMap.put(AlarmCustomType.WP.getCode(),wpCustomls);
+        alarmRulesMap.put(AlarmCustomType.IN.getCode(),inCustomls);
 
 
 
 
         List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
         List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
@@ -638,14 +638,29 @@ public class CacheContext implements CommandLineRunner {
 
 
         alarmTypeList= proEconAlarmTypeService.list();
         alarmTypeList= proEconAlarmTypeService.list();
 
 
-        if(!alarmTypeList.isEmpty())
-        {
-            for(ProEconAlarmType at:alarmTypeList)
-            {
-                alarmTypeMap.put(at.getNemCode(),at);
+
+        List<ProEconAlarmType> fjbjls = new ArrayList<>();
+        List<ProEconAlarmType> gfbjls = new ArrayList<>();
+        List<ProEconAlarmType> yjls = new ArrayList<>();
+        List<ProEconAlarmType> sdls = new ArrayList<>();
+        if (!alarmTypeList.isEmpty()) {
+            for (ProEconAlarmType type : alarmTypeList) {
+                if (type.getCategory().equals(AlarmType.FJBJ.getCode())) {
+                    fjbjls.add(type);
+                }else if (type.getCategory().equals(AlarmType.GFBJ.getCode())) {
+                    gfbjls.add(type);
+                } else if (type.getCategory().equals(AlarmType.YJ.getCode())) {
+                    yjls.add(type);
+                } else if (type.getCategory().equals(AlarmType.SD.getCode())) {
+                    sdls.add(type);
+                }
             }
             }
         }
         }
 
 
+        alarmTypeMap.put(AlarmType.FJBJ.getCode(), fjbjls);
+        alarmTypeMap.put(AlarmType.GFBJ.getCode(), gfbjls);
+        alarmTypeMap.put(AlarmType.YJ.getCode(), yjls);
+        alarmTypeMap.put(AlarmType.SD.getCode(), sdls);
 //        inputOrOutPutService.initialInputOrOutputSpeed();
 //        inputOrOutPutService.initialInputOrOutputSpeed();
         logger.info("缓存结束------------------------------------------------------------");
         logger.info("缓存结束------------------------------------------------------------");
     }
     }

+ 21 - 0
alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java

@@ -93,4 +93,25 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
     @Select("select deviceid as wtId,stationid as stationId,alarmid,description,components as typeCode,max(timeLong) as maxSeconds,min(timeLong) as minSeconds,avg(timeLong) as avgSeconds,sum(timeLong) as totalSeconds,count(*) as total from alarmWt where ts>=#{begin} and ts<=#{end}  and alarmtype='windturbine' group by deviceid,components,stationid,alarmid,description")
     @Select("select deviceid as wtId,stationid as stationId,alarmid,description,components as typeCode,max(timeLong) as maxSeconds,min(timeLong) as minSeconds,avg(timeLong) as avgSeconds,sum(timeLong) as totalSeconds,count(*) as total from alarmWt where ts>=#{begin} and ts<=#{end}  and alarmtype='windturbine' group by deviceid,components,stationid,alarmid,description")
     List<ProBasicFeatureStat> findFeatureStatList( @Param("begin")long begin, @Param("end") long end);
     List<ProBasicFeatureStat> findFeatureStatList( @Param("begin")long begin, @Param("end") long end);
 
 
+    @Select({"<script>",
+            "select deviceid as wtId,stationid as stationId,alarmid,description,components as typeCode,max(timeLong) as maxSeconds,min(timeLong) as minSeconds,avg(timeLong) as avgSeconds,sum(timeLong) as totalSeconds,count(*) as total from alarmCt " ,
+            "<where>" ,
+
+            " ts &gt;= #{begin}",
+            "and ts &lt;= #{end}",
+            "and stationid = #{stationid}",
+            "and modelId = #{modelId}",
+            "<if test='alarmid != null'>",
+            "and alarmid in(${alarmid}) ",
+            "</if>",
+            "<if test='components != null'>",
+            "and components in(${components}) ",
+            "</if>",
+            "</where>",
+
+            " group by deviceid,components,stationid,alarmid,description ",
+            " order by deviceid  ",
+            "</script>"})
+    List<ProBasicFeatureStat> findCtFeatureStatCustom( @Param("begin")long begin, @Param("end") long end, @Param("stationid") String stationid, @Param("modelId")String modelId, @Param("components") List<String> components, @Param("alarmid") List<String> alarmid);
+
 }
 }

+ 23 - 0
alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportAlarmMapper.java

@@ -0,0 +1,23 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 预警报告报警 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportAlarmMapper extends BaseMapper<ProEconEarlyReportAlarm> {
+
+    @Select("select * from pro_econ_early_report_alarm where  report_windturbine_id=#{windturbineReportId}")
+    List<ProEconEarlyReportAlarm> findByWindturbineReportId(@Param("windturbineReportId") String windturbineReportId);
+
+}

+ 16 - 0
alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportConclusioMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportConclusio;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警报告结论 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportConclusioMapper extends BaseMapper<ProEconEarlyReportConclusio> {
+
+}

+ 32 - 0
alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportMapper.java

@@ -0,0 +1,32 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 预警报告 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportMapper extends BaseMapper<ProEconEarlyReport> {
+
+
+    @Select("select * from pro_econ_early_report where report_date>#{startTime} and report_date<=#{endTime}")
+    @Results({
+            @Result(id = true, column = "id", property = "id"),
+            @Result(
+                    property = "proEconEarlyReportWtList",
+                    column = "id",
+                    javaType = List.class,
+                    many = @Many(select = "com.gyee.alarm.mapper.auto.ProEconEarlyReportWtMapper.findByReportId")
+
+            )})
+    List<ProEconEarlyReport> findEarlyReportByDate(@Param("stationId")String stationId, @Param("startTime") Date startTime, @Param("endTime")Date endTime);
+}

+ 67 - 0
alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportWtMapper.java

@@ -0,0 +1,67 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 设备预警报告 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportWtMapper extends BaseMapper<ProEconEarlyReportWt> {
+
+    @Select("select * from pro_econ_early_report_wt where report_id=#{reportId}")
+    @Results({
+            @Result(id = true, column = "id", property = "id"),
+            @Result(
+                    property = "alarmInfoList",
+                    column = "id",
+                    javaType = List.class,
+                    many = @Many(select = "com.gyee.alarm.mapper.auto.ProEconEarlyReportAlarmMapper.findByWindturbineReportId")
+            )})
+    List<ProEconEarlyReportWt> findByReportId(@Param("reportId")String reportId);
+
+    @Select("<script>select * from pro_econ_early_report_wt where ID in <foreach item='item' index='index' collection='idList'  open='(' separator=',' close=')'>#{item} </foreach></script>")
+    @Results({
+            @Result(id = true, column = "id", property = "id"),
+            @Result(
+                    property = "alarmInfoList",
+                    column = "id",
+                    javaType = List.class,
+                    many = @Many(select = "com.gyee.alarm.mapper.auto.ProEconEarlyReportAlarmMapper.findByWindturbineReportId")
+            ),
+            @Result(
+                    property = "earlyReport",
+                    column = "report_id",
+                    javaType = ProEconEarlyReport.class,
+                    one = @One(select = "com.gyee.alarm.mapper.auto.ProEconEarlyReportMapper.selectById")
+            )
+    })
+    List<ProEconEarlyReportWt> findByIds(@Param("idList") List<String> idList);
+
+    @Select("<script>select * from pro_econ_early_report_wt where report_id in <foreach item='item' index='index' collection='reportIdList'  open='(' separator=',' close=')'>#{item} </foreach></script>")
+    @Results({
+            @Result(id = true, column = "id", property = "id"),
+            @Result(
+                    property = "alarmInfoList",
+                    column = "id",
+                    javaType = List.class,
+                    many = @Many(select = "com.gyee.alarm.mapper.auto.ProEconEarlyReportAlarmMapper.findByWindturbineReportId")
+            ),
+            @Result(
+                    property = "earlyReport",
+                    column = "report_id",
+                    javaType = ProEconEarlyReport.class,
+                    one = @One(select = "com.gyee.alarm.mapper.auto.ProEconEarlyReportMapper.selectById")
+            )
+    })
+    List<ProEconEarlyReportWt> findByReportIds(@Param("reportIdList") List<String> reportIdList);
+
+}

+ 16 - 0
alarm-stat/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyWarnScoreMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyWarnScore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警得分 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyWarnScoreMapper extends BaseMapper<ProEconEarlyWarnScore> {
+
+}

+ 3 - 0
alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmType.java

@@ -1,9 +1,12 @@
 package com.gyee.alarm.model.auto;
 package com.gyee.alarm.model.auto;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
+import java.util.List;
+
 /**
 /**
  * <p>
  * <p>
  * 自定义类型
  * 自定义类型

+ 68 - 0
alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReport.java

@@ -0,0 +1,68 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警报告
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReport extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 报告名称
+     */
+    private String reportName;
+
+    /**
+     * 场站id
+     */
+    private String stationId;
+
+    /**
+     * 场站名称
+     */
+    private String stationName;
+
+    /**
+     * 所属部件
+     */
+    private String relatedParts;
+
+    /**
+     * 报告日期
+     */
+    private Date reportDate;
+
+    /**
+     * 报告分析起始时间
+     */
+    private Date statStartDate;
+
+    /**
+     * 报告分析结束时间
+     */
+    private Date statEndDate;
+
+    @TableField(exist = false)
+    private List<ProEconEarlyReportWt> proEconEarlyReportWtList;
+}

+ 68 - 0
alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportAlarm.java

@@ -0,0 +1,68 @@
+package com.gyee.alarm.model.auto;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警报告报警
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReportAlarm extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 规则编号
+     */
+    private String ruleId;
+
+    /**
+     * 报警类型 custom为自定义报警,widnturbine为风机原始报警
+     */
+    private String alarmType;
+
+    /**
+     * 规则名称
+     */
+    private String ruleName;
+
+    /**
+     * 规则描述
+     */
+    private String ruleDescription;
+
+    /**
+     * 报警级别
+     */
+    private String rank;
+
+    /**
+     * 报警数量
+     */
+    private Integer count;
+
+    /**
+     * 报警持续时长
+     */
+    private Double keepTime;
+
+    /**
+     * 预警风机报告表主键
+     */
+    private String reportWindturbineId;
+
+
+}

+ 44 - 0
alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportConclusio.java

@@ -0,0 +1,44 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警报告结论
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReportConclusio extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 风机所属部件
+     */
+    private String part;
+
+    /**
+     * 预警信息
+     */
+    private String alarmInfo;
+
+    /**
+     * 隐患后果
+     */
+    private String hiddanger;
+
+    private String checkMatter;
+
+
+}

+ 77 - 0
alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportWt.java

@@ -0,0 +1,77 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 设备预警报告
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReportWt extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 风机id
+     */
+    private String windturbineId;
+
+    /**
+     * 风机编号或名称
+     */
+    private String windturbineCode;
+
+    /**
+     * 风机型号
+     */
+    private String modelId;
+
+    /**
+     * 对比的风机报告编号
+     */
+    private String compareId;
+
+    /**
+     * 结论
+     */
+    private String conclusion;
+
+    /**
+     * earlyreport表主键
+     */
+    private String reportId;
+
+    /**
+     * 是否比较过
+     */
+    private Boolean compared;
+
+    /**
+     * 核实的
+     */
+    private Boolean verified;
+
+    @TableField(exist = false)
+    private ProEconEarlyReport earlyReport;
+
+    @TableField(exist = false)
+    private List<ProEconEarlyReportAlarm> alarmInfoList;
+
+    @TableField(exist = false)
+    private List<ProEconEarlyReportAlarm> compareAlarmInfoList;
+}

+ 106 - 0
alarm-stat/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyWarnScore.java

@@ -0,0 +1,106 @@
+package com.gyee.alarm.model.auto;
+
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警得分
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyWarnScore extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 风机编号
+     */
+    private String windturbineId;
+
+    /**
+     * 日期
+     */
+    private Date statdate;
+
+    /**
+     * 总分
+     */
+    private Double totalScore;
+
+    /**
+     * 传感器分数
+     */
+    private Double sensorScore;
+
+    /**
+     * 零部件隐患分数
+     */
+    private Double partsScore;
+
+    /**
+     * 控制参数分数
+     */
+    private Double controlScore;
+
+    /**
+     * 性能下降分数
+     */
+    private Double performanceScore;
+
+    /**
+     * 其它分数
+     */
+    private Double otherScore;
+
+    /**
+     * 测风系统分数
+     */
+    private Double cfxtScore;
+
+    /**
+     * 发电机分数
+     */
+    private Double fdjScore;
+
+    /**
+     * 齿轮箱分数
+     */
+    private Double clxScore;
+
+    /**
+     * 主控柜分数
+     */
+    private Double zkgScore;
+
+    /**
+     * 机舱分数
+     */
+    private Double jcScore;
+
+    /**
+     * 变桨系统分数
+     */
+    private Double bjxtScore;
+
+    /**
+     * 轴承分数
+     */
+    private Double zcScore;
+
+
+}

+ 1 - 1
alarm-stat/src/main/java/com/gyee/alarm/model/vo/AlarmCustomType.java

@@ -4,7 +4,7 @@ public enum AlarmCustomType {
 
 
     WT("windturbine", "设备自定义报警"),
     WT("windturbine", "设备自定义报警"),
     Bt("booststation", "升压站报警"),
     Bt("booststation", "升压站报警"),
-    WP("station", "场站自定义报警");
+    IN("inverter", "逆变器报警");
 
 
     private String code;
     private String code;
     private String name;
     private String name;

+ 445 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/EarlyReportService.java

@@ -0,0 +1,445 @@
+//package com.gyee.alarm.service;
+//
+//
+//import com.gyee.alarm.init.CacheContext;
+//import com.gyee.alarm.model.auto.*;
+//import com.gyee.alarm.model.vo.AlarmCustomType;
+//import com.gyee.alarm.model.vo.AlarmType;
+//import com.gyee.alarm.model.vo.AlarmTypeValue;
+//import com.gyee.alarm.service.auto.*;
+//import com.gyee.alarm.util.SnowflakeGenerator;
+//import com.gyee.alarm.util.DateUtils;
+//
+//import org.apache.commons.collections.CollectionUtils;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.stereotype.Service;
+//
+//import javax.annotation.Resource;
+//import java.util.*;
+//import java.util.concurrent.Callable;
+//import java.util.stream.Collectors;
+//
+//@Service
+//public class EarlyReportService  {
+//
+//
+//
+//    @Resource
+//    private  IProEconAlarmInfoService proEconAlarmInfoService;
+//    @Resource
+//    private  IProEconEarlyReportService proEconEarlyReportService;
+//    @Resource
+//    private IProEconEarlyReportWtService proEconEarlyReportWtService;
+//    @Resource
+//    private IProEconEarlyReportAlarmService proEconEarlyReportAlarmService;
+//    @Resource
+//    private IAlarmTsService alarmTsService;
+//
+//    //时间间隔(天),即从当日0点,向前间隔天数,为计算区间
+//    @Value("${interval_day}")
+//    private  int interval_day;
+//    @Value("${limit}")
+//    private  int limit;
+//
+////
+////    //部件编码  CLX,FDJ等
+////    private String windturbineParts;
+////    //分析名称(部件名称)
+////    private String analysisName;
+////    //时间间隔(天),即从当日0点,向前间隔天数,为计算区间
+////    private  int interval;
+////    //自定义报警规则id
+////    private List<String> customRuleId;
+////    //风机报警规则id
+////    private List<String> windturbineRuleId;
+////    //结果数量 限制(取前多少个)
+////    private int resultLimit;
+////    //风场id
+////    private String stationId;
+////    //风机型号
+////    private String model;
+////    //故障状态统一编码,如果为空则不进行计算,不为空则计算出故障时长和次数
+////    private String gzztCode;
+//    public boolean createEarlyReport() {
+//
+//        boolean result=false;
+//        //报告时间
+//        Date reportDate = DateUtils.truncate(new Date());
+//        //获取计算开始时间
+//        Date statStartTime = DateUtils.addDays(DateUtils.today(), -interval_day);
+//        //获取计算结束时间
+//        Date statEndTime = DateUtils.today();
+//        Map<String,List<ProEconAlarmType>> alarmTypeMap=CacheContext.alarmTypeMap;
+//
+//        List<ProEconAlarmType> fjtypels=CacheContext.alarmTypeMap.get(AlarmType.FJBJ.getCode());
+//
+//        List<ProEconAlarmType> gftypels=CacheContext.alarmTypeMap.get(AlarmType.GFBJ.getCode());
+//       for(ProBasicEquipment wt: CacheContext.wtls)
+//       {
+//
+//           ProEconEarlyReport report = new ProEconEarlyReport();
+//           report.setId(String.valueOf(SnowflakeGenerator.generateId()));
+//           report.setReportDate(new Date());
+//           report.setStationId(wt.getWindpowerstationId());
+//          if(CacheContext.wpmap.containsKey(wt.getWindpowerstationId()))
+//          {
+//              report.setStationName(CacheContext.wpmap.get(wt.getWindpowerstationId()).getName());
+//          }
+//          if(wt.getWindpowerstationId().contains("FDC"))
+//          {
+//              for(ProEconAlarmType fjtype:fjtypels)
+//              {
+//                  report.setRelatedParts(fjtype.getNemCode());
+//                  StringBuilder sb=new StringBuilder();
+//                  sb.append(wt.getNemCode()).append(wt.getName()).append(fjtype.getName()).append("诊断报告");
+//                  report.setReportName(String.valueOf(sb));
+//                  report.setStatStartDate(statStartTime);
+//                  report.setStatEndDate(statEndTime);
+//                  report.setProEconEarlyReportWtList(new ArrayList<>());
+//                  report.setReportDate(reportDate);
+//                  report.setStatStartDate(new Date());
+//              }
+//          }else
+//          {
+//              for(ProEconAlarmType gftype:gftypels)
+//              {
+//                  report.setRelatedParts(gftype.getNemCode());
+//                  StringBuilder sb=new StringBuilder();
+//                  sb.append(wt.getNemCode()).append(wt.getName()).append(gftype.getName()).append("诊断报告");
+//                  report.setReportName(String.valueOf(sb));
+//                  report.setStatStartDate(statStartTime);
+//                  report.setStatEndDate(statEndTime);
+//                  report.setProEconEarlyReportWtList(new ArrayList<>());
+//                  report.setReportDate(reportDate);
+//                  report.setStatStartDate(new Date());
+//              }
+//          }
+//
+//
+//           try {
+//               //获取本次报告最差的风机信息集合
+//               List<ProEconEarlyReportWt> nowWindturbineInfoList = getNowWindturbineInfo(wt,wt.getModelId(), report.getId(),report.getRelatedParts(), statStartTime, statEndTime, limit);
+//
+//               report.getProEconEarlyReportWtList().addAll(nowWindturbineInfoList);
+//               // 获取上次报告
+//               List<ProEconEarlyReport> earlyReport = proEconEarlyReportService.findEarlyReportByDate(wt.getId(), DateUtils.addDays(statEndTime, -60), statEndTime);
+//               earlyReport=earlyReport.stream().filter(s->s.getRelatedParts().equals(report.getRelatedParts())).collect(Collectors.toList());
+//               List<ProEconEarlyReport> collect = earlyReport.stream().sorted(Comparator.comparing(ProEconEarlyReport::getId, Comparator.reverseOrder())).collect(Collectors.toList());
+//
+//               if (collect.size() > 0) {
+//                   //已经进行了排序,因此获取第一个,即为最近一次报告
+//                   List<ProEconEarlyReportWt> reportWindturbineInfoList = collect.get(0).getProEconEarlyReportWtList().stream().filter(s -> s.isCompared() == false && !s.getWindturbineId().equals("全场平均")).collect(Collectors.toList());
+//                   List<ProEconEarlyReportWt> compareWindturbineInfoList = getCompareWindturbineInfo(stationId,reportWindturbineInfoList, model, report.getId(), statStartTime, statEndTime);
+//                   report.getProEconEarlyReportWtList().addAll(compareWindturbineInfoList);
+//               }
+//
+//               //执行写入操作
+//               result = proEconEarlyReportService.save(report);
+//
+//           } catch (RuntimeException ex) {
+//
+//           } finally {
+//
+//           }
+//       }
+//        return result;
+//    }
+//
+//    /**
+//     * @param model         风机型号
+//     * @param reportId      报告id
+//     * @param statStartTime 统计起始时间
+//     * @param statEndTime   统计结束时间
+//     * @param limit         结果限制数量
+//     * @return com.gyee.wisdom.alarm.schedule.entity.ProEconEarlyReportWt
+//     **/
+//    private List<ProEconEarlyReportWt> getNowWindturbineInfo(ProBasicEquipment wt,String model, String reportId,String relatedParts, Date statStartTime, Date statEndTime, int limit) {
+//
+//        List<ProEconEarlyReportWt> resultList = new ArrayList<>();
+//
+//        List<ProEconAlarmRule> alertRule2List = new ArrayList<>();
+//        List<String> components= new ArrayList<>();
+//        components.add(relatedParts);
+//        if(wt.getWindpowerstationId().contains("FDC"))
+//        {
+//            List<ProEconAlarmRule> rulels=CacheContext.alarmRulesMap.get(AlarmCustomType.WT.getCode());
+//
+//            if(!rulels.isEmpty())
+//            {
+//                for(ProEconAlarmRule rule:rulels)
+//                {
+//                    if(rule.getRelatedParts().equals(relatedParts) && rule.getStationId().equals(wt.getWindpowerstationId())  && rule.getModelId().equals(model))
+//                    {
+//                        alertRule2List.add(rule);
+//                    }
+//                }
+//            }
+//
+//        }else
+//        {
+//            List<ProEconAlarmRule> rulels=CacheContext.alarmRulesMap.get(AlarmCustomType.IN.getCode());
+//
+//            if(!rulels.isEmpty())
+//            {
+//                for(ProEconAlarmRule rule:rulels)
+//                {
+//                    if(rule.getRelatedParts().equals(relatedParts) && rule.getStationId().equals(wt.getWindpowerstationId())  && rule.getModelId().equals(model))
+//                    {
+//                        alertRule2List.add(rule);
+//                    }
+//                }
+//            }
+//        }
+//
+//
+//        List<ProEconAlarmInfo> customAlarmSnapList = proEconAlarmInfoService. queryAlarmInfo(wt.getId(), AlarmTypeValue.CT.getCode());
+//        List<String> alarmidls=new ArrayList<>();
+//        if(!customAlarmSnapList.isEmpty())
+//        {
+//            for(ProEconAlarmInfo alarmInfo:customAlarmSnapList)
+//            {
+//                alarmidls.add(alarmInfo.getAlarmId());
+//            }
+//        }
+//        List<ProBasicFeatureStat> customAlarmCountList = alarmTsService.findCtFeatureStatCustom( statStartTime.getTime(), statEndTime.getTime(),wt.getWindpowerstationId(), wt.getModelId(), components,alarmidls);
+//
+//        Map<String, List<ProBasicFeatureStat>> alarmCountMapByAlertValue = customAlarmCountList.stream().collect(Collectors.groupingBy(ProBasicFeatureStat::getAlarmid));
+//
+//        ProEconEarlyReportWt avgWindturbineReport = new ProEconEarlyReportWt();
+//        avgWindturbineReport.setId(String.valueOf(SnowflakeGenerator.generateId()));
+//        avgWindturbineReport.setWindturbineId("全场平均");
+//        avgWindturbineReport.setWindturbineCode("");
+//        avgWindturbineReport.setModelId(model);
+//        avgWindturbineReport.setCompared(false);
+//        avgWindturbineReport.setAlarmInfoList(new ArrayList<>());
+//        avgWindturbineReport.setReportId(reportId);
+//
+//        for (Map.Entry<String, List<ProBasicFeatureStat>> entry :
+//                alarmCountMapByAlertValue.entrySet()) {
+//            ProBasicFeatureStat avgAlarmCount = proEconEarlyReportService.getAvgAlarmCount(entry.getValue());
+//            Optional<ProEconAlarmRule> first = alertRule2List.stream().filter(s -> String.valueOf(s.getId()).equals(entry.getKey())).findFirst();
+//            if (first.isPresent()) {
+//                EarlyReportAlarm alarmInfo = new EarlyReportAlarm()
+//                        .setId(String.valueOf(SnowflakeGenerator.generateId()))
+//                        .setRuleId(first.get().getId())
+//                        .setAlarmType("custom")
+//                        .setRuleName(first.get().getName())
+//                        .setRuleDescription(first.get().getDescription())
+//                        .setRank(first.get().getRank())
+//                        .setCount(avgAlarmCount.getCount())
+//                        .setKeepTime((long) avgAlarmCount.getTime().doubleValue())
+//                        .setReportWindturbineId(avgWindturbineReport.getId());
+//
+//                avgWindturbineReport.getAlarmInfoList().add(alarmInfo);
+//            }
+//        }
+//        resultList.add(avgWindturbineReport);
+//
+//        Map<String, ProBasicFeatureStat> sumAlarmCountByWindturbine = proEconEarlyReportService.getSumAlarmCountByWindturbine(customAlarmCountList, limit);
+//
+//        List<String> windturbineIdList = new ArrayList<String>(sumAlarmCountByWindturbine.keySet());
+//
+//        Map<String, List<ProBasicFeatureStat>> windturbineLimitAlarmCountMap = customAlarmCountList.stream().filter(s -> windturbineIdList.contains(s.getWindturbineId())).collect(Collectors.groupingBy(ProBasicFeatureStat::getWindturbineId));
+//
+//        for (Map.Entry<String, List<ProBasicFeatureStat>> entry :
+//                windturbineLimitAlarmCountMap.entrySet()) {
+//            Map<String, Integer> sumCountByAlertValue = entry.getValue().stream().collect(Collectors.groupingBy(ProBasicFeatureStat::getAlertValue, Collectors.summingInt(ProBasicFeatureStat::getCount)));
+//            Map<String, Double> sumKeepTimeByAlertValue = entry.getValue().stream().collect(Collectors.groupingBy(ProBasicFeatureStat::getAlertValue, Collectors.summingDouble(ProBasicFeatureStat::getTime)));
+//
+//            ProEconEarlyReportWt reportWindturbine = new ProEconEarlyReportWt()
+//                    .setId(String.valueOf(SnowflakeGenerator.generateId()))
+//                    .setWindturbineId(entry.getKey())
+//                    .setWindturbineCode(windturbineCache.getWindturbine(entry.getKey()).getCode())
+//                    .setModel(model)
+//                    .setCompared(false)
+//                    .setAlarmInfoList(new ArrayList<>())
+//                    .setReportId(reportId);
+//
+//            for (Map.Entry<String, Integer> sumCountEntry :
+//                    sumCountByAlertValue.entrySet()) {
+//                Optional<ProEconAlarmRule> first = alertRule2List.stream().filter(s -> String.valueOf(s.getEdnaValue()).equals(sumCountEntry.getKey())).findFirst();
+//                if (first.isPresent()) {
+//                    EarlyReportAlarm alarmInfo = new EarlyReportAlarm()
+//                            .setId(String.valueOf(SnowflakeGenerator.generateId()))
+//                            .setRuleId(first.get().getId())
+//                            .setAlarmType("custom")
+//                            .setRuleName(first.get().getName())
+//                            .setRuleDescription(first.get().getDescription())
+//                            .setRank(first.get().getRank())
+//                            .setCount(sumCountEntry.getValue())
+//                            .setReportWindturbineId(reportWindturbine.getId());
+//                    if (sumKeepTimeByAlertValue.containsKey(sumCountEntry.getKey())) {
+//                        alarmInfo.setKeepTime((long) sumKeepTimeByAlertValue.get(sumCountEntry.getKey()).doubleValue());
+//                    }
+//                    reportWindturbine.getAlarmInfoList().add(alarmInfo);
+//                }
+//            }
+//            resultList.add(reportWindturbine);
+//        }
+//
+//        List<ProEconEarlyReportWt> earlyReportWindturbineList = checkAndFixData(resultList, alertRule2List);
+//
+//        return getConclusion(alertRule2List, earlyReportWindturbineList);
+//
+//    }
+//
+//
+////
+////    /**
+////     * @param
+////     * @param windturbineInfoList 需要对比的风机报告信息(上次报告)
+////     * @param model               风机型号
+////     * @param reportId            本次报告的id
+////     * @param startTime           分析起始时间(本次分析)
+////     * @param endTime             分析结束时间(本次分析)
+////     * @return com.gyee.wisdom.alarm.schedule.entity.ProEconEarlyReportWt
+////     * @author Wanghs
+////     * @description 获取上次报告中的风机与本周报告对比信息
+////     * @date 2022/8/29
+////     **/
+////
+////    private List<ProEconEarlyReportWt> getCompareWindturbineInfo(String stationId,List<ProEconEarlyReportWt> windturbineInfoList, String model, String reportId, Date startTime, Date endTime) {
+////
+////        List<ProEconEarlyReportWt> resultList = new ArrayList<>();
+////        List<String> windturbineIdList = windturbineInfoList.stream().map(s -> s.getWindturbineId()).collect(Collectors.toList());
+////        List<EarlyReportAlarm> reportAlarmList = new ArrayList<>();
+////        windturbineInfoList.forEach(s -> {
+////            reportAlarmList.addAll(s.getAlarmInfoList());
+////        });
+////        List<ProEconAlarmRule> alertRule2List = proEconEarlyReportService.getAlertRule2(reportAlarmList.stream().map(s -> s.getRuleId()).collect(Collectors.toList()));
+////        List<AlarmSnap> customAlarmSnapList = proEconEarlyReportService.getAlarmSnap(stationId,alertRule2List.stream().map(s -> s.getEdnaValue()).collect(Collectors.toList()), "custom");
+////        List<ProBasicFeatureStat> customAlarmCountList = proEconEarlyReportService.getAlarmCount(customAlarmSnapList.stream().map(s -> s.getId()).collect(Collectors.toList()), startTime, endTime);
+////        Map<String, List<ProBasicFeatureStat>> windturbineAlarmCountMap = customAlarmCountList.stream().filter(s -> windturbineIdList.contains(s.getWindturbineId())).collect(Collectors.groupingBy(ProBasicFeatureStat::getWindturbineId));
+////
+////        for (Map.Entry<String, List<ProBasicFeatureStat>> entry :
+////                windturbineAlarmCountMap.entrySet()) {
+////            ProEconEarlyReportWt reportWindturbine = new ProEconEarlyReportWt()
+////                    .setId(String.valueOf(SnowflakeGenerator.generateId()))
+////                    .setWindturbineId(entry.getKey())
+////                    .setWindturbineCode(windturbineCache.getWindturbine(entry.getKey()).getCode())
+////                    .setModel(model)
+////                    .setCompared(true)
+////                    .setAlarmInfoList(new ArrayList<>())
+////                    .setReportId(reportId);
+////
+////            Optional<ProEconEarlyReportWt> oldReportWindturbine = windturbineInfoList.stream().filter(s -> s.getWindturbineId().equals(entry.getKey())).findFirst();
+////            if (oldReportWindturbine.isPresent())
+////                reportWindturbine.setCompareId(oldReportWindturbine.get().getId());
+////
+////            Map<String, Integer> sumCountByAlertValue = entry.getValue().stream().collect(Collectors.groupingBy(ProBasicFeatureStat::getAlertValue, Collectors.summingInt(ProBasicFeatureStat::getCount)));
+////            Map<String, Double> sumKeepTimeByAlertValue = entry.getValue().stream().collect(Collectors.groupingBy(ProBasicFeatureStat::getAlertValue, Collectors.summingDouble(ProBasicFeatureStat::getTime)));
+////
+////            for (Map.Entry<String, Integer> sumCountEntry :
+////                    sumCountByAlertValue.entrySet()) {
+////                Optional<ProEconAlarmRule> first = alertRule2List.stream().filter(s -> String.valueOf(s.getEdnaValue()).equals(sumCountEntry.getKey())).findFirst();
+////                if (first.isPresent()) {
+////                    EarlyReportAlarm alarmInfo = new EarlyReportAlarm()
+////                            .setId(String.valueOf(SnowflakeGenerator.generateId()))
+////                            .setRuleId(first.get().getId())
+////                            .setAlarmType("custom")
+////                            .setRuleName(first.get().getName())
+////                            .setRuleDescription(first.get().getDescription())
+////                            .setRank(first.get().getRank())
+////                            .setCount(sumCountEntry.getValue())
+////                            .setReportWindturbineId(reportWindturbine.getId());
+////                    if (sumKeepTimeByAlertValue.containsKey(sumCountEntry.getKey())) {
+////                        alarmInfo.setKeepTime((long) sumKeepTimeByAlertValue.get(sumCountEntry.getKey()).doubleValue());
+////                    }
+////                    reportWindturbine.getAlarmInfoList().add(alarmInfo);
+////                }
+////            }
+////            resultList.add(reportWindturbine);
+////        }
+////
+////        List<ProEconEarlyReportWt> earlyReportWindturbineList = checkAndFixData(resultList, alertRule2List);
+////        return earlyReportWindturbineList;
+////    }
+////
+////    private List<ProEconEarlyReportWt> getConclusion(List<ProEconAlarmRule> alertRule2List, List<ProEconEarlyReportWt> reportWindturbineList) {
+////
+////        List<EarlyReportConclusion> listByPart = ConclusionCache.getListByPart(alertRule2List.stream().map(s -> s.getRelatedParts()).collect(Collectors.toList()));
+////
+////        for (ProEconEarlyReportWt windturbineData :
+////                reportWindturbineList) {
+////            if (!windturbineData.getWindturbineId().equals("全场平均")) {
+////                StringBuilder firstStr = new StringBuilder("风机" + windturbineData.getWindturbineCode() + ":发生");
+////                for (int i = 0; i < windturbineData.getAlarmInfoList().size(); i++) {
+////                    EarlyReportAlarm earlyReportAlarm = windturbineData.getAlarmInfoList().get(i);
+////                    firstStr.append(earlyReportAlarm.getRuleName());
+////                    firstStr.append(earlyReportAlarm.getCount());
+////                    firstStr.append("次,总持续时长为");
+////                    firstStr.append(earlyReportAlarm.getKeepTime() + "分钟;");
+////                }
+////                StringBuilder secondStr = new StringBuilder("可能存在的隐患:").append("\n");
+////                StringBuilder thridStr = new StringBuilder("建议排查:").append("\n");
+////
+////                for (int i = 0; i < listByPart.size(); i++) {
+////                    secondStr.append("\b");
+////                    secondStr.append("\b");
+////                    secondStr.append("\b");
+////                    secondStr.append("-" + listByPart.get(i).getHiddanger());
+////                    secondStr.append("\n");
+////
+////                    thridStr.append("\b");
+////                    thridStr.append("\b");
+////                    thridStr.append("\b");
+////                    thridStr.append("-" + listByPart.get(i).getCheckmatter());
+////                    thridStr.append("\n");
+////                }
+////                StringBuilder resultStr = new StringBuilder();
+////
+////                resultStr.append(firstStr);
+////                resultStr.append("\n");
+////                resultStr.append(secondStr);
+////                resultStr.append("\n");
+////                resultStr.append(thridStr);
+////                windturbineData.setConclusion(resultStr.toString());
+////            }
+////        }
+////        return reportWindturbineList;
+////
+////    }
+////
+////    //数据校验,避免部分规则没有数据的情况
+////    public List<ProEconEarlyReportWt> checkAndFixData(List<ProEconEarlyReportWt> earlyReportWindturbineList,List<ProEconAlarmRule> rule2List){
+////
+////        List<String> ruleIdList = rule2List.stream().map(s -> s.getId()).collect(Collectors.toList());
+////        earlyReportWindturbineList.forEach(s -> {
+//////            if (!s.getWindturbineId().equals("全场平均") ) {
+////            List<EarlyReportAlarm> alarmInfoList = s.getAlarmInfoList();
+////            if (alarmInfoList.size() < reportParam.getCustomRuleId().size()) {
+////
+////                Collection subtract = CollectionUtils.subtract(ruleIdList, alarmInfoList.stream().map(k -> k.getRuleId()).collect(Collectors.toList()));
+////
+////                List<String> arrayList = new ArrayList<String>(subtract);
+////
+////                if (arrayList.size() > 0) {
+////                    arrayList.stream().forEach(l -> {
+////
+////                        Optional<ProEconAlarmRule> first = rule2List.stream().filter(m -> m.getId().equals(l)).findFirst();
+////                        if (first.isPresent()) {
+////                            EarlyReportAlarm alarmInfo = new EarlyReportAlarm()
+////                                    .setId(String.valueOf(SnowflakeGenerator.generateId()))
+////                                    .setRuleId(first.get().getId())
+////                                    .setAlarmType("custom")
+////                                    .setRuleName(first.get().getName())
+////                                    .setRuleDescription(first.get().getDescription())
+////                                    .setRank(first.get().getRank())
+////                                    .setCount(0)
+////                                    .setKeepTime(0)
+////                                    .setReportWindturbineId(s.getId());
+////                            alarmInfoList.add(alarmInfo);
+////                        }
+////
+////                    });
+////                }
+////
+////
+////            }
+//////            }
+////
+////        });
+////
+////        return earlyReportWindturbineList;
+////    }
+//}

+ 149 - 150
alarm-stat/src/main/java/com/gyee/alarm/service/FeatureStatService.java

@@ -1,150 +1,149 @@
-package com.gyee.alarm.service;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.gyee.alarm.init.CacheContext;
-import com.gyee.alarm.model.auto.*;
-import cn.hutool.core.bean.BeanUtil;
-import com.gyee.alarm.model.auto.ProBasicFeatureStat;
-import com.gyee.alarm.model.vo.AlarmType;
-import com.gyee.alarm.service.auto.IAlarmTsService;
-import com.gyee.alarm.service.auto.IProBasicFeatureStatService;
-import com.gyee.alarm.util.DateUtils;
-import com.gyee.alarm.util.SnowflakeGenerator;
-import com.gyee.alarm.util.StringUtils;
-
-
-import javafx.scene.chart.CategoryAxis;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.sql.Timestamp;
-import java.util.*;
-import java.util.stream.Collectors;
-
-@Service
-
-public class FeatureStatService {
-    @Resource
-    private IAlarmTsService alarmTsService;
-
-    @Resource
-    private IProBasicFeatureStatService proBasicFeatureStatService;
-
-    public void findFeatureStatList(Date recordDate) {
-
-
-        Calendar c = Calendar.getInstance();
-        c.setTime(recordDate);
-        Date begin = DateUtils.truncate(c.getTime());
-        Date end = DateUtils.addDays(begin, 1);
-
-        Date statDate=DateUtils.truncate(recordDate);
-
-        QueryWrapper<ProBasicFeatureStat> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("stat_date", statDate);
-        //判断是否有重复记录,先删除重复记录
-        List<String> idls = proBasicFeatureStatService.list(queryWrapper).stream()
-                .map(ProBasicFeatureStat::getId)
-                .collect(Collectors.toList());
-
-        if (idls.size() > 0) {
-
-            List<String> templs = new ArrayList<>();
-            for (String vo : idls) {
-                templs.add(vo);
-                if (templs.size() == 100) {
-                    proBasicFeatureStatService.removeByIds(templs);
-                    templs = new ArrayList<>();
-                }
-
-            }
-
-            if (!templs.isEmpty()) {
-                proBasicFeatureStatService.removeByIds(templs);
-            }
-
-        }
-
-        List<ProBasicFeatureStat> fsls = alarmTsService.findFeatureStatList(begin.getTime(), end.getTime());
-
-        Map<String, ProBasicFeatureStat> map = new HashMap<>();
-
-
-        if (!fsls.isEmpty()) {
-            for (ProBasicFeatureStat fs : fsls) {
-                if (StringUtils.notEmp(fs.getTypeCode()) && CacheContext.alarmTypeMap.containsKey(fs.getTypeCode())) {
-                    ProEconAlarmType at = CacheContext.alarmTypeMap.get(fs.getTypeCode());
-                    fs.setTypeName(at.getName());
-                }
-                fs.setStatDate(new Timestamp(statDate.getTime()));
-                fs.setId(String.valueOf(SnowflakeGenerator.generateId()));
-                StringBuilder sb = new StringBuilder();
-                sb.append(fs.getWtId()).append("_").append(fs.getAlarmid());
-                map.put(String.valueOf(sb), fs);
-            }
-        }
-        List<ProBasicFeatureStat> vos = new ArrayList<>();
-        for (ProBasicEquipment wt : CacheContext.wtls) {
-
-            StringBuilder sb=new StringBuilder();
-            sb.append(wt.getWindpowerstationId()).append(wt.getModelId());
-            if(CacheContext.wtAlarmMap.containsKey(String.valueOf(sb))) {
-                List<ProEconAlarmConfiguration> ls = CacheContext.wtAlarmMap.get(String.valueOf(sb));
-                for (ProEconAlarmConfiguration at : ls) {
-
-                    setValues(statDate, map, vos, wt, at);
-                }
-            }
-
-        }
-
-        List<ProBasicFeatureStat> templs = new ArrayList<>();
-        for (ProBasicFeatureStat vo : vos) {
-            templs.add(vo);
-            if (templs.size() == 100) {
-                proBasicFeatureStatService.saveBatch(templs);
-                templs = new ArrayList<>();
-            }
-
-        }
-
-        if (!templs.isEmpty()) {
-            proBasicFeatureStatService.saveBatch(templs);
-        }
-
-
-    }
-
-    private  static void setValues(Date statDate,Map<String, ProBasicFeatureStat> map, List<ProBasicFeatureStat> vos, ProBasicEquipment wt, ProEconAlarmConfiguration at) {
-
-        ProBasicFeatureStat fs = new ProBasicFeatureStat();
-
-        StringBuilder sb = new StringBuilder();
-        sb.append(fs.getWtId()).append("_").append(at.getId());
-        if (map.containsKey(String.valueOf(sb))) {
-            ProBasicFeatureStat old = map.get(String.valueOf(sb));
-            BeanUtil.copyProperties(old, fs);
-        } else {
-            fs.setStatDate(new Timestamp(statDate.getTime()));
-            fs.setId(String.valueOf(SnowflakeGenerator.generateId()));
-            fs.setWtId(wt.getId());
-            fs.setStationId(wt.getWindpowerstationId());
-            fs.setTypeCode(at.getComponents());
-            if(CacheContext.alarmTypeMap.containsKey(at.getComponents()))
-            {
-                fs.setTypeName(CacheContext.alarmTypeMap.get(at.getComponents()).getName());
-            }
-            fs.setAlarmid(at.getId());
-            fs.setDescription(at.getDescription());
-            fs.setTotal(0l);
-            fs.setAvgSeconds(0.0);
-            fs.setMaxSeconds(0.0);
-            fs.setMinSeconds(0.0);
-            fs.setTotalSeconds(0.0);
-
-        }
-        vos.add(fs);
-    }
-
-
-}
+//package com.gyee.alarm.service;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.gyee.alarm.init.CacheContext;
+//import com.gyee.alarm.model.auto.*;
+//import cn.hutool.core.bean.BeanUtil;
+//import com.gyee.alarm.model.auto.ProBasicFeatureStat;
+//import com.gyee.alarm.model.vo.AlarmType;
+//import com.gyee.alarm.service.auto.IAlarmTsService;
+//import com.gyee.alarm.service.auto.IProBasicFeatureStatService;
+//import com.gyee.alarm.util.DateUtils;
+//import com.gyee.alarm.util.SnowflakeGenerator;
+//import com.gyee.alarm.util.StringUtils;
+//
+//
+//import javafx.scene.chart.CategoryAxis;
+//import org.springframework.stereotype.Service;
+//
+//import javax.annotation.Resource;
+//import java.sql.Timestamp;
+//import java.util.*;
+//import java.util.stream.Collectors;
+//
+//@Service
+//public class FeatureStatService {
+//    @Resource
+//    private IAlarmTsService alarmTsService;
+//
+//    @Resource
+//    private IProBasicFeatureStatService proBasicFeatureStatService;
+//
+//    public void findFeatureStatList(Date recordDate) {
+//
+//
+//        Calendar c = Calendar.getInstance();
+//        c.setTime(recordDate);
+//        Date begin = DateUtils.truncate(c.getTime());
+//        Date end = DateUtils.addDays(begin, 1);
+//
+//        Date statDate=DateUtils.truncate(recordDate);
+//
+//        QueryWrapper<ProBasicFeatureStat> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("stat_date", statDate);
+//        //判断是否有重复记录,先删除重复记录
+//        List<String> idls = proBasicFeatureStatService.list(queryWrapper).stream()
+//                .map(ProBasicFeatureStat::getId)
+//                .collect(Collectors.toList());
+//
+//        if (idls.size() > 0) {
+//
+//            List<String> templs = new ArrayList<>();
+//            for (String vo : idls) {
+//                templs.add(vo);
+//                if (templs.size() == 100) {
+//                    proBasicFeatureStatService.removeByIds(templs);
+//                    templs = new ArrayList<>();
+//                }
+//
+//            }
+//
+//            if (!templs.isEmpty()) {
+//                proBasicFeatureStatService.removeByIds(templs);
+//            }
+//
+//        }
+//
+//        List<ProBasicFeatureStat> fsls = alarmTsService.findFeatureStatList(begin.getTime(), end.getTime());
+//
+//        Map<String, ProBasicFeatureStat> map = new HashMap<>();
+//
+//
+//        if (!fsls.isEmpty()) {
+//            for (ProBasicFeatureStat fs : fsls) {
+//                if (StringUtils.notEmp(fs.getTypeCode()) && CacheContext.alarmTypeMap.containsKey(fs.getTypeCode())) {
+//                    ProEconAlarmType at = CacheContext.alarmTypeMap.get(fs.getTypeCode());
+//                    fs.setTypeName(at.getName());
+//                }
+//                fs.setStatDate(new Timestamp(statDate.getTime()));
+//                fs.setId(String.valueOf(SnowflakeGenerator.generateId()));
+//                StringBuilder sb = new StringBuilder();
+//                sb.append(fs.getWtId()).append("_").append(fs.getAlarmid());
+//                map.put(String.valueOf(sb), fs);
+//            }
+//        }
+//        List<ProBasicFeatureStat> vos = new ArrayList<>();
+//        for (ProBasicEquipment wt : CacheContext.wtls) {
+//
+//            StringBuilder sb=new StringBuilder();
+//            sb.append(wt.getWindpowerstationId()).append(wt.getModelId());
+//            if(CacheContext.wtAlarmMap.containsKey(String.valueOf(sb))) {
+//                List<ProEconAlarmConfiguration> ls = CacheContext.wtAlarmMap.get(String.valueOf(sb));
+//                for (ProEconAlarmConfiguration at : ls) {
+//
+//                    setValues(statDate, map, vos, wt, at);
+//                }
+//            }
+//
+//        }
+//
+//        List<ProBasicFeatureStat> templs = new ArrayList<>();
+//        for (ProBasicFeatureStat vo : vos) {
+//            templs.add(vo);
+//            if (templs.size() == 100) {
+//                proBasicFeatureStatService.saveBatch(templs);
+//                templs = new ArrayList<>();
+//            }
+//
+//        }
+//
+//        if (!templs.isEmpty()) {
+//            proBasicFeatureStatService.saveBatch(templs);
+//        }
+//
+//
+//    }
+//
+//    private  static void setValues(Date statDate,Map<String, ProBasicFeatureStat> map, List<ProBasicFeatureStat> vos, ProBasicEquipment wt, ProEconAlarmConfiguration at) {
+//
+//        ProBasicFeatureStat fs = new ProBasicFeatureStat();
+//
+//        StringBuilder sb = new StringBuilder();
+//        sb.append(fs.getWtId()).append("_").append(at.getId());
+//        if (map.containsKey(String.valueOf(sb))) {
+//            ProBasicFeatureStat old = map.get(String.valueOf(sb));
+//            BeanUtil.copyProperties(old, fs);
+//        } else {
+//            fs.setStatDate(new Timestamp(statDate.getTime()));
+//            fs.setId(String.valueOf(SnowflakeGenerator.generateId()));
+//            fs.setWtId(wt.getId());
+//            fs.setStationId(wt.getWindpowerstationId());
+//            fs.setTypeCode(at.getComponents());
+//            if(CacheContext.alarmTypeMap.containsKey(at.getComponents()))
+//            {
+//                fs.setTypeName(CacheContext.alarmTypeMap.get(at.getComponents()).getName());
+//            }
+//            fs.setAlarmid(at.getId());
+//            fs.setDescription(at.getDescription());
+//            fs.setTotal(0l);
+//            fs.setAvgSeconds(0.0);
+//            fs.setMaxSeconds(0.0);
+//            fs.setMinSeconds(0.0);
+//            fs.setTotalSeconds(0.0);
+//
+//        }
+//        vos.add(fs);
+//    }
+//
+//
+//}

+ 1 - 1
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IAlarmTsService.java

@@ -62,6 +62,6 @@ public interface IAlarmTsService extends IService<AlarmTs> {
     public List<AlarmSimpleVo> selectLastRowByTbname(String superTableName, String tbnames);
     public List<AlarmSimpleVo> selectLastRowByTbname(String superTableName, String tbnames);
 
 
     public  List<ProBasicFeatureStat> findFeatureStatList(long begin, long end);
     public  List<ProBasicFeatureStat> findFeatureStatList(long begin, long end);
-
+    public List<ProBasicFeatureStat> findCtFeatureStatCustom(long begin, long end, String stationid, String modelId, List<String> components,List<String> alarmid);
 }
 }
 
 

+ 4 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconAlarmInfoService.java

@@ -3,6 +3,8 @@ package com.gyee.alarm.service.auto;
 import com.gyee.alarm.model.auto.ProEconAlarmInfo;
 import com.gyee.alarm.model.auto.ProEconAlarmInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 
+import java.util.List;
+
 /**
 /**
  * <p>
  * <p>
  * 报警缓存表 服务类
  * 报警缓存表 服务类
@@ -13,4 +15,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface IProEconAlarmInfoService extends IService<ProEconAlarmInfo> {
 public interface IProEconAlarmInfoService extends IService<ProEconAlarmInfo> {
 
 
+    public List<ProEconAlarmInfo> queryAlarmInfo(String wtId,String type);
+
 }
 }

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportAlarmService.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 预警报告报警 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportAlarmService extends IService<ProEconEarlyReportAlarm> {
+
+    List<ProEconEarlyReportAlarm> findByWindturbineReportId( String windturbineReportId);
+}

+ 16 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportConclusioService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportConclusio;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警报告结论 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportConclusioService extends IService<ProEconEarlyReportConclusio> {
+
+}

+ 22 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportService.java

@@ -0,0 +1,22 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProBasicFeatureStat;
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 预警报告 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportService extends IService<ProEconEarlyReport> {
+
+    public List<ProEconEarlyReport> findEarlyReportByDate(String stationId, Date startTime, Date endTime);
+    public ProBasicFeatureStat getAvgAlarmCount(List<ProBasicFeatureStat> alarmCountList);
+}

+ 28 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportWtService.java

@@ -0,0 +1,28 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 设备预警报告 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportWtService extends IService<ProEconEarlyReportWt> {
+
+   public List<ProEconEarlyReportWt> findByReportId(String reportId);
+
+
+    public List<ProEconEarlyReportWt> findByIds(List<String> idList);
+
+
+    public List<ProEconEarlyReportWt> findByReportIds( List<String> reportIdList);
+
+}

+ 16 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyWarnScoreService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyWarnScore;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警得分 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyWarnScoreService extends IService<ProEconEarlyWarnScore> {
+
+}

+ 11 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/AlarmTsServiceImpl.java

@@ -7,6 +7,7 @@ import com.gyee.alarm.model.auto.ProBasicFeatureStat;
 import com.gyee.alarm.model.vo.*;
 import com.gyee.alarm.model.vo.*;
 import com.gyee.alarm.service.auto.IAlarmTsService;
 import com.gyee.alarm.service.auto.IAlarmTsService;
 import com.gyee.alarm.util.StringUtils;
 import com.gyee.alarm.util.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -164,4 +165,14 @@ public class AlarmTsServiceImpl extends ServiceImpl<AlarmTsMapper, AlarmTs> impl
 
 
         return ls;
         return ls;
     }
     }
+
+    public List<ProBasicFeatureStat> findCtFeatureStatCustom(long begin, long end, String stationid, String modelId, List<String> components,List<String> alarmid)
+    {
+        List<ProBasicFeatureStat> ls = new ArrayList<>();
+        if (StringUtils.notEmp(begin) && StringUtils.notEmp(end) && StringUtils.notEmp(stationid) && StringUtils.notEmp(modelId)) {
+            ls = alarmTsMapper.findCtFeatureStatCustom(begin, end,stationid, modelId, components,alarmid);
+        }
+
+        return ls;
+    }
 }
 }

+ 22 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconAlarmInfoServiceImpl.java

@@ -1,11 +1,17 @@
 package com.gyee.alarm.service.auto.impl;
 package com.gyee.alarm.service.auto.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.gyee.alarm.model.auto.ProEconAlarmInfo;
 import com.gyee.alarm.model.auto.ProEconAlarmInfo;
 import com.gyee.alarm.mapper.auto.ProEconAlarmInfoMapper;
 import com.gyee.alarm.mapper.auto.ProEconAlarmInfoMapper;
+import com.gyee.alarm.model.auto.ProEconAlarmInfo;
 import com.gyee.alarm.service.auto.IProEconAlarmInfoService;
 import com.gyee.alarm.service.auto.IProEconAlarmInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.alarm.util.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
 /**
  * <p>
  * <p>
  * 报警缓存表 服务实现类
  * 报警缓存表 服务实现类
@@ -17,4 +23,20 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class ProEconAlarmInfoServiceImpl extends ServiceImpl<ProEconAlarmInfoMapper, ProEconAlarmInfo> implements IProEconAlarmInfoService {
 public class ProEconAlarmInfoServiceImpl extends ServiceImpl<ProEconAlarmInfoMapper, ProEconAlarmInfo> implements IProEconAlarmInfoService {
 
 
+
+    public List<ProEconAlarmInfo> queryAlarmInfo(String wtId,String type)
+    {
+        List<ProEconAlarmInfo> alarmInfols =new ArrayList<>();
+
+        if(StringUtils.notEmp(wtId) && StringUtils.notEmp(type))
+        {
+            QueryWrapper<ProEconAlarmInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("alarm_type",type)
+                    .eq("device_id",wtId);
+           alarmInfols = list(queryWrapper);
+
+        }
+
+        return alarmInfols;
+    }
 }
 }

+ 38 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportAlarmServiceImpl.java

@@ -0,0 +1,38 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportAlarmMapper;
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.gyee.alarm.service.auto.IProEconEarlyReportAlarmService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.alarm.util.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 预警报告报警 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportAlarmServiceImpl extends ServiceImpl<ProEconEarlyReportAlarmMapper, ProEconEarlyReportAlarm> implements IProEconEarlyReportAlarmService {
+
+    @Resource
+   private ProEconEarlyReportAlarmMapper proEconEarlyReportAlarmMapper;
+
+    public List<ProEconEarlyReportAlarm> findByWindturbineReportId(String windturbineReportId)
+    {
+        List<ProEconEarlyReportAlarm> ls=new ArrayList<>();
+        if(StringUtils.notEmp(windturbineReportId))
+        {
+            ls= proEconEarlyReportAlarmMapper.findByWindturbineReportId(windturbineReportId);
+        }
+        return ls;
+    }
+}

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportConclusioServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportConclusio;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportConclusioMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyReportConclusioService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警报告结论 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportConclusioServiceImpl extends ServiceImpl<ProEconEarlyReportConclusioMapper, ProEconEarlyReportConclusio> implements IProEconEarlyReportConclusioService {
+
+}

+ 55 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportServiceImpl.java

@@ -0,0 +1,55 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportAlarmMapper;
+import com.gyee.alarm.model.auto.ProBasicFeatureStat;
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportMapper;
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.gyee.alarm.service.auto.IProEconEarlyReportService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.alarm.util.StringUtils;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.OptionalDouble;
+
+/**
+ * <p>
+ * 预警报告 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportServiceImpl extends ServiceImpl<ProEconEarlyReportMapper, ProEconEarlyReport> implements IProEconEarlyReportService {
+
+
+    @Resource
+    private ProEconEarlyReportMapper proEconEarlyReportMapper;
+
+    public List<ProEconEarlyReport> findEarlyReportByDate(String stationId, Date startTime,Date endTime)
+    {
+        List<ProEconEarlyReport> ls=new ArrayList<>();
+        if(StringUtils.notEmp(stationId) && StringUtils.notEmp(startTime) && StringUtils.notEmp(endTime))
+        {
+            ls= proEconEarlyReportMapper.findEarlyReportByDate(stationId,  startTime, endTime);
+        }
+        return ls;
+    }
+
+
+    public ProBasicFeatureStat getAvgAlarmCount(List<ProBasicFeatureStat> alarmCountList) {
+        OptionalDouble avgCount = alarmCountList.stream().mapToLong(ProBasicFeatureStat::getTotal).average();
+        OptionalDouble avgTime = alarmCountList.stream().mapToDouble(ProBasicFeatureStat::getTotalSeconds).average();
+        ProBasicFeatureStat alarmCount = new ProBasicFeatureStat();
+        alarmCount.setTotal(avgCount.isPresent() ? (long) avgCount.getAsDouble() : 0);
+        alarmCount.setTotalSeconds(avgTime.isPresent() ? avgTime.getAsDouble() : 0);
+        return alarmCount;
+
+    }
+}

+ 60 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportWtServiceImpl.java

@@ -0,0 +1,60 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportWtMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyReportWtService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.alarm.util.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 设备预警报告 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportWtServiceImpl extends ServiceImpl<ProEconEarlyReportWtMapper, ProEconEarlyReportWt> implements IProEconEarlyReportWtService {
+
+    @Resource
+    private  ProEconEarlyReportWtMapper proEconEarlyReportWtMapper;
+
+    public List<ProEconEarlyReportWt> findByReportId(String reportId)
+    {
+        List<ProEconEarlyReportWt> ls=new ArrayList<>();
+        if(StringUtils.notEmp(reportId))
+        {
+            ls= proEconEarlyReportWtMapper.findByReportId(reportId);
+        }
+       return ls;
+    }
+
+
+    public List<ProEconEarlyReportWt> findByIds(List<String> idList)
+    {
+        List<ProEconEarlyReportWt> ls=new ArrayList<>();
+        if(StringUtils.notEmp(idList))
+        {
+            ls= proEconEarlyReportWtMapper.findByIds(idList);
+        }
+        return ls;
+    }
+
+
+    public List<ProEconEarlyReportWt> findByReportIds( List<String> reportIdList)
+    {
+        List<ProEconEarlyReportWt> ls=new ArrayList<>();
+        if(StringUtils.notEmp(reportIdList))
+        {
+            ls= proEconEarlyReportWtMapper.findByReportIds(reportIdList);
+        }
+        return ls;
+    }
+
+}

+ 20 - 0
alarm-stat/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyWarnScoreServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyWarnScore;
+import com.gyee.alarm.mapper.auto.ProEconEarlyWarnScoreMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyWarnScoreService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警得分 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyWarnScoreServiceImpl extends ServiceImpl<ProEconEarlyWarnScoreMapper, ProEconEarlyWarnScore> implements IProEconEarlyWarnScoreService {
+
+}

+ 63 - 63
alarm-stat/src/main/java/com/gyee/alarm/task/SaticScheduleTask.java

@@ -1,63 +1,63 @@
-package com.gyee.alarm.task;
-
-
-import com.gyee.alarm.service.FeatureStatService;
-import com.gyee.alarm.util.DateUtils;
-
-import com.xxl.job.core.context.XxlJobHelper;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.Executor;
-
-/**
- * @ClassName : SaticScheduleTask
- * @Description : 调度
- */
-
-
-@Component
-public class SaticScheduleTask {
-
-    private static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
-    @Resource
-    private FeatureStatService featureStatService;
-
-
-    //3.添加定时任务
-
-    /**
-     * 健康状态判定
-     */
-//    @Scheduled(cron = "0 0/1 * * * ?")
-    //或直接指定时间间隔,例如:5秒
-    //@Scheduled(fixedRate=5000)
-    @XxlJob("alarmStat_findFeatureStatList")
-    public void alarmStat_findFeatureStatList() {
-
-
-        XxlJobHelper.log("报警按模块统计调度程序执行开始!........");
-
-        try {
-            Calendar c = Calendar.getInstance();
-
-//            Date begin = DateUtils.truncate(c.getTime());
-//            Date end = DateUtils.addDays(begin, 1);
-
-            featureStatService.findFeatureStatList(c.getTime());
-        } catch (Exception e) {
-
-            e.printStackTrace();
-        }
-
-        XxlJobHelper.log("报警按模块统计调度任务处理完成!........");
-    }
-
-
-}
+//package com.gyee.alarm.task;
+//
+//
+//import com.gyee.alarm.service.FeatureStatService;
+//import com.gyee.alarm.util.DateUtils;
+//
+//import com.xxl.job.core.context.XxlJobHelper;
+//import com.xxl.job.core.handler.annotation.XxlJob;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.stereotype.Component;
+//
+//import javax.annotation.Resource;
+//import java.util.Calendar;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.concurrent.Executor;
+//
+///**
+// * @ClassName : SaticScheduleTask
+// * @Description : 调度
+// */
+//
+//
+//@Component
+//public class SaticScheduleTask {
+//
+//    private static Logger logger = LoggerFactory.getLogger(SaticScheduleTask.class);
+//    @Resource
+//    private FeatureStatService featureStatService;
+//
+//
+//    //3.添加定时任务
+//
+//    /**
+//     * 健康状态判定
+//     */
+////    @Scheduled(cron = "0 0/1 * * * ?")
+//    //或直接指定时间间隔,例如:5秒
+//    //@Scheduled(fixedRate=5000)
+//    @XxlJob("alarmStat_findFeatureStatList")
+//    public void alarmStat_findFeatureStatList() {
+//
+//
+//        XxlJobHelper.log("报警按模块统计调度程序执行开始!........");
+//
+//        try {
+//            Calendar c = Calendar.getInstance();
+//
+////            Date begin = DateUtils.truncate(c.getTime());
+////            Date end = DateUtils.addDays(begin, 1);
+//
+//            featureStatService.findFeatureStatList(c.getTime());
+//        } catch (Exception e) {
+//
+//            e.printStackTrace();
+//        }
+//
+//        XxlJobHelper.log("报警按模块统计调度任务处理完成!........");
+//    }
+//
+//
+//}

+ 6 - 2
alarm-stat/src/main/resources/application-jn.yml

@@ -168,11 +168,15 @@ frequency:
   #切入切出
   #切入切出
   cutinandout: 1
   cutinandout: 1
 
 
+#线程数量
 task-count: 10
 task-count: 10
-
+##线程写入休息
 interval: 1
 interval: 1
 
 
-
+##时间间隔(天),即从当日0点,向前间隔天数,为计算区间
+interval_day: 1
+##结果数量 限制(取前多少个)
+limit: 12
 
 
 
 
 
 

+ 0 - 2
alarm-web/src/main/java/com/gyee/alarm/controller/AuthController.java

@@ -38,7 +38,6 @@ public class AuthController {
                 tokenService.sessionMap.put(tokenVo.getToken(), tokenVo);
                 tokenService.sessionMap.put(tokenVo.getToken(), tokenVo);
             }
             }
 
 
-            tokenService.judegeSession();
         }
         }
 
 
         return AjaxResult.successData(AjaxStatus.success.code, "ok");
         return AjaxResult.successData(AjaxStatus.success.code, "ok");
@@ -72,7 +71,6 @@ public class AuthController {
 
 
         }
         }
 
 
-        tokenService.judegeSession();
 
 
         return AjaxResult.successData(AjaxStatus.success.code, "ok");
         return AjaxResult.successData(AjaxStatus.success.code, "ok");
     }
     }

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportAlarmController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警报告报警 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report-alarm")
+public class ProEconEarlyReportAlarmController {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportConclusioController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警报告结论 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report-conclusio")
+public class ProEconEarlyReportConclusioController {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警报告 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report")
+public class ProEconEarlyReportController {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyReportWtController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 设备预警报告 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-report-wt")
+public class ProEconEarlyReportWtController {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/ProEconEarlyWarnScoreController.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 预警得分 前端控制器
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@RestController
+@RequestMapping("//pro-econ-early-warn-score")
+public class ProEconEarlyWarnScoreController {
+
+}

+ 101 - 101
alarm-web/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -87,11 +87,11 @@ public class CacheContext implements CommandLineRunner {
     private IProEconAlarmRuleService proEconAlarmRuleService;
     private IProEconAlarmRuleService proEconAlarmRuleService;
     @Resource
     @Resource
     private IProEconAlarmTypeService proEconAlarmTypeService;
     private IProEconAlarmTypeService proEconAlarmTypeService;
-    public static Map<String,Map<String, ProBasicPowerstationPoint>> weatherwppointmap =new HashMap<>();
-    public static List<ProBasicWeatherStation>  weawpls = new ArrayList<>();
-    public static Map<String,Map<String,ProBasicEquipment>> cmwtmap = new HashMap<>();
-    public static Map<String,List<ProBasicEquipment>> rgwtlsmap = new HashMap<>();
-    public static Map<String,List<ProBasicEquipment>> cmwtlsmap = new HashMap<>();
+    public static Map<String, Map<String, ProBasicPowerstationPoint>> weatherwppointmap = new HashMap<>();
+    public static List<ProBasicWeatherStation> weawpls = new ArrayList<>();
+    public static Map<String, Map<String, ProBasicEquipment>> cmwtmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> rgwtlsmap = new HashMap<>();
+    public static Map<String, List<ProBasicEquipment>> cmwtlsmap = new HashMap<>();
     public static Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
     public static Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
     public static List<ProBasicEquipment> wtls = new ArrayList<>();
     public static List<ProBasicEquipment> wtls = new ArrayList<>();
     public static List<ProBasicEquipment> wt_fjls = new ArrayList<>();
     public static List<ProBasicEquipment> wt_fjls = new ArrayList<>();
@@ -172,28 +172,30 @@ public class CacheContext implements CommandLineRunner {
     public static List<ProEconAlarmConfiguration> wtalarmls = new ArrayList<>();
     public static List<ProEconAlarmConfiguration> wtalarmls = new ArrayList<>();
     public static List<ProEconAlarmConfiguration> customalarmls = new ArrayList<>();
     public static List<ProEconAlarmConfiguration> customalarmls = new ArrayList<>();
     public static Map<String, Map<String, ProBasicStatusPoint>> pointdismap = new HashMap<>();
     public static Map<String, Map<String, ProBasicStatusPoint>> pointdismap = new HashMap<>();
-    public static Map<String,List<ProEconAlarmRule>> ctAlarmMap=new HashMap<>();
-    public static Map<String,List<ProEconAlarmConfiguration>> wtAlarmMap=new HashMap<>();
-    public static Map<String,ProEconAlarmConfiguration> alarmMap=new HashMap<>();
+    public static Map<String, List<ProEconAlarmRule>> ctAlarmlsMap = new HashMap<>();
 
 
-    public static List<AlarmVo> alarmWtList=new ArrayList<>();
-    public static Map<String,AlarmVo> alarmWtMap=new HashMap<>();
+    public static Map<String, ProEconAlarmRule> ctAlarmMap = new HashMap<>();
+    public static Map<String, List<ProEconAlarmConfiguration>> wtAlarmMap = new HashMap<>();
+    public static Map<String, ProEconAlarmConfiguration> alarmMap = new HashMap<>();
 
 
-    public static List<AlarmVo> alarmBtList=new ArrayList<>();
-    public static Map<String,AlarmVo> alarmBtMap=new HashMap<>();
+    public static List<AlarmVo> alarmWtList = new ArrayList<>();
+    public static Map<String, AlarmVo> alarmWtMap = new HashMap<>();
+
+    public static List<AlarmVo> alarmBtList = new ArrayList<>();
+    public static Map<String, AlarmVo> alarmBtMap = new HashMap<>();
+
+    public static List<AlarmVo> alarmCtList = new ArrayList<>();
+    public static Map<String, AlarmVo> alarmCtMap = new HashMap<>();
+    public static Map<String, ProEconAlarmType> alarmTypeMap = new HashMap<>();
+    public static List<ProEconAlarmType> alarmTypeList = new ArrayList<>();
+    public static Map<String, Set<ProEconEquipmentmodel>> wpByEmMap = new HashMap<>();
 
 
-    public static List<AlarmVo> alarmCtList=new ArrayList<>();
-    public static Map<String,AlarmVo> alarmCtMap=new HashMap<>();
-    public static Map<String,ProEconAlarmType> alarmTypeMap=new HashMap<>();
-    public static List<ProEconAlarmType> alarmTypeList=new ArrayList<>();
-    public static   Map<String,Set<ProEconEquipmentmodel>> wpByEmMap=new HashMap<>();
     @Override
     @Override
 
 
     public void run(String... args) throws Exception {
     public void run(String... args) throws Exception {
         logger.info("缓存开始------------------------------------------------------------");
         logger.info("缓存开始------------------------------------------------------------");
 
 
 
 
-
         List<String> runWpids = Arrays.asList(runWindpowerstation.split(","));
         List<String> runWpids = Arrays.asList(runWindpowerstation.split(","));
         logger.info(runWpids.get(0) + "------------------" + runWpids.size());
         logger.info(runWpids.get(0) + "------------------" + runWpids.size());
         wsls = proBasicWeatherStationService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationId()) && i.getIsAble() == 1).collect(Collectors.toList());
         wsls = proBasicWeatherStationService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationId()) && i.getIsAble() == 1).collect(Collectors.toList());
@@ -376,7 +378,6 @@ public class CacheContext implements CommandLineRunner {
             }
             }
 
 
 
 
-
             wtmap.put(wt.getId(), wt);
             wtmap.put(wt.getId(), wt);
             //标杆风机初始化
             //标杆风机初始化
             wtstandardmap.put(wt.getId(), wt.getId());
             wtstandardmap.put(wt.getId(), wt.getId());
@@ -386,58 +387,57 @@ public class CacheContext implements CommandLineRunner {
             wtpAimap.put(wt.getId(), stringWindturbinetestingpointnewMap);
             wtpAimap.put(wt.getId(), stringWindturbinetestingpointnewMap);
 
 
 
 
-
-            if (wpwtmap.containsKey(wt.getWindpowerstationId())){
+            if (wpwtmap.containsKey(wt.getWindpowerstationId())) {
                 wpwtmap.get(wt.getWindpowerstationId()).add(wt);
                 wpwtmap.get(wt.getWindpowerstationId()).add(wt);
-            }else {
+            } else {
                 List<ProBasicEquipment> wps = new ArrayList<>();
                 List<ProBasicEquipment> wps = new ArrayList<>();
                 wps.add(wt);
                 wps.add(wt);
-                wpwtmap.put(wt.getWindpowerstationId(),wps);
+                wpwtmap.put(wt.getWindpowerstationId(), wps);
             }
             }
 
 
-            if (pjwtmap.containsKey(wt.getProjectId())){
+            if (pjwtmap.containsKey(wt.getProjectId())) {
                 pjwtmap.get(wt.getProjectId()).add(wt);
                 pjwtmap.get(wt.getProjectId()).add(wt);
-            }else {
+            } else {
                 List<ProBasicEquipment> pjs = new ArrayList<>();
                 List<ProBasicEquipment> pjs = new ArrayList<>();
                 pjs.add(wt);
                 pjs.add(wt);
-                pjwtmap.put(wt.getProjectId(),pjs);
+                pjwtmap.put(wt.getProjectId(), pjs);
             }
             }
-            if (lnwtmap.containsKey(wt.getLineId())){
+            if (lnwtmap.containsKey(wt.getLineId())) {
                 lnwtmap.get(wt.getLineId()).add(wt);
                 lnwtmap.get(wt.getLineId()).add(wt);
-            }else {
+            } else {
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 lnls.add(wt);
                 lnls.add(wt);
-                lnwtmap.put(wt.getLineId(),lnls);
+                lnwtmap.put(wt.getLineId(), lnls);
             }
             }
-            if (cmwtlsmap.containsKey(wt.getCompanyId())){
+            if (cmwtlsmap.containsKey(wt.getCompanyId())) {
                 cmwtlsmap.get(wt.getCompanyId()).add(wt);
                 cmwtlsmap.get(wt.getCompanyId()).add(wt);
-            }else {
+            } else {
                 List<ProBasicEquipment> cmls = new ArrayList<>();
                 List<ProBasicEquipment> cmls = new ArrayList<>();
                 cmls.add(wt);
                 cmls.add(wt);
-                cmwtlsmap.put(wt.getCompanyId(),cmls);
+                cmwtlsmap.put(wt.getCompanyId(), cmls);
             }
             }
-            if (rgwtlsmap.containsKey(wt.getRegionId())){
+            if (rgwtlsmap.containsKey(wt.getRegionId())) {
                 rgwtlsmap.get(wt.getRegionId()).add(wt);
                 rgwtlsmap.get(wt.getRegionId()).add(wt);
-            }else {
+            } else {
                 List<ProBasicEquipment> rgls = new ArrayList<>();
                 List<ProBasicEquipment> rgls = new ArrayList<>();
                 rgls.add(wt);
                 rgls.add(wt);
-                rgwtlsmap.put(wt.getRegionId(),rgls);
+                rgwtlsmap.put(wt.getRegionId(), rgls);
             }
             }
 
 
-            if (sqwtmap.containsKey(wt.getSquareId())){
+            if (sqwtmap.containsKey(wt.getSquareId())) {
                 sqwtmap.get(wt.getSquareId()).add(wt);
                 sqwtmap.get(wt.getSquareId()).add(wt);
-            }else {
+            } else {
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 List<ProBasicEquipment> lnls = new ArrayList<>();
                 lnls.add(wt);
                 lnls.add(wt);
-                sqwtmap.put(wt.getSquareId(),lnls);
+                sqwtmap.put(wt.getSquareId(), lnls);
             }
             }
 
 
-            if (cmwtmap.containsKey(wt.getCompanyId())){
-                cmwtmap.get(wt.getCompanyId()).put(wt.getId(),wt);
-            }else {
-                Map<String,ProBasicEquipment> map=new HashMap<>();
-                map.put(wt.getId(),wt);
-                cmwtmap.put(wt.getCompanyId(),map);
+            if (cmwtmap.containsKey(wt.getCompanyId())) {
+                cmwtmap.get(wt.getCompanyId()).put(wt.getId(), wt);
+            } else {
+                Map<String, ProBasicEquipment> map = new HashMap<>();
+                map.put(wt.getId(), wt);
+                cmwtmap.put(wt.getCompanyId(), map);
             }
             }
         });
         });
 
 
@@ -493,7 +493,7 @@ public class CacheContext implements CommandLineRunner {
         subwpls = proBasicSubStationService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationId()) && i.getIsAble() == 1).collect(Collectors.toList());
         subwpls = proBasicSubStationService.list().stream().filter(i -> runWpids.contains(i.getWindpowerstationId()) && i.getIsAble() == 1).collect(Collectors.toList());
         subwpls.stream().forEach(sub -> {
         subwpls.stream().forEach(sub -> {
 
 
-            subwpmap.put(sub.getId(),sub);
+            subwpmap.put(sub.getId(), sub);
             String subString = redisService.get(sub.getId());
             String subString = redisService.get(sub.getId());
             Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
             Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
             });
             });
@@ -610,45 +610,52 @@ public class CacheContext implements CommandLineRunner {
 //            }
 //            }
 //        }
 //        }
 
 
-        List<ProEconAlarmRule> customls =proEconAlarmRuleService.list();
+        List<ProEconAlarmRule> customls = proEconAlarmRuleService.list();
 
 
-        if(!customls.isEmpty())
-        {
-            customls=customls.stream().filter(i ->null !=i.getEnable() &&  i.getEnable()).collect(Collectors.toList());
+        if (!customls.isEmpty()) {
+            customls = customls.stream().filter(i -> null != i.getEnable() && i.getEnable()).collect(Collectors.toList());
         }
         }
-        List<ProEconAlarmRule> wtCustomls=new ArrayList<>();
-        List<ProEconAlarmRule> btCustomls=new ArrayList<>();
+        List<ProEconAlarmRule> wtCustomls = new ArrayList<>();
+        List<ProEconAlarmRule> btCustomls = new ArrayList<>();
 //        List<ProEconAlarmRule> btCustomls=new ArrayList<>();
 //        List<ProEconAlarmRule> btCustomls=new ArrayList<>();
-        if(!customls.isEmpty())
-        {
-            for(ProEconAlarmRule vo: customls)
-            {
-                StringBuilder sb=new StringBuilder();
+        if (!customls.isEmpty()) {
+            for (ProEconAlarmRule vo : customls) {
+
+                ctAlarmMap.put(vo.getId(),vo);
+                StringBuilder sb = new StringBuilder();
                 sb.append(vo.getStationId()).append(vo.getModelId());
                 sb.append(vo.getStationId()).append(vo.getModelId());
-                if(StringUtils.notEmp(vo.getCategory()))
-                {
-                    if(vo.getCategory().equals(AlarmCustomType.WT.getCode()))
-                    {
-                        if(ctAlarmMap.containsKey(String.valueOf(sb)))
-                        {
-                            List<ProEconAlarmRule> ls=ctAlarmMap.get(String.valueOf(sb));
+                if (StringUtils.notEmp(vo.getCategory())) {
+
+
+                    if (vo.getCategory().equals(AlarmCustomType.WT.getCode())) {
+                        if (ctAlarmlsMap.containsKey(String.valueOf(sb))) {
+                            List<ProEconAlarmRule> ls = ctAlarmlsMap.get(String.valueOf(sb));
                             ls.add(vo);
                             ls.add(vo);
-                        }else
-                        {
-                            List<ProEconAlarmRule> ls=new ArrayList<>();
+                        } else {
+                            List<ProEconAlarmRule> ls = new ArrayList<>();
                             ls.add(vo);
                             ls.add(vo);
-                            ctAlarmMap.put(String.valueOf(sb),ls);
+                            ctAlarmlsMap.put(String.valueOf(sb), ls);
                         }
                         }
                         wtCustomls.add(vo);
                         wtCustomls.add(vo);
-                    }else  if(vo.getCategory().equals(AlarmCustomType.BT.getCode()))
-                    {
+                    }
+                    if (vo.getCategory().equals(AlarmCustomType.IN.getCode())) {
+                        if (ctAlarmlsMap.containsKey(String.valueOf(sb))) {
+                            List<ProEconAlarmRule> ls = ctAlarmlsMap.get(String.valueOf(sb));
+                            ls.add(vo);
+                        } else {
+                            List<ProEconAlarmRule> ls = new ArrayList<>();
+                            ls.add(vo);
+                            ctAlarmlsMap.put(String.valueOf(sb), ls);
+                        }
+                        wtCustomls.add(vo);
+                    } else if (vo.getCategory().equals(AlarmCustomType.BT.getCode())) {
                         btCustomls.add(vo);
                         btCustomls.add(vo);
                     }
                     }
                 }
                 }
             }
             }
         }
         }
-        alarmRulesMap.put(AlarmCustomType.WT.getCode(),wtCustomls);
-        alarmRulesMap.put(AlarmCustomType.BT.getCode(),btCustomls);
+        alarmRulesMap.put(AlarmCustomType.WT.getCode(), wtCustomls);
+        alarmRulesMap.put(AlarmCustomType.BT.getCode(), btCustomls);
 
 
 
 
         List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
         List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
@@ -656,19 +663,17 @@ public class CacheContext implements CommandLineRunner {
             for (ProEconAlarmConfiguration alarm : templs) {
             for (ProEconAlarmConfiguration alarm : templs) {
                 if (alarm.getAlarmType().equals(AlarmTypeValue.WT.getCode())) {
                 if (alarm.getAlarmType().equals(AlarmTypeValue.WT.getCode())) {
                     wtalarmls.add(alarm);
                     wtalarmls.add(alarm);
-                    alarmMap.put(alarm.getId(),alarm);
-                    StringBuilder sb=new StringBuilder();
+                    alarmMap.put(alarm.getId(), alarm);
+                    StringBuilder sb = new StringBuilder();
                     sb.append(alarm.getStationId()).append(alarm.getModelId());
                     sb.append(alarm.getStationId()).append(alarm.getModelId());
 
 
-                    if(wtAlarmMap.containsKey(String.valueOf(sb)))
-                    {
-                        List<ProEconAlarmConfiguration> ls=wtAlarmMap.get(String.valueOf(sb));
+                    if (wtAlarmMap.containsKey(String.valueOf(sb))) {
+                        List<ProEconAlarmConfiguration> ls = wtAlarmMap.get(String.valueOf(sb));
                         ls.add(alarm);
                         ls.add(alarm);
-                    }else
-                    {
-                        List<ProEconAlarmConfiguration> ls=new ArrayList<>();
+                    } else {
+                        List<ProEconAlarmConfiguration> ls = new ArrayList<>();
                         ls.add(alarm);
                         ls.add(alarm);
-                        wtAlarmMap.put(String.valueOf(sb),ls);
+                        wtAlarmMap.put(String.valueOf(sb), ls);
                     }
                     }
                 } else if (alarm.getAlarmType().equals(AlarmTypeValue.BT.getCode())) {
                 } else if (alarm.getAlarmType().equals(AlarmTypeValue.BT.getCode())) {
                     btalarmls.add(alarm);
                     btalarmls.add(alarm);
@@ -677,44 +682,39 @@ public class CacheContext implements CommandLineRunner {
             }
             }
         }
         }
         wtls.forEach(wt -> {
         wtls.forEach(wt -> {
-            if(wpByEmMap.containsKey(wt.getWindpowerstationId()))
-            {
-                Set<ProEconEquipmentmodel> set=wpByEmMap.get(wt.getWindpowerstationId());
-                if(modelMap.containsKey(wt.getModelId()))
-                {
-                    ProEconEquipmentmodel model=modelMap.get(wt.getModelId());
+            if (wpByEmMap.containsKey(wt.getWindpowerstationId())) {
+                Set<ProEconEquipmentmodel> set = wpByEmMap.get(wt.getWindpowerstationId());
+                if (modelMap.containsKey(wt.getModelId())) {
+                    ProEconEquipmentmodel model = modelMap.get(wt.getModelId());
                     set.add(model);
                     set.add(model);
                 }
                 }
 
 
-            }else
-            { Set<ProEconEquipmentmodel> set=new HashSet<>();
-                if(modelMap.containsKey(wt.getModelId()))
-                {
-                    ProEconEquipmentmodel model=modelMap.get(wt.getModelId());
+            } else {
+                Set<ProEconEquipmentmodel> set = new HashSet<>();
+                if (modelMap.containsKey(wt.getModelId())) {
+                    ProEconEquipmentmodel model = modelMap.get(wt.getModelId());
                     set.add(model);
                     set.add(model);
                 }
                 }
-                wpByEmMap.put(wt.getWindpowerstationId(),set);
+                wpByEmMap.put(wt.getWindpowerstationId(), set);
             }
             }
 
 
         });
         });
-        weawpls = proBasicWeatherStationService.list().stream().filter(i-> i.getIsAble()==1).collect(Collectors.toList());
-        weawpls.stream().forEach(weather->{
+        weawpls = proBasicWeatherStationService.list().stream().filter(i -> i.getIsAble() == 1).collect(Collectors.toList());
+        weawpls.stream().forEach(weather -> {
 
 
             String subString = redisService.get(weather.getId());
             String subString = redisService.get(weather.getId());
             Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
             Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(subString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
             });
             });
-            weatherwppointmap.put(weather.getId(),stringWindpowerstationpointnewMap);
+            weatherwppointmap.put(weather.getId(), stringWindpowerstationpointnewMap);
 
 
 
 
         });
         });
 
 
-        alarmTypeList= proEconAlarmTypeService.list();
+        alarmTypeList = proEconAlarmTypeService.list();
 
 
-        if(!alarmTypeList.isEmpty())
-        {
-            for(ProEconAlarmType at:alarmTypeList)
-            {
-                alarmTypeMap.put(at.getNemCode(),at);
+        if (!alarmTypeList.isEmpty()) {
+            for (ProEconAlarmType at : alarmTypeList) {
+                alarmTypeMap.put(at.getNemCode(), at);
             }
             }
         }
         }
 
 

+ 2 - 2
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java

@@ -119,7 +119,7 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
 
 
             "and ts &gt;= #{begin}",
             "and ts &gt;= #{begin}",
             "and ts &lt;= #{end}",
             "and ts &lt;= #{end}",
-            " and  confirmed = false ",
+//            " and  confirmed = false ",
             " and  enabled = true ",
             " and  enabled = true ",
             "</where>",
             "</where>",
             " group by tbname,alarmid,alarmtype,characteristic,components,description,deviceid,devicename,devicetype,enabled,lineid,linename,modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode ",
             " group by tbname,alarmid,alarmtype,characteristic,components,description,deviceid,devicename,devicetype,enabled,lineid,linename,modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode ",
@@ -150,7 +150,7 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
             "</if>",
             "</if>",
             "and ts &gt;= #{begin}",
             "and ts &gt;= #{begin}",
             "and ts &lt;= #{end}",
             "and ts &lt;= #{end}",
-            " and  confirmed = false ",
+//            " and  confirmed = false ",
             " and  enabled = true ",
             " and  enabled = true ",
             "</where>",
             "</where>",
             " group by tbname,alarmid,alarmtype,characteristic,components,description,deviceid,devicename,devicetype,enabled,lineid,linename,modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode ",
             " group by tbname,alarmid,alarmtype,characteristic,components,description,deviceid,devicename,devicetype,enabled,lineid,linename,modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode ",

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportAlarmMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警报告报警 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportAlarmMapper extends BaseMapper<ProEconEarlyReportAlarm> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportConclusioMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportConclusio;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警报告结论 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportConclusioMapper extends BaseMapper<ProEconEarlyReportConclusio> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警报告 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportMapper extends BaseMapper<ProEconEarlyReport> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyReportWtMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备预警报告 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyReportWtMapper extends BaseMapper<ProEconEarlyReportWt> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/ProEconEarlyWarnScoreMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.mapper.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyWarnScore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 预警得分 Mapper 接口
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface ProEconEarlyWarnScoreMapper extends BaseMapper<ProEconEarlyWarnScore> {
+
+}

+ 2 - 2
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmRule.java

@@ -77,14 +77,14 @@ public class ProEconAlarmRule extends Model {
     /**
     /**
      * 机型
      * 机型
      */
      */
-    @ChineseDes("报警描述")
+    @ChineseDes("机型")
     @ExcelProperty("机型")
     @ExcelProperty("机型")
     private String modelId;
     private String modelId;
 
 
     /**
     /**
      * 报警类别
      * 报警类别
      */
      */
-    @ChineseDes("报警描述")
+    @ChineseDes("报警类别")
     @ExcelProperty("报警类别")
     @ExcelProperty("报警类别")
     private String category;
     private String category;
 
 

+ 63 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReport.java

@@ -0,0 +1,63 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警报告
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReport extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 报告名称
+     */
+    private String reportName;
+
+    /**
+     * 场站id
+     */
+    private String stationId;
+
+    /**
+     * 场站名称
+     */
+    private String stationName;
+
+    /**
+     * 所属部件
+     */
+    private String relatedParts;
+
+    /**
+     * 报告日期
+     */
+    private LocalDateTime reportDate;
+
+    /**
+     * 报告分析起始时间
+     */
+    private LocalDateTime statStartDate;
+
+    /**
+     * 报告分析结束时间
+     */
+    private LocalDateTime statEndDate;
+
+
+}

+ 68 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportAlarm.java

@@ -0,0 +1,68 @@
+package com.gyee.alarm.model.auto;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警报告报警
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReportAlarm extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 规则编号
+     */
+    private String ruleId;
+
+    /**
+     * 报警类型 custom为自定义报警,widnturbine为风机原始报警
+     */
+    private String alarmType;
+
+    /**
+     * 规则名称
+     */
+    private String ruleName;
+
+    /**
+     * 规则描述
+     */
+    private String ruleDescription;
+
+    /**
+     * 报警级别
+     */
+    private String rank;
+
+    /**
+     * 报警数量
+     */
+    private Integer count;
+
+    /**
+     * 报警持续时长
+     */
+    private BigDecimal keepTime;
+
+    /**
+     * 预警风机报告表主键
+     */
+    private String reportWindturbineId;
+
+
+}

+ 44 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportConclusio.java

@@ -0,0 +1,44 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警报告结论
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReportConclusio extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 风机所属部件
+     */
+    private String part;
+
+    /**
+     * 预警信息
+     */
+    private String alarmInfo;
+
+    /**
+     * 隐患后果
+     */
+    private String hiddanger;
+
+    private String checkMatter;
+
+
+}

+ 67 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyReportWt.java

@@ -0,0 +1,67 @@
+package com.gyee.alarm.model.auto;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 设备预警报告
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyReportWt extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 风机id
+     */
+    private String windturbineId;
+
+    /**
+     * 风机编号或名称
+     */
+    private String windturbineCode;
+
+    /**
+     * 风机型号
+     */
+    private String modelId;
+
+    /**
+     * 对比的风机报告编号
+     */
+    private String compareId;
+
+    /**
+     * 结论
+     */
+    private String conclusion;
+
+    /**
+     * earlyreport表主键
+     */
+    private String reportId;
+
+    /**
+     * 是否比较过
+     */
+    private Boolean compared;
+
+    /**
+     * 核实的
+     */
+    private Boolean verified;
+
+
+}

+ 104 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconEarlyWarnScore.java

@@ -0,0 +1,104 @@
+package com.gyee.alarm.model.auto;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预警得分
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProEconEarlyWarnScore extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 风机编号
+     */
+    private String windturbineId;
+
+    /**
+     * 日期
+     */
+    private LocalDateTime statdate;
+
+    /**
+     * 总分
+     */
+    private BigDecimal totalScore;
+
+    /**
+     * 传感器分数
+     */
+    private BigDecimal sensorScore;
+
+    /**
+     * 零部件隐患分数
+     */
+    private BigDecimal partsScore;
+
+    /**
+     * 控制参数分数
+     */
+    private BigDecimal controlScore;
+
+    /**
+     * 性能下降分数
+     */
+    private BigDecimal performanceScore;
+
+    /**
+     * 其它分数
+     */
+    private BigDecimal otherScore;
+
+    /**
+     * 测风系统分数
+     */
+    private BigDecimal cfxtScore;
+
+    /**
+     * 发电机分数
+     */
+    private BigDecimal fdjScore;
+
+    /**
+     * 齿轮箱分数
+     */
+    private BigDecimal clxScore;
+
+    /**
+     * 主控柜分数
+     */
+    private BigDecimal zkgScore;
+
+    /**
+     * 机舱分数
+     */
+    private BigDecimal jcScore;
+
+    /**
+     * 变桨系统分数
+     */
+    private BigDecimal bjxtScore;
+
+    /**
+     * 轴承分数
+     */
+    private BigDecimal zcScore;
+
+
+}

+ 0 - 2
alarm-web/src/main/java/com/gyee/alarm/model/vo/AjaxResult.java

@@ -101,6 +101,4 @@ public class AjaxResult extends HashMap<String, Object>
         super.put(key, value);
         super.put(key, value);
         return this;
         return this;
     }
     }
-
-
 }
 }

+ 0 - 1
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmCustomTag.java

@@ -1,6 +1,5 @@
 package com.gyee.alarm.model.vo;
 package com.gyee.alarm.model.vo;
 
 
-import com.gyee.common.model.PointData;
 import lombok.Data;
 import lombok.Data;
 
 
 @Data
 @Data

+ 1 - 1
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmCustomType.java

@@ -4,7 +4,7 @@ public enum AlarmCustomType {
 
 
     WT("windturbine", "设备自定义报警"),
     WT("windturbine", "设备自定义报警"),
     BT("booststation", "升压站报警"),
     BT("booststation", "升压站报警"),
-    WP("station", "场站自定义报警");
+    IN("inverter", "逆变器报警");
 
 
     private String code;
     private String code;
     private String name;
     private String name;

+ 1 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmSuperTalbeType.java

@@ -3,6 +3,7 @@ package com.gyee.alarm.model.vo;
 public enum AlarmSuperTalbeType {
 public enum AlarmSuperTalbeType {
 
 
     WT("alarmWt", "设备报警超级表"),
     WT("alarmWt", "设备报警超级表"),
+
     BT("alarmBt", "升压站报警超级表"),
     BT("alarmBt", "升压站报警超级表"),
     CT("alarmCt", "自定义报警超级表");
     CT("alarmCt", "自定义报警超级表");
 
 

+ 13 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmTag.java

@@ -54,8 +54,21 @@ public class AlarmTag {
      */
      */
     private String description;
     private String description;
 
 
+
     private  Boolean confirmed;
     private  Boolean confirmed;
 
 
+    private String superTalbe;
+
+    /**
+     * 报警类型 /自定义报警 custom,风机 windturbine,场站 station,升压站 booststation
+     */
+    private String alarmType;
+
+    /**
+     * 设备类型,场站 station,风机 windturbine,升压站 booststation
+     */
+    private String deviceType;
+
     /**
     /**
      * 更新并检测是否触发报警
      * 更新并检测是否触发报警
      */
      */

+ 2 - 2
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmTsVo.java

@@ -3,15 +3,15 @@ package com.gyee.alarm.model.vo;
 
 
 import lombok.Data;
 import lombok.Data;
 
 
-import java.sql.Timestamp;
-
 @Data
 @Data
 public class AlarmTsVo {
 public class AlarmTsVo {
 
 
+
     private String alarmid;
     private String alarmid;
     private String description;
     private String description;
     private String deviceid;
     private String deviceid;
     private Integer val;
     private Integer val;
     private Integer rank;
     private Integer rank;
     private Double timeLong;
     private Double timeLong;
+
 }
 }

+ 2 - 1
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmTypeValue.java

@@ -4,7 +4,8 @@ public enum AlarmTypeValue {
 
 
     BT("booststation", "升压站报警"),
     BT("booststation", "升压站报警"),
 
 
-    WP("station", "场站报警"),
+    BTE("booststationevent", "升压站报警事件"),
+    IN("inverter", "逆变器报警"),
     WT("windturbine", "设备报警"),
     WT("windturbine", "设备报警"),
     CT("custom", "自定义报警");
     CT("custom", "自定义报警");
 
 

+ 4 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/AlarmVo.java

@@ -39,4 +39,8 @@ public class AlarmVo {
     private Integer val;
     private Integer val;
     private Integer oval;
     private Integer oval;
 
 
+    private Timestamp endts;
+
+    private Double timelong;
+
 }
 }

+ 1 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/DeviceTypeValue.java

@@ -3,6 +3,7 @@ package com.gyee.alarm.model.vo;
 public enum DeviceTypeValue {
 public enum DeviceTypeValue {
 
 
     BT("booststation", "升压站报警"),
     BT("booststation", "升压站报警"),
+    IN("inverter", "逆变器报警"),
     WP("station", "场站报警"),
     WP("station", "场站报警"),
     WT("windturbine", "风机报警");
     WT("windturbine", "风机报警");
 
 

+ 1 - 1
alarm-web/src/main/java/com/gyee/alarm/model/vo/SLWindpowerVo.java

@@ -4,8 +4,8 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 
 
-import java.util.Map;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 @Data
 @Data
 @NoArgsConstructor
 @NoArgsConstructor

+ 8 - 7
alarm-web/src/main/java/com/gyee/alarm/service/AlarmHistoryService.java

@@ -85,11 +85,11 @@ public class AlarmHistoryService   {
                     AlarmSimpleVo tag=map.get(alarm.getId());
                     AlarmSimpleVo tag=map.get(alarm.getId());
                     alarm.setTs(tag.getTs().getTime());
                     alarm.setTs(tag.getTs().getTime());
 
 
-                    Date begin = new Date(alarm.getEndts());
-                    Date end = new Date(alarm.getTs());
-
-                    double value= DateUtils.secondsDiff(begin,end);
-                    alarm.setTimeLong(value);
+//                    Date begin = new Date(alarm.getEndts());
+//                    Date end = new Date(alarm.getTs());
+//
+//                    double value= DateUtils.secondsDiff(begin,end);
+//                    alarm.setTimeLong(value);
                     alarm.setConfirmed(true);
                     alarm.setConfirmed(true);
                 }
                 }
             }
             }
@@ -383,7 +383,7 @@ public class AlarmHistoryService   {
         ProBasicFeatureStat fs = new ProBasicFeatureStat();
         ProBasicFeatureStat fs = new ProBasicFeatureStat();
 
 
         StringBuilder sb = new StringBuilder();
         StringBuilder sb = new StringBuilder();
-        sb.append(fs.getWtId()).append("_").append(at.getId());
+        sb.append(wt.getId()).append("_").append(at.getId());
         if (map.containsKey(String.valueOf(sb))) {
         if (map.containsKey(String.valueOf(sb))) {
             ProBasicFeatureStat old = map.get(String.valueOf(sb));
             ProBasicFeatureStat old = map.get(String.valueOf(sb));
             BeanUtil.copyProperties(old, fs);
             BeanUtil.copyProperties(old, fs);
@@ -526,7 +526,8 @@ public class AlarmHistoryService   {
                 }
                 }
             }else
             }else
             {
             {
-                d.setTime(fs.getTotalSeconds());
+                double times= new BigDecimal(fs.getTotalSeconds()).divide(new BigDecimal(60), 2, RoundingMode.HALF_EVEN).doubleValue();
+                d.setTime(times);
             }
             }
             d.setStationId(fs.getStationId());
             d.setStationId(fs.getStationId());
             d.setSnapId(SnowflakeGenerator.generateId());
             d.setSnapId(SnowflakeGenerator.generateId());

+ 10 - 10
alarm-web/src/main/java/com/gyee/alarm/service/AlarmReportService.java

@@ -5,7 +5,7 @@ import com.gyee.alarm.init.CacheContext;
 import com.gyee.alarm.mapper.auto.AlarmTsMapper;
 import com.gyee.alarm.mapper.auto.AlarmTsMapper;
 import com.gyee.alarm.model.auto.ProBasicEarlyWarnScore;
 import com.gyee.alarm.model.auto.ProBasicEarlyWarnScore;
 import com.gyee.alarm.model.auto.ProBasicEquipment;
 import com.gyee.alarm.model.auto.ProBasicEquipment;
-import com.gyee.alarm.model.auto.ProEconAlarmConfiguration;
+import com.gyee.alarm.model.auto.ProEconAlarmRule;
 import com.gyee.alarm.model.vo.AlarmSuperTalbeType;
 import com.gyee.alarm.model.vo.AlarmSuperTalbeType;
 import com.gyee.alarm.model.vo.AlarmTsVo;
 import com.gyee.alarm.model.vo.AlarmTsVo;
 import com.gyee.alarm.model.vo.EarlyWarnScoreVo;
 import com.gyee.alarm.model.vo.EarlyWarnScoreVo;
@@ -47,15 +47,15 @@ public class AlarmReportService {
                     ews.setStatdate(currentDate);
                     ews.setStatdate(currentDate);
                     
                     
                   
                   
-                    List<AlarmTsVo> listInfo = alarmTsMapper.selectByWtGroup(AlarmSuperTalbeType.WT.getCode(),wt.getId(), currentDate.getTime(),endData.getTime());
+                    List<AlarmTsVo> listInfo = alarmTsMapper.selectByWtGroup(AlarmSuperTalbeType.CT.getCode(),wt.getId(), currentDate.getTime(),endData.getTime());
 
 
                     if (listInfo != null && listInfo.size() > 0) {
                     if (listInfo != null && listInfo.size() > 0) {
                         for (AlarmTsVo aci : listInfo) {
                         for (AlarmTsVo aci : listInfo) {
 
 
 
 
-                            if(CacheContext.alarmMap.containsKey(aci.getAlarmid()))
+                            if(CacheContext.ctAlarmMap.containsKey(aci.getAlarmid()))
                             {
                             {
-                                ProEconAlarmConfiguration alarm=CacheContext.alarmMap.get(aci.getAlarmid());
+                                ProEconAlarmRule alarm=CacheContext.ctAlarmMap.get(aci.getAlarmid());
 
 
                                 EarlyWarnScoreVo scoreOne = getEarlyWarnScoreOne(alarm,aci);
                                 EarlyWarnScoreVo scoreOne = getEarlyWarnScoreOne(alarm,aci);
                                 ews.setTotalScore(ews.getTotalScore() + scoreOne.getTotalscore());
                                 ews.setTotalScore(ews.getTotalScore() + scoreOne.getTotalscore());
@@ -86,14 +86,14 @@ public class AlarmReportService {
         return true;
         return true;
     }
     }
 
 
-    private EarlyWarnScoreVo getEarlyWarnScoreOne( ProEconAlarmConfiguration alarm,AlarmTsVo info) {
+    private EarlyWarnScoreVo getEarlyWarnScoreOne( ProEconAlarmRule alarm,AlarmTsVo info) {
         EarlyWarnScoreVo scoreOne = new EarlyWarnScoreVo();
         EarlyWarnScoreVo scoreOne = new EarlyWarnScoreVo();
         double score = getScore(info);
         double score = getScore(info);
         scoreOne.setTotalscore(score);
         scoreOne.setTotalscore(score);
-        if (alarm.getCharacteristic() == null) {
+        if (alarm.getRange() == null) {
             scoreOne.setOtherscore(score);
             scoreOne.setOtherscore(score);
         } else {
         } else {
-            switch (alarm.getCharacteristic()) {
+            switch (alarm.getRange()) {
                 case "sensors":
                 case "sensors":
                     scoreOne.setSensorscore(score);
                     scoreOne.setSensorscore(score);
                     break;
                     break;
@@ -110,10 +110,10 @@ public class AlarmReportService {
                     scoreOne.setOtherscore(score);
                     scoreOne.setOtherscore(score);
             }
             }
         }
         }
-        if (alarm.getComponents() == null) {
+        if (alarm.getRelatedParts() == null) {
             scoreOne.setJcscore(score);
             scoreOne.setJcscore(score);
         } else {
         } else {
-            switch (alarm.getComponents()) {
+            switch (alarm.getRelatedParts()) {
                 case "CFXT":
                 case "CFXT":
                     scoreOne.setCfxtscore(score);
                     scoreOne.setCfxtscore(score);
                     break;
                     break;
@@ -129,7 +129,7 @@ public class AlarmReportService {
                 case "BJXT":
                 case "BJXT":
                     scoreOne.setBjxtscore(score);
                     scoreOne.setBjxtscore(score);
                     break;
                     break;
-                case "ZKG":
+                case "ZZ":
                     scoreOne.setZkgscore(score);
                     scoreOne.setZkgscore(score);
                     break;
                     break;
                 default:
                 default:

+ 4 - 4
alarm-web/src/main/java/com/gyee/alarm/service/AlarmRuleService.java

@@ -12,7 +12,7 @@ import com.gyee.alarm.model.auto.*;
 
 
 import com.gyee.alarm.model.vo.AlarmConfigurationVo;
 import com.gyee.alarm.model.vo.AlarmConfigurationVo;
 import com.gyee.alarm.model.vo.AlarmRuleVo;
 import com.gyee.alarm.model.vo.AlarmRuleVo;
-import com.gyee.alarm.service.auto.IProEconAlarmTypeService;
+
 import com.gyee.alarm.util.SnowflakeGenerator;
 import com.gyee.alarm.util.SnowflakeGenerator;
 import com.gyee.alarm.util.StringUtil;
 import com.gyee.alarm.util.StringUtil;
 import com.gyee.alarm.util.StringUtils;
 import com.gyee.alarm.util.StringUtils;
@@ -20,7 +20,7 @@ import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.*;
-import java.util.stream.Collectors;
+
 
 
 
 
 @Service
 @Service
@@ -56,9 +56,9 @@ public class AlarmRuleService {
             }
             }
 
 
         }
         }
-        if(CacheContext.ctAlarmMap.containsKey(String.valueOf(sb)))
+        if(CacheContext.ctAlarmlsMap.containsKey(String.valueOf(sb)))
         {
         {
-            List<ProEconAlarmRule> ls=CacheContext.ctAlarmMap.get(String.valueOf(sb));
+            List<ProEconAlarmRule> ls=CacheContext.ctAlarmlsMap.get(String.valueOf(sb));
 
 
             if(!ls.isEmpty())
             if(!ls.isEmpty())
             {
             {

+ 0 - 35
alarm-web/src/main/java/com/gyee/alarm/service/TokenService.java

@@ -32,41 +32,6 @@ public class TokenService {
 
 
     public static Map<String, TokenVo> sessionMap=  new ConcurrentHashMap<>();
     public static Map<String, TokenVo> sessionMap=  new ConcurrentHashMap<>();
 
 
-
-    public void  judegeSession() {
-
-
-
-        for (Map.Entry <String, TokenVo>  entry : sessionMap.entrySet()) {
-            TokenVo vo=entry.getValue();
-            
-            Date begin=vo.getTime();
-            Date end=new Date();
-
-            double value= DateUtils.hoursDiff(begin,end);
-            if(value>3)
-            {
-                sessionMap.remove(entry.getKey());
-
-                if (sessionWtMap.containsKey(entry.getKey())) {
-                    sessionWtMap.remove(entry.getKey());
-                }
-                if (sessionWpMap.containsKey(entry.getKey())) {
-                    sessionWpMap.remove(entry.getKey());
-
-                }
-                if (sessionSubMap.containsKey(entry.getKey())) {
-                    sessionSubMap.remove(entry.getKey());
-
-                }
-                if (sessionWeMap.containsKey(entry.getKey())) {
-                    sessionWeMap.remove(entry.getKey());
-
-                }
-            }
-        }
-
-    }
     public  List<ProBasicEquipment>  getWtls(HttpServletRequest request ) {
     public  List<ProBasicEquipment>  getWtls(HttpServletRequest request ) {
 
 
         String token = request.getHeader("token");
         String token = request.getHeader("token");

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportAlarmService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警报告报警 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportAlarmService extends IService<ProEconEarlyReportAlarm> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportConclusioService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportConclusio;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警报告结论 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportConclusioService extends IService<ProEconEarlyReportConclusio> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警报告 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportService extends IService<ProEconEarlyReport> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyReportWtService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 设备预警报告 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyReportWtService extends IService<ProEconEarlyReportWt> {
+
+}

+ 16 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconEarlyWarnScoreService.java

@@ -0,0 +1,16 @@
+package com.gyee.alarm.service.auto;
+
+import com.gyee.alarm.model.auto.ProEconEarlyWarnScore;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 预警得分 服务类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+public interface IProEconEarlyWarnScoreService extends IService<ProEconEarlyWarnScore> {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportAlarmServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportAlarm;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportAlarmMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyReportAlarmService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警报告报警 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportAlarmServiceImpl extends ServiceImpl<ProEconEarlyReportAlarmMapper, ProEconEarlyReportAlarm> implements IProEconEarlyReportAlarmService {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportConclusioServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportConclusio;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportConclusioMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyReportConclusioService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警报告结论 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportConclusioServiceImpl extends ServiceImpl<ProEconEarlyReportConclusioMapper, ProEconEarlyReportConclusio> implements IProEconEarlyReportConclusioService {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReport;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyReportService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警报告 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportServiceImpl extends ServiceImpl<ProEconEarlyReportMapper, ProEconEarlyReport> implements IProEconEarlyReportService {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyReportWtServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyReportWt;
+import com.gyee.alarm.mapper.auto.ProEconEarlyReportWtMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyReportWtService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 设备预警报告 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyReportWtServiceImpl extends ServiceImpl<ProEconEarlyReportWtMapper, ProEconEarlyReportWt> implements IProEconEarlyReportWtService {
+
+}

+ 20 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/impl/ProEconEarlyWarnScoreServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.alarm.service.auto.impl;
+
+import com.gyee.alarm.model.auto.ProEconEarlyWarnScore;
+import com.gyee.alarm.mapper.auto.ProEconEarlyWarnScoreMapper;
+import com.gyee.alarm.service.auto.IProEconEarlyWarnScoreService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 预警得分 服务实现类
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-09-05
+ */
+@Service
+public class ProEconEarlyWarnScoreServiceImpl extends ServiceImpl<ProEconEarlyWarnScoreMapper, ProEconEarlyWarnScore> implements IProEconEarlyWarnScoreService {
+
+}

+ 0 - 2
alarm-web/src/main/resources/application-jn.yml

@@ -188,5 +188,3 @@ home_pagep_size: 50
 
 
 
 
 
 
-
-

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 26438 - 2728
log/ota.log


BIN
log/ota.log.2023-08-28.0.gz


BIN
log/ota.log.2023-09-03.0.gz


+ 0 - 0
log/ota.log.2023-09-05.0.gz


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov