Преглед на файлове

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/config/GeneratorCodeConfig.java
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/test/TestController.java
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/test/XrpProjectplanServiceController.java
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/mapper/auto/XrpProjectplanMapper.java
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/model/auto/XrpProjectplan.java
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/BackConfigService.java
#	web/backmanagerconfig/src/main/java/com/gyee/backconfig/service/auto/impl/XrpProjectplanServiceImpl.java
#	web/backmanagerconfig/src/main/resources/application-jn.yml
#	web/backmanagerconfig/src/test/java/BackConfigMainTests.java
#	web/backmanagerconfig/src/test/java/MyBatisPlusServiceTest.java
#	web/backmanagerconfig/src/test/java/MyBatisPlusWrapperTest.java
wangb преди 2 години
родител
ревизия
3312f0b44a
променени са 100 файла, в които са добавени 7366 реда и са изтрити 956 реда
  1. 74 0
      common/src/main/java/com/gyee/common/model/Alertrule2.java
  2. 39 0
      common/src/main/java/com/gyee/common/model/Alertrulefailure.java
  3. 57 0
      common/src/main/java/com/gyee/common/model/P3DeviceFault.java
  4. 70 0
      common/src/main/java/com/gyee/common/model/P3DeviceFeatures.java
  5. 49 0
      common/src/main/java/com/gyee/common/model/Risktype.java
  6. 41 0
      common/src/main/java/com/gyee/common/model/Safeprecstard.java
  7. 36 36
      histroy/healthmanagement-histroy-hb/src/main/java/com/gyee/healthmanagementhistroy/task/HealthreportTask.java
  8. 0 620
      web/analysis-hb/target/classes/static/admin/assets/js/blockUI/jquery.blockUI.js
  9. 0 18
      web/analysis-hb/target/classes/static/admin/assets/js/bootstrap/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js
  10. 0 188
      web/analysis-hb/target/classes/static/admin/bootstarp/ndesaintheme.com/themes/apricot/assets/js/footable/js/footable.sortcd98.js
  11. 51 0
      web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/test/XrpProjectplanController.java
  12. 4 10
      web/backmanagerconfig/src/main/resources/application-jn.yml
  13. 1 0
      web/consumer/pom.xml
  14. 87 3
      web/consumer/src/main/java/com/gyee/consumer/api/knowleage/KnowledgeApi.java
  15. 109 0
      web/consumer/src/main/java/com/gyee/consumer/controller/knowleage/KnowleageController.java
  16. 2 2
      web/consumer/src/main/resources/application.yml
  17. 2 2
      web/health-hb/src/main/java/com/gyee/frame/common/spring/InitialRunner.java
  18. 61 58
      web/health-hb/src/main/java/com/gyee/frame/service/health/HealthMainService.java
  19. 33 0
      web/health-hb/src/main/java/com/gyee/frame/service/health/HealthSubService.java
  20. 1 1
      web/health-hb/src/main/java/com/gyee/frame/service/weather/WeatherService.java
  21. 1 1
      web/health-hb/src/main/resources/application-hf.yml
  22. 1 1
      web/health-hb/src/main/resources/application.yml
  23. 1 1
      web/health-hb/src/main/resources/mybatis/auto/ShutdowneventMapper.xml
  24. 11 11
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/config/GeneratorCodeConfig.java
  25. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/BjgltjbController.java
  26. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/EarlywarningmainController.java
  27. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/EquipmentmodelController.java
  28. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/FailurestatisticsmainController.java
  29. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/PartsController.java
  30. 142 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/reliability/ReliabilityController.java
  31. 22 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/BjgltjbMapper.java
  32. 21 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/EarlywarningmainMapper.java
  33. 16 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/EquipmentmodelMapper.java
  34. 21 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/FailurestatisticsmainMapper.java
  35. 16 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/PartsMapper.java
  36. 71 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Bjgltjb.java
  37. 154 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Earlywarningmain.java
  38. 65 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Equipmentmodel.java
  39. 154 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Failurestatisticsmain.java
  40. 31 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Parts.java
  41. 19 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IBjgltjbService.java
  42. 19 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IEarlywarningmainService.java
  43. 16 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IEquipmentmodelService.java
  44. 19 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IFailurestatisticsmainService.java
  45. 16 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IPartsService.java
  46. 28 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/BjgltjbServiceImpl.java
  47. 28 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/EarlywarningmainServiceImpl.java
  48. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/EquipmentmodelServiceImpl.java
  49. 28 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/FailurestatisticsmainServiceImpl.java
  50. 20 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/PartsServiceImpl.java
  51. 92 0
      web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/reliability/ReliabilityService.java
  52. 204 0
      web/knowledge-hb/src/main/java/com/gyee/knowledge/controller/knowledge/KnowledgeController.java
  53. 2 1
      web/knowledge-hb/src/main/java/com/gyee/knowledge/model/auto/Alertrule2.java
  54. 2 1
      web/knowledge-hb/src/main/java/com/gyee/knowledge/model/auto/Alertrulefailure.java
  55. 2 1
      web/knowledge-hb/src/main/java/com/gyee/knowledge/model/auto/P3DeviceFault.java
  56. 74 0
      web/knowledge-hb/src/main/java/com/gyee/knowledge/service/knowledge/KnowledgeService.java
  57. 1 1
      web/knowledge-hb/src/main/resources/application-dev.yml
  58. 1091 0
      web/monitor-hf/doc/springbootv2.sql
  59. BIN
      web/monitor-hf/lib/ueditor-1.1.2.jar
  60. 282 0
      web/monitor-hf/monitor-hf.iml
  61. 518 0
      web/monitor-hf/pom.xml
  62. 57 0
      web/monitor-hf/src/main/java/com/gyee/SpringbootStart.java
  63. 19 0
      web/monitor-hf/src/main/java/com/gyee/SpringbootWebInitializer.java
  64. 77 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/async/config/AsyncConfig.java
  65. 76 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/async/config/ThreadPoolConfig.java
  66. 133 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/async/controller/AsyncController.java
  67. 57 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/async/service/AsyncService.java
  68. 63 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/async/service/impl/AsyncServiceImpl.java
  69. 41 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/async/util/SmsUtil.java
  70. 166 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/base/BaseController.java
  71. 34 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/base/BaseService.java
  72. 268 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/base/PageInfo.java
  73. 419 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/AppRedisCacheManager.java
  74. 46 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/ApplicationContextHolder.java
  75. 383 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/IGlobalCache.java
  76. 72 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/MybatisRedisCache.java
  77. 105 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/RedisConfig.java
  78. 115 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/RedisSessionDao.java
  79. 31 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/cache/RedisUtils.java
  80. 13 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/AjaxStatus.java
  81. 25 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/ExportConfig.java
  82. 30 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/FileConfig.java
  83. 85 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/KaptchaConfig.java
  84. 99 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/MybatisConfig.java
  85. 34 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/PageHelperConf.java
  86. 83 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/Swagger.java
  87. 79 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/TemperatureConfig.java
  88. 56 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/ThreadPoolTaskConfig.java
  89. 239 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/V2Config.java
  90. 27 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/ZmConfig.java
  91. 45 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/monitor/LeaderConfig.java
  92. 45 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/monitor/StatusConfig.java
  93. 27 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/conf/monitor/ZtConfig.java
  94. 21 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSource.java
  95. 77 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSourceAspect.java
  96. 50 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSourceContextHolder.java
  97. 13 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSourceType.java
  98. 27 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DynamicDataSource.java
  99. 104 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/domain/AjaxResult.java
  100. 0 0
      web/monitor-hf/src/main/java/com/gyee/frame/common/druid/RemoveDruidAdConfig.java

+ 74 - 0
common/src/main/java/com/gyee/common/model/Alertrule2.java

@@ -0,0 +1,74 @@
+package com.gyee.common.model;/*
+@author   谢生杰
+@date   2022/9/19-11:46
+*/
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class Alertrule2 {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value="ID",type = IdType.INPUT)
+    private String id;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("DESCRIPTION")
+    private String description;
+
+    @TableField("EXPRESSION")
+    private String expression;
+
+    @TableField("TAG")
+    private String tag;
+
+    @TableField("RANK")
+    private String rank;
+
+    @TableField("ENABLED")
+    private Integer enabled;
+
+    @TableField("MODELID")
+    private String modelid;
+
+    @TableField("EDNAVALUE")
+    private Long ednavalue;
+
+    @TableField("CATEGORY")
+    private String category;
+
+    @TableField("RANGE")
+    private String range;
+
+    @TableField("STATION")
+    private String station;
+
+    @TableField("WINDTURBINE")
+    private String windturbine;
+
+    @TableField("LINE")
+    private String line;
+
+    @TableField("PROJECT")
+    private String project;
+
+    @TableField("ELECTRICAL")
+    private String electrical;
+
+    @TableField("TASKSTART")
+    private String taskstart;
+
+    @TableField("RELATEDPARTS")
+    private String relatedparts;
+
+    @TableField("CREATETIME")
+    private Date createtime;
+
+}

+ 39 - 0
common/src/main/java/com/gyee/common/model/Alertrulefailure.java

@@ -0,0 +1,39 @@
+package com.gyee.common.model;/*
+@author   谢生杰
+@date   2022/9/19-11:47
+*/
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class Alertrulefailure {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "ID",type = IdType.INPUT)
+    private String id;
+
+    @TableField("TID")
+    private String tid;
+
+    @TableField("GZPC")
+    private String gzpc;
+
+    @TableField("GZYY")
+    private String gzyy;
+
+    @TableField("GQJ")
+    private String gqj;
+
+    @TableField("XQSC")
+    private Integer xqsc;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("MODEL")
+    private String model;
+
+}

+ 57 - 0
common/src/main/java/com/gyee/common/model/P3DeviceFault.java

@@ -0,0 +1,57 @@
+package com.gyee.common.model;/*
+@author   谢生杰
+@date   2022/9/19-11:44
+*/
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.sql.Blob;
+import java.util.Date;
+
+@Data
+public class P3DeviceFault {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value="ID",type = IdType.INPUT)
+    private String id;
+
+    @TableField("CODE")
+    private String code;
+
+    @TableField("FAULTID")
+    private String faultid;
+
+    @TableField("HALTTYPE")
+    private String halttype;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("CATEGORY")
+    private String category;
+
+    @TableField("FAULTLEVEL")
+    private Integer faultlevel;
+
+    @TableField("CAUSE")
+    private Blob cause;
+
+    @TableField("TREATMENTMEASURE")
+    private Blob treatmentmeasure;
+
+    @TableField("DEVICEMODEL")
+    private String devicemodel;
+
+    @TableField("DEVICETREEID")
+    private Double devicetreeid;
+
+    @TableField("CREATETOR")
+    private String createtor;
+
+    @TableField("CREATETIME")
+    private Date createtime;
+
+}

+ 70 - 0
common/src/main/java/com/gyee/common/model/P3DeviceFeatures.java

@@ -0,0 +1,70 @@
+package com.gyee.common.model;/*
+@author   谢生杰
+@date   2022/9/19-11:47
+*/
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class P3DeviceFeatures {
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private Long id;
+
+    @TableField("MODELID")
+    private String modelid;
+
+    @TableField("STRUCTUREID")
+    private Integer structureid;
+
+    @TableField("COMPONENTID")
+    private Integer componentid;
+
+    @TableField("UNIFORMCODE")
+    private String uniformcode;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("DESCRIPTION")
+    private String description;
+
+    @TableField("MINVALUE")
+    private Integer minvalue;
+
+    @TableField("MAXVALUE")
+    private Integer maxvalue;
+
+    @TableField("NORMALMIN")
+    private Integer normalmin;
+
+    @TableField("NORMALMAX")
+    private Integer normalmax;
+
+    @TableField("PREALERTVALUE")
+    private Integer prealertvalue;
+
+    @TableField("ALERTVALUE")
+    private Integer alertvalue;
+
+    @TableField("ENABLED")
+    private Integer enabled;
+
+    @TableField("CREATOR")
+    private String creator;
+
+    @TableField("CREATETIME")
+    private Date createtime;
+
+    @TableField("LASTUPDATEPERSON")
+    private String lastupdateperson;
+
+    @TableField("LASTUPDATETIME")
+    private Date lastupdatetime;
+
+}

+ 49 - 0
common/src/main/java/com/gyee/common/model/Risktype.java

@@ -0,0 +1,49 @@
+package com.gyee.common.model;/*
+@author   谢生杰
+@date   2022/9/19-11:48
+*/
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class Risktype {
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private Long id;
+
+    @TableField("RSNUM")
+    private String rsnum;
+
+    @TableField("SERIALNUM")
+    private Long serialnum;
+
+    @TableField("STATION")
+    private String station;
+
+    @TableField("LOCATION")
+    private String location;
+
+    @TableField("CONTENT")
+    private String content;
+
+    @TableField("DESCRIBE")
+    private String describe;
+
+    @TableField("PRINCIPAL")
+    private String principal;
+
+    @TableField("ADDTIME")
+    private Date addtime;
+
+    @TableField("ENDTIME")
+    private Date endtime;
+
+    @TableField("STATE")
+    private String state;
+
+}

+ 41 - 0
common/src/main/java/com/gyee/common/model/Safeprecstard.java

@@ -0,0 +1,41 @@
+package com.gyee.common.model;/*
+@author   谢生杰
+@date   2022/9/19-11:48
+*/
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class Safeprecstard {
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private Long id;
+
+    @TableField("SERIALNUM")
+    private Long serialnum;
+
+    @TableField("SAFECONTENT")
+    private String safecontent;
+
+    @TableField("DESCRIBE")
+    private String describe;
+
+    @TableField("PRINCIPAL")
+    private String principal;
+
+    @TableField("ADDTIME")
+    private Date addtime;
+
+    @TableField("TYPE")
+    private String type;
+
+    @TableField("OTHER")
+    private String other;
+
+
+}

+ 36 - 36
histroy/healthmanagement-histroy-hb/src/main/java/com/gyee/healthmanagementhistroy/task/HealthreportTask.java

@@ -77,41 +77,41 @@ public class HealthreportTask {
     }
 
 
-    /**
-     * 健康报告
-     */
-    @Scheduled(cron = "0 30 9 * * ?")
-    //或直接指定时间间隔,例如:5秒
-    //@Scheduled(fixedRate=5000)
-    private void configureTasks4() throws UnsupportedEncodingException, JsonProcessingException {
-        Date yestday = DateUtils.getYestday(new Date());
-        String date = DateUtils.toDate1(yestday);
-        reportService.saveHealthReport(date,date,"CL_FDC");
-    }
-
-    /**
-     * 健康报告
-     */
-    @Scheduled(cron = "0 31 9 * * ?")
-    //或直接指定时间间隔,例如:5秒
-    //@Scheduled(fixedRate=5000)
-    private void configureTasks5() throws UnsupportedEncodingException, JsonProcessingException {
-        Date yestday = DateUtils.getYestday(new Date());
-        String date = DateUtils.toDate1(yestday);
-        reportService.saveHealthReport(date,date,"KB_FDC");
-    }
-
-    /**
-     * 健康报告
-     */
-    @Scheduled(cron = "0 32 9 * * ?")
-    //或直接指定时间间隔,例如:5秒
-    //@Scheduled(fixedRate=5000)
-    private void configureTasks6() throws UnsupportedEncodingException, JsonProcessingException {
-        Date yestday = DateUtils.getYestday(new Date());
-        String date = DateUtils.toDate1(yestday);
-        reportService.saveHealthReport(date,date,"DX_FDC");
-    }
+//    /**
+//     * 健康报告
+//     */
+//    @Scheduled(cron = "0 30 9 * * ?")
+//    //或直接指定时间间隔,例如:5秒
+//    //@Scheduled(fixedRate=5000)
+//    private void configureTasks4() throws UnsupportedEncodingException, JsonProcessingException {
+//        Date yestday = DateUtils.getYestday(new Date());
+//        String date = DateUtils.toDate1(yestday);
+//        reportService.saveHealthReport(date,date,"CL_FDC");
+//    }
+//
+//    /**
+//     * 健康报告
+//     */
+//    @Scheduled(cron = "0 31 9 * * ?")
+//    //或直接指定时间间隔,例如:5秒
+//    //@Scheduled(fixedRate=5000)
+//    private void configureTasks5() throws UnsupportedEncodingException, JsonProcessingException {
+//        Date yestday = DateUtils.getYestday(new Date());
+//        String date = DateUtils.toDate1(yestday);
+//        reportService.saveHealthReport(date,date,"KB_FDC");
+//    }
+//
+//    /**
+//     * 健康报告
+//     */
+//    @Scheduled(cron = "0 32 9 * * ?")
+//    //或直接指定时间间隔,例如:5秒
+//    //@Scheduled(fixedRate=5000)
+//    private void configureTasks6() throws UnsupportedEncodingException, JsonProcessingException {
+//        Date yestday = DateUtils.getYestday(new Date());
+//        String date = DateUtils.toDate1(yestday);
+//        reportService.saveHealthReport(date,date,"DX_FDC");
+//    }
 
     /**
      * 健康报告
@@ -122,7 +122,7 @@ public class HealthreportTask {
     private void configureTasks7() throws UnsupportedEncodingException, JsonProcessingException {
         Date yestday = DateUtils.getYestday(new Date());
         String date = DateUtils.toDate1(yestday);
-        reportService.saveHealthReport(date,date,"SY_FDC");
+        reportService.saveHealthReport(date,date,"FS_FDC");
     }
 
 }

+ 0 - 620
web/analysis-hb/target/classes/static/admin/assets/js/blockUI/jquery.blockUI.js

@@ -1,620 +0,0 @@
-/*!
- * jQuery blockUI plugin
- * Version 2.70.0-2014.11.23
- * Requires jQuery v1.7 or later
- *jQuery遮罩插件 jquery.blockUI.js
- * Examples at: http://malsup.com/jquery/block/
- * Copyright (c) 2007-2013 M. Alsup
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Thanks to Amir-Hossein Sobhi for some excellent contributions!
- */
-
-;(function() {
-/*jshint eqeqeq:false curly:false latedef:false */
-"use strict";
-
-	function setup($) {
-		$.fn._fadeIn = $.fn.fadeIn;
-
-		var noOp = $.noop || function() {};
-
-		// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
-		// confusing userAgent strings on Vista)
-		var msie = /MSIE/.test(navigator.userAgent);
-		var ie6  = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
-		var mode = document.documentMode || 0;
-		var setExpr = $.isFunction( document.createElement('div').style.setExpression );
-
-		// global $ methods for blocking/unblocking the entire page
-		$.blockUI   = function(opts) { install(window, opts); };
-		$.unblockUI = function(opts) { remove(window, opts); };
-
-		// convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)
-		$.growlUI = function(title, message, timeout, onClose) {
-			var $m = $('<div class="growlUI"></div>');
-			if (title) $m.append('<h1>'+title+'</h1>');
-			if (message) $m.append('<h2>'+message+'</h2>');
-			if (timeout === undefined) timeout = 3000;
-
-			// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
-			var callBlock = function(opts) {
-				opts = opts || {};
-
-				$.blockUI({
-					message: $m,
-					fadeIn : typeof opts.fadeIn  !== 'undefined' ? opts.fadeIn  : 700,
-					fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
-					timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
-					centerY: false,
-					showOverlay: false,
-					onUnblock: onClose,
-					css: $.blockUI.defaults.growlCSS
-				});
-			};
-
-			callBlock();
-			var nonmousedOpacity = $m.css('opacity');
-			$m.mouseover(function() {
-				callBlock({
-					fadeIn: 0,
-					timeout: 30000
-				});
-
-				var displayBlock = $('.blockMsg');
-				displayBlock.stop(); // cancel fadeout if it has started
-				displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
-			}).mouseout(function() {
-				$('.blockMsg').fadeOut(1000);
-			});
-			// End konapun additions
-		};
-
-		// plugin method for blocking element content
-		$.fn.block = function(opts) {
-			if ( this[0] === window ) {
-				$.blockUI( opts );
-				return this;
-			}
-			var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
-			this.each(function() {
-				var $el = $(this);
-				if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
-					return;
-				$el.unblock({ fadeOut: 0 });
-			});
-
-			return this.each(function() {
-				if ($.css(this,'position') == 'static') {
-					this.style.position = 'relative';
-					$(this).data('blockUI.static', true);
-				}
-				this.style.zoom = 1; // force 'hasLayout' in ie
-				install(this, opts);
-			});
-		};
-
-		// plugin method for unblocking element content
-		$.fn.unblock = function(opts) {
-			if ( this[0] === window ) {
-				$.unblockUI( opts );
-				return this;
-			}
-			return this.each(function() {
-				remove(this, opts);
-			});
-		};
-
-		$.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
-
-		// override these in your code to change the default behavior and style
-		$.blockUI.defaults = {
-			// message displayed when blocking (use null for no message)
-			message:  '<div class="loaderbox"><div class="loading-activity"></div> 加载中......</div>',
-
-			title: null,		// title string; only used when theme == true
-			draggable: true,	// only used when theme == true (requires jquery-ui.js to be loaded)
-
-			theme: false, // set to true to use with jQuery UI themes
-
-			// styles for the message when blocking; if you wish to disable
-			// these and use an external stylesheet then do this in your code:
-			// $.blockUI.defaults.css = {};
-			css: {
-				padding:	0,
-				margin:		0,
-				width:		'30%',
-				top:		'40%',
-				left:		'35%',
-				textAlign:	'center',
-				color:		'#000',
-				border:		'0px',
-				backgroundColor:'transparent',
-				cursor:		'wait'
-			},
-
-			// minimal style set used when themes are used
-			themedCSS: {
-				width:	'30%',
-				top:	'40%',
-				left:	'35%'
-			},
-
-			// styles for the overlay
-			overlayCSS:  {
-				backgroundColor:	'#000',
-				opacity:			0.6,
-				cursor:				'wait'
-			},
-
-			// style to replace wait cursor before unblocking to correct issue
-			// of lingering wait cursor
-			cursorReset: 'default',
-
-			// styles applied when using $.growlUI
-			growlCSS: {
-				width:		'350px',
-				top:		'10px',
-				left:		'',
-				right:		'10px',
-				border:		'none',
-				padding:	'5px',
-				opacity:	0.6,
-				cursor:		'default',
-				color:		'#fff',
-				backgroundColor: '#000',
-				'-webkit-border-radius':'10px',
-				'-moz-border-radius':	'10px',
-				'border-radius':		'10px'
-			},
-
-			// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
-			// (hat tip to Jorge H. N. de Vasconcelos)
-			/*jshint scripturl:true */
-			iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
-
-			// force usage of iframe in non-IE browsers (handy for blocking applets)
-			forceIframe: false,
-
-			// z-index for the blocking overlay
-			baseZ: 1000,
-
-			// set these to true to have the message automatically centered
-			centerX: true, // <-- only effects element blocking (page block controlled via css above)
-			centerY: true,
-
-			// allow body element to be stetched in ie6; this makes blocking look better
-			// on "short" pages.  disable if you wish to prevent changes to the body height
-			allowBodyStretch: true,
-
-			// enable if you want key and mouse events to be disabled for content that is blocked
-			bindEvents: true,
-
-			// be default blockUI will supress tab navigation from leaving blocking content
-			// (if bindEvents is true)
-			constrainTabKey: true,
-
-			// fadeIn time in millis; set to 0 to disable fadeIn on block
-			fadeIn:  200,
-
-			// fadeOut time in millis; set to 0 to disable fadeOut on unblock
-			fadeOut:  400,
-
-			// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
-			timeout: 0,
-
-			// disable if you don't want to show the overlay
-			showOverlay: true,
-
-			// if true, focus will be placed in the first available input field when
-			// page blocking
-			focusInput: true,
-
-            // elements that can receive focus
-            focusableElements: ':input:enabled:visible',
-
-			// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
-			// no longer needed in 2012
-			// applyPlatformOpacityRules: true,
-
-			// callback method invoked when fadeIn has completed and blocking message is visible
-			onBlock: null,
-
-			// callback method invoked when unblocking has completed; the callback is
-			// passed the element that has been unblocked (which is the window object for page
-			// blocks) and the options that were passed to the unblock call:
-			//	onUnblock(element, options)
-			onUnblock: null,
-
-			// callback method invoked when the overlay area is clicked.
-			// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
-			onOverlayClick: null,
-
-			// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
-			quirksmodeOffsetHack: 4,
-
-			// class name of the message block
-			blockMsgClass: 'blockMsg',
-
-			// if it is already blocked, then ignore it (don't unblock and reblock)
-			ignoreIfBlocked: false
-		};
-
-		// private data and functions follow...
-
-		var pageBlock = null;
-		var pageBlockEls = [];
-
-		function install(el, opts) {
-			var css, themedCSS;
-			var full = (el == window);
-			var msg = (opts && opts.message !== undefined ? opts.message : undefined);
-			opts = $.extend({}, $.blockUI.defaults, opts || {});
-
-			if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
-				return;
-
-			opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
-			css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
-			if (opts.onOverlayClick)
-				opts.overlayCSS.cursor = 'pointer';
-
-			themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
-			msg = msg === undefined ? opts.message : msg;
-
-			// remove the current block (if there is one)
-			if (full && pageBlock)
-				remove(window, {fadeOut:0});
-
-			// if an existing element is being used as the blocking content then we capture
-			// its current place in the DOM (and current display style) so we can restore
-			// it when we unblock
-			if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
-				var node = msg.jquery ? msg[0] : msg;
-				var data = {};
-				$(el).data('blockUI.history', data);
-				data.el = node;
-				data.parent = node.parentNode;
-				data.display = node.style.display;
-				data.position = node.style.position;
-				if (data.parent)
-					data.parent.removeChild(node);
-			}
-
-			$(el).data('blockUI.onUnblock', opts.onUnblock);
-			var z = opts.baseZ;
-
-			// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
-			// layer1 is the iframe layer which is used to supress bleed through of underlying content
-			// layer2 is the overlay layer which has opacity and a wait cursor (by default)
-			// layer3 is the message content that is displayed while blocking
-			var lyr1, lyr2, lyr3, s;
-			if (msie || opts.forceIframe)
-				lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
-			else
-				lyr1 = $('<div class="blockUI" style="display:none"></div>');
-
-			if (opts.theme)
-				lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
-			else
-				lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
-
-			if (opts.theme && full) {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
-				if ( opts.title ) {
-					s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
-				}
-				s += '<div class="ui-widget-content ui-dialog-content"></div>';
-				s += '</div>';
-			}
-			else if (opts.theme) {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
-				if ( opts.title ) {
-					s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
-				}
-				s += '<div class="ui-widget-content ui-dialog-content"></div>';
-				s += '</div>';
-			}
-			else if (full) {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';
-			}
-			else {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';
-			}
-			lyr3 = $(s);
-
-			// if we have a message, style it
-			if (msg) {
-				if (opts.theme) {
-					lyr3.css(themedCSS);
-					lyr3.addClass('ui-widget-content');
-				}
-				else
-					lyr3.css(css);
-			}
-
-			// style the overlay
-			if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
-				lyr2.css(opts.overlayCSS);
-			lyr2.css('position', full ? 'fixed' : 'absolute');
-
-			// make iframe layer transparent in IE
-			if (msie || opts.forceIframe)
-				lyr1.css('opacity',0.0);
-
-			//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
-			var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
-			$.each(layers, function() {
-				this.appendTo($par);
-			});
-
-			if (opts.theme && opts.draggable && $.fn.draggable) {
-				lyr3.draggable({
-					handle: '.ui-dialog-titlebar',
-					cancel: 'li'
-				});
-			}
-
-			// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
-			var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
-			if (ie6 || expr) {
-				// give body 100% height
-				if (full && opts.allowBodyStretch && $.support.boxModel)
-					$('html,body').css('height','100%');
-
-				// fix ie6 issue when blocked element has a border width
-				if ((ie6 || !$.support.boxModel) && !full) {
-					var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
-					var fixT = t ? '(0 - '+t+')' : 0;
-					var fixL = l ? '(0 - '+l+')' : 0;
-				}
-
-				// simulate fixed position
-				$.each(layers, function(i,o) {
-					var s = o[0].style;
-					s.position = 'absolute';
-					if (i < 2) {
-						if (full)
-							s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
-						else
-							s.setExpression('height','this.parentNode.offsetHeight + "px"');
-						if (full)
-							s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
-						else
-							s.setExpression('width','this.parentNode.offsetWidth + "px"');
-						if (fixL) s.setExpression('left', fixL);
-						if (fixT) s.setExpression('top', fixT);
-					}
-					else if (opts.centerY) {
-						if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
-						s.marginTop = 0;
-					}
-					else if (!opts.centerY && full) {
-						var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
-						var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
-						s.setExpression('top',expression);
-					}
-				});
-			}
-
-			// show the message
-			if (msg) {
-				if (opts.theme)
-					lyr3.find('.ui-widget-content').append(msg);
-				else
-					lyr3.append(msg);
-				if (msg.jquery || msg.nodeType)
-					$(msg).show();
-			}
-
-			if ((msie || opts.forceIframe) && opts.showOverlay)
-				lyr1.show(); // opacity is zero
-			if (opts.fadeIn) {
-				var cb = opts.onBlock ? opts.onBlock : noOp;
-				var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
-				var cb2 = msg ? cb : noOp;
-				if (opts.showOverlay)
-					lyr2._fadeIn(opts.fadeIn, cb1);
-				if (msg)
-					lyr3._fadeIn(opts.fadeIn, cb2);
-			}
-			else {
-				if (opts.showOverlay)
-					lyr2.show();
-				if (msg)
-					lyr3.show();
-				if (opts.onBlock)
-					opts.onBlock.bind(lyr3)();
-			}
-
-			// bind key and mouse events
-			bind(1, el, opts);
-
-			if (full) {
-				pageBlock = lyr3[0];
-				pageBlockEls = $(opts.focusableElements,pageBlock);
-				if (opts.focusInput)
-					setTimeout(focus, 20);
-			}
-			else
-				center(lyr3[0], opts.centerX, opts.centerY);
-
-			if (opts.timeout) {
-				// auto-unblock
-				var to = setTimeout(function() {
-					if (full)
-						$.unblockUI(opts);
-					else
-						$(el).unblock(opts);
-				}, opts.timeout);
-				$(el).data('blockUI.timeout', to);
-			}
-		}
-
-		// remove the block
-		function remove(el, opts) {
-			var count;
-			var full = (el == window);
-			var $el = $(el);
-			var data = $el.data('blockUI.history');
-			var to = $el.data('blockUI.timeout');
-			if (to) {
-				clearTimeout(to);
-				$el.removeData('blockUI.timeout');
-			}
-			opts = $.extend({}, $.blockUI.defaults, opts || {});
-			bind(0, el, opts); // unbind events
-
-			if (opts.onUnblock === null) {
-				opts.onUnblock = $el.data('blockUI.onUnblock');
-				$el.removeData('blockUI.onUnblock');
-			}
-
-			var els;
-			if (full) // crazy selector to handle odd field errors in ie6/7
-				els = $('body').children().filter('.blockUI').add('body > .blockUI');
-			else
-				els = $el.find('>.blockUI');
-
-			// fix cursor issue
-			if ( opts.cursorReset ) {
-				if ( els.length > 1 )
-					els[1].style.cursor = opts.cursorReset;
-				if ( els.length > 2 )
-					els[2].style.cursor = opts.cursorReset;
-			}
-
-			if (full)
-				pageBlock = pageBlockEls = null;
-
-			if (opts.fadeOut) {
-				count = els.length;
-				els.stop().fadeOut(opts.fadeOut, function() {
-					if ( --count === 0)
-						reset(els,data,opts,el);
-				});
-			}
-			else
-				reset(els, data, opts, el);
-		}
-
-		// move blocking element back into the DOM where it started
-		function reset(els,data,opts,el) {
-			var $el = $(el);
-			if ( $el.data('blockUI.isBlocked') )
-				return;
-
-			els.each(function(i,o) {
-				// remove via DOM calls so we don't lose event handlers
-				if (this.parentNode)
-					this.parentNode.removeChild(this);
-			});
-
-			if (data && data.el) {
-				data.el.style.display = data.display;
-				data.el.style.position = data.position;
-				data.el.style.cursor = 'default'; // #59
-				if (data.parent)
-					data.parent.appendChild(data.el);
-				$el.removeData('blockUI.history');
-			}
-
-			if ($el.data('blockUI.static')) {
-				$el.css('position', 'static'); // #22
-			}
-
-			if (typeof opts.onUnblock == 'function')
-				opts.onUnblock(el,opts);
-
-			// fix issue in Safari 6 where block artifacts remain until reflow
-			var body = $(document.body), w = body.width(), cssW = body[0].style.width;
-			body.width(w-1).width(w);
-			body[0].style.width = cssW;
-		}
-
-		// bind/unbind the handler
-		function bind(b, el, opts) {
-			var full = el == window, $el = $(el);
-
-			// don't bother unbinding if there is nothing to unbind
-			if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
-				return;
-
-			$el.data('blockUI.isBlocked', b);
-
-			// don't bind events when overlay is not in use or if bindEvents is false
-			if (!full || !opts.bindEvents || (b && !opts.showOverlay))
-				return;
-
-			// bind anchors and inputs for mouse and key events
-			var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
-			if (b)
-				$(document).bind(events, opts, handler);
-			else
-				$(document).unbind(events, handler);
-
-		// former impl...
-		//		var $e = $('a,:input');
-		//		b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
-		}
-
-		// event handler to suppress keyboard/mouse events when blocking
-		function handler(e) {
-			// allow tab navigation (conditionally)
-			if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
-				if (pageBlock && e.data.constrainTabKey) {
-					var els = pageBlockEls;
-					var fwd = !e.shiftKey && e.target === els[els.length-1];
-					var back = e.shiftKey && e.target === els[0];
-					if (fwd || back) {
-						setTimeout(function(){focus(back);},10);
-						return false;
-					}
-				}
-			}
-			var opts = e.data;
-			var target = $(e.target);
-			if (target.hasClass('blockOverlay') && opts.onOverlayClick)
-				opts.onOverlayClick(e);
-
-			// allow events within the message content
-			if (target.parents('div.' + opts.blockMsgClass).length > 0)
-				return true;
-
-			// allow events for content that is not being blocked
-			return target.parents().children().filter('div.blockUI').length === 0;
-		}
-
-		function focus(back) {
-			if (!pageBlockEls)
-				return;
-			var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
-			if (e)
-				e.focus();
-		}
-
-		function center(el, x, y) {
-			var p = el.parentNode, s = el.style;
-			var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
-			var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
-			if (x) s.left = l > 0 ? (l+'px') : '0';
-			if (y) s.top  = t > 0 ? (t+'px') : '0';
-		}
-
-		function sz(el, p) {
-			return parseInt($.css(el,p),10)||0;
-		}
-
-	}
-
-
-	/*global define:true */
-	if (typeof define === 'function' && define.amd && define.amd.jQuery) {
-		define(['jquery'], setup);
-	} else {
-		setup(jQuery);
-	}
-
-})();

+ 0 - 18
web/analysis-hb/target/classes/static/admin/assets/js/bootstrap/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js

@@ -1,18 +0,0 @@
-/**
- * Lithuanian translation for bootstrap-datetimepicker
- * Šarūnas Gliebus <ssharunas@yahoo.co.uk>
- */
-
-;(function($){
-    $.fn.datetimepicker.dates['lt'] = {
-        days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"],
-        daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"],
-        daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"],
-        months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
-        monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
-        today: "Šiandien",
-		suffix: [],
-		meridiem: [],
-        weekStart: 1
-    };
-}(jQuery));

+ 0 - 188
web/analysis-hb/target/classes/static/admin/bootstarp/ndesaintheme.com/themes/apricot/assets/js/footable/js/footable.sortcd98.js

@@ -1,188 +0,0 @@
-(function ($, w, undefined) {
-    if (w.footable === undefined || w.footable === null)
-        throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');
-
-    var defaults = {
-        sort: true,
-        sorters: {
-            alpha: function (a, b) {
-                if (a === b) return 0;
-                if (a < b) return -1;
-                return 1;
-            },
-            numeric: function (a, b) {
-                return a - b;
-            }
-        },
-        classes: {
-            sort: {
-                sortable: 'footable-sortable',
-                sorted: 'footable-sorted',
-                descending: 'footable-sorted-desc',
-                indicator: 'footable-sort-indicator'
-            }
-        },
-        events: {
-            sort: {
-                sorting: 'footable_sorting',
-                sorted: 'footable_sorted'
-            }
-        }
-    };
-
-    function Sort() {
-        var p = this;
-        p.name = 'Footable Sortable';
-        p.init = function (ft) {
-            p.footable = ft;
-            if (ft.options.sort === true) {
-                $(ft.table)
-                    .unbind('.sorting')
-                    .bind({
-                        'footable_initialized.sorting': function (e) {
-                            var $table = $(ft.table),
-                                $tbody = $table.find('> tbody'),
-                                cls = ft.options.classes.sort,
-                                column, $th;
-
-                            if ($table.data('sort') === false) return;
-
-                            $table.find('> thead > tr:last-child > th, > thead > tr:last-child > td').each(function (ec) {
-                                $th = $(this), column = ft.columns[$th.index()];
-                                if (column.sort.ignore !== true && !$th.hasClass(cls.sortable)) {
-                                    $th.addClass(cls.sortable);
-                                    $('<span />').addClass(cls.indicator).appendTo($th);
-                                }
-                            });
-
-                            $table.find('> thead > tr:last-child > th.' + cls.sortable + ', > thead > tr:last-child > td.' + cls.sortable).unbind('click.footable').bind('click.footable', function (ec) {
-                                ec.preventDefault();
-                                $th = $(this);
-                                var ascending = !$th.hasClass(cls.sorted);
-                                p.doSort($th.index(), ascending);
-                                return false;
-                            });
-
-                            var didSomeSorting = false;
-                            for (var c in ft.columns) {
-                                column = ft.columns[c];
-                                if (column.sort.initial) {
-                                    var ascending = (column.sort.initial !== 'descending');
-                                    p.doSort(column.index, ascending);
-                                    break;
-                                }
-                            }
-                            if (didSomeSorting) {
-                                ft.bindToggleSelectors();
-                            }
-                        },
-                        'footable_redrawn.sorting': function(e) {
-                            var $table = $(ft.table),
-                                cls = ft.options.classes.sort;
-                            if ($table.data('sorted') >= 0) {
-                                $table.find('> thead > tr:last-child > th').each(function(i){
-                                    var $th = $(this);
-                                    if ($th.hasClass(cls.sorted) || $th.hasClass(cls.descending)) {
-                                        p.doSort(i);
-                                        return;
-                                    }
-                                });
-                            }
-                        },
-                        'footable_column_data.sorting': function (e) {
-                            var $th = $(e.column.th);
-                            e.column.data.sort = e.column.data.sort || {};
-                            e.column.data.sort.initial = $th.data('sort-initial') || false;
-                            e.column.data.sort.ignore = $th.data('sort-ignore') || false;
-                            e.column.data.sort.selector = $th.data('sort-selector') || null;
-
-                            var match = $th.data('sort-match') || 0;
-                            if (match >= e.column.data.matches.length) match = 0;
-                            e.column.data.sort.match = e.column.data.matches[match];
-                        }
-                    })
-                //save the sort object onto the table so we can access it later
-                .data('footable-sort', p);
-            }
-        };
-
-        p.doSort = function(columnIndex, ascending) {
-            var ft = p.footable;
-            if ($(ft.table).data('sort') === false) return;
-
-            var $table = $(ft.table),
-                $tbody = $table.find('> tbody'),
-                column = ft.columns[columnIndex],
-                $th = $table.find('> thead > tr:last-child > th:eq(' + columnIndex + ')'),
-                cls = ft.options.classes.sort,
-                evt = ft.options.events.sort;
-
-            ascending = (ascending === undefined) ? $th.hasClass(cls.sorted) :
-                (ascending === 'toggle') ? !$th.hasClass(cls.sorted) : ascending;
-
-            if (column.sort.ignore === true) return true;
-
-            //raise a pre-sorting event so that we can cancel the sorting if needed
-            var event = ft.raise(evt.sorting, { column: column, direction: ascending ? 'ASC' : 'DESC' });
-            if (event && event.result === false) return;
-
-            $table.data('sorted', column.index);
-
-            $table.find('> thead > tr:last-child > th, > thead > tr:last-child > td').not($th).removeClass(cls.sorted + ' ' + cls.descending);
-
-            if (ascending === undefined) {
-                ascending = $th.hasClass(cls.sorted);
-            }
-
-            if (ascending) {
-                $th.removeClass(cls.descending).addClass(cls.sorted);
-            } else {
-                $th.removeClass(cls.sorted).addClass(cls.descending);
-            }
-
-            p.sort(ft, $tbody, column, ascending);
-
-            ft.bindToggleSelectors();
-            ft.raise(evt.sorted, { column: column, direction: ascending ? 'ASC' : 'DESC' });
-        };
-
-        p.rows = function (ft, tbody, column) {
-            var rows = [];
-            tbody.find('> tr').each(function () {
-                var $row = $(this), $next = null;
-                if ($row.hasClass(ft.options.classes.detail)) return true;
-                if ($row.next().hasClass(ft.options.classes.detail)) {
-                    $next = $row.next().get(0);
-                }
-                var row = { 'row': $row, 'detail': $next };
-                if (column !== undefined) {
-                    row.value = ft.parse(this.cells[column.sort.match], column);
-                }
-                rows.push(row);
-                return true;
-            }).detach();
-            return rows;
-        };
-
-        p.sort = function (ft, tbody, column, ascending) {
-            var rows = p.rows(ft, tbody, column);
-            var sorter = ft.options.sorters[column.type] || ft.options.sorters.alpha;
-            rows.sort(function (a, b) {
-                if (ascending) {
-                    return sorter(a.value, b.value);
-                } else {
-                    return sorter(b.value, a.value);
-                }
-            });
-            for (var j = 0; j < rows.length; j++) {
-                tbody.append(rows[j].row);
-                if (rows[j].detail !== null) {
-                    tbody.append(rows[j].detail);
-                }
-            }
-        };
-    }
-
-    w.footable.plugins.register(Sort, defaults);
-
-})(jQuery, window);

+ 51 - 0
web/backmanagerconfig/src/main/java/com/gyee/backconfig/controller/test/XrpProjectplanController.java

@@ -0,0 +1,51 @@
+package com.gyee.backconfig.controller.test;
+
+
+import com.gyee.backconfig.config.R;
+import com.gyee.backconfig.model.auto.XrpProjectplan;
+import com.gyee.backconfig.service.auto.IXrpProjectplanService;
+import com.gyee.backconfig.service.auto.impl.XrpProjectplanServiceImpl;
+import com.gyee.common.model.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 郗瑞鹏
+ * @since 2022-09-14
+ */
+@RestController
+@RequestMapping("//xrp-projectplan")
+public class XrpProjectplanController {
+
+    @Autowired
+    private XrpProjectplanServiceImpl xrpProjectplanService;
+
+
+
+    @GetMapping("/xpp")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R xppList(){
+
+        List<XrpProjectplan> xrpProjectplans = xrpProjectplanService.queryAll();
+        if (StringUtils.isNotNull(xrpProjectplans)) {
+            return R.ok(xrpProjectplans.size()).data(xrpProjectplans);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    @GetMapping("/test")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R test(){
+        return R.ok().data("hello backconfig xrp");
+    }
+}

+ 4 - 10
web/backmanagerconfig/src/main/resources/application-jn.yml

@@ -3,6 +3,7 @@ server:
   servlet:
     context-path: /
 
+
 spring:
   application:
     name: back-config
@@ -44,8 +45,8 @@ spring:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: org.postgresql.Driver
     url: jdbc:postgresql://10.81.3.151:5432/wisdom
-    username: postgres
-    password: postgres
+    username: gdprod
+    password: gd123
     oracle-schema=:
     #    type: com.alibaba.druid.pool.DruidDataSource
     #    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=UTC
@@ -78,22 +79,15 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     auto-mapping-behavior: full
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-    default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
   mapper-locations: classpath*:mapper/**/*Mapper.xml
   global-config:
     # 逻辑删除配置
     db-config:
-      #id-type: auto
+      id-type: auto
       # 删除前
       logic-not-delete-value: 1
       # 删除后
       logic-delete-value: 0
-      #table-prefix: t_
-      id-type: assign_uuid
-  #配置类型别名对应的包
-  type-aliases-package: com.gyee.backconfig.model.auto
-  #用于扫描通用枚举包
-  type-enums-package: com.gyee.backconfig.config
 logging:
   level:
     root: info

+ 1 - 0
web/consumer/pom.xml

@@ -38,6 +38,7 @@
             <groupId>org.postgresql</groupId>
             <artifactId>postgresql</artifactId>
         </dependency>
+
     </dependencies>
     <build>
         <plugins>

+ 87 - 3
web/consumer/src/main/java/com/gyee/consumer/api/knowleage/KnowledgeApi.java

@@ -1,10 +1,9 @@
 package com.gyee.consumer.api.knowleage;
 
 import com.gyee.common.config.R;
+import com.gyee.common.model.*;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 @FeignClient("knowledge-provider")
 @RequestMapping("//knowledge")
@@ -18,6 +17,20 @@ public interface KnowledgeApi {
     );
 
     /**
+     * 故障知识列表编辑
+     * @return
+     */
+    @PostMapping("/faultKnowledgeedit")
+    public R faultKnowledgeedit(@RequestBody P3DeviceFault p3DeviceFault);
+
+    /**
+     * 故障知识列表删除
+     * @return
+     */
+    @DeleteMapping("/faultKnowledgeremove")
+    public R faultKnowledgeremove(@RequestBody P3DeviceFault p3DeviceFault);
+
+    /**
      * 预警知识
      * @param gzjb
      * @param bjlx
@@ -35,6 +48,20 @@ public interface KnowledgeApi {
     );
 
     /**
+     * 预警知识列表编辑
+     * @return
+     */
+    @PostMapping("/earlyKnowledgeedit")
+    public R earlyKnowledgeedit(@RequestBody Alertrule2 alertrule2);
+
+    /**
+     * 预警知识列表删除
+     * @return
+     */
+    @DeleteMapping("/earlyKnowledgeremove")
+    public R earlyKnowledgeremove(@RequestBody Alertrule2 alertrule2);
+
+    /**
      * 检查修理方案
      * @param model
      * @param pageNum
@@ -47,6 +74,20 @@ public interface KnowledgeApi {
                                   @RequestParam(value = "pageSize",required = true) String pageSize
     );
 
+    /**
+     * 检查修理方案编辑
+     * @return
+     */
+    @PostMapping("/checkRepairProgrammeedit")
+    public R checkRepairProgrammeedit(@RequestBody Alertrulefailure alertrulefailure);
+
+    /**
+     * 检查修理方案删除
+     * @return
+     */
+    @DeleteMapping("/checkRepairProgrammeremove")
+    public R checkRepairProgrammeremove(@RequestBody Alertrulefailure alertrulefailure);
+
 
     /**
      * 检查修理方案型号list
@@ -69,6 +110,21 @@ public interface KnowledgeApi {
     );
 
     /**
+     * 特征参数编辑
+     * @return
+     */
+    @PostMapping("/featureParameteredit")
+    public R featureParameteredit(@RequestBody P3DeviceFeatures p3DeviceFeatures);
+
+    /**
+     * 特征参数删除
+     * @return
+     */
+    @DeleteMapping("/featureParameterremove")
+    public R featureParameterremove(@RequestBody P3DeviceFeatures p3DeviceFeatures);
+
+
+    /**
      * 安全措施知识
      * @param name
      * @param pageNum
@@ -82,6 +138,20 @@ public interface KnowledgeApi {
     );
 
     /**
+     * 安全措施知识编辑
+     * @return
+     */
+    @PostMapping("/safeMeasureKnowledgeedit")
+    public R safeMeasureKnowledgeedit(@RequestBody Safeprecstard safeprecstard);
+
+    /**
+     * 安全措施知识删除
+     * @return
+     */
+    @DeleteMapping("/safeMeasureKnowledgeremove")
+    public R safeMeasureKnowledgeremove(@RequestBody Safeprecstard safeprecstard);
+
+    /**
      * 作业指导知识
      * @param name
      * @param pageNum
@@ -96,6 +166,20 @@ public interface KnowledgeApi {
     );
 
     /**
+     * 作业指导知识编辑
+     * @return
+     */
+    @PostMapping("/workGuideKnowledgeedit")
+    public R workGuideKnowledgeedit(@RequestBody Risktype risktype);
+
+    /**
+     * 作业指导知识删除
+     * @return
+     */
+    @DeleteMapping("/workGuideKnowledgeremove")
+    public R workGuideKnowledgeremove(@RequestBody Risktype risktype);
+
+    /**
      *作业指导知识->安措内容
      * @param rsnum
      * @param pageNum

+ 109 - 0
web/consumer/src/main/java/com/gyee/consumer/controller/knowleage/KnowleageController.java

@@ -1,6 +1,7 @@
 package com.gyee.consumer.controller.knowleage;
 
 import com.gyee.common.config.R;
+import com.gyee.common.model.*;
 import com.gyee.consumer.api.knowleage.KnowledgeApi;
 import org.springframework.web.bind.annotation.*;
 
@@ -37,6 +38,24 @@ public class KnowleageController {
         return knowledgeApi.faultKnowledge(gzjb,tjlx,cxnr,pageNum,pageSize);
     }
 
+    /**
+     * 故障知识列表编辑
+     * @return
+     */
+    @PostMapping("/consumer/knowledge/faultKnowledgeedit")
+    public R faultKnowledgeedit(@RequestBody P3DeviceFault p3DeviceFault){
+        return knowledgeApi.faultKnowledgeedit(p3DeviceFault);
+    }
+
+    /**
+     * 故障知识列表删除
+     * @return
+     */
+    @DeleteMapping("/consumer/knowledge/faultKnowledgeremove")
+    public R faultKnowledgeremove(@RequestBody P3DeviceFault p3DeviceFault){
+        return knowledgeApi.faultKnowledgeremove(p3DeviceFault);
+    }
+
 
     /**
      * 预警知识
@@ -56,6 +75,23 @@ public class KnowleageController {
     )  {
         return knowledgeApi.earlyKnowledge(gzjb,bjlx,cxnr,pageNum,pageSize);
     }
+    /**
+     * 预警知识列表编辑
+     * @return
+     */
+    @PostMapping("/consumer/knowledge/earlyKnowledgeedit")
+    public R earlyKnowledgeedit(@RequestBody Alertrule2 alertrule2){
+        return knowledgeApi.earlyKnowledgeedit(alertrule2);
+    }
+
+    /**
+     * 预警知识列表删除
+     * @return
+     */
+    @DeleteMapping("/consumer/knowledge/earlyKnowledgeremove")
+    public R earlyKnowledgeremove(@RequestBody Alertrule2 alertrule2){
+        return knowledgeApi.earlyKnowledgeremove(alertrule2);
+    }
 
 
     /**
@@ -75,6 +111,24 @@ public class KnowleageController {
 
     }
 
+    /**
+     * 检查修理方案编辑
+     * @return
+     */
+    @PostMapping("/consumer/knowledge/checkRepairProgrammeedit")
+    public R checkRepairProgrammeedit(@RequestBody Alertrulefailure alertrulefailure){
+        return knowledgeApi.checkRepairProgrammeedit(alertrulefailure);
+    }
+
+    /**
+     * 检查修理方案删除
+     * @return
+     */
+    @DeleteMapping("/consumer/knowledge/checkRepairProgrammeremove")
+    public R checkRepairProgrammeremove(@RequestBody Alertrulefailure alertrulefailure){
+        return knowledgeApi.checkRepairProgrammeremove(alertrulefailure);
+    }
+
 
     /**
      * 检查修理方案型号list
@@ -107,6 +161,24 @@ public class KnowleageController {
     }
 
     /**
+     * 特征参数编辑
+     * @return
+     */
+    @PostMapping("/consumer/knowledge/featureParameteredit")
+    public R featureParameteredit(@RequestBody P3DeviceFeatures p3DeviceFeatures){
+        return knowledgeApi.featureParameteredit(p3DeviceFeatures);
+    }
+
+    /**
+     * 特征参数删除
+     * @return
+     */
+    @DeleteMapping("/consumer/knowledge/featureParameterremove")
+    public R featureParameterremove(@RequestBody P3DeviceFeatures p3DeviceFeatures){
+        return knowledgeApi.featureParameterremove(p3DeviceFeatures);
+    }
+
+    /**
      * 安全措施知识
      * @param name
      * @param pageNum
@@ -124,6 +196,24 @@ public class KnowleageController {
 
     }
 
+    /**
+     * 安全措施知识编辑
+     * @return
+     */
+    @PostMapping("/consumer/knowledge/safeMeasureKnowledgeedit")
+    public R safeMeasureKnowledgeedit(@RequestBody Safeprecstard safeprecstard){
+        return knowledgeApi.safeMeasureKnowledgeedit(safeprecstard);
+    }
+
+    /**
+     * 安全措施知识删除
+     * @return
+     */
+    @DeleteMapping("/consumer/knowledge/safeMeasureKnowledgeremove")
+    public R safeMeasureKnowledgeremove(@RequestBody Safeprecstard safeprecstard){
+        return knowledgeApi.safeMeasureKnowledgeremove(safeprecstard);
+    }
+
 
     /**
      * 作业指导知识
@@ -141,6 +231,25 @@ public class KnowleageController {
         return knowledgeApi.workGuideKnowledge(name,pageNum,pageSize);
     }
 
+
+    /**
+     * 作业指导知识编辑
+     * @return
+     */
+    @PostMapping("/consumer/knowledge/workGuideKnowledgeedit")
+    public R workGuideKnowledgeedit(@RequestBody Risktype risktype){
+        return knowledgeApi.workGuideKnowledgeedit(risktype);
+    }
+
+    /**
+     * 作业指导知识删除
+     * @return
+     */
+    @DeleteMapping("/consumer/knowledge/workGuideKnowledgeremove")
+    public R workGuideKnowledgeremove(@RequestBody Risktype risktype){
+        return knowledgeApi.workGuideKnowledgeremove(risktype);
+    }
+
     /**
      *作业指导知识->安措内容
      * @param rsnum

+ 2 - 2
web/consumer/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 spring:
   profiles:
-#    active: hf
+    active: dev
 #    active: jn
-    active: dev
+#    active: dev

+ 2 - 2
web/health-hb/src/main/java/com/gyee/frame/common/spring/InitialRunner.java

@@ -237,8 +237,8 @@ public class InitialRunner implements CommandLineRunner {
         ProjectExample projectExample = new ProjectExample();
         projectExample.setOrderByClause("ordernum ASC");
 
-        projectExample.createCriteria().andWindpowerstationidEqualTo("FS_FDC");
-//        projectExample.createCriteria().andWindpowerstationidNotLike("%SY_FDC%");
+       projectExample.createCriteria().andWindpowerstationidEqualTo("FS_FDC");
+
         pjallls = projectService.selectByExample(projectExample);
 
         if (!pjallls.isEmpty()) {

+ 61 - 58
web/health-hb/src/main/java/com/gyee/frame/service/health/HealthMainService.java

@@ -337,55 +337,55 @@ public class HealthMainService {
                 int lsl = 0;// 良数量
                 int csl = 0;// 差数量
                 double jkd = 0.0;
-//                List<Weatherfh> wfhls = weatherfhService.findWeatherfh(beginDate, endDate, wp.getId());
-//                if (!wfhls.isEmpty()) {
-//
-//                    Weatherfh wth = wfhls.get(wfhls.size() - 1);
-//
-//                    String temp = wth.getWeather();
-//                    if (StringUtils.notEmp(temp)) {
-//                        String strtemp = temp.substring(temp.length() - 6, temp.length() - 4);
-//                        if(StringUtils.isNumeric(strtemp))
-//                        {
-//                            tqyb = Double.valueOf(strtemp);
-//                        }else
-//                        {
-//                            temp = temp.substring(0, temp.length() - 2);
-//                            strtemp = temp.substring(temp.lastIndexOf("-")+1);
-//                            if(StringUtils.isNumeric(strtemp)) {
-//                                tqyb = Double.valueOf(strtemp);
-//                            }
-//                        }
-//
-//                    } else {
-//                        tqyb = 1.0;
-//                    }
-//
-//
-//
-//                    ycfs = wth.getSpeed();
-//
-//                    ycfs = new BigDecimal(ycfs).multiply(new BigDecimal(XZNUM)).divide(new BigDecimal(NUM), 2, RoundingMode.HALF_EVEN).doubleValue();
-//                    wpmap.put("ycfs", ycfs);
-//                    wpmap.put("tqyb", tqyb);
-//
-//                } else {
-//                    wpmap.put("ycfs", 6.0);
-//                    wpmap.put("tqyb", 1.0);
-//                }
+                List<Weatherfh> wfhls = weatherfhService.findWeatherfh(beginDate, endDate, wp.getId());
+                if (!wfhls.isEmpty()) {
 
-//                Map<String,Object> weathermap=weatherService.getWeatherRealInfo(wp.getId());
-//                if(null!=weathermap && !weathermap.isEmpty())
-//                {
-//                    if(weathermap.containsKey("tqtp"))
-//                    {
-//                        wpmap.put("tqyb", Double.valueOf(String.valueOf(weathermap.get("tqtp"))));
-//                    }
-//                    if(weathermap.containsKey("fs"))
-//                    {
-//                        wpmap.put("ycfs", weathermap.get("fs"));
-//                    }
-//                }
+                    Weatherfh wth = wfhls.get(wfhls.size() - 1);
+
+                    String temp = wth.getWeather();
+                    if (StringUtils.notEmp(temp)) {
+                        String strtemp = temp.substring(temp.length() - 6, temp.length() - 4);
+                        if(StringUtils.isNumeric(strtemp))
+                        {
+                            tqyb = Double.valueOf(strtemp);
+                        }else
+                        {
+                            temp = temp.substring(0, temp.length() - 2);
+                            strtemp = temp.substring(temp.lastIndexOf("-")+1);
+                            if(StringUtils.isNumeric(strtemp)) {
+                                tqyb = Double.valueOf(strtemp);
+                            }
+                        }
+
+                    } else {
+                        tqyb = 1.0;
+                    }
+
+
+
+                    ycfs = wth.getSpeed();
+
+                    ycfs = new BigDecimal(ycfs).multiply(new BigDecimal(XZNUM)).divide(new BigDecimal(NUM), 2, RoundingMode.HALF_EVEN).doubleValue();
+                    wpmap.put("ycfs", ycfs);
+                    wpmap.put("tqyb", tqyb);
+
+                } else {
+                    wpmap.put("ycfs", 6.0);
+                    wpmap.put("tqyb", 1.0);
+                }
+
+                Map<String,Object> weathermap=weatherService.getWeatherRealInfo(wp.getId());
+                if(null!=weathermap && !weathermap.isEmpty())
+                {
+                    if(weathermap.containsKey("tqtp"))
+                    {
+                        wpmap.put("tqyb", Double.valueOf(String.valueOf(weathermap.get("tqtp"))));
+                    }
+                    if(weathermap.containsKey("fs"))
+                    {
+                        wpmap.put("ycfs", weathermap.get("fs"));
+                    }
+                }
                 // 获得实时风速测点编号
 
                 Windpowerstationpointnew point = windPowerstationTestingPoint2Service.getWindPowerStationTestingPoint2(wp.getId(), Constant.TPOINT_WP_SSFS);
@@ -477,11 +477,12 @@ public class HealthMainService {
                                 stoptypemap.put("windTurbineId", vo.getWindTurbineId());
                                 stoptypemap.put("stopTime", DateUtils.formatDateTime(vo.getStopTime()));
 
-                                if (StringUtils.notEmp(vo.getWarningId()) && InitialRunner.warningmap.containsKey(vo.getWarningId())) {
-                                    stoptypemap.put("warningId", InitialRunner.warningmap.get(vo.getWarningId()).getChinesetext());
-                                } else {
-                                    stoptypemap.put("warningId", " ");
-                                }
+//                                stoptypemap.put("warningId", vo.getWarnDesc());
+//                                if (StringUtils.notEmp(vo.getWarningId()) && InitialRunner.warningmap.containsKey(vo.getWarningId())) {
+//                                    stoptypemap.put("warningId", InitialRunner.warningmap.get(vo.getWarningId()).getChinesetext());
+//                                } else {
+//                                    stoptypemap.put("warningId", " ");
+//                                }
                                 stoptypels.add(stoptypemap);
                             }
                         }
@@ -821,11 +822,13 @@ public class HealthMainService {
                                 stoptypemap.put("windTurbineId", vo.getWindTurbineId());
                                 stoptypemap.put("stopTime", DateUtils.formatDateTime(vo.getStopTime()));
 
-                                if (StringUtils.notEmp(vo.getWarningId()) && InitialRunner.warningmap.containsKey(vo.getWarningId())) {
-                                    stoptypemap.put("warningId", InitialRunner.warningmap.get(vo.getWarningId()).getChinesetext());
-                                } else {
-                                    stoptypemap.put("warningId", " ");
-                                }
+//                                if (StringUtils.notEmp(vo.getWarningId()) && InitialRunner.warningmap.containsKey(vo.getWarningId())) {
+//                                    stoptypemap.put("warningId", InitialRunner.warningmap.get(vo.getWarningId()).getChinesetext());
+//                                } else {
+//                                    stoptypemap.put("warningId", " ");
+//                                }
+
+                                stoptypemap.put("warningId", vo.getWarnDesc());
                                 gzls.add(stoptypemap);
                             }
                         }

+ 33 - 0
web/health-hb/src/main/java/com/gyee/frame/service/health/HealthSubService.java

@@ -887,6 +887,39 @@ public class HealthSubService {
         String[] jcstrs = new String[8];
         String[] bpqstrs = new String[8];
 
+
+        Calendar c = Calendar.getInstance();
+        int days=c.get(Calendar.DAY_OF_YEAR);
+        double yearhours=24*days;
+
+
+        clxstrs[4] = String.valueOf(yearhours);
+        fdjstrs[4] = String.valueOf(yearhours);
+        bjstrs[4] = String.valueOf(yearhours);
+        zkstrs[4] = String.valueOf(yearhours);
+        zzstrs[4] = String.valueOf(yearhours);
+        phstrs[4] = String.valueOf(yearhours);
+        jcstrs[4] = String.valueOf(yearhours);
+        bpqstrs[4] =String.valueOf(yearhours);
+
+        clxstrs[5] = String.valueOf(0.0);
+        fdjstrs[5] = String.valueOf(0.0);
+        bjstrs[5] = String.valueOf(0.0);
+        zkstrs[5] = String.valueOf(0.0);
+        zzstrs[5] = String.valueOf(0.0);
+        phstrs[5] = String.valueOf(0.0);
+        jcstrs[5] = String.valueOf(0.0);
+        bpqstrs[5] =String.valueOf(0.0);
+
+
+        clxstrs[6] = String.valueOf(0.0);
+        fdjstrs[6] = String.valueOf(0.0);
+        bjstrs[6] = String.valueOf(0.0);
+        zkstrs[6] = String.valueOf(0.0);
+        zzstrs[6] = String.valueOf(0.0);
+        phstrs[6] = String.valueOf(0.0);
+        jcstrs[6] = String.valueOf(0.0);
+        bpqstrs[6] =String.valueOf(0.0);
         // 获得风机健康状态结果数组
         String[] jkpoints = new String[4];
 

+ 1 - 1
web/health-hb/src/main/java/com/gyee/frame/service/weather/WeatherService.java

@@ -74,7 +74,7 @@ public class WeatherService  {
 
                 StringBuilder sb=new StringBuilder();
                 sb.append(V2Config.getWeatherurl()).append("/meteorological/datas?");
-                if(id.equals("0") || id.equals("-1")  || id.equals("-2"))
+                if(id.endsWith("0") || id.endsWith("-1")  || id.endsWith("-2"))
                 {
                     sb.append("&wpid=").append(V2Config.getWeatherqygs());
                 }else {

+ 1 - 1
web/health-hb/src/main/resources/application-hf.yml

@@ -39,7 +39,7 @@ gyee:
   #weatherurl: http://123.60.213.70:7011
   weatherurl: http://10.0.118.73:7011
   #weatherurl: http://10.83.68.97:7011
-  weatherqygs: hb_qygs
+  weatherqygs: ln_qygs
   hbmaps: {CL_FDC_KEY: 2003,KB_FDC_KEY: 1460,DX_FDC_KEY: 2186,SY_FDC_KEY: 1366}
   initialcode: INITIAL
 #tomcat config

+ 1 - 1
web/health-hb/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: hb
+    active: hf
 #    active: jn
 
 asyncThreadPool:

+ 1 - 1
web/health-hb/src/main/resources/mybatis/auto/ShutdowneventMapper.xml

@@ -517,7 +517,7 @@
   </select>
 
     <select id="queryEvents"  resultType="com.gyee.frame.model.custom.ShutdowneventVo">
-        select t.id,t.windPowerStationId,t.windTurbineId,t.warningId,w.chinesetext warnDesc,t.stopTime,t.startTime,t.stopHours,t.lossPower,t.statusCode
+        select t.id,t.windPowerStationId,t.windTurbineId,t.warningId,w.chinesetext warnDesc,t.stopTime,t.startTime,t.stopHours,t.lossPower,t.statusCode,t.stopTypeId
         from shutdownevent t ,warning2 w,windturbine b WHERE
         t.warningid=w.ednavalue and t.windturbineid=b.id  and b.modelid=w.modelid
           and t.stopTime>=#{beginDate}

+ 11 - 11
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/config/GeneratorCodeConfig.java

@@ -55,21 +55,21 @@ public class GeneratorCodeConfig {
 //        dsc.setPassword("root");
 //        mpg.setDataSource(dsc);
 
-//        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
-//        dsc.setUsername("gdprod");
-//        dsc.setPassword("gd123");
-////        dsc.setUrl("jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd");
-//        dsc.setUrl("jdbc:oracle:thin:@10.83.68.165:1521:gdsj");
-//        mpg.setDataSource(dsc);
-
-
-
-        dsc.setDriverName("org.postgresql.Driver");
+        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
         dsc.setUsername("gdprod");
         dsc.setPassword("gd123");
-        dsc.setUrl("jdbc:postgresql://10.81.3.151:5432/wisdom");
+//        dsc.setUrl("jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd");
+        dsc.setUrl("jdbc:oracle:thin:@192.168.2.215:1521:gdsj");
         mpg.setDataSource(dsc);
 
+
+
+//        dsc.setDriverName("org.postgresql.Driver");
+//        dsc.setUsername("gdprod");
+//        dsc.setPassword("gd123");
+//        dsc.setUrl("jdbc:postgresql://10.81.3.151:5432/wisdom");
+//        mpg.setDataSource(dsc);
+
 //        dsc.setDriverName("com.cloudera.impala.jdbc41.Driver");
 //        dsc.setUrl("jdbc:impala://192.168.1.67:21050/gyee_test");
 //        mpg.setDataSource(dsc);

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/BjgltjbController.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@RestController
+@RequestMapping("//bjgltjb")
+public class BjgltjbController {
+
+}

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/EarlywarningmainController.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@RestController
+@RequestMapping("//earlywarningmain")
+public class EarlywarningmainController {
+
+}

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/EquipmentmodelController.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@RestController
+@RequestMapping("//equipmentmodel")
+public class EquipmentmodelController {
+
+}

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/FailurestatisticsmainController.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@RestController
+@RequestMapping("//failurestatisticsmain")
+public class FailurestatisticsmainController {
+
+}

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/auto/PartsController.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.controller.auto;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@RestController
+@RequestMapping("//parts")
+public class PartsController {
+
+}

+ 142 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/controller/reliability/ReliabilityController.java

@@ -0,0 +1,142 @@
+package com.gyee.healthmanagement.controller.reliability;
+
+
+import com.gyee.common.model.StringUtils;
+import com.gyee.healthmanagement.config.R;
+import com.gyee.healthmanagement.model.auto.*;
+import com.gyee.healthmanagement.service.reliability.ReliabilityService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * baseURL: 10.155.32.4:8034
+ * @ClassName : ReliabilityController
+ * @Author : xieshengjie
+ * @Date: 2021/7/8 14:01
+ * @Description : 可靠性分析controller
+ */
+@RestController
+@RequestMapping("//reliability")
+public class ReliabilityController {
+    @Autowired
+    private ReliabilityService reliabilityService;
+
+    /**
+     * 预警评判分析
+     * @param wpid
+     * @param date
+     * @return
+     */
+    @GetMapping("/earlyWarn")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R earlyWarn(@RequestParam(value = "wpid",required = true)String wpid,
+                       @RequestParam(value = "date",required = true)String date)  {
+        List<Earlywarningmain> resultlist = reliabilityService.earlyWarn(wpid,date);
+        if (StringUtils.isNotNull(resultlist)) {
+            return R.ok().data(resultlist);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 故障统计
+     * @param wpid
+     * @param date
+     * @return
+     */
+    @GetMapping("/failurestatistics")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R failurestatistics(@RequestParam(value = "wpid",required = true)String wpid,
+                           @RequestParam(value = "date",required = true)String date)  {
+        List<Failurestatisticsmain> resultlist = reliabilityService.failurestatistics(wpid, date);
+        if (StringUtils.isNotNull(resultlist)) {
+            return R.ok().data(resultlist);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 获取部件列表
+     * @return
+     */
+    @GetMapping("/partlist")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R partlist()  {
+        List<Parts> resultlist = reliabilityService.partlist();
+        if (StringUtils.isNotNull(resultlist)) {
+            return R.ok().data(resultlist);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 获取型号list
+     * @return
+     */
+    @GetMapping("/modellist")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R modellist()  {
+        List<Equipmentmodel> resultlist = reliabilityService.modellist();
+        if (StringUtils.isNotNull(resultlist)) {
+            return R.ok().data(resultlist);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 部件功率
+     * @param wpid
+     * @param date
+     * @param model
+     * @param part
+     * @return
+     */
+    @GetMapping("/poweranalysis")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R poweranalysis(@RequestParam(value = "wpid",required = true)String wpid,
+                               @RequestParam(value = "date",required = true)String date,
+                           @RequestParam(value = "model",required = true)String model,
+                           @RequestParam(value = "part",required = true)String part
+    )  {
+        List<Bjgltjb> resultlist = reliabilityService.poweranalysis(wpid, date,model,part);
+//        Map<String,Map<String,List<Bjgltjb>>> dataMap = new HashMap<>();
+//        resultlist.stream().forEach(i->{
+//            String wtid = i.getWtid();
+//            String power = i.getPower();
+//            if (dataMap.containsKey(wtid)){
+//                Map<String, List<Bjgltjb>> map = dataMap.get(wtid);
+//                if (map.containsKey(power)){
+//                    map.get(power).add(i);
+//                }else{
+//                    List<Bjgltjb> list = new ArrayList<>();
+//                    list.add(i);
+//                    map.put(i.getPower(),list);
+//                }
+//            }else {
+//                Map<String,List<Bjgltjb>> map = new HashMap<>();
+//                List<Bjgltjb> list = new ArrayList<>();
+//                list.add(i);
+//                map.put(i.getPower(),list);
+//                dataMap.put(wtid,map);
+//            }
+//        });
+        if (StringUtils.isNotNull(resultlist)) {
+            return R.ok().data(resultlist);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+
+}

+ 22 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/BjgltjbMapper.java

@@ -0,0 +1,22 @@
+package com.gyee.healthmanagement.mapper.auto;
+
+import com.gyee.healthmanagement.model.auto.Bjgltjb;
+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 谢生杰
+ * @since 2022-09-18
+ */
+public interface BjgltjbMapper extends BaseMapper<Bjgltjb> {
+
+    @Select("select * from bjgltjb where wpid=#{wpid} and to_char(recodedate,'yyyy-MM-dd')=#{date} and model=#{model} and partid=#{part}")
+    List<Bjgltjb> list(@Param("wpid") String wpid, @Param("date") String date, @Param("model") String model, @Param("part") String part);
+}

+ 21 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/EarlywarningmainMapper.java

@@ -0,0 +1,21 @@
+package com.gyee.healthmanagement.mapper.auto;
+
+import com.gyee.healthmanagement.model.auto.Earlywarningmain;
+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 谢生杰
+ * @since 2022-09-18
+ */
+public interface EarlywarningmainMapper extends BaseMapper<Earlywarningmain> {
+    @Select("select * from earlywarningmain where wpid=#{wpid} and recodedate=to_date(#{date},'yyyy-MM-dd')")
+    List<Earlywarningmain> listEarly(@Param("wpid") String wpid, @Param("date") String date);
+}

+ 16 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/EquipmentmodelMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.healthmanagement.mapper.auto;
+
+import com.gyee.healthmanagement.model.auto.Equipmentmodel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface EquipmentmodelMapper extends BaseMapper<Equipmentmodel> {
+
+}

+ 21 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/FailurestatisticsmainMapper.java

@@ -0,0 +1,21 @@
+package com.gyee.healthmanagement.mapper.auto;
+
+import com.gyee.healthmanagement.model.auto.Failurestatisticsmain;
+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 谢生杰
+ * @since 2022-09-18
+ */
+public interface FailurestatisticsmainMapper extends BaseMapper<Failurestatisticsmain> {
+    @Select("select * from failurestatisticsmain where wpid=#{wpid} and recodedate = to_date(#{date},'yyyy-MM-dd') ")
+    List<Failurestatisticsmain> listFailure(@Param("wpid") String wpid, @Param("date") String date);
+}

+ 16 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/mapper/auto/PartsMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.healthmanagement.mapper.auto;
+
+import com.gyee.healthmanagement.model.auto.Parts;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface PartsMapper extends BaseMapper<Parts> {
+
+}

+ 71 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Bjgltjb.java

@@ -0,0 +1,71 @@
+package com.gyee.healthmanagement.model.auto;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("BJGLTJB")
+public class Bjgltjb extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField("WPID")
+    private String wpid;
+
+    @TableField("WPNAME")
+    private String wpname;
+
+    @TableField("WTID")
+    private String wtid;
+
+    @TableField("WTNAME")
+    private String wtname;
+
+    @TableField("MODEL")
+    private String model;
+
+    @TableField("ID")
+    private String id;
+
+    @TableField("TID")
+    private String tid;
+
+    @TableField("RECODEDATE")
+    private Date recodedate;
+
+    @TableField("PARTID")
+    private String partid;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("DATAVALUE")
+    private Double datavalue;
+
+    @TableField("POWER")
+    private String power;
+
+    @TableField("EARLYWARNINGVALUE")
+    private Double earlywarningvalue;
+
+    @TableField("CRITICALVALUE")
+    private Double criticalvalue;
+
+
+}

+ 154 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Earlywarningmain.java

@@ -0,0 +1,154 @@
+package com.gyee.healthmanagement.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("EARLYWARNINGMAIN")
+public class Earlywarningmain extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("RECODEDATE")
+    private Date recodedate;
+
+    @TableField("WPID")
+    private String wpid;
+
+    @TableField("WPNAME")
+    private String wpname;
+
+    @TableField("WTID")
+    private String wtid;
+
+    @TableField("WTNAME")
+    private String wtname;
+
+    @TableField("DAY3TOP1")
+    private Double day3top1;
+
+    @TableField("DAY3TOP2")
+    private Double day3top2;
+
+    @TableField("DAY3TOP3")
+    private Double day3top3;
+
+    @TableField("DAY7TOP1")
+    private Double day7top1;
+
+    @TableField("DAY7TOP2")
+    private Double day7top2;
+
+    @TableField("DAY7TOP3")
+    private Double day7top3;
+
+    @TableField("DAY15TOP1")
+    private Double day15top1;
+
+    @TableField("DAY15TOP2")
+    private Double day15top2;
+
+    @TableField("DAY15TOP3")
+    private Double day15top3;
+
+    @TableField("MONTH1TOP1")
+    private Double month1top1;
+
+    @TableField("MONTH1TOP2")
+    private Double month1top2;
+
+    @TableField("MONTH1TOP3")
+    private Double month1top3;
+
+    @TableField("DAY3TOP1NAME")
+    private String day3top1name;
+
+    @TableField("DAY3TOP2NAME")
+    private String day3top2name;
+
+    @TableField("DAY3TOP3NAME")
+    private String day3top3name;
+
+    @TableField("DAY7TOP1NAME")
+    private String day7top1name;
+
+    @TableField("DAY7TOP2NAME")
+    private String day7top2name;
+
+    @TableField("DAY7TOP3NAME")
+    private String day7top3name;
+
+    @TableField("DAY15TOP1NAME")
+    private String day15top1name;
+
+    @TableField("DAY15TOP2NAME")
+    private String day15top2name;
+
+    @TableField("DAY15TOP3NAME")
+    private String day15top3name;
+
+    @TableField("MONTH1TOP1NAME")
+    private String month1top1name;
+
+    @TableField("MONTH1TOP2NAME")
+    private String month1top2name;
+
+    @TableField("MONTH1TOP3NAME")
+    private String month1top3name;
+
+    @TableField("MONTH1TOPNUM")
+    private Double month1topnum;
+
+    @TableField("DAY7TOPNUM")
+    private Double day7topnum;
+
+    @TableField("DAY15TOPNUM")
+    private Double day15topnum;
+
+    @TableField("DAY3TOPNUM")
+    private Double day3topnum;
+
+    @TableField("SYNTHESISTOPNUM")
+    private Double synthesistopnum;
+
+    @TableField("DAY1TOP1")
+    private Double day1top1;
+
+    @TableField("DAY1TOP2")
+    private Double day1top2;
+
+    @TableField("DAY1TOP3")
+    private Double day1top3;
+
+    @TableField("DAY1TOP1NAME")
+    private String day1top1name;
+
+    @TableField("DAY1TOP2NAME")
+    private String day1top2name;
+
+    @TableField("DAY1TOP3NAME")
+    private String day1top3name;
+
+    @TableField("DAY1TOPNUM")
+    private Double day1topnum;
+
+
+}

+ 65 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Equipmentmodel.java

@@ -0,0 +1,65 @@
+package com.gyee.healthmanagement.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("EQUIPMENTMODEL")
+public class Equipmentmodel extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("CODE")
+    private String code;
+
+    @TableField("NAME")
+    private String name;
+
+    @TableField("DESCRIPTION")
+    private String description;
+
+    @TableField("POWERPRODUCTION")
+    private Double powerproduction;
+
+    @TableField("CUTINWINDSPEED")
+    private Double cutinwindspeed;
+
+    @TableField("RATEDWINDSPEED")
+    private Double ratedwindspeed;
+
+    @TableField("CUTOUTWINDSPEED")
+    private String cutoutwindspeed;
+
+    @TableField("WINDTURBINEMANUFACTURERID")
+    private String windturbinemanufacturerid;
+
+    @TableField("PHOTO")
+    private String photo;
+
+    @TableField("UNIT")
+    private String unit;
+
+    @TableField("SWEPTAREA")
+    private Double sweptarea;
+
+    @TableField("EQUIPMENTCATEGORY")
+    private Double equipmentcategory;
+
+
+}

+ 154 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Failurestatisticsmain.java

@@ -0,0 +1,154 @@
+package com.gyee.healthmanagement.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("FAILURESTATISTICSMAIN")
+public class Failurestatisticsmain extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("ID")
+    private String id;
+
+    @TableField("RECODEDATE")
+    private Date recodedate;
+
+    @TableField("WPID")
+    private String wpid;
+
+    @TableField("WPNAME")
+    private String wpname;
+
+    @TableField("WTID")
+    private String wtid;
+
+    @TableField("WTNAME")
+    private String wtname;
+
+    @TableField("DAY3TOP1")
+    private Double day3top1;
+
+    @TableField("DAY3TOP2")
+    private Double day3top2;
+
+    @TableField("DAY3TOP3")
+    private Double day3top3;
+
+    @TableField("DAY7TOP1")
+    private Double day7top1;
+
+    @TableField("DAY7TOP2")
+    private Double day7top2;
+
+    @TableField("DAY7TOP3")
+    private Double day7top3;
+
+    @TableField("DAY15TOP1")
+    private Double day15top1;
+
+    @TableField("DAY15TOP2")
+    private Double day15top2;
+
+    @TableField("DAY15TOP3")
+    private Double day15top3;
+
+    @TableField("MONTH1TOP1")
+    private Double month1top1;
+
+    @TableField("MONTH1TOP2")
+    private Double month1top2;
+
+    @TableField("MONTH1TOP3")
+    private Double month1top3;
+
+    @TableField("DAY3TOP1NAME")
+    private String day3top1name;
+
+    @TableField("DAY3TOP2NAME")
+    private String day3top2name;
+
+    @TableField("DAY3TOP3NAME")
+    private String day3top3name;
+
+    @TableField("DAY7TOP1NAME")
+    private String day7top1name;
+
+    @TableField("DAY7TOP2NAME")
+    private String day7top2name;
+
+    @TableField("DAY7TOP3NAME")
+    private String day7top3name;
+
+    @TableField("DAY15TOP1NAME")
+    private String day15top1name;
+
+    @TableField("DAY15TOP2NAME")
+    private String day15top2name;
+
+    @TableField("DAY15TOP3NAME")
+    private String day15top3name;
+
+    @TableField("MONTH1TOP1NAME")
+    private String month1top1name;
+
+    @TableField("MONTH1TOP2NAME")
+    private String month1top2name;
+
+    @TableField("MONTH1TOP3NAME")
+    private String month1top3name;
+
+    @TableField("MONTH1TOPNUM")
+    private Double month1topnum;
+
+    @TableField("DAY7TOPNUM")
+    private Double day7topnum;
+
+    @TableField("DAY15TOPNUM")
+    private Double day15topnum;
+
+    @TableField("DAY3TOPNUM")
+    private Double day3topnum;
+
+    @TableField("SYNTHESISTOPNUM")
+    private Double synthesistopnum;
+
+    @TableField("DAY1TOP1")
+    private Double day1top1;
+
+    @TableField("DAY1TOP2")
+    private Double day1top2;
+
+    @TableField("DAY1TOP3")
+    private Double day1top3;
+
+    @TableField("DAY1TOP1NAME")
+    private String day1top1name;
+
+    @TableField("DAY1TOP2NAME")
+    private String day1top2name;
+
+    @TableField("DAY1TOP3NAME")
+    private String day1top3name;
+
+    @TableField("DAY1TOPNUM")
+    private Double day1topnum;
+
+
+}

+ 31 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/model/auto/Parts.java

@@ -0,0 +1,31 @@
+package com.gyee.healthmanagement.model.auto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("PARTS")
+public class Parts extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField("ID")
+    private String id;
+
+    @TableField("NAME")
+    private String name;
+
+
+}

+ 19 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IBjgltjbService.java

@@ -0,0 +1,19 @@
+package com.gyee.healthmanagement.service.auto;
+
+import com.gyee.healthmanagement.model.auto.Bjgltjb;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface IBjgltjbService extends IService<Bjgltjb> {
+
+    List<Bjgltjb> list(String wpid, String date, String model, String part);
+}

+ 19 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IEarlywarningmainService.java

@@ -0,0 +1,19 @@
+package com.gyee.healthmanagement.service.auto;
+
+import com.gyee.healthmanagement.model.auto.Earlywarningmain;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface IEarlywarningmainService extends IService<Earlywarningmain> {
+
+    List<Earlywarningmain> listEarly(String wpid, String date);
+}

+ 16 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IEquipmentmodelService.java

@@ -0,0 +1,16 @@
+package com.gyee.healthmanagement.service.auto;
+
+import com.gyee.healthmanagement.model.auto.Equipmentmodel;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface IEquipmentmodelService extends IService<Equipmentmodel> {
+
+}

+ 19 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IFailurestatisticsmainService.java

@@ -0,0 +1,19 @@
+package com.gyee.healthmanagement.service.auto;
+
+import com.gyee.healthmanagement.model.auto.Failurestatisticsmain;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface IFailurestatisticsmainService extends IService<Failurestatisticsmain> {
+
+    List<Failurestatisticsmain> listFailure(String wpid, String date);
+}

+ 16 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/IPartsService.java

@@ -0,0 +1,16 @@
+package com.gyee.healthmanagement.service.auto;
+
+import com.gyee.healthmanagement.model.auto.Parts;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+public interface IPartsService extends IService<Parts> {
+
+}

+ 28 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/BjgltjbServiceImpl.java

@@ -0,0 +1,28 @@
+package com.gyee.healthmanagement.service.auto.impl;
+
+import com.gyee.healthmanagement.model.auto.Bjgltjb;
+import com.gyee.healthmanagement.mapper.auto.BjgltjbMapper;
+import com.gyee.healthmanagement.service.auto.IBjgltjbService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Service
+public class BjgltjbServiceImpl extends ServiceImpl<BjgltjbMapper, Bjgltjb> implements IBjgltjbService {
+    @Resource
+    private BjgltjbMapper bjgltjbMapper;
+    @Override
+    public List<Bjgltjb> list(String wpid, String date, String model, String part) {
+        return bjgltjbMapper.list(wpid,date,model,part);
+    }
+}

+ 28 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/EarlywarningmainServiceImpl.java

@@ -0,0 +1,28 @@
+package com.gyee.healthmanagement.service.auto.impl;
+
+import com.gyee.healthmanagement.model.auto.Earlywarningmain;
+import com.gyee.healthmanagement.mapper.auto.EarlywarningmainMapper;
+import com.gyee.healthmanagement.service.auto.IEarlywarningmainService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Service
+public class EarlywarningmainServiceImpl extends ServiceImpl<EarlywarningmainMapper, Earlywarningmain> implements IEarlywarningmainService {
+    @Resource
+    private EarlywarningmainMapper earlywarningmainMapper;
+    @Override
+    public List<Earlywarningmain> listEarly(String wpid, String date) {
+        return earlywarningmainMapper.listEarly(wpid,date);
+    }
+}

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/EquipmentmodelServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.service.auto.impl;
+
+import com.gyee.healthmanagement.model.auto.Equipmentmodel;
+import com.gyee.healthmanagement.mapper.auto.EquipmentmodelMapper;
+import com.gyee.healthmanagement.service.auto.IEquipmentmodelService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Service
+public class EquipmentmodelServiceImpl extends ServiceImpl<EquipmentmodelMapper, Equipmentmodel> implements IEquipmentmodelService {
+
+}

+ 28 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/FailurestatisticsmainServiceImpl.java

@@ -0,0 +1,28 @@
+package com.gyee.healthmanagement.service.auto.impl;
+
+import com.gyee.healthmanagement.model.auto.Failurestatisticsmain;
+import com.gyee.healthmanagement.mapper.auto.FailurestatisticsmainMapper;
+import com.gyee.healthmanagement.service.auto.IFailurestatisticsmainService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Service
+public class FailurestatisticsmainServiceImpl extends ServiceImpl<FailurestatisticsmainMapper, Failurestatisticsmain> implements IFailurestatisticsmainService {
+    @Resource
+    private FailurestatisticsmainMapper failurestatisticsmainMapper;
+    @Override
+    public List<Failurestatisticsmain> listFailure(String wpid, String date) {
+        return failurestatisticsmainMapper.listFailure(wpid,date);
+    }
+}

+ 20 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/auto/impl/PartsServiceImpl.java

@@ -0,0 +1,20 @@
+package com.gyee.healthmanagement.service.auto.impl;
+
+import com.gyee.healthmanagement.model.auto.Parts;
+import com.gyee.healthmanagement.mapper.auto.PartsMapper;
+import com.gyee.healthmanagement.service.auto.IPartsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2022-09-18
+ */
+@Service
+public class PartsServiceImpl extends ServiceImpl<PartsMapper, Parts> implements IPartsService {
+
+}

+ 92 - 0
web/healthmanagement-web-hb/src/main/java/com/gyee/healthmanagement/service/reliability/ReliabilityService.java

@@ -0,0 +1,92 @@
+package com.gyee.healthmanagement.service.reliability;
+
+
+import com.gyee.healthmanagement.model.auto.*;
+import com.gyee.healthmanagement.service.auto.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @ClassName : ReliabilityService
+ * @Author : xieshengjie
+ * @Date: 2021/7/8 14:02
+ * @Description : 可靠性分析service
+ */
+@Service
+public class ReliabilityService {
+    @Autowired
+    private IEarlywarningmainService earlywarningmainService;
+    @Autowired
+    private IFailurestatisticsmainService failurestatisticsmainService;
+    @Autowired
+    private IPartsService partsService;
+    @Autowired
+    private IEquipmentmodelService equipmentmodelService;
+    @Autowired
+    private IBjgltjbService bjgltjbService;
+    /**
+     * 预警评判分析
+     * @param wpid
+     * @param date
+     * @return
+     */
+    public List<Earlywarningmain> earlyWarn(String wpid, String date) {
+//        QueryWrapper<Earlywarningmain> qw = new QueryWrapper<>();
+//        qw.eq("wpid",wpid);
+//        qw.eq("recodedate", DateUtils.parseDate(date));
+        List<Earlywarningmain> list = earlywarningmainService.listEarly(wpid,date);
+        return list;
+    }
+
+    /**
+     * 故障统计
+     * @param wpid
+     * @param date
+     * @returnFAILURESTATISTICSMAIN
+     */
+    public List<Failurestatisticsmain> failurestatistics(String wpid, String date) {
+//        QueryWrapper<Failurestatisticsmain> qw = new QueryWrapper<>();
+//        qw.eq("wpid",wpid);
+//        qw.eq("recodedate", DateUtils.parseDate(date));
+        List<Failurestatisticsmain> list = failurestatisticsmainService.listFailure(wpid,date);
+        return list;
+    }
+
+    /**
+     * 部件列表
+     * @return
+     */
+    public List<Parts> partlist() {
+        List<Parts> list = partsService.list();
+        return list;
+    }
+
+    /**
+     * 型号列表
+     * @return
+     */
+    public List<Equipmentmodel> modellist() {
+        List<Equipmentmodel> list = equipmentmodelService.list();
+        return list;
+    }
+
+    /**
+     * 获取部件功率
+     * @param wpid
+     * @param date
+     * @param model
+     * @param part
+     * @return
+     */
+    public List<Bjgltjb> poweranalysis(String wpid, String date, String model, String part) {
+//        QueryWrapper<Bjgltjb> qw = new QueryWrapper<>();
+//        qw.eq("wpid",wpid);
+//        qw.eq("recodedate",DateUtils.parseDate(date));
+//        qw.eq("model",model);
+//        qw.eq("partid",part);
+        List<Bjgltjb> list = bjgltjbService.list(wpid,date,model,part);
+        return list;
+    }
+}

+ 204 - 0
web/knowledge-hb/src/main/java/com/gyee/knowledge/controller/knowledge/KnowledgeController.java

@@ -47,10 +47,46 @@ public class KnowledgeController {
         }else{
             return R.error().message("访问失败");
         }
+    }
+
 
+    /**
+     * 故障知识列表编辑
+     * @return
+     */
+    @PostMapping("/faultKnowledgeedit")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R faultKnowledgeedit(@RequestBody P3DeviceFault p3DeviceFault)  {
+
+        Boolean result = knowledgeService.faultKnowledgeedit(p3DeviceFault);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
     }
 
     /**
+     * 故障知识列表删除
+     * @return
+     */
+    @DeleteMapping("/faultKnowledgeremove")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R faultKnowledgeremove(@RequestBody P3DeviceFault p3DeviceFault)  {
+
+        Boolean result = knowledgeService.faultKnowledgeremove(p3DeviceFault);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+
+
+    /**
      * 预警知识
      * @param gzjb
      * @param bjlx
@@ -79,6 +115,40 @@ public class KnowledgeController {
     }
 
     /**
+     * 预警知识列表编辑
+     * @return
+     */
+    @PostMapping("/earlyKnowledgeedit")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R earlyKnowledgeedit(@RequestBody Alertrule2 alertrule2)  {
+
+        Boolean result = knowledgeService.earlyKnowledgeedit(alertrule2);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 预警知识列表删除
+     * @return
+     */
+    @DeleteMapping("/earlyKnowledgeremove")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R earlyKnowledgeremove(@RequestBody Alertrule2 alertrule2)  {
+
+        Boolean result = knowledgeService.earlyKnowledgeremove(alertrule2);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
      * 检查修理方案
      * @param model
      * @param pageNum
@@ -102,6 +172,40 @@ public class KnowledgeController {
 
     }
 
+    /**
+     * 检查修理方案编辑
+     * @return
+     */
+    @PostMapping("/checkRepairProgrammeedit")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R checkRepairProgrammeedit(@RequestBody Alertrulefailure alertrulefailure)  {
+
+        Boolean result = knowledgeService.checkRepairProgrammeedit(alertrulefailure);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 检查修理方案删除
+     * @return
+     */
+    @DeleteMapping("/checkRepairProgrammeremove")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R checkRepairProgrammeremove(@RequestBody Alertrulefailure alertrulefailure)  {
+
+        Boolean result = knowledgeService.checkRepairProgrammeremove(alertrulefailure);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
 
     /**
      * 检查修理方案型号list
@@ -146,6 +250,41 @@ public class KnowledgeController {
     }
 
     /**
+     * 特征参数编辑
+     * @return
+     */
+    @PostMapping("/featureParameteredit")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R featureParameteredit(@RequestBody P3DeviceFeatures p3DeviceFeatures)  {
+
+        Boolean result = knowledgeService.featureParameteredit(p3DeviceFeatures);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 特征参数删除
+     * @return
+     */
+    @DeleteMapping("/featureParameterremove")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R featureParameterremove(@RequestBody P3DeviceFeatures p3DeviceFeatures)  {
+
+        Boolean result = knowledgeService.featureParameterremove(p3DeviceFeatures);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+
+    /**
      * 安全措施知识
      * @param name
      * @param pageNum
@@ -166,7 +305,39 @@ public class KnowledgeController {
         }else{
             return R.error().message("访问失败");
         }
+    }
+    /**
+     * 安全措施知识编辑
+     * @return
+     */
+    @PostMapping("/safeMeasureKnowledgeedit")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R safeMeasureKnowledgeedit(@RequestBody Safeprecstard safeprecstard)  {
+
+        Boolean result = knowledgeService.safeMeasureKnowledgeedit(safeprecstard);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 安全措施知识删除
+     * @return
+     */
+    @DeleteMapping("/safeMeasureKnowledgeremove")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R safeMeasureKnowledgeremove(@RequestBody Safeprecstard safeprecstard)  {
 
+        Boolean result = knowledgeService.safeMeasureKnowledgeremove(safeprecstard);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
     }
 
     /**
@@ -191,9 +362,42 @@ public class KnowledgeController {
         }else{
             return R.error().message("访问失败");
         }
+    }
+    /**
+     * 作业指导知识编辑
+     * @return
+     */
+    @PostMapping("/workGuideKnowledgeedit")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R workGuideKnowledgeedit(@RequestBody Risktype risktype)  {
+
+        Boolean result = knowledgeService.workGuideKnowledgeedit(risktype);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
+    }
+
+    /**
+     * 作业指导知识删除
+     * @return
+     */
+    @DeleteMapping("/workGuideKnowledgeremove")
+    @ResponseBody
+    @CrossOrigin(origins = "*", maxAge = 3600)
+    public R workGuideKnowledgeremove(@RequestBody Risktype risktype)  {
 
+        Boolean result = knowledgeService.workGuideKnowledgeremove(risktype);
+        if (StringUtils.isNotNull(result)) {
+            return R.ok().data(result);
+        }else{
+            return R.error().message("访问失败");
+        }
     }
 
+
     /**
      *作业指导知识->安措内容
      * @param rsnum

+ 2 - 1
web/knowledge-hb/src/main/java/com/gyee/knowledge/model/auto/Alertrule2.java

@@ -1,5 +1,6 @@
 package com.gyee.knowledge.model.auto;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -25,7 +26,7 @@ public class Alertrule2 extends Model {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId("ID")
+    @TableId(value="ID",type = IdType.INPUT)
     private String id;
 
     @TableField("NAME")

+ 2 - 1
web/knowledge-hb/src/main/java/com/gyee/knowledge/model/auto/Alertrulefailure.java

@@ -2,6 +2,7 @@ package com.gyee.knowledge.model.auto;
 
 import java.math.BigDecimal;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -24,7 +25,7 @@ public class Alertrulefailure extends Model {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId
+    @TableId(value = "ID",type = IdType.INPUT)
     private String id;
 
     @TableField("TID")

+ 2 - 1
web/knowledge-hb/src/main/java/com/gyee/knowledge/model/auto/P3DeviceFault.java

@@ -2,6 +2,7 @@ package com.gyee.knowledge.model.auto;
 
 import java.math.BigDecimal;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -28,7 +29,7 @@ public class P3DeviceFault extends Model {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId("ID")
+    @TableId(value="ID",type = IdType.INPUT)
     private String id;
 
     @TableField("CODE")

+ 74 - 0
web/knowledge-hb/src/main/java/com/gyee/knowledge/service/knowledge/KnowledgeService.java

@@ -3,6 +3,7 @@ package com.gyee.knowledge.service.knowledge;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.CommonUtils;
 import com.gyee.knowledge.model.auto.*;
 import com.gyee.knowledge.service.auto.*;
 import org.springframework.stereotype.Service;
@@ -44,6 +45,19 @@ public class KnowledgeService {
         return list;
     }
 
+    public boolean faultKnowledgeedit(P3DeviceFault p3DeviceFault) {
+        if (StringUtils.isEmpty(p3DeviceFault.getId())){
+            p3DeviceFault.setId(CommonUtils.getUUID());
+        }
+        boolean b = ip3DeviceFaultService.saveOrUpdate(p3DeviceFault);
+        return b;
+    }
+
+    public boolean faultKnowledgeremove(P3DeviceFault p3DeviceFault) {
+        boolean b = ip3DeviceFaultService.removeById(p3DeviceFault.getId());
+        return b;
+    }
+
     public List<Alertrule2> earlyKnowledge(String gzjb, String bjlx, String cxnr, String pageNum, String pageSize) {
         QueryWrapper<Alertrule2> qw = new QueryWrapper<>();
         qw.eq("rank",Integer.parseInt(gzjb));
@@ -57,6 +71,19 @@ public class KnowledgeService {
         return list;
     }
 
+    public boolean earlyKnowledgeedit(Alertrule2 alertrule2) {
+        if (StringUtils.isEmpty(alertrule2.getId())){
+            alertrule2.setId(CommonUtils.getUUID());
+        }
+        boolean b = iAlertrule2Service.saveOrUpdate(alertrule2);
+        return b;
+    }
+
+    public boolean earlyKnowledgeremove(Alertrule2 alertrule2) {
+        boolean b = iAlertrule2Service.removeById(alertrule2.getId());
+        return b;
+    }
+
     public List<Alertrulefailure> checkRepairProgramme(String model, String pageNum, String pageSize) {
         QueryWrapper<Alertrulefailure> qw = new QueryWrapper<>();
         qw.eq("model",model);
@@ -66,6 +93,19 @@ public class KnowledgeService {
         return list;
     }
 
+    public boolean checkRepairProgrammeedit(Alertrulefailure alertrulefailure) {
+        if (StringUtils.isEmpty(alertrulefailure.getId())){
+            alertrulefailure.setId(CommonUtils.getUUID());
+        }
+        boolean b = iAlertrulefailureService.saveOrUpdate(alertrulefailure);
+        return b;
+    }
+
+    public boolean checkRepairProgrammeremove(Alertrulefailure alertrulefailure) {
+        boolean b = iAlertrulefailureService.removeById(alertrulefailure.getId());
+        return b;
+    }
+
     public List<String> modelList() {
         return iAlertrulefailureService.list().stream().map(i->i.getModel()).distinct().collect(Collectors.toList());
     }
@@ -81,6 +121,17 @@ public class KnowledgeService {
         return list;
     }
 
+    public boolean featureParameteredit(P3DeviceFeatures p3DeviceFeatures) {
+
+        boolean b = ip3DeviceFeaturesService.saveOrUpdate(p3DeviceFeatures);
+        return b;
+    }
+
+    public boolean featureParameterremove(P3DeviceFeatures p3DeviceFeatures) {
+        boolean b = ip3DeviceFeaturesService.removeById(p3DeviceFeatures.getId());
+        return b;
+    }
+
     public List<Safeprecstard> safeMeasureKnowledge(String name, String pageNum, String pageSize) {
         QueryWrapper<Safeprecstard> qw = new QueryWrapper<>();
         if (StringUtils.isNotEmpty(name)){
@@ -92,6 +143,18 @@ public class KnowledgeService {
         return list;
     }
 
+    public boolean safeMeasureKnowledgeedit(Safeprecstard safeprecstard) {
+
+        boolean b = iSafeprecstardService.saveOrUpdate(safeprecstard);
+        return b;
+    }
+
+    public boolean safeMeasureKnowledgeremove(Safeprecstard safeprecstard) {
+        boolean b = iSafeprecstardService.removeById(safeprecstard.getId());
+        return b;
+    }
+
+
     public List<Risktype> workGuideKnowledge(String name, String pageNum, String pageSize) {
         QueryWrapper<Risktype> qw = new QueryWrapper<>();
         if (StringUtils.isNotEmpty(name)){
@@ -103,6 +166,17 @@ public class KnowledgeService {
         return list;
     }
 
+    public boolean workGuideKnowledgeedit(Risktype risktype) {
+
+        boolean b = iRisktypeService.saveOrUpdate(risktype);
+        return b;
+    }
+
+    public boolean workGuideKnowledgeremove(Risktype risktype) {
+        boolean b = iRisktypeService.removeById(risktype.getId());
+        return b;
+    }
+
     public List<Safeprec> safetyMeasure(String rsnum, String content,String pageNum, String pageSize) {
         QueryWrapper<Safeprec> qw = new QueryWrapper<>();
         if (StringUtils.isNotEmpty(rsnum)){

+ 1 - 1
web/knowledge-hb/src/main/resources/application-dev.yml

@@ -12,7 +12,7 @@ spring:
   cloud:
     nacos:
       discovery:
-        server-addr: 192.168.2.216:8848
+        server-addr: 192.168.2.198:8848
         #指定yaml格式的配置
         file-extension: yaml
         cluster-name: master

Файловите разлики са ограничени, защото са твърде много
+ 1091 - 0
web/monitor-hf/doc/springbootv2.sql


BIN
web/monitor-hf/lib/ueditor-1.1.2.jar


+ 282 - 0
web/monitor-hf/monitor-hf.iml

@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.vintage:junit-vintage-engine:5.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.3.3" level="project" />
+    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.18" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.18" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:29.0-android" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
+    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.21" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.21" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-core:1.6.2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.5" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.5" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.4" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:1.0" level="project" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.45" level="project" />
+    <orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0.3" level="project" />
+    <orderEntry type="library" name="Maven: com.microsoft.sqlserver:sqljdbc4:4.0" level="project" />
+    <orderEntry type="library" name="Maven: com.taosdata.jdbc:taos-jdbcdriver:2.0.30" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.14" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.10" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.5" level="project" />
+    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.6" level="project" />
+    <orderEntry type="library" name="Maven: com.github.theborakompanioni:thymeleaf-extras-shiro:2.0.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.attoparser:attoparser:2.0.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.10" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
+    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.1.12" level="project" />
+    <orderEntry type="library" name="Maven: com.github.penggle:kaptcha:2.3.2" level="project" />
+    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235-1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
+    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.10" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: javax.mail:mail:1.4.7" level="project" />
+    <orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.json:json:20180813" level="project" />
+    <orderEntry type="module-library">
+      <library name="Maven: ueditor:1.4.3:1.8">
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/lib/ueditor-1.1.2.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-integration:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.3.4.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.2.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-ip:5.3.4.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.15" level="project" />
+    <orderEntry type="library" name="Maven: com.qiniu:qiniu-java-sdk:7.2.29" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.squareup.okhttp3:okhttp:3.12.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.squareup.okio:okio:1.15.0" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.17" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:9.0.35" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.35" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-annotations-api:9.0.41" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.35" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.35" level="project" />
+    <orderEntry type="library" name="Maven: redis.clients:jedis:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.8.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.3.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.3.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.3.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.3.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.12.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.3.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.55.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.55.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.55.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.55.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.55.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.55.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.18" level="project" />
+    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.05" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
+    <orderEntry type="library" name="Maven: org.pegdown:pegdown:1.4.2" level="project" />
+    <orderEntry type="library" name="Maven: org.parboiled:parboiled-java:1.1.6" level="project" />
+    <orderEntry type="library" name="Maven: org.parboiled:parboiled-core:1.1.6" level="project" />
+    <orderEntry type="library" name="Maven: org.ow2.asm:asm:4.1" level="project" />
+    <orderEntry type="library" name="Maven: org.ow2.asm:asm-tree:4.1" level="project" />
+    <orderEntry type="library" name="Maven: org.ow2.asm:asm-analysis:4.1" level="project" />
+    <orderEntry type="library" name="Maven: org.ow2.asm:asm-util:4.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.ws.commons.axiom:axiom-api:1.2.12" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-activation_1.1_spec:1.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-javamail_1.4_spec:1.6" level="project" />
+    <orderEntry type="library" name="Maven: jaxen:jaxen:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.axis2:axis2-kernel:1.6.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.ws.commons.axiom:axiom-impl:1.2.12" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.woodstox:wstx-asl:3.2.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec:1.1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.servlet:servlet-api:2.3" level="project" />
+    <orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
+    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.ws.commons.schema:XmlSchema:1.4.7" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.neethi:neethi:3.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.woden:woden-api:1.0M9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.woden:woden-impl-dom:1.0M9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.woden:woden-impl-commons:1.0M9" level="project" />
+    <orderEntry type="library" name="Maven: javax.ws.rs:jsr311-api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.axis2:axis2-adb:1.6.1" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.feign:feign-core:8.18.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.jvnet:animal-sniffer-annotation:1.0" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.feign:feign-jackson:8.18.0" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.2.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-commons:2.2.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.4.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.4.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpasyncclient:4.1.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore-nio:4.4.14" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-api:1.4.1" level="project" />
+    <orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.spring:spring-context-support:1.0.10" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.3.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.64" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.64" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.hystrix:hystrix-core:1.5.18" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.hdrhistogram:HdrHistogram:2.1.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.12.21" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" />
+    <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" />
+    <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.2.5" level="project" />
+  </component>
+</module>

+ 518 - 0
web/monitor-hf/pom.xml

@@ -0,0 +1,518 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>web</artifactId>
+        <groupId>com.gyee</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>monitor-hf</artifactId>
+
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <commons.fileupload.version>1.3.3</commons.fileupload.version>
+        <commons.io.version>2.5</commons.io.version>
+        <tomcat.version>9.0.35</tomcat.version>
+        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
+        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
+        <pgsql.version>42.2.5</pgsql.version>
+    </properties>
+
+    <!-- https://mvnrepository.com/ 查找jar网站 -->
+    <dependencies>
+        <!-- SpringBoot Web容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <!-- SpringBoot集成mybatis框架 -->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>1.3.2</version>
+        </dependency>
+        <!--		<dependency>-->
+        <!--			<groupId>org.mybatis.caches</groupId>-->
+        <!--			<artifactId>mybatis-ehcache</artifactId>-->
+        <!--			<version>1.2.1</version>-->
+        <!--		</dependency>-->
+        <!-- SpringBoot 测试 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- 添加swagger2 -->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.swagger</groupId>
+                    <artifactId>swagger-annotations</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.swagger</groupId>
+                    <artifactId>swagger-models</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-models</artifactId>
+            <version>1.5.21</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/io.github.swagger2markup/swagger2markup -->
+
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-core</artifactId>
+            <version>1.6.2</version>
+        </dependency>
+        <!--GSON -->
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <!-- pageHelper -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.2.5</version>
+        </dependency>
+        <!-- mysql驱动7.0-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.oracle</groupId>
+            <artifactId>ojdbc6</artifactId>
+            <version>11.2.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>sqljdbc4</artifactId>
+            <version>4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.taosdata.jdbc</groupId>
+            <artifactId>taos-jdbcdriver</artifactId>
+            <version>2.0.30</version>
+        </dependency>
+        <!-- mysql驱动8.0
+         <dependency>
+             <groupId>mysql</groupId>
+             <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.11</version>
+         </dependency>
+         -->
+        <!--druid 数据源监控-->
+        <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.1.10</version>
+        </dependency>
+        <!-- shiro权限 -->
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-spring</artifactId>
+            <version>1.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <!-- shiro权限支持thymeleaf -->
+        <dependency>
+            <groupId>com.github.theborakompanioni</groupId>
+            <artifactId>thymeleaf-extras-shiro</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+
+        <!-- thymeleaf模版 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+        </dependency>
+
+        <!--常用工具类 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.4</version>
+        </dependency>
+
+        <!--io常用工具类 -->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons.io.version}</version>
+        </dependency>
+
+        <!--文件上传工具类 -->
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>${commons.fileupload.version}</version>
+        </dependency>
+
+
+        <!-- 热部署 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>false</optional>
+        </dependency>
+
+        <!-- Hutool是一个Java工具包 http://hutool.cn/ -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>4.1.12</version>
+        </dependency>
+        <!-- google验证码 -->
+        <dependency>
+            <groupId>com.github.penggle</groupId>
+            <artifactId>kaptcha</artifactId>
+            <version>2.3.2</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
+        <dependency>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity</artifactId>
+            <version>1.7</version>
+        </dependency>
+        <!-- websocket -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <!-- 配置文件读取 -->
+        <dependency>
+            <groupId>commons-configuration</groupId>
+            <artifactId>commons-configuration</artifactId>
+            <version>1.10</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- mail -->
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>1.4.7</version>
+        </dependency>
+
+        <!--百度UEditor依赖的jar包 -->
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <version>20180813</version>
+        </dependency>
+        <dependency>
+            <groupId>ueditor</groupId>
+            <artifactId>1.4.3</artifactId>
+            <version>1.8</version>
+            <scope>system</scope>
+            <systemPath>${basedir}/lib/ueditor-1.1.2.jar</systemPath>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-integration</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-ip</artifactId>
+        </dependency>
+        <!--quartz依赖-->
+        <dependency>
+            <groupId>org.quartz-scheduler</groupId>
+            <artifactId>quartz</artifactId>
+        </dependency>
+        <!-- 七牛云 -->
+        <dependency>
+            <groupId>com.qiniu</groupId>
+            <artifactId>qiniu-java-sdk</artifactId>
+            <version>[7.2.0, 7.2.99]</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.12</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-juli</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-core</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-el</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-websocket</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>3.2.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>4.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>4.0.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.pegdown</groupId>
+            <artifactId>pegdown</artifactId>
+            <version>1.4.2</version>
+        </dependency>
+        <!-- webservice-->
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-api</artifactId>
+            <version>1.2.12</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2</artifactId>
+            <version>1.6.1</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>1.6.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>1.6.1</version>
+        </dependency>
+        <!-- webservice-->
+
+        <!--http请求-->
+        <dependency>
+            <groupId>com.netflix.feign</groupId>
+            <artifactId>feign-core</artifactId>
+            <version>8.18.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.netflix.feign</groupId>
+            <artifactId>feign-jackson</artifactId>
+            <version>8.18.0</version>
+        </dependency>
+        <!--http请求-->
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>${pgsql.version}</version>
+        </dependency>
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+                <version>${spring-cloud-alibaba.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <!-- spring-cloud-dependencies -->
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>Hoxton.SR5</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+
+
+        <!-- 打包不带版本号 -->
+        <!-- <finalName>Gyee_Frame_HF</finalName> -->
+        <plugins>
+            <!-- JUnit 配置 -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <!--忽略测试启动类 -->
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+
+
+
+
+            <!-- generator 配置-->
+            <plugin>
+                <groupId>org.mybatis.generator</groupId>
+                <artifactId>mybatis-generator-maven-plugin</artifactId>
+                <version>1.3.7</version>
+                <configuration>
+                    <!--允许移动生成的文件 -->
+                    <verbose>false</verbose>
+                    <!--允许覆盖生成的文件 -->
+                    <overwrite>false</overwrite>
+                    <!--配置文件的路径 -->
+                    <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
+                </configuration>
+                <dependencies>
+                    <!--					<dependency>-->
+                    <!--						<groupId>mysql</groupId>-->
+                    <!--						<artifactId>mysql-connector-java</artifactId>-->
+                    <!--						<version>${mysql.version}</version>-->
+                    <!--					</dependency>-->
+                    <dependency>
+                        <groupId>com.oracle</groupId>
+                        <artifactId>ojdbc6</artifactId>
+                        <version>11.2.0.3</version>
+                    </dependency>
+
+                    <!--					<dependency>-->
+                    <!--					<groupId>com.microsoft.sqlserver</groupId>-->
+                    <!--					<artifactId>sqljdbc4</artifactId>-->
+                    <!--					<version>4.0</version>-->
+                    <!--				    </dependency>-->
+
+                </dependencies>
+            </plugin>
+            <!-- jar运行配置 -->
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <mainClass>com.gyee.SpringbootStart</mainClass>
+                </configuration>
+
+            </plugin>
+
+
+
+        </plugins>
+    </build>
+
+    <!-- 阿里云maven仓库 -->
+    <repositories>
+        <repository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
+
+</project>

+ 57 - 0
web/monitor-hf/src/main/java/com/gyee/SpringbootStart.java

@@ -0,0 +1,57 @@
+package com.gyee;
+
+import com.gyee.frame.common.spring.SpringUtils;
+import com.gyee.frame.service.initialpoint.InitialPointEdosService;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+
+/**
+ * 项目启动方法
+ * @author gyee
+ *
+ */
+@EnableDiscoveryClient //开启服务注册与发现功能: classpath: META-INF/spring.factories文件
+@EnableCaching
+@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
+public class SpringbootStart {
+
+    public static void main(String[] args) throws Exception {
+
+        SpringApplication.run(SpringbootStart.class, args);
+
+
+
+
+        InitialPointEdosService initialPointEdosService= SpringUtils.getBean("initialPointEdosService");
+
+
+
+//        InitialRedis initialRedis=new InitialRedis();
+//        System.out.println("初始化开始!");
+//        initialRedis.intialWindturbinepowercurvefitting();
+//        initialRedis.intialWpScatter();
+//        initialRedis.intialPjScatter();
+//        initialRedis.intialLnScatter();
+//        initialRedis.intialWtScatter();
+//        System.out.println("初始化完成!");
+
+//        System.out.println("开始导出风机测点。。。。。。");
+//        initialPointEdosService.initalFj();
+//        System.out.println("结束导出风机测点。。。。。。");
+//
+//        System.out.println("开始导出风场测点。。。。。。");
+//        initialPointEdosService.initalFc(false);
+//        System.out.println("结束导出风场测点。。。。。。");
+//
+//
+//        System.out.println("开始导出风功率测点。。。。。。");
+//        initialPointEdosService.initalFgl();
+//        System.out.println("结束导出风功率测点。。。。。。");
+
+        System.out.println("初始化结束!");
+    }
+}

+ 19 - 0
web/monitor-hf/src/main/java/com/gyee/SpringbootWebInitializer.java

@@ -0,0 +1,19 @@
+package com.gyee;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+* @ClassName: SpringbootWebInitializer
+* @Description: web容器中进行部署
+* @author gyee
+* @date 2018年8月18日
+*
+*/
+public class SpringbootWebInitializer  extends SpringBootServletInitializer{
+	@Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
+    {
+        return application.sources(SpringbootStart.class);
+    }
+}

+ 77 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/async/config/AsyncConfig.java

@@ -0,0 +1,77 @@
+//package com.gyee.frame.common.async.config;
+//
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.scheduling.annotation.AsyncConfigurer;
+//import org.springframework.scheduling.annotation.EnableAsync;
+//
+//import java.lang.reflect.Method;
+//import java.util.Arrays;
+//
+///**
+// * AsyncConfig
+// *
+// * @author wliduo[i@dolyw.com]
+// * @date 2020/5/19 17:58
+// */
+//@Configuration
+//@EnableAsync
+//public class AsyncConfig implements AsyncConfigurer {
+//
+//    /**
+//     * logger
+//     */
+//    private static final Logger logger = LoggerFactory.getLogger(AsyncConfig.class);
+//
+//    /**
+//     * 这里不实现了,使用 ThreadPoolConfig 里的线程池即可
+//     *
+//     * @param
+//     * @return java.util.concurrent.Executor
+//     * @throws
+//     * @author wliduo[i@dolyw.com]
+//     * @date 2020/5/19 18:00
+//     */
+//    /*@Override
+//    public Executor getAsyncExecutor() {
+//        return null;
+//    }*/
+//
+//    /**
+//     * 只能捕获无返回值的异步方法,有返回值的被主线程处理
+//     *
+//     * @param
+//     * @return org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler
+//     * @throws
+//     * @author wliduo[i@dolyw.com]
+//     * @date 2020/5/20 10:16
+//     */
+//    @Override
+//    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
+//        return new CustomAsyncExceptionHandler();
+//    }
+//
+//    /***
+//     * 处理异步方法中未捕获的异常
+//     *
+//     * @author wliduo[i@dolyw.com]
+//     * @date 2020/5/19 19:16
+//     */
+//    class CustomAsyncExceptionHandler implements AsyncUncaughtExceptionHandler {
+//
+//        @Override
+//        public void handleUncaughtException(Throwable throwable, Method method, Object... obj) {
+//            logger.info("Exception message - {}", throwable.getMessage());
+//            logger.info("Method name - {}", method.getName());
+//            logger.info("Parameter values - {}", Arrays.toString(obj));
+//            if (throwable instanceof Exception) {
+//                Exception exception = (Exception) throwable;
+//                logger.info("exception:{}", exception.getMessage());
+//            }
+//            throwable.printStackTrace();
+//        }
+//
+//    }
+//}

+ 76 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/async/config/ThreadPoolConfig.java

@@ -0,0 +1,76 @@
+package com.gyee.frame.common.async.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.*;
+
+/**
+ * 线程池配置
+ *
+ * @author wliduo
+ * @date 2019/2/15 14:36
+ */
+@Configuration
+public class ThreadPoolConfig {
+
+    /**
+     * logger
+     */
+    private final static Logger logger = LoggerFactory.getLogger(ThreadPoolConfig.class);
+
+    @Value("${asyncThreadPool.corePoolSize}")
+    private int corePoolSize;
+
+    @Value("${asyncThreadPool.maxPoolSize}")
+    private int maxPoolSize;
+
+    @Value("${asyncThreadPool.queueCapacity}")
+    private int queueCapacity;
+
+    @Value("${asyncThreadPool.keepAliveSeconds}")
+    private int keepAliveSeconds;
+
+    @Value("${asyncThreadPool.awaitTerminationSeconds}")
+    private int awaitTerminationSeconds;
+
+    @Value("${asyncThreadPool.threadNamePrefix}")
+    private String threadNamePrefix;
+
+    /**
+     * 线程池配置
+     * @param
+     * @return java.util.concurrent.Executor
+     * @author wliduo
+     * @date 2019/2/15 14:44
+     */
+    @Bean(name = "threadPoolTaskExecutor")
+    public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
+        logger.info("---------- 线程池开始加载 ----------");
+        ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
+        // 核心线程池大小
+        threadPoolTaskExecutor.setCorePoolSize(corePoolSize);
+        // 最大线程数
+        threadPoolTaskExecutor.setMaxPoolSize(maxPoolSize);
+        // 队列容量
+        threadPoolTaskExecutor.setQueueCapacity(keepAliveSeconds);
+        // 活跃时间
+        threadPoolTaskExecutor.setKeepAliveSeconds(queueCapacity);
+        // 主线程等待子线程执行时间
+        threadPoolTaskExecutor.setAwaitTerminationSeconds(awaitTerminationSeconds);
+        // 线程名字前缀
+        threadPoolTaskExecutor.setThreadNamePrefix(threadNamePrefix);
+        // RejectedExecutionHandler:当pool已经达到max-size的时候,如何处理新任务
+        // CallerRunsPolicy:不在新线程中执行任务,而是由调用者所在的线程来执行
+        threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        // 初始化
+        threadPoolTaskExecutor.initialize();
+        logger.info("---------- 线程池加载完成 ----------");
+        return threadPoolTaskExecutor;
+    }
+
+}

+ 133 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/async/controller/AsyncController.java

@@ -0,0 +1,133 @@
+package com.gyee.frame.common.async.controller;
+
+
+import com.gyee.frame.common.async.service.AsyncService;
+import com.gyee.frame.common.async.util.SmsUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.concurrent.Future;
+
+/**
+ * AsyncController
+ *
+ * @author wliduo[i@dolyw.com]
+ * @date 2020/5/19 14:46
+ */
+@RestController
+@RequestMapping("/async")
+public class AsyncController {
+
+    /**
+     * logger
+     */
+    private final static Logger logger = LoggerFactory.getLogger(AsyncController.class);
+
+    @Resource
+    private AsyncService asyncService;
+
+    @Autowired
+    private SmsUtil smsUtil;
+
+    /**
+     * 可以看到无返回值异步方法出现异常,主线程还是继续执行完成
+     *
+     * @param
+     * @return void
+     * @throws
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 9:53
+     */
+    @GetMapping("/run1")
+    public String run1() throws Exception {
+        asyncService.task1();
+        logger.info("run1开始执行");
+        Thread.sleep(5000);
+        logger.info("run1执行完成");
+        return "run1 success";
+    }
+
+    /**
+     * 可以看到有返回值异步方法出现异常,异常抛给主线程处理,导致主线程也被中断执行
+     *
+     * @param
+     * @return java.lang.String
+     * @throws
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:15
+     */
+    @GetMapping("/run2")
+    public String run2() throws Exception {
+        Future<String> future = asyncService.task2();
+        // get()方法阻塞主线程,直到执行完成
+        String result = future.get();
+        logger.info("run2开始执行");
+        Thread.sleep(5000);
+        logger.info("run2执行完成");
+        return result;
+    }
+
+    /**
+     * 多个异步执行
+     *
+     * @param
+     * @return java.lang.String
+     * @throws
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:26
+     */
+    @GetMapping("/run3")
+    public String run3() throws Exception {
+        logger.info("run3开始执行");
+        long start = System.currentTimeMillis();
+        Future<String> future3 = asyncService.task3();
+        Future<String> future4 = asyncService.task4();
+        // 这样与下面是一样的
+        logger.info(future3.get());
+        logger.info(future4.get());
+        // 先判断是否执行完成
+        boolean run3Done = Boolean.FALSE;
+        while (true) {
+            if (future3.isDone() && future4.isDone()) {
+                // 执行完成
+                run3Done = Boolean.TRUE;
+                break;
+            }
+            if (future3.isCancelled() || future4.isCancelled()) {
+                // 取消情况
+                break;
+            }
+        }
+        if (run3Done) {
+            logger.info(future3.get());
+            logger.info(future4.get());
+        } else {
+            // 其他异常情况
+        }
+        long end = System.currentTimeMillis();
+        logger.info("run3执行完成,执行时间: {}", end - start);
+        return "run3 success";
+    }
+
+    /**
+     * 工具类异步
+     *
+     * @param
+     * @return java.lang.String
+     * @throws
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:59
+     */
+    @GetMapping("/sms")
+    public String sms() throws Exception {
+        logger.info("run1开始执行");
+        smsUtil.sendCode("15912347896", "135333");
+        logger.info("run1执行完成");
+        return "send sms success";
+    }
+}

+ 57 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/async/service/AsyncService.java

@@ -0,0 +1,57 @@
+package com.gyee.frame.common.async.service;
+
+import java.util.concurrent.Future;
+
+/**
+ * AsyncService
+ *
+ * @author wliduo[i@dolyw.com]
+ * @date 2020/5/19 14:18
+ */
+public interface AsyncService {
+
+    /**
+     * 任务1
+     *
+     * @param
+     * @return void
+     * @throws Exception e
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/19 14:45
+     */
+    void task1() throws Exception;
+
+    /**
+     * 任务2
+     *
+     * @param
+     * @return java.util.concurrent.Future<java.lang.String>
+     * @throws Exception e
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:04
+     */
+    Future<String> task2() throws Exception;
+
+    /**
+     * 任务3
+     *
+     * @param
+     * @return java.util.concurrent.Future<java.lang.String>
+     * @throws Exception e
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:20
+     */
+    Future<String> task3() throws Exception;
+
+    /**
+     * 任务4
+     *
+     * @param
+     * @return java.util.concurrent.Future<java.lang.String>
+     * @throws Exception e
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:20
+     */
+    Future<String> task4() throws Exception;
+
+}

+ 63 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/async/service/impl/AsyncServiceImpl.java

@@ -0,0 +1,63 @@
+package com.gyee.frame.common.async.service.impl;
+
+
+import com.gyee.frame.common.async.service.AsyncService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.AsyncResult;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.Future;
+
+/**
+ * AsyncServiceImpl
+ *
+ * @author wliduo[i@dolyw.com]
+ * @date 2020/5/19 14:24
+ */
+@Service
+public class AsyncServiceImpl implements AsyncService {
+
+    /**
+     * logger
+     */
+    private final static Logger logger = LoggerFactory.getLogger(AsyncServiceImpl.class);
+
+    @Override
+    @Async("threadPoolTaskExecutor")
+    public void task1() throws Exception {
+        logger.info("task1开始执行");
+        Thread.sleep(3000);
+        logger.info("task1执行结束");
+        throw new RuntimeException("出现异常");
+    }
+
+    @Override
+    @Async("threadPoolTaskExecutor")
+    public Future<String> task2() throws Exception {
+        logger.info("task2开始执行");
+        Thread.sleep(3000);
+        logger.info("task2执行结束");
+        throw new RuntimeException("出现异常");
+        // return new AsyncResult<String>("task2 success");
+    }
+
+    @Override
+    @Async("threadPoolTaskExecutor")
+    public Future<String> task3() throws Exception {
+        logger.info("task3开始执行");
+        Thread.sleep(3000);
+        logger.info("task3执行结束");
+        return new AsyncResult<String>("task3 success");
+    }
+
+    @Override
+    @Async("threadPoolTaskExecutor")
+    public Future<String> task4() throws Exception {
+        logger.info("task4开始执行");
+        Thread.sleep(3000);
+        logger.info("task4执行结束");
+        return new AsyncResult<String>("task4 success");
+    }
+}

+ 41 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/async/util/SmsUtil.java

@@ -0,0 +1,41 @@
+package com.gyee.frame.common.async.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+/**
+ * SmsUtil
+ *
+ * @author wliduo[i@dolyw.com]
+ * @date 2020/5/20 10:50
+ */
+@Component
+public class SmsUtil {
+
+    private static final Logger logger = LoggerFactory.getLogger(SmsUtil.class);
+
+    /**
+     * 异步发送短信
+     *
+     * @param phone
+	 * @param code
+     * @return void
+     * @throws
+     * @author wliduo[i@dolyw.com]
+     * @date 2020/5/20 10:53
+     */
+    @Async
+    public void sendCode(String phone, String code) {
+        logger.info("开始发送验证码...");
+        // 模拟调用接口发验证码的耗时
+        try {
+            Thread.sleep(3000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        logger.info("发送成功: {}", phone);
+    }
+
+}

+ 166 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/base/BaseController.java

@@ -0,0 +1,166 @@
+package com.gyee.frame.common.base;
+
+import cn.hutool.core.util.StrUtil;
+import com.gyee.frame.common.domain.AjaxResult;
+import com.gyee.frame.model.custom.TitleVo;
+import com.gyee.frame.service.*;
+import org.springframework.beans.propertyeditors.CustomDateEditor;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * web层通用数据处理
+* @ClassName: BaseController
+* @author gyee
+* @date 2018年8月18日
+*
+ */
+@Controller
+public class BaseController
+{
+	//系统用户
+	@Resource
+	public SysUserService sysUserService; 
+	
+	//系统角色
+	@Resource
+	public SysRoleService sysRoleService; 
+	
+	//权限
+	@Resource
+	public SysPermissionService sysPermissionService;
+
+    //VUE系统用户
+    @Resource
+    public VueUserService vueUserService;
+    //VUE系统角色
+    @Resource
+    public VueRoleService vueRoleService;
+
+    //VUE权限
+    @Resource
+    public VuePermissionService vuePermissionService;
+	//文件上传
+	@Resource
+	public SysFileService sysFileService;
+	
+	//文件存储
+	@Resource
+	public SysDatasService sysDatasService;
+	
+	//文件存储管理表
+	@Resource
+	public SysFileDatasService sysFileDatasService;
+	
+	//日志操作
+	@Resource
+	public SysOperLogService sysOperLogService;
+	//公告
+	@Resource
+	public SysNoticeService sysNoticeService;
+
+    /**
+     * 将前台传递过来的日期格式的字符串,自动转化为Date类型
+     */
+    @InitBinder
+    public void initBinder(WebDataBinder binder)
+    {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        dateFormat.setLenient(false);
+        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
+    }
+
+
+    /**
+     * 响应返回结果
+     * 
+     * @param rows 影响行数
+     * @return 操作结果
+     */
+    protected AjaxResult toAjax(int rows)
+    {
+        return rows > 0 ? success() : error();
+    }
+
+    /**
+     * 返回成功
+     */
+    public AjaxResult success()
+    {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 返回失败消息
+     */
+    public AjaxResult error()
+    {
+        return AjaxResult.error();
+    }
+
+    /**
+     * 返回成功消息
+     */
+    public AjaxResult success(String message)
+    {
+        return AjaxResult.success(message);
+    }
+    
+
+    /**
+     * 返回失败消息
+     */
+    public AjaxResult error(String message)
+    {
+        return AjaxResult.error(message);
+    }
+
+    /**
+     * 返回错误码消息
+     */
+    public AjaxResult error(int code, String message)
+    {
+        return AjaxResult.error(code, message);
+    }
+    
+    /**
+     * 返回object数据
+     */
+    public AjaxResult retobject(int code, Object  data)
+    {
+        return AjaxResult.successData(code, data);
+    }
+
+    /**
+     * 页面跳转
+     */
+    public String redirect(String url)
+    {
+    	return StrUtil.format("redirect:{}", url);
+    }
+    
+    
+    /**
+     * 设置标题通用方法
+     */
+    public void setTitle(ModelMap map,TitleVo titleVo){
+    	//标题
+    	map.put("title",titleVo.getTitle());
+    	map.put("parenttitle",titleVo.getParenttitle());
+		//是否打开欢迎语
+    	map.put("isMsg",titleVo.isMsg());
+		//欢迎语
+    	map.put("msgHTML",titleVo.getMsgHtml());
+		//小控件
+    	map.put("isControl",titleVo.isControl());
+		map.put("isribbon", titleVo.isIsribbon());
+    }
+
+   
+}

+ 34 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/base/BaseService.java

@@ -0,0 +1,34 @@
+package com.gyee.frame.common.base;
+
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+/**
+ * 抽象类BaseService
+* @ClassName: BaseService
+* @Description: Service实现这个
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+public interface BaseService<T,T2> {
+	
+    int deleteByPrimaryKey(String id);
+
+    int insertSelective(T record);
+
+    T selectByPrimaryKey(String id);
+   
+    int updateByPrimaryKeySelective(T record);
+    
+    int updateByExampleSelective(@Param("record") T record, @Param("example") T2 example);
+
+    int updateByExample(@Param("record") T record, @Param("example") T2 example);
+    
+    List<T> selectByExample(T2 example);
+
+    long countByExample(T2 example);
+
+    int deleteByExample(T2 example);
+
+}

+ 268 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/base/PageInfo.java

@@ -0,0 +1,268 @@
+package com.gyee.frame.common.base;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.github.pagehelper.Page;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class PageInfo<T> implements Serializable {
+    private static final long serialVersionUID = 1L;
+    //当前页
+    private int pageNum;
+    //每页的数量
+    private int pageSize;
+    //当前页的数量
+    private int size;
+    //由于startRow和endRow不常用,这里说个具体的用法
+    //可以在页面中"显示startRow到endRow 共size条数据"
+
+    //当前页面第一个元素在数据库中的行号
+    private int startRow;
+    //当前页面最后一个元素在数据库中的行号
+    private int endRow;
+    //总记录数
+    private long total;
+    //总页数
+    private int pages;
+    //结果集
+    private List<T> list;
+
+    //第一页
+    private int firstPage;
+    //前一页
+    private int prePage;
+    //下一页
+    private int nextPage;
+    //最后一页
+    private int lastPage;
+
+    //是否为第一页
+    private boolean isFirstPage = false;
+    //是否为最后一页
+    private boolean isLastPage = false;
+    //是否有前一页
+    private boolean hasPreviousPage = false;
+    //是否有下一页
+    private boolean hasNextPage = false;
+    //导航页码数
+    private int navigatePages;
+    //所有导航页号
+    private int[] navigatepageNums;
+
+    /**
+     * 包装Page对象
+     *
+     * @param list
+     */
+    public PageInfo(List<T> list) {
+        this(list, 8);
+    }
+
+    /**
+     * 包装Page对象
+     *
+     * @param list          page结果
+     * @param navigatePages 页码数量
+     */
+    public PageInfo(List<T> list, int navigatePages) {
+        if (list instanceof Page) {
+            Page page = (Page) list;
+            this.pageNum = page.getPageNum();
+            this.pageSize = page.getPageSize();
+
+            this.total = page.getTotal();
+            this.pages = page.getPages();
+            this.list = page;
+            this.size = page.size();
+            //由于结果是>startRow的,所以实际的需要+1
+            if (this.size == 0) {
+                this.startRow = 0;
+                this.endRow = 0;
+            } else {
+                this.startRow = page.getStartRow() + 1;
+                //计算实际的endRow(最后一页的时候特殊)
+                this.endRow = this.startRow - 1 + this.size;
+            }
+            this.navigatePages = navigatePages;
+            //计算导航页
+            calcNavigatepageNums();
+            //计算前后页,第一页,最后一页
+            calcPage();
+            //判断页面边界
+            judgePageBoudary();
+        }
+    }
+
+    /**
+     * 计算导航页
+     */
+    private void calcNavigatepageNums() {
+        //当总页数小于或等于导航页码数时
+        if (pages <= navigatePages) {
+            navigatepageNums = new int[pages];
+            for (int i = 0; i < pages; i++) {
+                navigatepageNums[i] = i + 1;
+            }
+        } else { //当总页数大于导航页码数时
+            navigatepageNums = new int[navigatePages];
+            int startNum = pageNum - navigatePages / 2;
+            int endNum = pageNum + navigatePages / 2;
+
+            if (startNum < 1) {
+                startNum = 1;
+                //(最前navigatePages页
+                for (int i = 0; i < navigatePages; i++) {
+                    navigatepageNums[i] = startNum++;
+                }
+            } else if (endNum > pages) {
+                endNum = pages;
+                //最后navigatePages页
+                for (int i = navigatePages - 1; i >= 0; i--) {
+                    navigatepageNums[i] = endNum--;
+                }
+            } else {
+                //所有中间页
+                for (int i = 0; i < navigatePages; i++) {
+                    navigatepageNums[i] = startNum++;
+                }
+            }
+        }
+    }
+
+    /**
+     * 计算前后页,第一页,最后一页
+     */
+    private void calcPage() {
+        if (navigatepageNums != null && navigatepageNums.length > 0) {
+            firstPage = navigatepageNums[0];
+            lastPage = navigatepageNums[navigatepageNums.length - 1];
+            if (pageNum > 1) {
+                prePage = pageNum - 1;
+            }
+            if (pageNum < pages) {
+                nextPage = pageNum + 1;
+            }
+        }
+    }
+
+    /**
+     * 判定页面边界
+     */
+    private void judgePageBoudary() {
+        isFirstPage = pageNum == 1;
+        isLastPage = pageNum == pages;
+        hasPreviousPage = pageNum > 1;
+        hasNextPage = pageNum < pages;
+    }
+
+    public void setPageNum(int pageNum) {
+        this.pageNum = pageNum;
+    }
+
+    public int getPageNum() {
+        return pageNum;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public int getStartRow() {
+        return startRow;
+    }
+
+    public int getEndRow() {
+        return endRow;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    public int getPages() {
+        return pages;
+    }
+
+    public List<T> getList() {
+        return list;
+    }
+
+    public int getFirstPage() {
+        return firstPage;
+    }
+
+    public int getPrePage() {
+        return prePage;
+    }
+
+    public int getNextPage() {
+        return nextPage;
+    }
+
+    public int getLastPage() {
+        return lastPage;
+    }
+
+    public boolean isIsFirstPage() {
+        return isFirstPage;
+    }
+
+    public boolean isIsLastPage() {
+        return isLastPage;
+    }
+
+    public boolean isHasPreviousPage() {
+        return hasPreviousPage;
+    }
+
+    public boolean isHasNextPage() {
+        return hasNextPage;
+    }
+
+    public int getNavigatePages() {
+        return navigatePages;
+    }
+
+    public int[] getNavigatepageNums() {
+        return navigatepageNums;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuffer sb = new StringBuffer("PageInfo{");
+        sb.append("pageNum=").append(pageNum);
+        sb.append(", pageSize=").append(pageSize);
+        sb.append(", size=").append(size);
+        sb.append(", startRow=").append(startRow);
+        sb.append(", endRow=").append(endRow);
+        sb.append(", total=").append(total);
+        sb.append(", pages=").append(pages);
+        sb.append(", list=").append(list);
+        sb.append(", firstPage=").append(firstPage);
+        sb.append(", prePage=").append(prePage);
+        sb.append(", nextPage=").append(nextPage);
+        sb.append(", lastPage=").append(lastPage);
+        sb.append(", isFirstPage=").append(isFirstPage);
+        sb.append(", isLastPage=").append(isLastPage);
+        sb.append(", hasPreviousPage=").append(hasPreviousPage);
+        sb.append(", hasNextPage=").append(hasNextPage);
+        sb.append(", navigatePages=").append(navigatePages);
+        sb.append(", navigatepageNums=");
+        if (navigatepageNums == null){
+        	sb.append("null");
+        }else {
+            sb.append('[');
+            for (int i = 0; i < navigatepageNums.length; ++i){
+            	sb.append(i == 0 ? "" : ", ").append(navigatepageNums[i]);
+            }
+            sb.append(']');
+        }
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 419 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/AppRedisCacheManager.java

@@ -0,0 +1,419 @@
+package com.gyee.frame.common.cache;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @description: 移动端Redis缓存实现类
+ * @author: YuXD
+ * @create: 2021-01-05 10:40
+ **/
+@Getter
+@AllArgsConstructor
+public final class AppRedisCacheManager implements IGlobalCache {
+
+    private RedisTemplate<String, Object> redisTemplate;
+
+    @Override
+    public boolean expire(String key, long time) {
+        try {
+            if (time > 0) {
+                redisTemplate.expire(key, time, TimeUnit.SECONDS);
+            }
+
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public long getExpire(String key) {
+        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+    }
+
+    @Override
+    public boolean hasKey(String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public void del(String... key) {
+        if (key != null && key.length > 0) {
+            if (key.length == 1) {
+                redisTemplate.delete(key[0]);
+            } else {
+                redisTemplate.delete(CollectionUtils.arrayToList(key));
+            }
+        }
+    }
+
+    @Override
+    public Object get(String key) {
+        return key == null ? null : redisTemplate.opsForValue().get(key);
+    }
+
+    @Override
+    public boolean set(String key, Object value) {
+        try {
+            redisTemplate.opsForValue().set(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean set(String key, Object value, long time) {
+        try {
+            if (time > 0) {
+                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+            } else {
+                set(key, value);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public long incr(String key, long delta) {
+        if (delta < 0) {
+            throw new RuntimeException("递增因子必须大于0");
+        }
+        return redisTemplate.opsForValue().increment(key, delta);
+    }
+
+    @Override
+    public long decr(String key, long delta) {
+        if (delta < 0) {
+            throw new RuntimeException("递减因子必须大于0");
+        }
+        return redisTemplate.opsForValue().increment(key, -delta);
+    }
+
+    @Override
+    public Object hget(String key, String item) {
+        return redisTemplate.opsForHash().get(key, item);
+    }
+
+    @Override
+    public Map<Object, Object> hmget(String key) {
+        return redisTemplate.opsForHash().entries(key);
+    }
+
+    @Override
+    public boolean hmset(String key, Map<String, Object> map) {
+        try {
+            redisTemplate.opsForHash().putAll(key, map);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean hmset(String key, Map<String, Object> map, long time) {
+        try {
+            redisTemplate.opsForHash().putAll(key, map);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean hset(String key, String item, Object value) {
+        try {
+            redisTemplate.opsForHash().put(key, item, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean hset(String key, String item, Object value, long time) {
+        try {
+            redisTemplate.opsForHash().put(key, item, value);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public void hdel(String key, Object... item) {
+        redisTemplate.opsForHash().delete(key, item);
+    }
+
+    @Override
+    public boolean hHasKey(String key, String item) {
+        return redisTemplate.opsForHash().hasKey(key, item);
+    }
+
+    @Override
+    public double hincr(String key, String item, double by) {
+        return redisTemplate.opsForHash().increment(key, item, by);
+    }
+
+    @Override
+    public double hdecr(String key, String item, double by) {
+        return redisTemplate.opsForHash().increment(key, item, -by);
+    }
+
+    @Override
+    public Set<Object> sGet(String key) {
+        try {
+            return redisTemplate.opsForSet().members(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    @Override
+    public boolean sHasKey(String key, Object value) {
+        try {
+            return redisTemplate.opsForSet().isMember(key, value);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public long sSet(String key, Object... values) {
+        try {
+            return redisTemplate.opsForSet().add(key, values);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    @Override
+    public long sSetAndTime(String key, long time, Object... values) {
+        try {
+            Long count = redisTemplate.opsForSet().add(key, values);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return count;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    @Override
+    public long sGetSetSize(String key) {
+        try {
+            return redisTemplate.opsForSet().size(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    @Override
+    public long setRemove(String key, Object... values) {
+        try {
+            Long count = redisTemplate.opsForSet().remove(key, values);
+            return count;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    @Override
+    public List<Object> lGet(String key, long start, long end) {
+        try {
+            return redisTemplate.opsForList().range(key, start, end);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    @Override
+    public long lGetListSize(String key) {
+        try {
+            return redisTemplate.opsForList().size(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    @Override
+    public Object lGetIndex(String key, long index) {
+        try {
+            return redisTemplate.opsForList().index(key, index);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    @Override
+    public boolean lSetAll(String key, List<Object> value) {
+        try {
+            redisTemplate.opsForList().leftPushAll(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean lSet(String key, Object value) {
+        try {
+            redisTemplate.opsForList().leftPushIfPresent(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean lSet(String key, Object value, long time) {
+        try {
+            redisTemplate.opsForList().leftPush(key, value);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
+    @Override
+    public boolean lSetAll(String key, List<Object> value, long time) {
+        try {
+            redisTemplate.opsForList().leftPushAll(key, value);
+            if (time > 0)
+                expire(key, time);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean rSet(String key, Object value) {
+        try {
+            redisTemplate.opsForList().rightPush(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean rSet(String key, Object value, long time) {
+        try {
+            redisTemplate.opsForList().rightPush(key, value);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
+    @Override
+    public boolean rSetAll(String key, List<Object> value) {
+        try {
+            redisTemplate.opsForList().rightPushAll(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
+    @Override
+    public boolean rSetAll(String key, List<Object> value, long time) {
+        try {
+            redisTemplate.opsForList().rightPushAll(key, value);
+            if (time > 0)
+                expire(key, time);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public boolean lUpdateIndex(String key, long index, Object value) {
+        try {
+            redisTemplate.opsForList().set(key, index, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    @Override
+    public long lRemove(String key, long count, Object value) {
+        try {
+            Long remove = redisTemplate.opsForList().remove(key, count, value);
+            return remove;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    @Override
+    public void rangeRemove(String key, Long stard, Long end) {
+        try {
+            redisTemplate.opsForList().trim(key, stard, end);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}

+ 46 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/ApplicationContextHolder.java

@@ -0,0 +1,46 @@
+package com.gyee.frame.common.cache;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ApplicationContextHolder implements ApplicationContextAware {
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext ctx) throws BeansException {
+        applicationContext = ctx;
+    }
+
+    /**
+     * Get application context from everywhere
+     *
+     * @return
+     */
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    /**
+     * Get bean by class
+     *
+     * @param clazz
+     * @param <T>
+     * @return
+     */
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+
+    /**
+     * Get bean by class name
+     *
+     * @param name
+     * @param <T>
+     * @return
+     */
+    public static <T> T getBean(String name) {
+        return (T) applicationContext.getBean(name);
+    }
+}

+ 383 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/IGlobalCache.java

@@ -0,0 +1,383 @@
+package com.gyee.frame.common.cache;
+
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 系统全局Cache接口,具体缓存方式需要实现该接口
+ *
+ * @author YuXD
+ * @date 2021-01-05 10:38
+ * @since v1.0
+ */
+public interface IGlobalCache {
+
+    /**
+     * 指定缓存失效时间
+     *
+     * @param key  键
+     * @param time 时间(秒)
+     * @return
+     */
+    boolean expire(String key, long time);
+
+    /**
+     * @param key 键 不能为null
+     * @return 时间(秒) 返回0代表为永久有效
+     */
+    long getExpire(String key);
+
+    /**
+     * 判断key是否存在
+     *
+     * @param key 键
+     * @return true 存在 false不存在
+     */
+    boolean hasKey(String key);
+
+    /**
+     * 删除缓存
+     *
+     * @param key 可以传一个值 或多个
+     */
+    void del(String... key);
+// ============================String=============================
+
+    /**
+     * 普通缓存获取
+     *
+     * @param key 键
+     * @return 值
+     */
+    Object get(String key);
+
+    /**
+     * 普通缓存放入
+     *
+     * @param key   键
+     * @param value 值
+     * @return true成功 false失败
+     */
+    boolean set(String key, Object value);
+
+    /**
+     * 普通缓存放入并设置时间
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期
+     * @return true成功 false 失败
+     */
+    boolean set(String key, Object value, long time);
+
+    /**
+     * 递增
+     *
+     * @param key   键
+     * @param delta 要增加几(大于0)
+     * @return
+     */
+    long incr(String key, long delta);
+
+    /**
+     * 递减
+     *
+     * @param key   键
+     * @param delta 要减少几(小于0)
+     * @return
+     */
+    long decr(String key, long delta);
+
+    /**
+     * HashGet
+     *
+     * @param key  键 不能为null
+     * @param item 项 不能为null
+     * @return 值
+     */
+    Object hget(String key, String item);
+
+    /**
+     * 获取hashKey对应的所有键值
+     *
+     * @param key 键
+     * @return 对应的多个键值
+     */
+    Map<Object, Object> hmget(String key);
+
+    /**
+     * HashSet
+     *
+     * @param key 键
+     * @param map 对应多个键值
+     * @return true 成功 false 失败
+     */
+    boolean hmset(String key, Map<String, Object> map);
+
+    /**
+     * HashSet 并设置时间
+     *
+     * @param key  键
+     * @param map  对应多个键值
+     * @param time 时间(秒)
+     * @return true成功 false失败
+     */
+    boolean hmset(String key, Map<String, Object> map, long time);
+
+    /**
+     * 向一张hash表中放入数据,如果不存在将创建
+     *
+     * @param key   键
+     * @param item  项
+     * @param value 值
+     * @return true 成功 false失败
+     */
+    boolean hset(String key, String item, Object value);
+
+    /**
+     * 向一张hash表中放入数据,如果不存在将创建
+     *
+     * @param key   键
+     * @param item  项
+     * @param value 值
+     * @param time  时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
+     * @return true 成功 false失败
+     */
+    boolean hset(String key, String item, Object value, long time);
+
+    /**
+     * 删除hash表中的值
+     *
+     * @param key  键 不能为null
+     * @param item 项 可以使多个 不能为null
+     */
+    void hdel(String key, Object... item);
+
+    /**
+     * 判断hash表中是否有该项的值
+     *
+     * @param key  键 不能为null
+     * @param item 项 不能为null
+     * @return true 存在 false不存在
+     */
+    boolean hHasKey(String key, String item);
+
+    /**
+     * hash递增 如果不存在,就会创建一个 并把新增后的值返回
+     *
+     * @param key  键
+     * @param item 项
+     * @param by   要增加几(大于0)
+     * @return
+     */
+    double hincr(String key, String item, double by);
+
+    /**
+     * hash递减
+     *
+     * @param key  键
+     * @param item 项
+     * @param by   要减少记(小于0)
+     * @return
+     */
+    double hdecr(String key, String item, double by);
+
+    /**
+     * 根据key获取Set中的所有值
+     *
+     * @param key 键
+     * @return
+     */
+    Set<Object> sGet(String key);
+
+    /**
+     * 根据value从一个set中查询,是否存在
+     *
+     * @param key   键
+     * @param value 值
+     * @return true 存在 false不存在
+     */
+    boolean sHasKey(String key, Object value);
+
+    /**
+     * 将数据放入set缓存
+     *
+     * @param key    键
+     * @param values 值 可以是多个
+     * @return 成功个数
+     */
+    long sSet(String key, Object... values);
+
+    /**
+     * 将set数据放入缓存
+     *
+     * @param key    键
+     * @param time   时间(秒)
+     * @param values 值 可以是多个
+     * @return 成功个数
+     */
+    long sSetAndTime(String key, long time, Object... values);
+
+
+    /**
+     * 获取set缓存的长度
+     *
+     * @param key 键
+     * @return
+     */
+    long sGetSetSize(String key);
+
+    /**
+     * 移除值为value的
+     *
+     * @param key    键
+     * @param values 值 可以是多个
+     * @return 移除的个数
+     */
+    long setRemove(String key, Object... values);
+
+    /**
+     * 获取list缓存的内容
+     *
+     * @param key   键
+     * @param start 开始
+     * @param end   结束 0 到 -1代表所有值
+     * @return
+     */
+    List<Object> lGet(String key, long start, long end);
+
+    /**
+     * 获取list缓存的长度
+     *
+     * @param key 键
+     * @return
+     */
+    long lGetListSize(String key);
+
+    /**
+     * 通过索引 获取list中的值
+     *
+     * @param key   键
+     * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
+     * @return
+     */
+    Object lGetIndex(String key, long index);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @return
+     */
+    boolean lSet(String key, Object value);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @return
+     */
+    boolean lSet(String key, Object value, long time);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @return
+     */
+    boolean lSetAll(String key, List<Object> value);
+
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+    boolean lSetAll(String key, List<Object> value, long time);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @return
+     */
+
+    boolean rSet(String key, Object value);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+
+    boolean rSet(String key, Object value, long time);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @return
+     */
+    boolean rSetAll(String key, List<Object> value);
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+    boolean rSetAll(String key, List<Object> value, long time);
+
+    /**
+     * 根据索引修改list中的某条数据
+     *
+     * @param key   键
+     * @param index 索引
+     * @param value 值
+     * @return
+     */
+    boolean lUpdateIndex(String key, long index, Object value);
+
+    /**
+     * 移除N个值为value
+     *
+     * @param key   键
+     * @param count 移除多少个
+     * @param value 值
+     * @return 移除的个数
+     */
+    long lRemove(String key, long count, Object value);
+
+    /**
+     * 从redis集合中移除[start,end]之间的元素
+     *
+     * @param key
+     * @param stard
+     * @param end
+     * @return
+     */
+    void rangeRemove(String key, Long stard, Long end);
+
+    /**
+     * 返回当前redisTemplate
+     *
+     * @return
+     */
+    RedisTemplate getRedisTemplate();
+}

+ 72 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/MybatisRedisCache.java

@@ -0,0 +1,72 @@
+//package com.gyee.frame.common.cache;
+//
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.data.redis.core.RedisTemplate;
+//import org.apache.ibatis.cache.Cache;
+//import java.util.concurrent.locks.ReadWriteLock;
+//import java.util.concurrent.locks.ReentrantReadWriteLock;
+//
+//public class MybatisRedisCache implements Cache {
+//    private static final Logger log = LoggerFactory.getLogger(MybatisRedisCache.class);
+//    private String id;
+//    private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
+//    //private static final long EXPIRE_TIME_IN_MINUTES = 30; // redis过期时间
+//
+//
+//    public MybatisRedisCache(String id) {
+//        this.id = id;
+//    }
+//
+//    private RedisTemplate<Object, Object> getRedisTemplate(){
+//        return ApplicationContextHolder.getBean("redisTemplate");
+//    }
+//
+//    @Override
+//    public String getId() {
+//        return id;
+//    }
+//
+//    @Override
+//    public void putObject(Object key, Object value) {
+//        RedisTemplate redisTemplate = getRedisTemplate();
+//        redisTemplate.boundHashOps(getId()).put(key, value);
+//        log.info("[结果放入到缓存中: " + key + "=" + value+" ]");
+//
+//    }
+//
+//    @Override
+//    public Object getObject(Object key) {
+//        RedisTemplate redisTemplate = getRedisTemplate();
+//        Object value = redisTemplate.boundHashOps(getId()).get(key);
+//        log.info("[从缓存中获取了: " + key + "=" + value+" ]");
+//        return value;
+//    }
+//
+//    @Override
+//    public Object removeObject(Object key) {
+//        RedisTemplate redisTemplate = getRedisTemplate();
+//        Object value = redisTemplate.boundHashOps(getId()).delete(key);
+//        log.info("[从缓存删除了: " + key + "=" + value+" ]");
+//        return value;
+//    }
+//
+//    @Override
+//    public void clear() {
+//        RedisTemplate redisTemplate = getRedisTemplate();
+//        redisTemplate.delete(getId());
+//        log.info("清空缓存!!!");
+//    }
+//
+//    @Override
+//    public int getSize() {
+//        RedisTemplate redisTemplate = getRedisTemplate();
+//        Long size = redisTemplate.boundHashOps(getId()).size();
+//        return size == null ? 0 : size.intValue();
+//    }
+//
+//    @Override
+//    public ReadWriteLock getReadWriteLock() {
+//        return readWriteLock;
+//    }
+//}

+ 105 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/RedisConfig.java

@@ -0,0 +1,105 @@
+package com.gyee.frame.common.cache;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
+import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
+import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+
+@EnableCaching
+@Configuration
+public class RedisConfig {
+
+    @Value("${spring.redis.host}")
+    private String host;
+    @Value("${spring.redis.database}")
+    private Integer database;
+    @Value("${spring.redis.port}")
+    private Integer port;
+    @Value("${spring.redis.password}")
+    private String pwd;
+
+    @Value("${spring.redis.pool.maxTotal}")
+    private Integer maxTotal;
+    @Value("${spring.redis.pool.maxIdle}")
+    private Integer maxIdle;
+    @Value("${spring.redis.pool.minIdle}")
+    private Integer minIdle;
+    @Value("${spring.redis.pool.maxwait}")
+    private Integer maxwait;
+
+    @Primary
+    @Bean(name = "jedisPoolConfig")
+    @ConfigurationProperties(prefix = "spring.redis.pool")
+    public JedisPoolConfig jedisPoolConfig() {
+        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
+        jedisPoolConfig.setMaxTotal(maxTotal);
+        jedisPoolConfig.setMaxIdle(maxIdle);
+        jedisPoolConfig.setMinIdle(minIdle);
+        jedisPoolConfig.setMaxWaitMillis(maxwait);
+        return jedisPoolConfig;
+    }
+
+    @Primary
+    @Bean(name = "jedisPool")
+    public JedisPool redisPoolFactory(JedisPoolConfig jedisPoolConfig){
+
+        JedisPool jedisPool = new JedisPool(jedisPoolConfig,host,port,maxwait,pwd);
+
+        return  jedisPool;
+    }
+
+
+    @Bean
+    public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
+        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
+        redisStandaloneConfiguration.setHostName(host);
+        redisStandaloneConfiguration.setDatabase(database);
+        redisStandaloneConfiguration.setPassword(pwd);
+        redisStandaloneConfiguration.setPort(port);
+        redisStandaloneConfiguration.setDatabase(database);
+
+        JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpcb = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder) JedisClientConfiguration.builder();
+        jpcb.poolConfig(jedisPoolConfig);
+        JedisClientConfiguration jedisClientConfiguration = jpcb.build();
+        return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
+    }
+
+    /**
+     * 配置redisTemplate针对不同key和value场景下不同序列化的方式
+     *
+     * @param factory Redis连接工厂
+     * @return
+     */
+    @Primary
+    @Bean(name = "redisTemplate")
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<>();
+        template.setConnectionFactory(factory);
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        template.setKeySerializer(stringRedisSerializer);
+        template.setHashKeySerializer(stringRedisSerializer);
+        Jackson2JsonRedisSerializer redisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        template.setValueSerializer(redisSerializer);
+        template.setHashValueSerializer(redisSerializer);
+        template.afterPropertiesSet();
+
+        return template;
+    }
+
+    @Bean(name = "globalCache")
+    IGlobalCache cache(RedisTemplate redisTemplate) {
+        return new AppRedisCacheManager(redisTemplate);
+    }
+
+}

+ 115 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/RedisSessionDao.java

@@ -0,0 +1,115 @@
+package com.gyee.frame.common.cache;
+
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+/**
+ * Created by Administrator on 2018/7/31.
+ */
+@Service
+public class RedisSessionDao extends EnterpriseCacheSessionDAO {
+    // Session超时时间,单位为毫秒
+    private long expireTime = 120000;
+
+    private String prefix="session_";
+  @Resource
+  private RedisTemplate<String,Object>  redisTemplate;// Redis操作类,对这个使用不熟悉的,可以参考前面的博客
+
+    public RedisSessionDao() {
+        super();
+    }
+
+    public RedisSessionDao(long expireTime, RedisTemplate redisTemplate) {
+        super();
+        this.expireTime = expireTime;
+        this.redisTemplate = redisTemplate;
+    }
+
+    @Override // 更新session
+    public void update(Session session) throws UnknownSessionException {
+        System.out.println("===============update================");
+        if (session == null || session.getId() == null) {
+            return;
+        }
+        session.setTimeout(expireTime);
+        redisTemplate.opsForValue().set(prefix+session.getId(), session, expireTime, TimeUnit.MILLISECONDS);
+    }
+
+    @Override // 删除session
+    public void delete(Session session) {
+        System.out.println("===============delete================");
+        if (null == session) {
+            return;
+        }
+        redisTemplate.opsForValue().getOperations().delete(prefix+session.getId());
+    }
+
+    @Override
+// 获取活跃的session,可以用来统计在线人数,如果要实现这个功能,可以在将session加入redis时指定一个session前缀,统计的时候则使用keys("session-prefix*")的方式来模糊查找redis中所有的session集合
+    public Collection<Session> getActiveSessions() {
+        Set<String> keys = this.redisTemplate.keys(this.prefix + "*");
+
+        if (keys != null && !keys.isEmpty()) {
+            List<Object> sessions = this.redisTemplate.opsForValue().multiGet(keys);
+            if (sessions != null) {
+                return sessions.stream().map(o -> (Session) o).collect(Collectors.toList());
+            }
+        }
+        return Collections.emptySet();
+    }
+
+    @Override// 加入session
+    protected Serializable doCreate(Session session) {
+        System.out.println("===============doCreate================");
+        Serializable sessionId = this.generateSessionId(session);
+        this.assignSessionId(session, sessionId);
+
+        redisTemplate.opsForValue().set(prefix+session.getId(), session, expireTime, TimeUnit.MILLISECONDS);
+        return sessionId;
+    }
+
+    @Override// 读取session
+    protected Session doReadSession(Serializable sessionId) {
+        System.out.println("==============doReadSession=================");
+        if (sessionId == null) {
+            return null;
+        }
+        Session session=null;
+        try {
+            return (Session) redisTemplate.opsForValue().get(prefix+sessionId);
+        }catch (ClassCastException e)
+        {
+            System.out.println("系统初始化中,请稍等。。。。。");
+        }
+      return session;
+    }
+
+    public long getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(long expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public RedisTemplate getRedisTemplate() {
+        return redisTemplate;
+    }
+
+    public void setRedisTemplate(RedisTemplate redisTemplate) {
+        this.redisTemplate = redisTemplate;
+
+    }
+}

+ 31 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/cache/RedisUtils.java

@@ -0,0 +1,31 @@
+package com.gyee.frame.common.cache;
+
+import org.springframework.stereotype.Service;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+
+import javax.annotation.Resource;
+@Service
+public class RedisUtils {
+
+    @Resource
+    private  JedisPool jedisPool;
+
+
+
+    public  String get(String key, int indexdb) {
+        Jedis jedis = null;
+        String value = null;
+
+        try {
+            jedis = jedisPool.getResource();//获取一个jedis实例
+            jedis.select(indexdb);
+            value = jedis.get(key);
+        } catch (Exception e) {
+        System.out.println(e.getMessage());
+        } finally {
+            jedis.close();
+        }
+        return value;
+    }
+}

+ 13 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/AjaxStatus.java

@@ -0,0 +1,13 @@
+package com.gyee.frame.common.conf;
+
+public enum  AjaxStatus {
+    success(200),
+    error(500),
+    logineroor(501),
+    loginexpire(502);
+
+    public int code;
+    AjaxStatus(int c) {
+        code = c;
+    }
+}

+ 25 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/ExportConfig.java

@@ -0,0 +1,25 @@
+package com.gyee.frame.common.conf;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 庚顿数据导出配置
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "exportcode")
+public class ExportConfig {
+
+    private List<String> template1;
+
+    private Map<String, String> template2swdl;
+
+    private Map<String, String> template2swgl;
+
+    private Map<String, String> template2cft;
+}

+ 30 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/FileConfig.java

@@ -0,0 +1,30 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+@Component
+@ConfigurationProperties(prefix = "spring.servlet.multipart")
+public class FileConfig
+{
+    /**单个文件大小*/
+    private static String maxFileSize;
+
+	public static String getMaxFileSize() {
+		maxFileSize=maxFileSize.replace("MB", "");
+		return maxFileSize;
+	}
+
+	public void setMaxFileSize(String maxFileSize) {
+		FileConfig.maxFileSize = maxFileSize;
+	}
+   
+	
+	
+	
+}

+ 85 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/KaptchaConfig.java

@@ -0,0 +1,85 @@
+package com.gyee.frame.common.conf;
+
+import java.util.Properties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+
+/**
+ * 谷歌验证码配置文件
+ * @author gyee
+ * @date: 2018年9月12日 上午11:02:13
+ */
+@Configuration
+public class KaptchaConfig {
+	 @Bean(name = "captchaProducer")
+	    public DefaultKaptcha getKaptchaBean()
+	    {
+	        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+	        Properties properties = new Properties();
+	        //是否有边框  默认为true  我们可以自己设置yes,no  
+	        properties.setProperty("kaptcha.border", "yes");
+	        //边框颜色   默认为Color.BLACK  
+	        properties.setProperty("kaptcha.border.color", "105,179,90");
+	        //验证码文本字符颜色  默认为Color.BLACK  
+	        properties.setProperty("kaptcha.textproducer.font.color", "blue");
+	        //验证码图片宽度  默认为200
+	        properties.setProperty("kaptcha.image.width", "200");
+	        //验证码图片高度  默认为50
+	        properties.setProperty("kaptcha.image.height", "50");
+	        // 验证码文本字符大小  默认为40
+	        properties.setProperty("kaptcha.textproducer.font.size", "40");
+	        //session key
+	        properties.setProperty("kaptcha.session.key", "kaptchaCode");
+	        // 验证码文本字符间距  默认为2  
+	        properties.setProperty("kaptcha.textproducer.char.spac", "35");
+	        //验证码文本字符长度  默认为5  
+	        properties.setProperty("kaptcha.textproducer.char.length", "4");
+	        //验证码文本字体样式  默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) 
+	        properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier");
+	        //验证码噪点颜色   默认为Color.BLACK  
+	        properties.setProperty("kaptcha.noise.color", "white");
+	        Config config = new Config(properties);
+	        defaultKaptcha.setConfig(config);
+	        return defaultKaptcha;
+	    }
+
+	    @Bean(name = "captchaProducerMath")
+	    public DefaultKaptcha getKaptchaBeanMath()
+	    {
+	        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+	        Properties properties = new Properties();
+	        //是否有边框 默认为true 我们可以自己设置yes,no
+	        properties.setProperty("kaptcha.border", "yes");
+	        //边框颜色 默认为Color.BLACK
+	        properties.setProperty("kaptcha.border.color", "158,167,179");
+	        //验证码文本字符颜色 默认为Color.BLACK
+	        properties.setProperty("kaptcha.textproducer.font.color", "blue");
+	        //验证码图片宽度 默认为200
+	        properties.setProperty("kaptcha.image.width", "100");
+	        //验证码图片高度 默认为50
+	        properties.setProperty("kaptcha.image.height", "30");
+	        //验证码文本字符大小 默认为40
+	        properties.setProperty("kaptcha.textproducer.font.size", "30");
+	        //KAPTCHA_SESSION_KEY
+	        properties.setProperty("kaptcha.session.key", "kaptchaCodeMath");
+	        //验证码文本生成器
+	        properties.setProperty("kaptcha.textproducer.impl", "com.gyee.frame.common.support.KaptchaTextCreator");
+	        //验证码文本字符间距 默认为2
+	        properties.setProperty("kaptcha.textproducer.char.spac", "5");
+	        //验证码文本字符长度 默认为5
+	        properties.setProperty("kaptcha.textproducer.char.length", "6");
+	        //验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
+	        properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier");
+	        //验证码噪点颜色 默认为Color.BLACK
+	        properties.setProperty("kaptcha.noise.color", "white");
+	        //干扰实现类
+	        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
+	        //图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
+	        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
+	        Config config = new Config(properties);
+	        defaultKaptcha.setConfig(config);
+	        return defaultKaptcha;
+	    }
+}

+ 99 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/MybatisConfig.java

@@ -0,0 +1,99 @@
+package com.gyee.frame.common.conf;
+
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
+import com.gyee.frame.common.dataSources.DataSourceType;
+import com.gyee.frame.common.dataSources.DynamicDataSource;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+
+import javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Mybatis多数据源配置
+ * 参考文章:https://www.cnblogs.com/geekdc/p/10963476.html
+ * @ClassName: MybatisConfig
+ * @author gyee
+ * @date 2019-12-06 21:11
+ */
+@Configuration
+@MapperScan(basePackages = "com.gyee.frame.mapper")
+public class MybatisConfig {
+
+    @Bean(name = "master")
+    @ConfigurationProperties("spring.datasource.druid.master")
+    public DataSource masterDataSource()
+    {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Bean(name = "slave")
+    @ConfigurationProperties("spring.datasource.druid.slave")
+//    @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
+    public DataSource slaveDataSource()
+    {
+        return DruidDataSourceBuilder.create().build();
+    }
+
+    @Bean(name = "ticket")
+    @ConfigurationProperties("spring.datasource.druid.ticket")
+//    @ConditionalOnProperty(prefix = "spring.datasource.druid.ticket", name = "enabled", havingValue = "true")
+    public DataSource ticketDataSource()
+    {
+        return DruidDataSourceBuilder.create().build();
+    }
+    @Bean(name = "dynamicDataSource")
+    @Primary
+    public DynamicDataSource dataSource(@Qualifier("master")DataSource masterDataSource, @Qualifier("slave")DataSource slaveDataSource)
+    {
+        Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
+    	targetDataSources.put(DataSourceType.SLAVE.name(),slaveDataSource);
+        return new DynamicDataSource(masterDataSource(), targetDataSources);
+    }
+
+    @Bean(name = "dynamicDataSource")
+    @Primary
+    public DynamicDataSource dataSource(@Qualifier("master")DataSource masterDataSource, @Qualifier("slave")DataSource slaveDataSource, @Qualifier("ticket")DataSource ticketDataSource)
+    {
+        Map<Object, Object> targetDataSources = new HashMap<>();
+        targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
+        targetDataSources.put(DataSourceType.SLAVE.name(),slaveDataSource);
+        targetDataSources.put(DataSourceType.TICKET.name(),ticketDataSource);
+        return new DynamicDataSource(masterDataSource(), targetDataSources);
+    }
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory(DynamicDataSource dynamicDataSource) throws Exception {
+        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
+        factoryBean.setDataSource(dynamicDataSource);
+//        factoryBean.setTypeAliasesPackage();
+        // 设置mapper.xml的位置路径
+        Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/*/*.xml");
+        factoryBean.setMapperLocations(resources);
+        return factoryBean.getObject();
+    }
+    
+    /**
+     * 配置@Transactional注解事务
+     * @param dynamicDataSource
+     * @return
+     * @author gyee
+     * @Date 2019年12月7日 上午11:31:33
+     */
+    @Bean
+    public PlatformTransactionManager transactionManager(DynamicDataSource dynamicDataSource){
+        return new DataSourceTransactionManager(dynamicDataSource);
+    }
+}

+ 34 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/PageHelperConf.java

@@ -0,0 +1,34 @@
+package com.gyee.frame.common.conf;
+
+import java.util.Properties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import com.github.pagehelper.PageHelper;
+
+/**
+* 分页插件配置类
+* @ClassName: PageHelperConf
+* @Description: 这里用一句话描述这个类的作用
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+@Configuration
+public class PageHelperConf {
+
+    /**
+     * 分页插件处理
+     * @return
+     */
+    @Bean
+    public PageHelper pageHelper() {
+        PageHelper pageHelper = new PageHelper();
+        Properties properties = new Properties();
+        properties.setProperty("offsetAsPageNum", "true");
+        properties.setProperty("rowBoundsWithCount", "true");
+        properties.setProperty("reasonable", "true");
+        properties.setProperty("dialect", "mysql");    //配置mysql数据库的方言
+        pageHelper.setProperties(properties);
+        return pageHelper;
+    }
+}

+ 83 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/Swagger.java

@@ -0,0 +1,83 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import javax.annotation.Resource;
+
+/**
+* Swagger 配置文件
+* @ClassName: Swagger
+* @Description: 配置文件
+* @author gyee
+* @date 2018年6月3日
+*
+ */
+@Configuration(value="true")
+@EnableSwagger2 //启动swagger注解 启动服务,浏览器输入"http://localhost:8080/swagger-ui.html"
+public class Swagger  implements WebMvcConfigurer {
+
+
+	@Resource
+	private V2Config v2Config;
+
+	@Bean
+	public Docket createRestApi() {
+		return new Docket(DocumentationType.SWAGGER_2)
+				.host(v2Config.getSwaggerip())
+				// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
+				.apiInfo(apiInfo())
+				// 设置哪些接口暴露给Swagger展示
+				.select()
+				 // 扫描所有有注解的api,用这种方式更灵活
+				.apis(RequestHandlerSelectors.basePackage("com.gyee.frame"))
+				// 扫描指定包中的swagger注解
+				//.apis(RequestHandlerSelectors.basePackage("com.gyee.frame.controller"))
+				// 扫描所有 .apis(RequestHandlerSelectors.any())
+				.paths(PathSelectors.any())
+				.build();
+	}
+	
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				//设置标题
+				.title("Gyee_Frame_HF API文档")
+				//描述
+				.description("Gyee_Frame_NX项目")
+				 //作者信息
+                //.contact(new Contact(v2Config.getName(), null, V2Config.getEmail_account()))
+                //服务条款URL
+				.termsOfServiceUrl("")
+				//版本
+				.version("版本号:"+v2Config.getVersion())
+				.build();
+	}
+
+	@Override
+
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+
+		// 解决静态资源无法访问
+
+		registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
+
+		// 解决swagger无法访问
+
+		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+
+		// 解决swagger的js文件无法访问
+
+		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+	}
+
+}

+ 79 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/TemperatureConfig.java

@@ -0,0 +1,79 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 预警配置
+ */
+@Component
+@ConfigurationProperties(prefix = "temperature")
+public class TemperatureConfig {
+
+
+    private static List<String> yyz;
+    private static List<String> clx;
+    private static List<String> fdj;
+    private static List<String> bj;
+    private static List<String> qt;
+    private static List<String> zz;
+    private static List<String> zd;
+
+    public static List<String> getYyz() {
+        return yyz;
+    }
+
+    public  void setYyz(List<String> yyz) {
+        this.yyz = yyz;
+    }
+
+    public static List<String> getClx() {
+        return clx;
+    }
+
+    public  void setClx(List<String> clx) {
+        this.clx = clx;
+    }
+
+    public static List<String> getFdj() {
+        return fdj;
+    }
+
+    public  void setFdj(List<String> fdj) {
+        this.fdj = fdj;
+    }
+
+    public static List<String> getBj() {
+        return bj;
+    }
+
+    public  void setBj(List<String> bj) {
+        this.bj = bj;
+    }
+
+    public static List<String> getQt() {
+        return qt;
+    }
+
+    public  void setQt(List<String> qt) {
+        this.qt = qt;
+    }
+
+    public static List<String> getZz() {
+        return zz;
+    }
+
+    public  void setZz(List<String> zz) {
+        this.zz = zz;
+    }
+
+    public  static List<String> getZd() {
+        return zd;
+    }
+
+    public  void setZd(List<String> zd) {
+        this.zd = zd;
+    }
+}

+ 56 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/ThreadPoolTaskConfig.java

@@ -0,0 +1,56 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+public class ThreadPoolTaskConfig {
+    /**
+     *   默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,
+     *	当线程池中的线程数目达到corePoolSize后,就会把到达的任务放到缓存队列当中;
+     *  当队列满了,就继续创建线程,当线程数量大于等于maxPoolSize后,开始使用拒绝策略拒绝
+     */
+
+    /** 核心线程数(默认线程数) */
+    private static final int corePoolSize = 100;
+    /** 最大线程数 */
+    private static final int maxPoolSize = 500;
+    /** 允许线程空闲时间(单位:默认为秒) */
+    private static final int keepAliveTime = 60;
+    /** 缓冲队列大小 */
+    private static final int queueCapacity = 500;
+    /** 允许等待最长时间 */
+    private static final int awaitTime = 10;
+    /** 线程池名前缀 */
+    private static final String threadNamePrefix = "GYEE-Thread-";
+
+    private ThreadPoolTaskExecutor executor;
+
+    public ThreadPoolTaskExecutor getExecutor(){
+        if (executor == null)
+            executor = taskExecutor();
+
+        return executor;
+    }
+
+
+    private ThreadPoolTaskExecutor taskExecutor(){
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(corePoolSize);
+        executor.setMaxPoolSize(maxPoolSize);
+        executor.setQueueCapacity(queueCapacity);
+        executor.setKeepAliveSeconds(keepAliveTime);
+        executor.setThreadNamePrefix(threadNamePrefix);
+        executor.setAwaitTerminationSeconds(awaitTime);
+
+        // 线程池对拒绝任务的处理策略
+        // CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        // 初始化
+        executor.initialize();
+        return executor;
+    }
+
+}

+ 239 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/V2Config.java

@@ -0,0 +1,239 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+@Component
+@ConfigurationProperties(prefix = "gyee")
+public class V2Config
+{
+    /** 项目名称 */
+    private String name;
+    /** 版本 */
+    private String version;
+    /** 版权年份 */
+    private String copyrightYear;
+    /** 上传路径 */
+    private static String defaultBaseDir;
+    /** 是否开启 上传static **/
+    private static String isstatic;
+    /** 开启存放静态文件夹后目录 **/
+    private static String isroot_dir;
+    /** 邮箱发送smtp */
+    private static String email_smtp;
+    /** 发送邮箱端口 */
+    private static String email_port;
+    /** 发送邮箱登录账号 */
+    private static String email_account;
+    /** 发送邮箱登录密码 */
+    private static String email_password;
+    /** 演示模式 **/
+    private static String demoEnabled;
+    /** 滚动验证码 **/
+    private static Boolean rollVerification;
+    /** 实时数据库 **/
+    private  static String realtimedataBase;
+    /**数据适配器网址 **/
+    private static String baseurl;
+    /** swaggerip指定IP **/
+    private  static  String swaggerip;
+    /** 小数位数 **/
+    private  static  Integer digit;
+    /** 气象采集指定IP **/
+    private  static  String weatherurl;
+    /** 区域公司key指定IP **/
+    private  static  String weatherqygs;
+    /** 海拔信息配置 **/
+    private static Map<String,Double> hbmaps;
+
+    /**测点初始码**/
+    private  static  String initialcode;
+    /**健康管理数据适配器网址 **/
+    private static String healthurl;
+
+    public static String getHealthurl() {
+        return healthurl;
+    }
+
+    public  void setHealthurl(String healthurl) {
+        V2Config.healthurl = healthurl;
+    }
+
+    public static String getInitialcode() {
+        return initialcode;
+    }
+
+    public  void setInitialcode(String initialcode) {
+        V2Config.initialcode = initialcode;
+    }
+
+    public static Map<String, Double> getHbmaps() {
+        return hbmaps;
+    }
+
+    public  void setHbmaps(Map<String, Double> hbmaps) {
+        V2Config.hbmaps = hbmaps;
+    }
+
+    public static String getWeatherurl() {
+        return weatherurl;
+    }
+
+    public  void setWeatherurl(String weatherurl) {
+        V2Config.weatherurl = weatherurl;
+    }
+
+    public static String getWeatherqygs() {
+        return weatherqygs;
+    }
+
+    public  void setWeatherqygs(String weatherqygs) {
+        V2Config.weatherqygs = weatherqygs;
+    }
+
+    public static  Integer getDigit() {
+        return digit;
+    }
+
+    public  void setDigit(Integer digit) {
+        this.digit = digit;
+    }
+
+    public  static String getSwaggerip() {
+        return swaggerip;
+    }
+
+    public  void setSwaggerip(String swaggerip) {
+        this.swaggerip = swaggerip;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion(String version)
+    {
+        this.version = version;
+    }
+
+    public String getCopyrightYear()
+    {
+        return copyrightYear;
+    }
+
+    public void setCopyrightYear(String copyrightYear)
+    {
+        this.copyrightYear = copyrightYear;
+    }
+
+
+	public static String getDefaultBaseDir() {
+		return defaultBaseDir;
+	}
+
+	public  void setDefaultBaseDir(String defaultBaseDir) {
+		V2Config.defaultBaseDir = defaultBaseDir;
+	}
+
+	public static String getIsstatic() {
+		return isstatic;
+	}
+
+	public  void setIsstatic(String isstatic) {
+
+        V2Config.isstatic = isstatic;
+	}
+
+	public static String getIsroot_dir() {
+		return isroot_dir;
+	}
+
+	public void setIsroot_dir(String isroot_dir) {
+
+        V2Config.isroot_dir = isroot_dir;
+	}
+
+	public static String getEmail_smtp() {
+		return email_smtp;
+	}
+
+	public void setEmail_smtp(String email_smtp) {
+		V2Config.email_smtp = email_smtp;
+	}
+
+	public static String getEmail_port() {
+		return email_port;
+	}
+
+	public void setEmail_port(String email_port) {
+		V2Config.email_port = email_port;
+	}
+
+	public static String getEmail_account() {
+		return email_account;
+	}
+
+	public void setEmail_account(String email_account) {
+		V2Config.email_account = email_account;
+	}
+
+	public static String getEmail_password() {
+		return email_password;
+	}
+
+	public void setEmail_password(String email_password) {
+		V2Config.email_password = email_password;
+	}
+
+	public static String getDemoEnabled() {
+		return demoEnabled;
+	}
+
+	public void setDemoEnabled(String demoEnabled) {
+		V2Config.demoEnabled = demoEnabled;
+	}
+
+	public static Boolean getRollVerification() {
+		return rollVerification;
+	}
+
+	public void setRollVerification(Boolean rollVerification) {
+		V2Config.rollVerification = rollVerification;
+	}
+
+
+
+
+    public static String getRealtimedataBase() {
+        return realtimedataBase;
+    }
+
+    public  void setRealtimedataBase(String realtimedataBase) {
+        V2Config.realtimedataBase = realtimedataBase;
+    }
+    public static String getBaseurl() {
+        return baseurl;
+    }
+
+    public  void setBaseurl(String baseurl) {
+        V2Config.baseurl = baseurl;
+    }
+}

+ 27 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/ZmConfig.java

@@ -0,0 +1,27 @@
+package com.gyee.frame.common.conf;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 预警配置
+ */
+@Component
+@ConfigurationProperties(prefix = "zmconfig")
+public class ZmConfig {
+
+
+    private static Map<String,List<String>> maps;
+
+
+    public static Map<String, List<String>> getMaps() {
+        return maps;
+    }
+
+    public void setMaps(Map<String, List<String>> maps) {
+        this.maps = maps;
+    }
+}

+ 45 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/monitor/LeaderConfig.java

@@ -0,0 +1,45 @@
+package com.gyee.frame.common.conf.monitor;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+import org.springframework.stereotype.Component;
+
+
+@Component
+@PropertySources({
+        @PropertySource("classpath:config/leader.properties"),
+})
+public class LeaderConfig {
+
+    @Value("${Leader.FDL}")
+    private String FDL;
+    @Value("${Leader.FS}")
+    private String FS;
+    @Value("${Leader.GL}")
+
+    private String GL;
+    public String getFDL() {
+        return FDL;
+    }
+
+    public void setFDL(String FDL) {
+        this.FDL = FDL;
+    }
+
+    public String getFS() {
+        return FS;
+    }
+
+    public void setFS(String FS) {
+        this.FS = FS;
+    }
+
+    public String getGL() {
+        return GL;
+    }
+
+    public void setGL(String GL) {
+        this.GL = GL;
+    }
+}

+ 45 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/monitor/StatusConfig.java

@@ -0,0 +1,45 @@
+package com.gyee.frame.common.conf.monitor;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+import org.springframework.stereotype.Component;
+
+
+@Component
+@PropertySources({
+        @PropertySource("classpath:config/status.properties"),
+})
+public class StatusConfig {
+
+    @Value("${Status.FDL}")
+    private String FDL;
+    @Value("${Status.FS}")
+    private String FS;
+    @Value("${Status.GL}")
+
+    private String GL;
+    public String getFDL() {
+        return FDL;
+    }
+
+    public void setFDL(String FDL) {
+        this.FDL = FDL;
+    }
+
+    public String getFS() {
+        return FS;
+    }
+
+    public void setFS(String FS) {
+        this.FS = FS;
+    }
+
+    public String getGL() {
+        return GL;
+    }
+
+    public void setGL(String GL) {
+        this.GL = GL;
+    }
+}

+ 27 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/conf/monitor/ZtConfig.java

@@ -0,0 +1,27 @@
+package com.gyee.frame.common.conf.monitor;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 预警配置
+ */
+@Component
+@ConfigurationProperties(prefix = "ztconfig")
+public class ZtConfig {
+
+
+    private static Map<String,List<String>> maps;
+
+
+    public static Map<String, List<String>> getMaps() {
+        return maps;
+    }
+
+    public void setMaps(Map<String, List<String>> maps) {
+        this.maps = maps;
+    }
+}

+ 21 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSource.java

@@ -0,0 +1,21 @@
+package com.gyee.frame.common.dataSources;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 自定义注解,用于类或方法上,优先级:方法>类
+ * @ClassName: DataSource
+ * @author gyee
+ * @date 2019-12-06 21:15
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DataSource {
+	/**
+     * 切换数据源名称
+     */
+	DataSourceType value() default DataSourceType.MASTER;
+}

+ 77 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSourceAspect.java

@@ -0,0 +1,77 @@
+package com.gyee.frame.common.dataSources;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import com.gyee.frame.util.StringUtils;
+
+import java.lang.reflect.Method;
+/**
+ * 多数据源处理
+ * @ClassName: DataSourceAspect
+ * @author gyee
+ * @date 2019-12-07 18:40
+ */
+@Aspect
+@Component
+@Order(1)
+//@EnableAsync
+public class DataSourceAspect {
+	//private static final Logger log = LoggerFactory.getLogger(DataSourceAspect.class);
+
+	@Pointcut("@annotation(com.gyee.frame.common.dataSources.DataSource)")
+    public void dsPointCut()
+    {
+
+    }
+
+	@Around("dsPointCut()")
+    public Object around(ProceedingJoinPoint point) throws Throwable
+    {
+        MethodSignature signature = (MethodSignature) point.getSignature();
+
+        Method method = signature.getMethod();
+
+        DataSource dataSource = method.getAnnotation(DataSource.class);
+
+        if (null!=dataSource)
+        {
+            DataSourceContextHolder.setDataSource(dataSource.value().name());
+        }
+
+        try
+        {
+            return point.proceed();
+        }
+        finally
+        {
+            // 销毁数据源 在执行方法之后
+        	DataSourceContextHolder.clearDataSource();
+        }
+    }
+
+	 /**
+     * 获取需要切换的数据源
+     */
+    public DataSource getDataSource(ProceedingJoinPoint point)
+    {
+        MethodSignature signature = (MethodSignature) point.getSignature();
+        Class<? extends Object> targetClass = point.getTarget().getClass();
+        DataSource targetDataSource = targetClass.getAnnotation(DataSource.class);
+        if (StringUtils.isNotNull(targetDataSource))
+        {
+            return targetDataSource;
+        }
+        else
+        {
+            Method method = signature.getMethod();
+            DataSource dataSource = method.getAnnotation(DataSource.class);
+            return dataSource;
+        }
+    }
+}

+ 50 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSourceContextHolder.java

@@ -0,0 +1,50 @@
+package com.gyee.frame.common.dataSources;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 动态数据源上下文管理:设置数据源,获取数据源,清除数据源
+ * @ClassName: DataSourceContextHolder
+ * @author gyee
+ * @date 2019-12-06 21:08
+ */
+public class DataSourceContextHolder {
+	private static final Logger log = LoggerFactory.getLogger(DataSourceContextHolder.class);
+   /**
+    * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
+    * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
+    */
+    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
+
+    /**
+     * 设置数据源
+     * @param type
+     * @author gyee
+     * @Date 2019年12月7日 下午6:38:55
+     */
+    public static void setDataSource(String type){
+
+        log.info("当前使用的数据源为:{}", type);
+    	CONTEXT_HOLDER.set(type);
+    }
+
+    /**
+     * 获得数据源的变量
+     * @return
+     * @author gyee
+     * @Date 2019年12月7日 下午6:39:00
+     */
+    public static String getDataSource(){
+        return CONTEXT_HOLDER.get();
+    }
+
+    /**
+     * 清除数据源
+     * @author gyee
+     * @Date 2019年12月7日 下午6:39:06
+     */
+    public static void clearDataSource(){
+    	CONTEXT_HOLDER.remove();
+    }
+}

+ 13 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DataSourceType.java

@@ -0,0 +1,13 @@
+package com.gyee.frame.common.dataSources;
+
+/**
+ * 列出所有数据源
+ * @ClassName: DataSourceType
+ * @author gyee
+ * @date 2019-12-06 21:02
+ */
+public enum DataSourceType {
+	MASTER,
+	SLAVE,
+	TICKET
+}

+ 27 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/dataSources/DynamicDataSource.java

@@ -0,0 +1,27 @@
+package com.gyee.frame.common.dataSources;
+
+import java.util.Map;
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+/**
+ * 动态数据源
+ * @ClassName: DynamicDataSource
+ * @author gyee
+ * @date 2019-12-07 18:39
+ */
+public class DynamicDataSource extends AbstractRoutingDataSource {
+	
+	public DynamicDataSource(javax.sql.DataSource dataSource, Map<Object, Object> targetDataSources)
+    {
+        super.setDefaultTargetDataSource(dataSource);
+        super.setTargetDataSources(targetDataSources);
+        super.afterPropertiesSet();
+    }
+
+	@Override
+	protected Object determineCurrentLookupKey() {
+		
+		return DataSourceContextHolder.getDataSource();
+	}
+
+}

+ 104 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/domain/AjaxResult.java

@@ -0,0 +1,104 @@
+package com.gyee.frame.common.domain;
+
+import java.util.HashMap;
+
+/**
+* @ClassName: AjaxResult
+* @Description: ajax操作消息提醒
+* @author gyee
+* @date 2018年8月18日
+*
+ */
+public class AjaxResult extends HashMap<String, Object>
+{
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 初始化一个新创建的 Message 对象
+     */
+    public AjaxResult()
+    {
+    }
+
+    /**
+     * 返回错误消息
+     * 
+     * @return 错误消息
+     */
+    public static AjaxResult error()
+    {
+        return error(1, "操作失败");
+    }
+
+    /**
+     * 返回错误消息
+     * 
+     * @param msg 内容
+     * @return 错误消息
+     */
+    public static AjaxResult error(String msg)
+    {
+        return error(500, msg);
+    }
+
+    /**
+     * 返回错误消息
+     * 
+     * @param code 错误码
+     * @param msg 内容
+     * @return 错误消息
+     */
+    public static AjaxResult error(int code, String msg)
+    {
+        AjaxResult json = new AjaxResult();
+        json.put("code", code);
+        json.put("msg", msg);
+        return json;
+    }
+
+    /**
+     * 返回成功消息
+     * 
+     * @param msg 内容
+     * @return 成功消息
+     */
+    public static AjaxResult success(String msg)
+    {
+        AjaxResult json = new AjaxResult();
+        json.put("msg", msg);
+        json.put("code", 200);
+        return json;
+    }
+    
+    /**
+     * 返回成功消息
+     * 
+     * @return 成功消息
+     */
+    public static AjaxResult success()
+    {
+        return AjaxResult.success("操作成功");
+    }
+    
+    public static AjaxResult successData(int code, Object value){
+    	 AjaxResult json = new AjaxResult();
+    	 json.put("code", code);
+         json.put("data", value);
+         return json;
+    }
+   
+    
+    /**
+     * 返回成功消息
+     * 
+     * @param key 键值
+     * @param value 内容
+     * @return 成功消息
+     */
+    @Override
+    public AjaxResult put(String key, Object value)
+    {
+        super.put(key, value);
+        return this;
+    }
+}

+ 0 - 0
web/monitor-hf/src/main/java/com/gyee/frame/common/druid/RemoveDruidAdConfig.java


Някои файлове не бяха показани, защото твърде много файлове са промени