xieshengjie 3 lat temu
rodzic
commit
ddf0c6b534
100 zmienionych plików z 8028 dodań i 358 usunięć
  1. 18 0
      common/pom.xml
  2. 71 0
      common/src/main/java/com/gyee/common/config/R.java
  3. 12 0
      common/src/main/java/com/gyee/common/config/ResultCode.java
  4. 17 0
      common/src/main/java/com/gyee/common/contant/Contant.java
  5. 87 0
      common/src/main/java/com/gyee/common/model/CharsetKit.java
  6. 1015 0
      common/src/main/java/com/gyee/common/model/Convert.java
  7. 7 0
      common/src/main/java/com/gyee/common/model/DNAStatVal.java
  8. 6 0
      common/src/main/java/com/gyee/common/model/DNAVal.java
  9. 55 0
      common/src/main/java/com/gyee/common/model/PointData.java
  10. 94 0
      common/src/main/java/com/gyee/common/model/StrFormatter.java
  11. 448 0
      common/src/main/java/com/gyee/common/model/StringUtils.java
  12. 15 0
      common/src/main/java/com/gyee/common/model/algorithm/PointVo.java
  13. 238 0
      common/src/main/java/com/gyee/common/util/BigDecimalUtils.java
  14. 63 0
      common/src/main/java/com/gyee/common/util/ClassUtil.java
  15. 75 0
      common/src/main/java/com/gyee/common/util/DateUtils.java
  16. 137 0
      common/src/main/java/com/gyee/common/util/DoubleUtils.java
  17. 56 0
      common/src/main/java/com/gyee/common/util/algorithm/GDJTLineBuild.java
  18. 230 0
      common/src/main/java/com/gyee/common/util/algorithm/LineBuild.java
  19. 0 44
      common/src/main/java/com/gyee/common/util/redis/RedisAutoConfiguration.java
  20. 0 47
      common/src/main/java/com/gyee/common/util/redis/RedisConfig.java
  21. 0 49
      common/src/main/java/com/gyee/common/util/redis/RedisService.java
  22. 0 124
      common/src/main/java/com/gyee/common/util/redis/RedisServiceImpl.java
  23. 18 0
      common/src/main/java/com/gyee/common/vo/algorithm/LineParameters.java
  24. 17 0
      common/src/main/java/com/gyee/common/vo/analysis/AnalsisUpdateVo.java
  25. 18 0
      common/src/main/java/com/gyee/common/vo/analysis/AnalysisMainVo.java
  26. 15 0
      common/src/main/java/com/gyee/common/vo/analysis/AnalysisSubVo.java
  27. 18 0
      common/src/main/java/com/gyee/common/vo/analysis/BdzVo.java
  28. 19 0
      common/src/main/java/com/gyee/common/vo/analysis/DeskObject.java
  29. 73 0
      common/src/main/java/com/gyee/common/vo/analysis/DynamicBean.java
  30. 355 0
      common/src/main/java/com/gyee/common/vo/benchmark/DataVo.java
  31. 15 0
      common/src/main/java/com/gyee/common/vo/benchmark/DjhxdbInitVo.java
  32. 43 0
      common/src/main/java/com/gyee/common/vo/benchmark/DjhxdbtopVo.java
  33. 73 0
      common/src/main/java/com/gyee/common/vo/benchmark/DynamicBean.java
  34. 28 0
      common/src/main/java/com/gyee/common/vo/benchmark/FjjxbVo.java
  35. 35 0
      common/src/main/java/com/gyee/common/vo/benchmark/FjjxbmxVo.java
  36. 15 0
      common/src/main/java/com/gyee/common/vo/benchmark/FzyVo.java
  37. 67 0
      common/src/main/java/com/gyee/common/vo/benchmark/GoodCompareVo.java
  38. 18 0
      common/src/main/java/com/gyee/common/vo/benchmark/OpeVo.java
  39. 32 0
      common/src/main/java/com/gyee/common/vo/benchmark/Operation.java
  40. 70 0
      common/src/main/java/com/gyee/common/vo/benchmark/ValueVo.java
  41. 52 0
      common/src/main/java/com/gyee/common/vo/benchmark/WxsslVo.java
  42. 33 0
      common/src/main/java/com/gyee/common/vo/specific/SpecificCenterVo.java
  43. 20 0
      common/src/main/java/com/gyee/common/vo/specific/SpecificTargetVo.java
  44. 43 0
      common/src/main/java/com/gyee/common/vo/specific/SpecificTopVo.java
  45. 33 0
      common/src/main/java/com/gyee/common/vo/threerate/FwjslVo.java
  46. 24 0
      common/src/main/java/com/gyee/common/vo/threerate/QxjslVo.java
  47. 22 22
      common/src/main/resources/application.yml
  48. 17 5
      common/src/test/java/com/gyee/common/CommonMainTest.java
  49. 22 22
      common/target/classes/application.yml
  50. BIN
      common/target/classes/com/gyee/common/util/DateUtils.class
  51. BIN
      common/target/classes/com/gyee/common/util/redis/RedisAutoConfiguration.class
  52. BIN
      common/target/classes/com/gyee/common/util/redis/RedisConfig.class
  53. BIN
      common/target/classes/com/gyee/common/util/redis/RedisService.class
  54. BIN
      common/target/classes/com/gyee/common/util/redis/RedisServiceImpl$1.class
  55. BIN
      common/target/classes/com/gyee/common/util/redis/RedisServiceImpl$2.class
  56. BIN
      common/target/classes/com/gyee/common/util/redis/RedisServiceImpl$3.class
  57. BIN
      common/target/classes/com/gyee/common/util/redis/RedisServiceImpl.class
  58. BIN
      common/target/common-1.0-SNAPSHOT.jar
  59. 1 1
      common/target/maven-archiver/pom.properties
  60. 41 2
      common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  61. 46 10
      common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  62. 1 0
      common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
  63. BIN
      common/target/test-classes/com/gyee/common/CommonMainTest.class
  64. 81 0
      histroy/analysis-histroy-hb/pom.xml
  65. 20 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/AnalysisMain.java
  66. 144 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/GeneratorCodeConfig.java
  67. 23 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/MybatisPlusConfig.java
  68. 71 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/R.java
  69. 12 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/ResultCode.java
  70. 87 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/ResultInfo.java
  71. 37 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/Status.java
  72. 14 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/contant/OpeContant.java
  73. 111 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/init/CacheContext.java
  74. 1481 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/service/analysis/AnalysisNewService.java
  75. 78 0
      histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/task/SaticScheduleTask.java
  76. 69 0
      histroy/analysis-histroy-hb/src/main/resources/application.yml
  77. 46 0
      histroy/analysis-histroy-hb/src/test/java/com/gyee/analysis/AnalysisTest.java
  78. 287 0
      histroy/benchmarking-histroy-hb/src/main/java/com/gyee/benchmarkinghistroy/service/specific/SpecificService.java
  79. 176 0
      histroy/benchmarking-histroy-hb/src/main/java/com/gyee/benchmarkinghistroy/util/realtimesource/HttpClientUtil.java
  80. 799 0
      histroy/benchmarking-histroy-hb/src/main/java/com/gyee/benchmarkinghistroy/util/realtimesource/MongoEdosUtil.java
  81. 25 1
      histroy/benchmarking-histroy/pom.xml
  82. 123 31
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/init/CacheContext.java
  83. 21 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/BenchmarkMapper.java
  84. 23 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/BenchmarkingbetweenMapper.java
  85. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/DutyscheduleMapper.java
  86. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/EquipmentdaydetailedMapper.java
  87. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/LineMapper.java
  88. 31 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/OperationrecordMapper.java
  89. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/ProjectMapper.java
  90. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/Windpowerinfoday3Mapper.java
  91. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerinfodayMapper.java
  92. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerspecificinfodayMapper.java
  93. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerstationMapper.java
  94. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/Windpowerstationtestingpoint2Mapper.java
  95. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerstationthewindinfoMapper.java
  96. 17 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindturbineMapper.java
  97. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/Windturbinetestingpointai2Mapper.java
  98. 16 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WpmttrandmtbfdayMapper.java
  99. 132 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/model/auto/Benchmark.java
  100. 0 0
      histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/model/auto/Benchmarkingbetween.java

+ 18 - 0
common/pom.xml

@@ -15,10 +15,17 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
+
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -78,6 +85,17 @@
             <version>3.6.1</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>cglib</groupId>
+            <artifactId>cglib</artifactId>
+            <version>2.2.2</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.7.0</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 71 - 0
common/src/main/java/com/gyee/common/config/R.java

@@ -0,0 +1,71 @@
+package com.gyee.common.config;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName : R
+ * @Author : xieshengjie
+ * @Date: 2021/5/16 16:59
+ * @Description : 结果集
+ */
+@Data
+public class R {
+    @ApiModelProperty(value = "是否成功")
+    private Boolean success;
+    @ApiModelProperty(value = "返回码")
+    private Integer code;
+    @ApiModelProperty(value = "返回消息")
+    private String message;
+    @ApiModelProperty(value = "总数量")
+    private Long count;
+    @ApiModelProperty(value = "返回数据")
+    private Object data = new Object();
+    private R(){}
+    public static R ok(){
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(ResultCode.SUCCESS);
+        r.setMessage("成功");
+        return r;
+    }
+    public static R ok(Long count){
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(ResultCode.SUCCESS);
+        r.setMessage("成功");
+        r.setCount(count);
+        return r;
+    }
+    public static R error(){
+        R r = new R();
+        r.setSuccess(false);
+        r.setCode(ResultCode.ERROR);
+        r.setMessage("失败");
+        return r;
+    }
+    public R success(Boolean success){
+        this.setSuccess(success);
+        return this;
+    }
+    public R message(String message){
+        this.setMessage(message);
+        return this;
+    }
+    public R code(Integer code){
+        this.setCode(code);
+        return this;
+    }
+//    public R data(String key, Object value){
+//        this.data.put(key, value);
+//        return this;
+//    }
+//    public R data(Map<String, Object> map){
+//        this.setData(map);
+//        return this;
+//    }
+    public R data(Object value){
+        this.setData(value);
+        return this;
+    }
+}

+ 12 - 0
common/src/main/java/com/gyee/common/config/ResultCode.java

@@ -0,0 +1,12 @@
+package com.gyee.common.config;
+
+/**
+ * @ClassName : ResultCode
+ * @Author : xieshengjie
+ * @Date: 2021/5/16 17:01
+ * @Description : 结果状态
+ */
+public class ResultCode {
+    public static Integer SUCCESS = 200;
+    public static Integer ERROR = 500;
+}

+ 17 - 0
common/src/main/java/com/gyee/common/contant/Contant.java

@@ -0,0 +1,17 @@
+package com.gyee.common.contant;
+
+/**
+ * @ClassName : Contant
+ * @Author : xieshengjie
+ * @Date: 2021/6/15 22:28
+ * @Description : 常量类
+ */
+
+public class Contant {
+
+    public static String WXSS = "RFDL,AI022,RDJSSDL-ZS,RSTSSDL-ZS,RXNSSDL-ZS,RQXSSDL-ZS,RGZSSDL-ZS,NSZSSDL-ZS,RJXSSDL-ZS,RLZSSDL-ZS,RQFSSDL-ZS,RXDSSDL-ZS,RWZSSDL-ZS,RTZSSDL-ZS";
+
+    public static String opePoints = "CI0668,CI0669,CI0670";
+
+    public static String benchPoints = "RSDJZSDL,RSSTZSDL,RXNZSDL,RSQXZSDL,RGZZSDL,RSZZSDL,RJXZSDL,RLZZSDL,RQFZSDL,RXDZSDL,RWZZSDL,RTZZSDL";
+}

+ 87 - 0
common/src/main/java/com/gyee/common/model/CharsetKit.java

@@ -0,0 +1,87 @@
+package com.gyee.common.model;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 字符集工具类
+ * 
+ * @author fc
+ *
+ */
+public class CharsetKit
+{
+    /** ISO-8859-1 */
+    public static final String ISO_8859_1 = "ISO-8859-1";
+    /** UTF-8 */
+    public static final String UTF_8 = "UTF-8";
+    /** GBK */
+    public static final String GBK = "GBK";
+
+    /** ISO-8859-1 */
+    public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1);
+    /** UTF-8 */
+    public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8);
+    /** GBK */
+    public static final Charset CHARSET_GBK = Charset.forName(GBK);
+
+    /**
+     * 转换为Charset对象
+     * 
+     * @param charset 字符集,为空则返回默认字符集
+     * @return Charset
+     */
+    public static Charset charset(String charset)
+    {
+        return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset);
+    }
+
+    /**
+     * 转换字符串的字符集编码
+     * 
+     * @param source 字符串
+     * @param srcCharset 源字符集,默认ISO-8859-1
+     * @param destCharset 目标字符集,默认UTF-8
+     * @return 转换后的字符集
+     */
+    public static String convert(String source, String srcCharset, String destCharset)
+    {
+        return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset));
+    }
+
+    /**
+     * 转换字符串的字符集编码
+     * 
+     * @param source 字符串
+     * @param srcCharset 源字符集,默认ISO-8859-1
+     * @param destCharset 目标字符集,默认UTF-8
+     * @return 转换后的字符集
+     */
+    public static String convert(String source, Charset srcCharset, Charset destCharset)
+    {
+        if (null == srcCharset)
+        {
+            srcCharset = StandardCharsets.ISO_8859_1;
+        }
+
+        if (null == destCharset)
+        {
+            srcCharset = StandardCharsets.UTF_8;
+        }
+
+        if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset))
+        {
+            return source;
+        }
+        return new String(source.getBytes(srcCharset), destCharset);
+    }
+
+    /**
+     * @return 系统字符集编码
+     */
+    public static String systemCharset()
+    {
+        return Charset.defaultCharset().name();
+    }
+
+}

Plik diff jest za duży
+ 1015 - 0
common/src/main/java/com/gyee/common/model/Convert.java


+ 7 - 0
common/src/main/java/com/gyee/common/model/DNAStatVal.java

@@ -0,0 +1,7 @@
+package com.gyee.common.model;
+
+public class DNAStatVal {
+	public DNAVal avg = new DNAVal();
+	public DNAVal max = new DNAVal();
+	public DNAVal min = new DNAVal();
+}

+ 6 - 0
common/src/main/java/com/gyee/common/model/DNAVal.java

@@ -0,0 +1,6 @@
+package com.gyee.common.model;
+public class DNAVal {
+	public double DValue;
+	public int Time;
+	public short Status;
+}

+ 55 - 0
common/src/main/java/com/gyee/common/model/PointData.java

@@ -0,0 +1,55 @@
+package com.gyee.common.model;
+
+public class PointData {
+
+	private double pointValueInDouble;
+
+	private Long pointTime;
+
+	private String pointValue;
+
+	private String pointName;// z自定义名称
+
+	private String ednaId;// edna全局id
+
+	public String getEdnaId() {
+		return ednaId;
+	}
+
+	public String getPointName() {
+		return pointName;
+	}
+
+	public Long getPointTime() {
+		return pointTime;
+	}
+
+	public String getPointValue() {
+		return pointValue;
+	}
+
+	public  double getPointValueInDouble() {
+		return pointValueInDouble;
+	}
+
+	public void setEdnaId(String ednaId) {
+		this.ednaId = ednaId;
+	}
+
+	public void setPointName(String pointName) {
+		this.pointName = pointName;
+	}
+
+	public void setPointTime(Long pointTime) {
+		this.pointTime = pointTime;
+	}
+
+	public void setPointValue(String pointValue) {
+		this.pointValue = pointValue;
+	}
+
+	public void setPointValueInDouble(double pointValueInDouble) {
+		this.pointValueInDouble = pointValueInDouble;
+	}
+
+}

+ 94 - 0
common/src/main/java/com/gyee/common/model/StrFormatter.java

@@ -0,0 +1,94 @@
+package com.gyee.common.model;
+
+
+/**
+ * 字符串格式化
+ * 
+ * @author fc
+ */
+public class StrFormatter
+{
+
+    public static final String EMPTY_JSON = "{}";
+    public static final char C_BACKSLASH = '\\';
+    public static final char C_DELIM_START = '{';
+    public static final char C_DELIM_END = '}';
+
+    /**
+     * 格式化字符串<br>
+     * 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
+     * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>
+     * 例:<br>
+     * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>
+     * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
+     * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
+     * 
+     * @param strPattern 字符串模板
+     * @param argArray 参数列表
+     * @return 结果
+     */
+    public static String format(final String strPattern, final Object... argArray)
+    {
+        if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
+        {
+            return strPattern;
+        }
+        final int strPatternLength = strPattern.length();
+
+        // 初始化定义好的长度以获得更好的性能
+        StringBuilder sbuf = new StringBuilder(strPatternLength + 50);
+
+        int handledPosition = 0;
+        int delimIndex;// 占位符所在位置
+        for (int argIndex = 0; argIndex < argArray.length; argIndex++)
+        {
+            delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
+            if (delimIndex == -1)
+            {
+                if (handledPosition == 0)
+                {
+                    return strPattern;
+                }
+                else
+                { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
+                    sbuf.append(strPattern, handledPosition, strPatternLength);
+                    return sbuf.toString();
+                }
+            }
+            else
+            {
+                if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
+                {
+                    if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
+                    {
+                        // 转义符之前还有一个转义符,占位符依旧有效
+                        sbuf.append(strPattern, handledPosition, delimIndex - 1);
+                        sbuf.append(Convert.utf8Str(argArray[argIndex]));
+                        handledPosition = delimIndex + 2;
+                    }
+                    else
+                    {
+                        // 占位符被转义
+                        argIndex--;
+                        sbuf.append(strPattern, handledPosition, delimIndex - 1);
+                        sbuf.append(C_DELIM_START);
+                        handledPosition = delimIndex + 1;
+                    }
+                }
+                else
+                {
+                    // 正常占位符
+                    sbuf.append(strPattern, handledPosition, delimIndex);
+                    sbuf.append(Convert.utf8Str(argArray[argIndex]));
+                    handledPosition = delimIndex + 2;
+                }
+            }
+        }
+        // append the characters following the last {} pair.
+        // 加入最后一个占位符后所有的字符
+        sbuf.append(strPattern, handledPosition, strPattern.length());
+
+        return sbuf.toString();
+    }
+
+}

+ 448 - 0
common/src/main/java/com/gyee/common/model/StringUtils.java

@@ -0,0 +1,448 @@
+package com.gyee.common.model;
+
+import org.apache.commons.lang.WordUtils;
+import org.apache.commons.lang.text.StrBuilder;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Collection;
+import java.util.Map;
+import java.util.UUID;
+
+
+/**
+ * 字符串工具类
+ * 
+ * @author fc
+ */
+public class StringUtils extends org.apache.commons.lang3.StringUtils
+{
+    /** 空字符串 */
+    private static final String NULLSTR = "";
+
+    /** 下划线 */
+    private static final char SEPARATOR = '_';
+
+    /**
+     * 获取参数不为空值
+     * 
+     * @param value defaultValue 要判断的value
+     * @return value 返回值
+     */
+    public static <T> T nvl(T value, T defaultValue)
+    {
+        return value != null ? value : defaultValue;
+    }
+
+    /**
+     * * 判断一个Collection是否为空, 包含List,Set,Queue
+     * 
+     * @param coll 要判断的Collection
+     * @return true:为空 false:非空
+     */
+    public static boolean isEmpty(Collection<?> coll)
+    {
+        return isNull(coll) || coll.isEmpty();
+    }
+
+    /**
+     * * 判断一个Collection是否非空,包含List,Set,Queue
+     * 
+     * @param coll 要判断的Collection
+     * @return true:非空 false:空
+     */
+    public static boolean isNotEmpty(Collection<?> coll)
+    {
+        return !isEmpty(coll);
+    }
+
+    /**
+     * * 判断一个对象数组是否为空
+     * 
+     * @param objects 要判断的对象数组
+     ** @return true:为空 false:非空
+     */
+    public static boolean isEmpty(Object[] objects)
+    {
+        return isNull(objects) || (objects.length == 0);
+    }
+
+    /**
+     * * 判断一个对象数组是否非空
+     * 
+     * @param objects 要判断的对象数组
+     * @return true:非空 false:空
+     */
+    public static boolean isNotEmpty(Object[] objects)
+    {
+        return !isEmpty(objects);
+    }
+
+    /**
+     * * 判断一个Map是否为空
+     * 
+     * @param map 要判断的Map
+     * @return true:为空 false:非空
+     */
+    public static boolean isEmpty(Map<?, ?> map)
+    {
+        return isNull(map) || map.isEmpty();
+    }
+
+    /**
+     * * 判断一个Map是否为空
+     * 
+     * @param map 要判断的Map
+     * @return true:非空 false:空
+     */
+    public static boolean isNotEmpty(Map<?, ?> map)
+    {
+        return !isEmpty(map);
+    }
+
+    /**
+     * * 判断一个字符串是否为空串
+     * 
+     * @param str String
+     * @return true:为空 false:非空
+     */
+    public static boolean isEmpty(String str)
+    {
+        return isNull(str) || NULLSTR.equals(str.trim());
+    }
+
+    /**
+     * * 判断一个字符串是否为非空串
+     * 
+     * @param str String
+     * @return true:非空串 false:空串
+     */
+    public static boolean isNotEmpty(String str)
+    {
+        return !isEmpty(str);
+    }
+
+    /**
+     * * 判断一个对象是否为空
+     * 
+     * @param object Object
+     * @return true:为空 false:非空
+     */
+    public static boolean isNull(Object object)
+    {
+        return object == null;
+    }
+
+    /**
+     * * 判断一个对象是否非空
+     * 
+     * @param object Object
+     * @return true:非空 false:空
+     */
+    public static boolean isNotNull(Object object)
+    {
+        return !isNull(object);
+    }
+
+    /**
+     * * 判断一个对象是否是数组类型(Java基本型别的数组)
+     * 
+     * @param object 对象
+     * @return true:是数组 false:不是数组
+     */
+    public static boolean isArray(Object object)
+    {
+        return isNotNull(object) && object.getClass().isArray();
+    }
+
+    /**
+     * 去空格
+     */
+    public static String trim(String str)
+    {
+        return (str == null ? "" : str.trim());
+    }
+
+    /**
+     * 截取字符串
+     * 
+     * @param str 字符串
+     * @param start 开始
+     * @return 结果
+     */
+    public static String substring(final String str, int start)
+    {
+        if (str == null)
+        {
+            return NULLSTR;
+        }
+
+        if (start < 0)
+        {
+            start = str.length() + start;
+        }
+
+        if (start < 0)
+        {
+            start = 0;
+        }
+        if (start > str.length())
+        {
+            return NULLSTR;
+        }
+
+        return str.substring(start);
+    }
+
+    /**
+     * 截取字符串
+     * 
+     * @param str 字符串
+     * @param start 开始
+     * @param end 结束
+     * @return 结果
+     */
+    public static String substring(final String str, int start, int end)
+    {
+        if (str == null)
+        {
+            return NULLSTR;
+        }
+
+        if (end < 0)
+        {
+            end = str.length() + end;
+        }
+        if (start < 0)
+        {
+            start = str.length() + start;
+        }
+
+        if (end > str.length())
+        {
+            end = str.length();
+        }
+
+        if (start > end)
+        {
+            return NULLSTR;
+        }
+
+        if (start < 0)
+        {
+            start = 0;
+        }
+        if (end < 0)
+        {
+            end = 0;
+        }
+
+        return str.substring(start, end);
+    }
+
+    /**
+     * 格式化文本, {} 表示占位符<br>
+     * 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
+     * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>
+     * 例:<br>
+     * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>
+     * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
+     * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
+     * 
+     * @param template 文本模板,被替换的部分用 {} 表示
+     * @param params 参数值
+     * @return 格式化后的文本
+     */
+    public static String format(String template, Object... params)
+    {
+        if (isEmpty(params) || isEmpty(template))
+        {
+            return template;
+        }
+        return StrFormatter.format(template, params);
+    }
+
+    /**
+     * 驼峰首字符小写 NameVc>>nameVc
+     */
+    public static String uncapitalize(String str)
+    {
+        int strLen;
+        if (str == null || (strLen = str.length()) == 0)
+        {
+            return str;
+        }
+        return new StrBuilder(strLen).append(Character.toLowerCase(str.charAt(0))).append(str.substring(1)).toString();
+    }
+    
+
+    /**
+     * 下划线转驼峰命名 nameVc>>name_vc
+     */
+    public static String toUnderScoreCase(String s)
+    {
+        if (s == null)
+        {
+            return null;
+        }
+        StringBuilder sb = new StringBuilder();
+        boolean upperCase = false;
+        for (int i = 0; i < s.length(); i++)
+        {
+            char c = s.charAt(i);
+
+            boolean nextUpperCase = true;
+
+            if (i < (s.length() - 1))
+            {
+                nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
+            }
+
+            if ((i > 0) && Character.isUpperCase(c))
+            {
+                if (!upperCase || !nextUpperCase)
+                {
+                    sb.append(SEPARATOR);
+                }
+                upperCase = true;
+            }
+            else
+            {
+                upperCase = false;
+            }
+
+            sb.append(Character.toLowerCase(c));
+        }
+
+        return sb.toString();
+    }
+
+    /**
+     * 是否包含字符串
+     * 
+     * @param str 验证字符串
+     * @param strs 字符串组
+     * @return 包含返回true
+     */
+    public static boolean inStringIgnoreCase(String str, String... strs)
+    {
+        if (str != null && strs != null)
+        {
+            for (String s : strs)
+            {
+                if (str.equalsIgnoreCase(trim(s)))
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    
+    /**
+     * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
+     * 
+     * @param name 转换前的下划线大写方式命名的字符串
+     * @return 转换后的驼峰式命名的字符串
+     */
+    public static String convertToCamelCase(String name)
+    {
+        StringBuilder result = new StringBuilder();
+        // 快速检查
+        if (name == null || name.isEmpty())
+        {
+            // 没必要转换
+            return "";
+        }
+        else if (!name.contains("_"))
+        {
+            // 不含下划线,仅将首字母大写
+            return name.substring(0, 1).toUpperCase() + name.substring(1);
+        }
+        // 用下划线将原始字符串分割
+        String[] camels = name.split("_");
+        for (String camel : camels)
+        {
+            // 跳过原始字符串中开头、结尾的下换线或双重下划线
+            if (camel.isEmpty())
+            {
+                continue;
+            }
+            // 首字母大写
+            result.append(camel.substring(0, 1).toUpperCase());
+            result.append(camel.substring(1).toLowerCase());
+        }
+        return result.toString();
+    }
+    /**
+     * 首字母大写
+     *
+     * @param name
+     * @return
+     */
+    public static String firstUpperCase(String name) {
+        name = name.substring(0, 1).toUpperCase() + name.substring(1);
+        return name;
+    }
+    /**
+     * 首字母小写
+     *
+     * @param name
+     * @return
+     */
+    public static String firstLowerCase(String name) {
+        name = name.substring(0, 1).toLowerCase() + name.substring(1);
+        return name;
+
+    }
+    
+    /**
+     * 将下划线转化为大写
+     *
+     * @param name
+     * @param firstCase 首字母是否大写 true:大写 false;小写
+     * @return
+     */
+    public static String upperCase_(String name, boolean firstCase) {
+        if(isEmpty(name)){
+            return "";
+        }
+        String[] s = name.split("_");
+        StringBuffer stringBuffer = new StringBuffer();
+        for (String s1 : s) {
+            stringBuffer.append(s1.substring(0, 1).toUpperCase() + s1.substring(1));
+        }
+        if(!firstCase){
+            return firstLowerCase(stringBuffer.toString());
+        }
+        return stringBuffer.toString();
+    }
+
+    
+
+    /**
+     * 列名转换成Java属性名
+     */
+    public static String columnToJava(String columnName) {
+        return WordUtils.capitalizeFully(columnName, new char[]{'_'}).replace("_", "" );
+    }
+    /**
+     * 表名转换成Java类名
+     */
+    public static String tableToJava(String tableName, String tablePrefix) {
+        if (StringUtils.isNotBlank(tablePrefix)) {
+            tableName = tableName.replaceFirst(tablePrefix, "" );
+        }
+        return columnToJava(tableName);
+    }
+
+    public static double round(double num, int digit) {
+
+        return new BigDecimal(num).setScale(digit, RoundingMode.HALF_UP).doubleValue();
+    }
+
+    public static String getUUID(){
+        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
+        return uuid;
+    }
+}

+ 15 - 0
common/src/main/java/com/gyee/common/model/algorithm/PointVo.java

@@ -0,0 +1,15 @@
+package com.gyee.common.model.algorithm;
+
+import lombok.Data;
+
+/**
+ * @ClassName : PointVo
+ * @Author : xieshengjie
+ * @Date: 2021/11/15 10:27
+ * @Description :
+ */
+@Data
+public class PointVo {
+    private Double x;
+    private Double y;
+}

+ 238 - 0
common/src/main/java/com/gyee/common/util/BigDecimalUtils.java

@@ -0,0 +1,238 @@
+package com.gyee.common.util;
+
+import java.math.BigDecimal;
+import java.text.NumberFormat;
+
+/**
+ * @ClassName : BigDecimalUtils
+ * @Author : xieshengjie
+ * @Date: 2021/6/4 9:54
+ * @Description : 运算工具类
+ */
+public class BigDecimalUtils {
+
+    //默认除法运算精度
+    private static final int DEF_DIV_SCALE = 2;
+
+    //建立货币格式化引用
+    private static final NumberFormat currency = NumberFormat.getCurrencyInstance();
+
+    //建立百分比格式化引用
+    private static final NumberFormat percent = NumberFormat.getPercentInstance();
+
+    /**
+     * 加法
+     * @param num
+     * @param num1
+     * @return
+     */
+    public static BigDecimal add(BigDecimal num, BigDecimal num1) {
+        return num.add(num1);
+    }
+
+
+    /**
+     * 提供精确的加法运算(默认四舍五入,根据scale保留小数位数)
+     * @param num
+     * @param num1
+     * @param scale
+     * @return
+     */
+    public static BigDecimal add(BigDecimal num, BigDecimal num1, int scale) {
+        return num.add(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);
+    }
+
+
+    /**
+     * 提供精确的加法运算(默认四舍五入,根据scale保留小数位数)
+     * @param add
+     * @param add1
+     * @param scale
+     * @return
+     */
+    public static BigDecimal add(String add, String add1, int scale) {
+        BigDecimal num = new BigDecimal(add);
+        BigDecimal num1 = new BigDecimal(add1);
+        return num.add(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);
+    }
+
+
+    /**
+     * 减法
+     * @param num
+     * @param num1
+     * @return
+     */
+    public static BigDecimal sub(BigDecimal num, BigDecimal num1) {
+        return num.subtract(num1);
+    }
+
+
+    /**
+     * 提供精确的减法运算(默认四舍五入,根据scale保留小数位数)
+     * @param num
+     * @param num1
+     * @param scale
+     * @return
+     */
+    public static BigDecimal sub(BigDecimal num, BigDecimal num1, int scale) {
+        return num.subtract(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);
+    }
+
+
+    /**
+     * 提供精确的减法运算(默认四舍五入,根据scale保留小数位数)
+     * @param minus
+     * @param minus1
+     * @return
+     */
+    public static BigDecimal sub(String minus, String minus1, int scale) {
+        BigDecimal num = new BigDecimal(minus);
+        BigDecimal num1 = new BigDecimal(minus1);
+        return sub(num, num1, scale);
+    }
+
+
+    /**
+     * 乘法
+     * @param num
+     * @param num1
+     * @return
+     */
+    public static BigDecimal multiply(BigDecimal num, BigDecimal num1) {
+        return num.multiply(num1);
+    }
+
+
+    /**
+     * 提供精确的乘法运算(默认四舍五入,保留小数位数根据scale决定)
+     * @param num
+     * @param num1
+     * @param scale
+     * @return
+     */
+    public static BigDecimal multiply(String num, String num1, int scale) {
+        BigDecimal mul = new BigDecimal(num);
+        BigDecimal mul1 = new BigDecimal(num1);
+        return multiply(mul, mul1, scale);
+    }
+
+
+    /**
+     * 提供精确的乘法运算(默认四舍五入,保留小数位数根据scale确定)
+     * @param num
+     * @param num1
+     * @param scale
+     * @return
+     */
+    public static BigDecimal multiply(BigDecimal num, BigDecimal num1, int scale) {
+        return num.multiply(num1).setScale(scale, BigDecimal.ROUND_HALF_UP);
+    }
+
+
+    /**
+     * 除法(除法除不尽会抛异常)
+     * @param num
+     * @param num1
+     * @return
+     */
+    public static BigDecimal divide(BigDecimal num, BigDecimal num1) {
+        return num.divide(num1, DEF_DIV_SCALE);
+    }
+
+
+    /**
+     * 提供精确的除法运算(默认四舍五入保留两位小数)
+     * @param dividend
+     * @param divisor
+     * @return
+     */
+    public static BigDecimal divide(BigDecimal dividend, BigDecimal divisor, int scale) {
+        return dividend.divide(divisor, scale, BigDecimal.ROUND_HALF_UP);
+    }
+
+
+    /**
+     * 提供精确的除法运算(默认四舍五入,保留小数位数根据scale决定)
+     * @param dividend
+     * @param divisor
+     * @param scale
+     * @return
+     */
+    public static BigDecimal divide(String dividend, String divisor, int scale) {
+        BigDecimal num = new BigDecimal(dividend);
+        BigDecimal num1 = new BigDecimal(divisor);
+        return divide(num, num1, scale);
+    }
+
+
+    /**
+     * 提供精确的取余数运算(小数保留位数根据scale决定)
+     * @param dividend
+     * @param divisor
+     * @param scale
+     * @return
+     */
+    public static BigDecimal balance(BigDecimal dividend, BigDecimal divisor, int scale) {
+        return dividend.remainder(divisor).setScale(scale);
+    }
+
+
+    /**
+     * 提供精确的取余数运算(默认保留两位小数)
+     * @param dividend
+     * @param divisor
+     * @param scale
+     * @return
+     */
+    public static BigDecimal balance(BigDecimal dividend, BigDecimal divisor) {
+        return dividend.remainder(divisor).setScale(DEF_DIV_SCALE);
+    }
+
+
+    /**
+     * 比较BigDecimal,相等返回0,num>num1返回1,num<num1返回-1
+     * @param num
+     * @param num1
+     * @return
+     */
+    public static int compareTo(BigDecimal num, BigDecimal num1) {
+        return num.compareTo(num1);
+    }
+
+
+    /**
+     * BigDecimal货币格式化
+     * @param money
+     * @return
+     */
+    public static String currencyFormat(BigDecimal money) {
+        return currency.format(money);
+    }
+
+
+    /**
+     * BigDecimal百分比格式化
+     * @param rate
+     * @return
+     */
+    public static String rateFormat(BigDecimal rate) {
+        return percent.format(rate);
+    }
+
+
+    public static void main(String[] args) {
+        BigDecimal divide = divide("12", "11", 2);
+        System.out.println(divide.doubleValue());
+
+        BigDecimal num1 = new BigDecimal("121");
+        BigDecimal num2 = new BigDecimal("122");
+        System.out.println(compareTo(num1, num2));
+
+        String currencyFormat = currencyFormat(num2);
+        System.out.println(currencyFormat);
+
+        String rateFormat = rateFormat(num2);
+        System.out.println(rateFormat);
+    }
+}

+ 63 - 0
common/src/main/java/com/gyee/common/util/ClassUtil.java

@@ -0,0 +1,63 @@
+package com.gyee.common.util;
+
+
+import com.gyee.common.vo.analysis.DynamicBean;
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Set;
+
+/**
+ * @ClassName : ClassUtil
+ * @Author : xieshengjie
+ * @Date: 2021/3/8 17:16
+ * @Description : 动态添加属性
+ */
+public class ClassUtil {
+    /**
+     *
+     * @param object   旧的对象带值
+     * @param addMap   动态需要添加的属性和属性类型
+     * @param addValMap  动态需要添加的属性和属性值
+     * @return  新的对象
+     * @throws Exception
+     */
+    public static Object dynamicClass(Object object, LinkedHashMap addMap, LinkedHashMap addValMap) throws Exception {
+        LinkedHashMap returnMap = new LinkedHashMap();
+        LinkedHashMap typeMap = new LinkedHashMap();
+
+
+        Class<?> type = object.getClass();
+        BeanInfo beanInfo = Introspector.getBeanInfo(type);
+        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+        for (int i = 0; i < propertyDescriptors.length; i++) {
+            PropertyDescriptor descriptor = propertyDescriptors[i];
+            String propertyName = descriptor.getName();
+            if (!propertyName.equals("class")) {
+                Method readMethod = descriptor.getReadMethod();
+                Object result = readMethod.invoke(object);
+                //可以判断为 NULL不赋值
+                returnMap.put(propertyName, result);
+                typeMap.put(propertyName, descriptor.getPropertyType());
+            }
+        }
+
+        returnMap.putAll(addValMap);
+        typeMap.putAll(addMap);
+        //map转换成实体对象
+        DynamicBean bean = new DynamicBean(typeMap);
+        //赋值
+        Set keys = typeMap.keySet();
+        for (Iterator it = keys.iterator(); it.hasNext(); ) {
+            String key = (String) it.next();
+            bean.setValue(key, returnMap.get(key));
+        }
+        Object obj = bean.getObject();
+        return obj;
+    }
+
+}

+ 75 - 0
common/src/main/java/com/gyee/common/util/DateUtils.java

@@ -387,6 +387,81 @@ public class DateUtils  {
 
     }
 
+    /**
+     * 获取当前周的周一的日期
+     * @param date 传入当前日期
+     * @return
+     */
+    public static Date getThisWeekMonday(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        // 获得当前日期是一个星期的第几天
+        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
+        if (1 == dayWeek) {
+            cal.add(Calendar.DAY_OF_MONTH, -1);
+        }
+        // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
+        cal.setFirstDayOfWeek(Calendar.MONDAY);
+        // 获得当前日期是一个星期的第几天
+        int day = cal.get(Calendar.DAY_OF_WEEK);
+        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
+        return cal.getTime();
+    }
+
+    /**
+     * 获取指定日期的月初
+     *
+     */
+    public static Date getFirstAndLastDayOfMonth(Date date) throws Exception {
+
+        Calendar cale = Calendar.getInstance();
+
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+
+        cale.setTime(date);
+
+        cale.add(Calendar.MONTH, 0);
+
+        cale.set(Calendar.DAY_OF_MONTH, 1);
+
+        String firstDayOfMonth = formatter.format(cale.getTime()); // 当月第一天 2019-02-01
+
+        return parseDate(firstDayOfMonth);
+
+    }
+
+    /**
+     * 获取季度开始
+     * @param date
+     * @return
+     */
+    public static Date getSeasonStartDate (Date date) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        int month = calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month / 3 * 3);
+        calendar.set(Calendar.DATE, 1);
+        return calendar.getTime();
+    }
+
+    public static Date getYearBegin(Date time) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(time);
+        //设置月和日都为1,即为开始时间(注:月份是从0开始;日中0表示上个月最后一天,1表示本月开始第一天)
+        cal.set(Calendar.MONTH, 0);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+        //将小时置为0
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        //将分钟置为0
+        cal.set(Calendar.MINUTE, 0);
+        //将秒置为0
+        cal.set(Calendar.SECOND, 0);
+        //将毫秒置为0
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+
+    }
+
 
     /**
      * 获取指定时间的天数

+ 137 - 0
common/src/main/java/com/gyee/common/util/DoubleUtils.java

@@ -0,0 +1,137 @@
+package com.gyee.common.util;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName : DoubleUtils
+ * @Author : xieshengjie
+ * @Date: 2021/11/16 17:00
+ * @Description :
+ */
+public class DoubleUtils {
+
+    /**
+     * 保留两位小数
+     * @param number
+     * @param precision
+     * @return
+     */
+    public static double keepPrecision(double number, int precision) {
+        BigDecimal bg = new BigDecimal(number);
+        return bg.setScale(precision, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+
+    /**
+     * double保留小数点位数,四舍五入
+     * 比如处理价格等数据
+     * @param d 要处理的double值
+     * @param n 要保留的位数
+     * @return
+     */
+    public static double getRoundingNum(double d , int n) {
+        BigDecimal b = new BigDecimal(String.valueOf(d));
+        b = b.divide(BigDecimal.ONE, n, BigDecimal.ROUND_HALF_UP);
+        return b.doubleValue();
+    }
+    /**
+     *
+     * @param numA 数字A
+     * @param numB 数字B
+     * @param operate 运算符
+     * @return
+     */
+    public static double GetResult(double numA, double numB, String operate){
+        double res = 0;
+        BigDecimal bigA = new BigDecimal(Double.toString(numA));
+        BigDecimal bigB = new BigDecimal(Double.toString(numB));
+        switch (operate) {
+
+            case "+":
+                res = bigA.add(bigB).doubleValue();
+                break;
+            case "-":
+                res = bigA.subtract(bigB).doubleValue();
+                break;
+            case "*":
+                res = bigA.multiply(bigB).doubleValue();
+                break;
+            case "/":
+                res = bigA.divide(bigB).doubleValue();
+                break;
+            default :
+                System.out.println("运算符不合法~");
+                break;
+        }
+        return res;
+    }
+
+
+    public static Double sum(Double ...in){
+        Double result = 0.0;
+        for (int i = 0; i < in.length; i++){
+            result = result+(ifNullSet0(in[i]));
+        }
+        return result;
+    }
+
+    public static String hb(String ...in){
+        String result = "";
+        for (int i = 0; i < in.length; i++){
+            result = result+in[i];
+        }
+        return result;
+    }
+
+    public static Integer sum(Integer ...in) {
+        Integer result = 0;
+        for (int i = 0; i < in.length; i++){
+            result = result+(ifNullSet0(in[i]));
+        }
+        return result;
+    }
+
+    public static Double max(Double ...in){
+        Double result = 0.0;
+        for (int i = 0; i < in.length; i++){
+            if (result<ifNullSet0(in[i])){
+                result=ifNullSet0(in[i]);
+            }
+        }
+        return result;
+    }
+
+    public static Double min(Double ...in){
+        Double result = 0.0;
+        for (int i = 0; i < in.length; i++){
+            if (i==0){
+                result=ifNullSet0(in[0]);
+            }
+            if (result>ifNullSet0(in[i])){
+                result=ifNullSet0(in[i]);
+            }
+        }
+        return result;
+    }
+    public static Double ave(Double ...in){
+        if(in.length==0){
+            return 0.0;
+        }else{
+            return sum(in)/in.length;
+        }
+
+    }
+    public static Double ifNullSet0(Double in) {
+        if (in != null) {
+            return in;
+        }
+        return 0.0;
+    }
+
+    public static Integer ifNullSet0(Integer in) {
+        if (in != null) {
+            return in;
+        }
+        return 0;
+    }
+}

+ 56 - 0
common/src/main/java/com/gyee/common/util/algorithm/GDJTLineBuild.java

@@ -0,0 +1,56 @@
+package com.gyee.common.util.algorithm;
+
+import com.gyee.common.model.algorithm.PointVo;
+
+import java.util.*;
+
+/**
+ * @ClassName : GDJTLineBuild
+ * @Author : xieshengjie
+ * @Date: 2021/11/15 12:00
+ * @Description :
+ */
+public class GDJTLineBuild {
+
+    public static List<PointVo> buildLine(double[] arrX, double[] arrY)
+    {
+        List<PointVo> points = new ArrayList<>();
+
+        if (arrX.length != arrY.length)
+        {
+            return points;
+        }
+
+        Map<Double,Double> pointsDic = new HashMap<>();
+        Map<Double,Integer> pointsjs = new HashMap<>();
+
+        for (int i = 0; i < arrX.length; i++)
+        {
+            if (pointsDic.containsKey(arrX[i]))
+            {
+                Double x = pointsDic.get(arrX[i]);
+                x+=arrY[i];
+                pointsDic.put(arrX[i],x);
+                Integer js = pointsjs.get(arrX[i]);
+                js++;
+                pointsjs.put(arrX[i],js);
+            }
+            else
+            {
+                pointsDic.put(arrX[i], arrY[i]);
+                pointsjs.put(arrX[i], 1);
+            }
+        }
+
+        Set<Double> keys = pointsDic.keySet();
+        for (Double key : keys){
+            double b=pointsDic.get(key)/ pointsjs.get(key);
+            PointVo p = new PointVo();
+            p.setX(key);
+            p.setY(b);
+            points.add(p);
+        }
+
+        return points;
+    }
+}

+ 230 - 0
common/src/main/java/com/gyee/common/util/algorithm/LineBuild.java

@@ -0,0 +1,230 @@
+package com.gyee.common.util.algorithm;
+
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.model.algorithm.PointVo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName : LineBuild
+ * @Author : xieshengjie
+ * @Date: 2021/11/15 10:19
+ * @Description :
+ */
+public class LineBuild {
+    /// <summary>
+    /// 用最小二乘法拟合二元多次曲线
+    /// </summary>
+    /// <param name="arrX">已知点的x坐标集合</param>
+    /// <param name="arrY">已知点的y坐标集合</param>
+    /// <param name="length">已知点的个数</param>
+    /// <param name="dimension">方程的最高次数</param>
+    /// <param name="scale">曲线的刻度</param>
+    /// <returns></returns>
+    public static List<PointVo> buildLine(double[] arrX, double[] arrY, int length, int dimension, double scale)
+    {
+
+        List<PointVo> points = new ArrayList<>();
+
+        if (arrX.length != arrY.length || arrX.length<3)
+        {
+            return points;
+        }
+
+        double minValue=arrY[0];
+        double maxValue=arrY[arrY.length-1];
+
+
+        double min = 0;
+        double max= 0;
+
+        double[] coefficient = multiLine(arrX, arrY, length, dimension);
+
+        for (double i = arrX[0]; i <= arrX[arrX.length - 1]; i += scale)
+        {
+            PointVo point = new PointVo();
+            point.setX(StringUtils.round(i,2));
+
+
+            for (int j = 0; j < coefficient.length; j++)
+            {
+                Double y = point.getY();
+                if (y==null){
+                    y=0.0;
+                }
+                y += (float)(coefficient[j] * Math.pow((double)point.getX(), (double)j));
+                point.setY(y);
+            }
+            if (point.getY() < minValue)
+            {
+                point.setY(minValue);
+            }
+            if (point.getY() > maxValue)
+            {
+                point.setY(maxValue);
+            }
+
+            if (point.getY() < min)
+            {
+                min = point.getY();
+            }
+            if (point.getY() > max)
+            {
+                max = point.getY();
+            }
+
+            points.add(point);
+        }
+        builder(points, min, max);
+        return points;
+    }
+
+    private static void builder(List<PointVo> points, double min, double max)
+    {
+        boolean b = false;
+        for (int i = 0; i < points.size(); i++)
+        {
+            if (b)
+            {
+                points.get(i).setY(max);
+            }
+            else
+            {
+                if (max == points.get(i).getY())
+                {
+                    b = true;
+                }
+            }
+
+        }
+
+        for (int i = points.size()-1; i > -1; i--)
+        {
+            if (!b)
+            {
+                points.get(i).setY(min);
+            }
+            else
+            {
+                if (min ==points.get(i).getY())
+                {
+                    b = false;
+                }
+            }
+
+        }
+    }
+
+
+
+    ///<summary>
+    ///用最小二乘法拟合二元多次曲线
+    ///</summary>
+    ///<param name="arrX">已知点的x坐标集合</param>
+    ///<param name="arrY">已知点的y坐标集合</param>
+    ///<param name="length">已知点的个数</param>
+    ///<param name="dimension">方程的最高次数</param>
+    public static double[] multiLine(double[] arrX, double[] arrY, int length, int dimension)//二元多次线性方程拟合曲线
+    {
+        int n = dimension + 1;                  //dimension次方程需要求 dimension+1个 系数
+        double[][] guass = new double[n][n + 1];      //高斯矩阵 例如:y=a0+a1*x+a2*x*x
+        for (int i = 0; i < n; i++)
+        {
+            int j;
+            for (j = 0; j < n; j++)
+            {
+                guass[i][j] = SumArr(arrX, j + i, length);
+            }
+            guass[i][j] = SumArr(arrX, i, arrY, 1, length);
+        }
+        return computGauss(guass, n);
+    }
+    public static double SumArr(double[] arr, int n, int length) //求数组的元素的n次方的和
+    {
+        double s = 0;
+        for (int i = 0; i < length; i++)
+        {
+            if (arr[i] != 0 || n != 0)
+                s = s + Math.pow(arr[i], n);
+            else
+                s = s + 1;
+        }
+        return s;
+    }
+    public static double SumArr(double[] arr1, int n1, double[] arr2, int n2, int length)
+    {
+        double s = 0;
+        for (int i = 0; i < length; i++)
+        {
+            if ((arr1[i] != 0 || n1 != 0) && (arr2[i] != 0 || n2 != 0))
+                s = s + Math.pow(arr1[i], n1) * Math.pow(arr2[i], n2);
+            else
+                s = s + 1;
+        }
+        return s;
+
+    }
+    public static double[] computGauss(double[][] guass, int n)
+    {
+        int i, j;
+        int k, m;
+        double temp;
+        double max;
+        double s;
+        double[] x = new double[n];
+        for (i = 0; i < n; i++) x[i] = 0.0;//初始化
+
+        for (j = 0; j < n; j++)
+        {
+            max = 0;
+            k = j;
+            for (i = j; i < n; i++)
+            {
+                if (Math.abs(guass[i][j]) > max)
+                {
+                    max = guass[i][j];
+                    k = i;
+                }
+            }
+
+
+            if (k != j)
+            {
+                for (m = j; m < n + 1; m++)
+                {
+                    temp = guass[j][m];
+                    guass[j][m] = guass[k][m];
+                    guass[k][m] = temp;
+                }
+            }
+            if (0 == max)
+            {
+                // "此线性方程为奇异线性方程"
+                return x;
+            }
+
+            for (i = j + 1; i < n; i++)
+            {
+                s = guass[i][j];
+                for (m = j; m < n + 1; m++)
+                {
+                    guass[i][m] = guass[i][m] - guass[j][m] * s / (guass[j][j]);
+                }
+            }
+
+        }//结束for (j=0;j<n;j++)
+
+        for (i = n - 1; i >= 0; i--)
+        {
+            s = 0;
+            for (j = i + 1; j < n; j++)
+            {
+                s = s + guass[i][j] * x[j];
+            }
+            x[i] = (guass[i][n] - s) / guass[i][i];
+        }
+        return x;
+    }//返回值是函数的系数
+
+}

+ 0 - 44
common/src/main/java/com/gyee/common/util/redis/RedisAutoConfiguration.java

@@ -1,44 +0,0 @@
-package com.gyee.common.util.redis;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisOperations;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.StringRedisTemplate;
-
-import java.net.UnknownHostException;
-
-@Configuration
-@ConditionalOnClass(RedisOperations.class)
-@EnableConfigurationProperties(RedisProperties.class)
-public class RedisAutoConfiguration {
-
-
-    @Bean
-    @ConditionalOnMissingBean(name = "redisTemplate")
-    public RedisTemplate<Object, Object> redisTemplate(
-            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
-        RedisTemplate<Object, Object> template = new RedisTemplate<>();
-        template.setConnectionFactory(redisConnectionFactory);
-        return template;
-
-    }
-
-
-    @Bean
-    @ConditionalOnMissingBean
-    public StringRedisTemplate stringRedisTemplate(
-            RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
-        StringRedisTemplate template = new StringRedisTemplate();
-        template.setConnectionFactory(redisConnectionFactory);
-        return template;
-
-    }
-
-
-}

+ 0 - 47
common/src/main/java/com/gyee/common/util/redis/RedisConfig.java

@@ -1,47 +0,0 @@
-package com.gyee.common.util.redis;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-
-/**
-
-/**
- *@ClassName RedisConfig
- *@Description TODO
- *@Author 谢生杰
- *@Date 2020/9/14 10:42
- *@Version 1.0
- **/
-@Configuration
-public class RedisConfig {
-    @Bean
-    @SuppressWarnings("all")
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
-        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
-        template.setConnectionFactory(factory);
-        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
-        ObjectMapper om = new ObjectMapper();
-        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        jackson2JsonRedisSerializer.setObjectMapper(om);
-        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
-        // key采用String的序列化方式
-        template.setKeySerializer(stringRedisSerializer);
-        // hash的key也采用String的序列化方式
-        template.setHashKeySerializer(stringRedisSerializer);
-        // value序列化方式采用jackson
-        template.setValueSerializer(jackson2JsonRedisSerializer);
-        // hash的value序列化方式采用jackson
-        template.setHashValueSerializer(jackson2JsonRedisSerializer);
-        template.afterPropertiesSet();
-        return template;
-    }
-}

+ 0 - 49
common/src/main/java/com/gyee/common/util/redis/RedisService.java

@@ -1,49 +0,0 @@
-package com.gyee.common.util.redis;
-
-public interface RedisService {
-
-    /**
-     * set存数据
-     * @param key
-     * @param value
-     * @return
-     */
-    boolean set(String key, String value);
-
-    /**
-     * get获取数据
-     * @param key
-     * @return
-     */
-    String get(String key);
-
-//    void getList(String key,int start,int end);
-
-    /**
-     * 设置有效天数
-     * @param key
-     * @param expire
-     * @return
-     */
-    boolean expire(String key, long expire);
-
-    /**
-     * 移除数据
-     * @param key
-     * @return
-     */
-    boolean remove(String key);
-
-
-    /**
-     * 插入对象
-     */
-    void setObject(Object o);
-
-
-    boolean hasKey(String key);
-
-
-    void select(Integer dbIndex);
-
-}

+ 0 - 124
common/src/main/java/com/gyee/common/util/redis/RedisServiceImpl.java

@@ -1,124 +0,0 @@
-package com.gyee.common.util.redis;
-
-import org.springframework.dao.DataAccessException;
-import org.springframework.data.redis.connection.RedisConnection;
-import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
-import org.springframework.data.redis.core.RedisCallback;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.lang.reflect.Field;
-import java.util.concurrent.TimeUnit;
-
-@Service("redisService")
-public class RedisServiceImpl implements RedisService {
-
-    @Resource
-    private RedisTemplate<String, ?> redisTemplate;
-
-    @Override
-    public boolean set(final String key, final String value) {
-        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
-            @Override
-            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
-                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
-                connection.set(serializer.serialize(key), serializer.serialize(value));
-                return true;
-            }
-        });
-        return result;
-    }
-
-    @Override
-    public String get(final String key) {
-        String result = redisTemplate.execute(new RedisCallback<String>() {
-            @Override
-            public String doInRedis(RedisConnection connection) throws DataAccessException {
-                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
-                byte[] value = connection.get(serializer.serialize(key));
-                return serializer.deserialize(value);
-            }
-        });
-        return result;
-    }
-
-
-
-    @Override
-    public boolean expire(final String key, long expire) {
-        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);
-    }
-
-    @Override
-    public boolean remove(final String key) {
-        boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
-            @Override
-            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
-                RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
-                connection.del(key.getBytes());
-                return true;
-            }
-        });
-        return result;
-    }
-
-    @Override
-    public boolean hasKey(final String key) {
-        try {
-            return redisTemplate.hasKey(key);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-    }
-
-    @Override
-    public void setObject(Object obj) {
-        Field[] fields = obj.getClass().getDeclaredFields();
-        for(int i = 0 , len = fields.length; i < len; i++) {
-            // 对于每个属性,获取属性名
-            String varName = fields[i].getName();
-            try {
-                // 获取原来的访问控制权限
-                boolean accessFlag = fields[i].isAccessible();
-                // 修改访问控制权限
-                fields[i].setAccessible(true);
-                // 获取在对象f中属性fields[i]对应的对象中的变量
-                Object o;
-                try {
-                    o = fields[i].get(obj);
-                    if (o!=null){
-                        set(varName, String.valueOf(o));
-                    }else {
-                        set(varName,"");
-                    }
-
-                    //System.err.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);
-                } catch (IllegalAccessException e) {
-                    // TODO Auto-generated catch block
-                    e.printStackTrace();
-                }
-                // 恢复访问控制权限
-                fields[i].setAccessible(accessFlag);
-            } catch (IllegalArgumentException ex) {
-                ex.printStackTrace();
-            }
-        }
-
-    }
-
-    public void select(Integer dbIndex) {
-        if (dbIndex == null || dbIndex > 15 || dbIndex < 0) {
-            dbIndex = 0;
-        }
-        LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate
-                .getConnectionFactory();
-        jedisConnectionFactory.setDatabase(dbIndex);
-        redisTemplate.setConnectionFactory(jedisConnectionFactory);
-        jedisConnectionFactory.afterPropertiesSet();
-//        jedisConnectionFactory.resetConnection();
-
-    }
-}

+ 18 - 0
common/src/main/java/com/gyee/common/vo/algorithm/LineParameters.java

@@ -0,0 +1,18 @@
+package com.gyee.common.vo.algorithm;
+
+import lombok.Data;
+
+/**
+ * @ClassName : LineParameters
+ * @Author : xieshengjie
+ * @Date: 2021/11/16 9:48
+ * @Description :
+ */
+@Data
+public class LineParameters {
+    private double[] arrX;
+    private double[] arrY;
+    private int length;
+    private int dimension;
+    private double scale;
+}

+ 17 - 0
common/src/main/java/com/gyee/common/vo/analysis/AnalsisUpdateVo.java

@@ -0,0 +1,17 @@
+package com.gyee.common.vo.analysis;
+
+import lombok.Data;
+
+/**
+ * @ClassName : AnalsisUpdateVo
+ * @Author : xieshengjie
+ * @Date: 2021/3/9 20:25
+ * @Description : 修改统计分析vo
+ */
+@Data
+public class AnalsisUpdateVo {
+    private String id;
+    private String projectname;
+    private String date;
+    private Double value;
+}

+ 18 - 0
common/src/main/java/com/gyee/common/vo/analysis/AnalysisMainVo.java

@@ -0,0 +1,18 @@
+package com.gyee.common.vo.analysis;
+
+
+import lombok.Data;
+
+/**
+ * @ClassName : AnalysisMainVo
+ * @Author : xieshengjie
+ * @Date: 2021/3/8 14:22
+ * @Description : 统计分析主表Vo
+ */
+@Data
+public class AnalysisMainVo {
+    private String wpid;
+    private String wpname;
+    private String theday;
+    private Integer isConfirm;
+}

+ 15 - 0
common/src/main/java/com/gyee/common/vo/analysis/AnalysisSubVo.java

@@ -0,0 +1,15 @@
+package com.gyee.common.vo.analysis;
+
+import lombok.Data;
+
+/**
+ * @ClassName : AnalysisSubVo
+ * @Author : xieshengjie
+ * @Date: 2021/3/9 15:31
+ * @Description : 统计分析子表vo
+ */
+@Data
+public class AnalysisSubVo {
+    private String id;
+    private String name;
+}

+ 18 - 0
common/src/main/java/com/gyee/common/vo/analysis/BdzVo.java

@@ -0,0 +1,18 @@
+package com.gyee.common.vo.analysis;
+
+import lombok.Data;
+
+/**
+ * @ClassName : BdzVo
+ * @Author : xieshengjie
+ * @Date: 2021/3/9 1:02
+ * @Description : 统计分析表底修改vo
+ */
+@Data
+public class BdzVo {
+    private String date;
+    private String wpid;
+    private String name;
+    private Double qm;
+    private Double zm;
+}

+ 19 - 0
common/src/main/java/com/gyee/common/vo/analysis/DeskObject.java

@@ -0,0 +1,19 @@
+package com.gyee.common.vo.analysis;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName : DeskObject
+ * @Author : xieshengjie
+ * @Date: 2021/3/8 17:41
+ * @Description : 初始化object
+ */
+@Data
+public class DeskObject implements Serializable {
+    private static final long serialVersionUID = 1417345510455672010L;
+    private Date date;
+    private String name;
+}

+ 73 - 0
common/src/main/java/com/gyee/common/vo/analysis/DynamicBean.java

@@ -0,0 +1,73 @@
+package com.gyee.common.vo.analysis;
+
+import net.sf.cglib.beans.BeanGenerator;
+import net.sf.cglib.beans.BeanMap;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @ClassName : DynamicBean
+ * @Author : xieshengjie
+ * @Date: 2021/3/8 17:25
+ * @Description : 动态生成基础类
+ */
+public class DynamicBean {
+    private Object object = null; //动态生成的类
+    private BeanMap beanMap = null; //存放属性名称以及属性的类型
+
+    public DynamicBean() {
+        super();
+    }
+
+    public DynamicBean(Map propertyMap) {
+        this.object = generateBean(propertyMap);
+        this.beanMap = BeanMap.create(this.object);
+    }
+
+    /**
+     * @param propertyMap
+     * @return
+     */
+    private Object generateBean(Map propertyMap) {
+        BeanGenerator generator = new BeanGenerator();
+        Set keySet = propertyMap.keySet();
+        for (Iterator i = keySet.iterator(); i.hasNext(); ) {
+            String key = (String) i.next();
+            generator.addProperty(key, (Class) propertyMap.get(key));
+        }
+        return generator.create();
+    }
+
+    /**
+     * 给bean属性赋值
+     *
+     * @param property 属性名
+     * @param value    值
+     */
+    public void setValue(Object property, Object value) {
+        beanMap.put(property, value);
+    }
+
+    /**
+     * 通过属性名得到属性值
+     *
+     * @param property 属性名
+     * @return 值
+     */
+    public Object getValue(String property) {
+        return beanMap.get(property);
+    }
+
+    /**
+     * 得到该实体bean对象
+     *
+     * @return
+     */
+    public Object getObject() {
+        return this.object;
+    }
+
+
+}

+ 355 - 0
common/src/main/java/com/gyee/common/vo/benchmark/DataVo.java

@@ -0,0 +1,355 @@
+
+package com.gyee.common.vo.benchmark;
+
+/**
+ * 
+ * 
+ * 项目名称:nxfd 类名称:DataVo 类描述: 创建人:石林 创建时间:2014-3-4 下午2:34:22 修改人:shilinno1
+ * 修改时间:2014-3-4 下午2:34:22 修改备注:
+ * 
+ * @version
+ * 
+ */
+
+public class DataVo {
+
+    private Long time;
+    private String timestr;
+    private Double value1;
+
+    private Double value2;
+
+    private Double value3;
+
+    private Double value4;
+
+    private Double value5;
+
+    private Double value6;
+
+    private Double value7;
+
+    private Double value8;
+
+    private Double value9;
+    
+    private Double value10;
+    
+    private Double value11;
+    
+    private Double value12;
+    
+    private Double value13;
+
+    private Double speed;
+
+    private String name;
+
+    private String url;
+
+    private String aName;
+
+    private String desc;
+
+    private String datefomat;
+
+    private Long minRange;
+    private Long pointInterval;
+    private Integer year;
+    private Integer month;
+    private Integer day;
+    private String id;
+    private Integer hours;
+    private Integer minutes;
+    private Integer seconds;
+
+    private Long beginDate;
+    private Long endDate;
+    private Long beginDateDay;
+    private Long endDateDay;
+
+    private String value;
+
+
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public Long getMinRange() {
+        return minRange;
+    }
+
+    public void setMinRange(Long minRange) {
+        this.minRange = minRange;
+    }
+
+    public Long getPointInterval() {
+        return pointInterval;
+    }
+
+    public void setPointInterval(Long pointInterval) {
+        this.pointInterval = pointInterval;
+    }
+
+    public Integer getHours() {
+        return hours;
+    }
+
+    public void setHours(Integer hours) {
+        this.hours = hours;
+    }
+
+    public Integer getMinutes() {
+        return minutes;
+    }
+
+    public void setMinutes(Integer minutes) {
+        this.minutes = minutes;
+    }
+
+    public Integer getSeconds() {
+        return seconds;
+    }
+
+    public void setSeconds(Integer seconds) {
+        this.seconds = seconds;
+    }
+
+    public Long getTime() {
+        return time;
+    }
+
+    public void setTime(Long time) {
+        this.time = time;
+    }
+
+    public Double getSpeed() {
+        return speed;
+    }
+
+    public void setSpeed(Double speed) {
+        this.speed = speed;
+    }
+
+    public Double getValue1() {
+        return value1;
+    }
+
+    public void setValue1(Double value1) {
+        this.value1 = value1;
+    }
+
+    public Double getValue2() {
+        return value2;
+    }
+
+    public void setValue2(Double value2) {
+        this.value2 = value2;
+    }
+
+    public Double getValue3() {
+        return value3;
+    }
+
+    public void setValue3(Double value3) {
+        this.value3 = value3;
+    }
+
+    public Double getValue4() {
+        return value4;
+    }
+
+    public void setValue4(Double value4) {
+        this.value4 = value4;
+    }
+
+    public Double getValue5() {
+        return value5;
+    }
+
+    public void setValue5(Double value5) {
+        this.value5 = value5;
+    }
+
+    public Double getValue6() {
+        return value6;
+    }
+
+    public void setValue6(Double value6) {
+        this.value6 = value6;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getaName() {
+        return aName;
+    }
+
+    public void setaName(String aName) {
+        this.aName = aName;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public Integer getYear() {
+        return year;
+    }
+
+    public void setYear(Integer year) {
+        this.year = year;
+    }
+
+    public Integer getMonth() {
+        return month;
+    }
+
+    public void setMonth(Integer month) {
+        this.month = month;
+    }
+
+    public Integer getDay() {
+        return day;
+    }
+
+    public void setDay(Integer day) {
+        this.day = day;
+    }
+
+    public Long getBeginDate() {
+        return beginDate;
+    }
+
+    public void setBeginDate(Long beginDate) {
+        this.beginDate = beginDate;
+    }
+
+    public Long getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Long endDate) {
+        this.endDate = endDate;
+    }
+
+    public String getDatefomat() {
+        return datefomat;
+    }
+
+    public void setDatefomat(String datefomat) {
+        this.datefomat = datefomat;
+    }
+
+    public Long getBeginDateDay() {
+        return beginDateDay;
+    }
+
+    public void setBeginDateDay(Long beginDateDay) {
+        this.beginDateDay = beginDateDay;
+    }
+
+    public Long getEndDateDay() {
+        return endDateDay;
+    }
+
+    public void setEndDateDay(Long endDateDay) {
+        this.endDateDay = endDateDay;
+    }
+
+    public String getTimestr() {
+        return timestr;
+    }
+
+    public void setTimestr(String timestr) {
+        this.timestr = timestr;
+    }
+
+    public Double getValue7() {
+        return value7;
+    }
+
+    public void setValue7(Double value7) {
+        this.value7 = value7;
+    }
+
+    public Double getValue8() {
+        return value8;
+    }
+
+    public void setValue8(Double value8) {
+        this.value8 = value8;
+    }
+
+    public Double getValue9() {
+        return value9;
+    }
+
+    public void setValue9(Double value9) {
+        this.value9 = value9;
+    }
+
+	public Double getValue10() {
+		return value10;
+	}
+
+	public void setValue10(Double value10) {
+		this.value10 = value10;
+	}
+
+	public Double getValue11() {
+		return value11;
+	}
+
+	public void setValue11(Double value11) {
+		this.value11 = value11;
+	}
+
+	public Double getValue12() {
+		return value12;
+	}
+
+	public void setValue12(Double value12) {
+		this.value12 = value12;
+	}
+
+	public Double getValue13() {
+		return value13;
+	}
+
+	public void setValue13(Double value13) {
+		this.value13 = value13;
+	}
+
+}

+ 15 - 0
common/src/main/java/com/gyee/common/vo/benchmark/DjhxdbInitVo.java

@@ -0,0 +1,15 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+/**
+ * @ClassName : DjhxdbInitVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/29 14:10
+ * @Description : 单机横向对比初始化vo
+ */
+@Data
+public class DjhxdbInitVo {
+
+    private String name;
+}

+ 43 - 0
common/src/main/java/com/gyee/common/vo/benchmark/DjhxdbtopVo.java

@@ -0,0 +1,43 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @ClassName : DjhxdbtopVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/29 8:52
+ * @Description : 单机横向对比表格vo
+ */
+@Data
+public class DjhxdbtopVo  implements Serializable {
+    private static final long serialVersionUID = 4849539762497547224L;
+
+    private String wtid;
+    private Double fdl;
+    private Double yfdl;
+    private Double pjgl;
+    private Double pjfs;
+    private Double yxxs;
+    private Double djxs;
+    private Double gzxs;
+    private Double whxs;
+    private Double zdxs;
+    private Double yxfs;
+    private Double ssdl;
+    private Double bjcs;
+    private Double tjcs;
+    private Double bbhcs;
+    private Double sbklly;
+    private Double pjwd;
+    private Double pjsd;
+    private Double pjyq;
+    private Double nhyd;
+    private Double sjbz;
+    private List<FzyVo> fzyList;
+    private Double jfpl;
+
+
+}

+ 73 - 0
common/src/main/java/com/gyee/common/vo/benchmark/DynamicBean.java

@@ -0,0 +1,73 @@
+package com.gyee.common.vo.benchmark;
+
+import net.sf.cglib.beans.BeanGenerator;
+import net.sf.cglib.beans.BeanMap;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @ClassName : DynamicBean
+ * @Author : xieshengjie
+ * @Date: 2021/3/8 17:25
+ * @Description : 动态生成基础类
+ */
+public class DynamicBean {
+    private Object object = null; //动态生成的类
+    private BeanMap beanMap = null; //存放属性名称以及属性的类型
+
+    public DynamicBean() {
+        super();
+    }
+
+    public DynamicBean(Map propertyMap) {
+        this.object = generateBean(propertyMap);
+        this.beanMap = BeanMap.create(this.object);
+    }
+
+    /**
+     * @param propertyMap
+     * @return
+     */
+    private Object generateBean(Map propertyMap) {
+        BeanGenerator generator = new BeanGenerator();
+        Set keySet = propertyMap.keySet();
+        for (Iterator i = keySet.iterator(); i.hasNext(); ) {
+            String key = (String) i.next();
+            generator.addProperty(key, (Class) propertyMap.get(key));
+        }
+        return generator.create();
+    }
+
+    /**
+     * 给bean属性赋值
+     *
+     * @param property 属性名
+     * @param value    值
+     */
+    public void setValue(Object property, Object value) {
+        beanMap.put(property, value);
+    }
+
+    /**
+     * 通过属性名得到属性值
+     *
+     * @param property 属性名
+     * @return 值
+     */
+    public Object getValue(String property) {
+        return beanMap.get(property);
+    }
+
+    /**
+     * 得到该实体bean对象
+     *
+     * @return
+     */
+    public Object getObject() {
+        return this.object;
+    }
+
+
+}

+ 28 - 0
common/src/main/java/com/gyee/common/vo/benchmark/FjjxbVo.java

@@ -0,0 +1,28 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : FjjxbVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/16 10:55
+ * @Description : 风机绩效榜vo
+ */
+@Data
+public class FjjxbVo  implements Serializable  {
+    private static final long serialVersionUID = -8275715166269543409L;
+
+    private String id;   //id
+    private String name;   //名称
+    private Double llfdl;   //理论发电量
+    private Double sjfdl;   //实际发电量
+    private Double speed;  //风速
+    private Double fjhjx;   //非计划(故障)
+    private Double jhjx;  //计划(维护)
+    private Double sl;  //受累
+    private Double xd;  //限电
+    private Double xn;  //性能
+    private Double fnlly;   //风能利用率
+}

+ 35 - 0
common/src/main/java/com/gyee/common/vo/benchmark/FjjxbmxVo.java

@@ -0,0 +1,35 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : FjjxbmxVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/16 14:19
+ * @Description : 风机绩效榜明细vo
+ */
+@Data
+public class FjjxbmxVo implements Serializable {
+    private static final long serialVersionUID = 4129930226114546977L;
+
+    private String id;   //id
+    private String name;   //名称
+    private Double llfdl;  //理论发电量
+    private Double sjfdl;  //实际发电量
+    private Double speed;   //风速
+    private Double fjhjx1;  //故障损失
+    private Double fjhjx2;  //故障受累
+    private Double jhjx1;   //检修损失
+    private Double jhjx2;  //检修受累
+    private Double sl1;   //电网受累
+    private Double sl2;   //天气受累
+    private Double xd1;    //限电降出
+    private Double xd2;   //限电停机
+    private Double xn1;   //待机损失
+    private Double xn2;   //手动停机
+    private Double xn3;   //正常发电
+    private Double xn4;   //缺陷降出
+    private Double fnlly;   //风能利用率
+}

+ 15 - 0
common/src/main/java/com/gyee/common/vo/benchmark/FzyVo.java

@@ -0,0 +1,15 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+/**
+ * @ClassName : FzyVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/29 11:40
+ * @Description : 风资源vo
+ */
+@Data
+public class FzyVo {
+    private String name;
+    private Double value;
+}

+ 67 - 0
common/src/main/java/com/gyee/common/vo/benchmark/GoodCompareVo.java

@@ -0,0 +1,67 @@
+package com.gyee.common.vo.benchmark;
+
+
+public class GoodCompareVo implements java.io.Serializable {
+
+	/** 
+    * @Fields serialVersionUID : TODO
+    */ 
+    
+    
+    private static final long serialVersionUID = 1L;
+	// Fields
+
+	private Integer id;
+	private String name;
+	private String value1;
+	private String value2;
+	private String value3;
+	private String value4;
+	private String value5;
+	
+	public String getName() {
+    	return name;
+    }
+	public void setName(String name) {
+    	this.name = name;
+    }
+	public Integer getId() {
+    	return id;
+    }
+	public void setId(Integer id) {
+    	this.id = id;
+    }
+	public String getValue1() {
+    	return value1;
+    }
+	public void setValue1(String value1) {
+    	this.value1 = value1;
+    }
+	public String getValue2() {
+    	return value2;
+    }
+	public void setValue2(String value2) {
+    	this.value2 = value2;
+    }
+	public String getValue3() {
+    	return value3;
+    }
+	public void setValue3(String value3) {
+    	this.value3 = value3;
+    }
+	public String getValue4() {
+    	return value4;
+    }
+	public void setValue4(String value4) {
+    	this.value4 = value4;
+    }
+	public String getValue5() {
+    	return value5;
+    }
+	public void setValue5(String value5) {
+    	this.value5 = value5;
+    }
+	
+
+
+}

+ 18 - 0
common/src/main/java/com/gyee/common/vo/benchmark/OpeVo.java

@@ -0,0 +1,18 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @ClassName : OpeVo
+ * @Author : xieshengjie
+ * @Date: 2021/1/19 14:36
+ * @Description : 操作vo
+ */
+@Data
+public class OpeVo {
+    private String wtid;
+    private Date time;
+    private Double value;
+}

+ 32 - 0
common/src/main/java/com/gyee/common/vo/benchmark/Operation.java

@@ -0,0 +1,32 @@
+package com.gyee.common.vo.benchmark;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : Operation
+ * @Author : xieshengjie
+ * @Date: 2021/1/18 16:10
+ * @Description : 操作model
+ */
+@Data
+public class Operation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String nameOfDuty;  //值班名称
+    private Integer startCount;//启动
+    private Integer stopCount;//停机
+    private Integer resetCount;//复位
+    private Integer maintainCount;//维护
+    private Integer unmaintainCount;//取消维护
+    private Integer gpmaintainCount;//挂牌检修
+    private Integer gpfaultCount;//挂牌故障维修
+    private Integer gponsiteinvolvementMaintainCount;//挂牌场内受累检修
+    private Integer gponsiteinvolvementFaultCount;//挂牌场内受累故障
+    private Integer gpoffsiteaffectedgridCount;//挂牌场外受累电网
+    private Integer gpweatherOutsideCount;//挂牌场外受累天气
+    private Integer ungpCount;//取消挂牌
+
+}

+ 70 - 0
common/src/main/java/com/gyee/common/vo/benchmark/ValueVo.java

@@ -0,0 +1,70 @@
+package com.gyee.common.vo.benchmark;
+
+public class ValueVo {
+	private String name;
+	private String value;
+	private Double data1;
+
+	private String warningId;
+	private String shutdowneventId;
+	private String wpId;
+	private String wtId;
+
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Double getData1() {
+		return data1;
+	}
+
+	public void setData1(Double data1) {
+		this.data1 = data1;
+	}
+
+	public String getWarningId() {
+		return warningId;
+	}
+
+	public void setWarningId(String warningId) {
+		this.warningId = warningId;
+	}
+
+	public String getShutdowneventId() {
+		return shutdowneventId;
+	}
+
+	public void setShutdowneventId(String shutdowneventId) {
+		this.shutdowneventId = shutdowneventId;
+	}
+
+	public String getWpId() {
+		return wpId;
+	}
+
+	public void setWpId(String wpId) {
+		this.wpId = wpId;
+	}
+
+	public String getWtId() {
+		return wtId;
+	}
+
+	public void setWtId(String wtId) {
+		this.wtId = wtId;
+	}
+
+	
+}

+ 52 - 0
common/src/main/java/com/gyee/common/vo/benchmark/WxsslVo.java

@@ -0,0 +1,52 @@
+package com.gyee.common.vo.benchmark;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName : WxsslVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/16 16:00
+ * @Description : 五项损失率vo
+ */
+@Data
+public class WxsslVo implements Serializable {
+
+    private static final long serialVersionUID = -2799942539856503365L;
+
+    private String id;
+    private String name;
+    private Double ordernum;
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date date;
+    private Integer zhpm;
+    private Integer fdlpm;
+    private Double fdl;
+    private Double llfdl;
+    private Integer gzssdlpm;
+    private Double gzssdl;
+    private Integer jxssdlpm;
+    private Double jxssdl;
+    private Integer xnssdlpm;
+    private Double xnssdl;
+    private Integer xdssdlpm;
+    private Double xdssdl;
+    private Integer slssdlpm;
+    private Double slssdl;
+    private Integer fnlylpm;
+    private Double fnlyl;
+    private Integer gzsslpm;
+    private Double gzssl;
+    private Integer jxsslpm;
+    private Double jxssl;
+    private Integer qflpm;
+    private Double qfl;
+    private Integer xnsslpm;
+    private Double xnssl;
+    private Double zssdl;
+    private Double slssl;
+    private Integer slsslpm;
+}

+ 33 - 0
common/src/main/java/com/gyee/common/vo/specific/SpecificCenterVo.java

@@ -0,0 +1,33 @@
+package com.gyee.common.vo.specific;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : SpecificCenterVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/12 9:54
+ * @Description : 专题分析中间部分Vo
+ */
+@Data
+public class SpecificCenterVo implements Serializable {
+
+    private static final long serialVersionUID = -6273903303839623264L;
+    private String wpid;
+    private Double mtbf;
+    private Double mttr;
+    private Double fwjsl;
+    private Double ztzhl;
+    private Double xqjsl;
+    private Double tqmtbf;
+    private Double tqmttr;
+    private Double tqfwjsl;
+    private Double tqztzhl;
+    private Double tqxqjsl;
+    private Integer mtbfCompare;
+    private Integer mttrCompare;
+    private Integer fwjslCompare;
+    private Integer ztzhlCompare;
+    private Integer xqjslCompare;
+}

+ 20 - 0
common/src/main/java/com/gyee/common/vo/specific/SpecificTargetVo.java

@@ -0,0 +1,20 @@
+package com.gyee.common.vo.specific;
+
+import lombok.Data;
+
+/**
+ * @ClassName : SpecificTargetVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/12 16:41
+ * @Description : 专题分析单个指标Vo
+ */
+@Data
+public class SpecificTargetVo {
+
+    private String wpid;
+    private Integer year;
+    private Integer month;
+    private Double current;
+    private Double sameperiod;
+    private Integer compare;
+}

+ 43 - 0
common/src/main/java/com/gyee/common/vo/specific/SpecificTopVo.java

@@ -0,0 +1,43 @@
+package com.gyee.common.vo.specific;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : SpecificTopVo
+ * @Author : xieshengjie
+ * @Date: 2021/6/11 14:21
+ * @Description : 专题分析上面部分vo
+ */
+@Data
+public class SpecificTopVo implements Serializable {
+    private static final long serialVersionUID = 1407554909175314466L;
+    private String type;
+    private Double yllfdl;
+    private Double ysjfdl;
+    private Double yfnlyl;
+    private Double ywhssdl;
+    private Double ywhssl;
+    private Double ygzssdl;
+    private Double ygzssl;
+    private Double yxdssdl;
+    private Double yxdssl;
+    private Double yxnssdl;
+    private Double yxnssl;
+    private Double yslssdl;
+    private Double yslssl;
+    private Double nllfdl;
+    private Double nsjfdl;
+    private Double nfnlyl;
+    private Double nwhssdl;
+    private Double nwhssl;
+    private Double ngzssdl;
+    private Double ngzssl;
+    private Double nxdssdl;
+    private Double nxdssl;
+    private Double nxnssdl;
+    private Double nxnssl;
+    private Double nslssdl;
+    private Double nslssl;
+}

+ 33 - 0
common/src/main/java/com/gyee/common/vo/threerate/FwjslVo.java

@@ -0,0 +1,33 @@
+package com.gyee.common.vo.threerate;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @ClassName : FwjslVo
+ * @Author : xieshengjie
+ * @Date: 2021/7/7 15:13
+ * @Description : 复位及时率vo
+ */
+@Data
+public class FwjslVo implements Serializable {
+
+    private static final long serialVersionUID = -9120640092604681619L;
+
+    private Double ordernum;
+
+    private String wpid;
+    private Date date;
+    private Double yfwcs;
+    private Double wfz;
+    private Double wfzfwl;
+    private Double sfz;
+    private Double sfzfwl;
+    private Double swfz;
+    private Double swfzfwl;
+    private Double esfz;
+    private Double esfzfwl;
+}

+ 24 - 0
common/src/main/java/com/gyee/common/vo/threerate/QxjslVo.java

@@ -0,0 +1,24 @@
+package com.gyee.common.vo.threerate;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @ClassName : QxjslVo
+ * @Author : xieshengjie
+ * @Date: 2021/7/7 20:30
+ * @Description : 消缺及时率vo
+ */
+@Data
+public class QxjslVo implements Serializable {
+    private static final long serialVersionUID = 6002241313346335418L;
+
+    private Double ordernum;
+
+    private String wpid;
+    private Long gzCount;
+    private Long xqCount;
+    private Double xqjsl;
+}

+ 22 - 22
common/src/main/resources/application.yml

@@ -1,35 +1,35 @@
 spring:
   main:
     allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
-  redis:
-    host: 49.4.50.80
+#  redis:
+##    host: 49.4.50.80
 #    host: 10.155.32.4
-    port: 6379
-    timeout: 100000
-    #    集群环境打开下面注释,单机不需要打开
-    #    cluster:
-    #      集群信息
-    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
-    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
-    #      maxRedirects: 3
-    password: gdnxfd123
-    application:
-      name: test
-    jedis:
-      pool:
-        max-active: 8
-        min-idle: 0
-        max-idle: 8
-        max-wait: -1
-    database: 1
+#    port: 6379
+#    timeout: 100000
+#    #    集群环境打开下面注释,单机不需要打开
+#    #    cluster:
+#    #      集群信息
+#    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+#    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+#    #      maxRedirects: 3
+#    password: gdnxfd123
+#    application:
+#      name: test
+#    jedis:
+#      pool:
+#        max-active: 8
+#        min-idle: 0
+#        max-idle: 8
+#        max-wait: -1
+#    database: 1
   autoconfigure:
     exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: oracle.jdbc.OracleDriver
     #外网
-    url: jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd
-    #    url: jdbc:oracle:thin:@172.168.1.14:1521:gdnxfd
+#    url: jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd
+    url: jdbc:oracle:thin:@192.168.1.105:1521:gdnxfd
     username: nxfdprod
     password: gdnxfd123
     oracle-schema=:

+ 17 - 5
common/src/test/java/com/gyee/common/CommonMainTest.java

@@ -1,6 +1,8 @@
 package com.gyee.common;
 
-import com.gyee.common.util.redis.RedisService;
+import com.gyee.common.model.algorithm.PointVo;
+import com.gyee.common.util.algorithm.GDJTLineBuild;
+import com.gyee.common.util.algorithm.LineBuild;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
 import org.junit.runner.RunWith;
@@ -10,6 +12,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * @ClassName : CommonMainTest
@@ -22,10 +25,19 @@ import javax.annotation.Resource;
 @RunWith(SpringRunner.class)
 @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
 class CommonMainTest {
-    @Resource
-    private RedisService redisService;
+//    @Resource
+//    private RedisService redisService;
+//    @Test
+//    public void testRedis(){
+//        String wp = redisService.get("WP");
+//    }
+
+
     @Test
-    public void testRedis(){
-        String wp = redisService.get("WP");
+    public void test1(){
+        double[] arrX = {1,3,5,7,3,6,5};
+        double[] arrY = {2,3,5,1,6,7,8};
+        List<PointVo> pointVos = LineBuild.buildLine(arrX, arrY, 7, 4, 2.5);
+        List<PointVo> pointVoss = GDJTLineBuild.buildLine(arrX, arrY);
     }
 }

+ 22 - 22
common/target/classes/application.yml

@@ -1,35 +1,35 @@
 spring:
   main:
     allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
-  redis:
-    host: 49.4.50.80
+#  redis:
+##    host: 49.4.50.80
 #    host: 10.155.32.4
-    port: 6379
-    timeout: 100000
-    #    集群环境打开下面注释,单机不需要打开
-    #    cluster:
-    #      集群信息
-    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
-    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
-    #      maxRedirects: 3
-    password: gdnxfd123
-    application:
-      name: test
-    jedis:
-      pool:
-        max-active: 8
-        min-idle: 0
-        max-idle: 8
-        max-wait: -1
-    database: 1
+#    port: 6379
+#    timeout: 100000
+#    #    集群环境打开下面注释,单机不需要打开
+#    #    cluster:
+#    #      集群信息
+#    #      nodes: xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx
+#    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+#    #      maxRedirects: 3
+#    password: gdnxfd123
+#    application:
+#      name: test
+#    jedis:
+#      pool:
+#        max-active: 8
+#        min-idle: 0
+#        max-idle: 8
+#        max-wait: -1
+#    database: 1
   autoconfigure:
     exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: oracle.jdbc.OracleDriver
     #外网
-    url: jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd
-    #    url: jdbc:oracle:thin:@172.168.1.14:1521:gdnxfd
+#    url: jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd
+    url: jdbc:oracle:thin:@192.168.1.105:1521:gdnxfd
     username: nxfdprod
     password: gdnxfd123
     oracle-schema=:

BIN
common/target/classes/com/gyee/common/util/DateUtils.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisAutoConfiguration.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisConfig.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisService.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisServiceImpl$1.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisServiceImpl$2.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisServiceImpl$3.class


BIN
common/target/classes/com/gyee/common/util/redis/RedisServiceImpl.class


BIN
common/target/common-1.0-SNAPSHOT.jar


+ 1 - 1
common/target/maven-archiver/pom.properties

@@ -1,5 +1,5 @@
 #Generated by Maven
-#Wed Sep 29 17:54:37 CST 2021
+#Tue Dec 14 15:05:24 CST 2021
 version=1.0-SNAPSHOT
 groupId=com.gyee
 artifactId=common

+ 41 - 2
common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,8 +1,47 @@
-com\gyee\common\util\SortUtils$4.class
 com\gyee\common\util\SortUtils$3.class
 com\gyee\common\util\SortUtils.class
-com\gyee\common\util\CopyUtils.class
+com\gyee\common\contant\Contant.class
+com\gyee\common\model\StringUtils.class
+com\gyee\common\model\CharsetKit.class
+com\gyee\common\config\GeneratorCodeConfig.class
+com\gyee\common\vo\benchmark\DjhxdbtopVo.class
+com\gyee\common\vo\benchmark\OpeVo.class
+com\gyee\common\util\ClassUtil.class
+com\gyee\common\vo\benchmark\GoodCompareVo.class
+com\gyee\common\vo\benchmark\Operation.class
+com\gyee\common\util\algorithm\LineBuild.class
+com\gyee\common\vo\benchmark\FjjxbmxVo.class
+com\gyee\common\vo\benchmark\FjjxbVo.class
+com\gyee\common\mapper\WindturbineMapper.class
+com\gyee\common\controller\WindturbineController.class
+com\gyee\common\model\StrFormatter.class
+com\gyee\common\util\SortUtils$4.class
+com\gyee\common\vo\threerate\QxjslVo.class
+com\gyee\common\util\RandomUtil.class
+com\gyee\common\vo\benchmark\ValueVo.class
+com\gyee\common\vo\benchmark\WxsslVo.class
+com\gyee\common\model\Convert.class
 com\gyee\common\util\DateUtils.class
 com\gyee\common\util\SortUtils$1.class
+com\gyee\common\vo\benchmark\DataVo.class
+com\gyee\common\service\impl\WindturbineServiceImpl.class
+com\gyee\common\CommonMain.class
+com\gyee\common\util\DoubleUtils.class
+com\gyee\common\model\DNAVal.class
+com\gyee\common\util\algorithm\GDJTLineBuild.class
+com\gyee\common\vo\algorithm\LineParameters.class
+com\gyee\common\util\CopyUtils.class
+com\gyee\common\service\IWindturbineService.class
+com\gyee\common\vo\threerate\FwjslVo.class
+com\gyee\common\model\algorithm\PointVo.class
 com\gyee\common\util\SortUtils$2.class
+com\gyee\common\vo\benchmark\DjhxdbInitVo.class
 com\gyee\common\util\CommonUtils.class
+com\gyee\common\model\PointData.class
+com\gyee\common\vo\benchmark\DynamicBean.class
+com\gyee\common\util\BigDecimalUtils.class
+com\gyee\common\model\auto\Windturbine.class
+com\gyee\common\vo\benchmark\FzyVo.class
+com\gyee\common\config\R.class
+com\gyee\common\config\ResultCode.class
+com\gyee\common\model\DNAStatVal.class

+ 46 - 10
common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,16 +1,52 @@
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\mapper\WindturbineMapper.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\analysis\AnalysisSubVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\CharsetKit.java
 D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\SortUtils.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\redis\RedisService.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\redis\RedisConfig.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\BigDecimalUtils.java
 D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\CommonUtils.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\DateUtils.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\config\GeneratorCodeConfig.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\PointData.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\GoodCompareVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\StrFormatter.java
 D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\CommonMain.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\service\impl\WindturbineServiceImpl.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\redis\RedisAutoConfiguration.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\ClassUtil.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\analysis\DynamicBean.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\FjjxbVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\controller\WindturbineController.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\analysis\DeskObject.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\specific\SpecificTopVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\DjhxdbtopVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\contant\Contant.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\DjhxdbInitVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\analysis\BdzVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\FzyVo.java
 D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\RandomUtil.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\redis\RedisServiceImpl.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\CopyUtils.java
 D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\auto\Windturbine.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\OpeVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\DynamicBean.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\mapper\WindturbineMapper.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\StringUtils.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\algorithm\PointVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\threerate\QxjslVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\config\ResultCode.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\algorithm\GDJTLineBuild.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\DateUtils.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\FjjxbmxVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\analysis\AnalsisUpdateVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\CopyUtils.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\specific\SpecificTargetVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\analysis\AnalysisMainVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\WxsslVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\algorithm\LineParameters.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\DNAVal.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\specific\SpecificCenterVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\ValueVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\Convert.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\config\GeneratorCodeConfig.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\config\R.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\Operation.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\threerate\FwjslVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\service\impl\WindturbineServiceImpl.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\DoubleUtils.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\model\DNAStatVal.java
 D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\service\IWindturbineService.java
-D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\controller\WindturbineController.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\vo\benchmark\DataVo.java
+D:\work\ideawork\sis\sis\common\src\main\java\com\gyee\common\util\algorithm\LineBuild.java

+ 1 - 0
common/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@@ -0,0 +1 @@
+com\gyee\common\CommonMainTest.class

BIN
common/target/test-classes/com/gyee/common/CommonMainTest.class


+ 81 - 0
histroy/analysis-histroy-hb/pom.xml

@@ -0,0 +1,81 @@
+<?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>histroy</artifactId>
+        <groupId>com.gyee</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>analysis-histroy-hb</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.28</version>
+        </dependency>
+        <!--mysql-connector-java-->
+        <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.gyee</groupId>
+            <artifactId>common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 20 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/AnalysisMain.java

@@ -0,0 +1,20 @@
+package com.gyee.analysis;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @ClassName : AnalysisMain
+ * @Author : xieshengjie
+ * @Date: 2021/12/29 15:45
+ * @Description :
+ */
+@SpringBootApplication
+@MapperScan("com.gyee.analysis.mapper")
+public class AnalysisMain {
+
+    public static void main(String[] args) {
+        SpringApplication.run(AnalysisMain.class,args);
+    }
+}

+ 144 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/GeneratorCodeConfig.java

@@ -0,0 +1,144 @@
+package com.gyee.analysis.config;
+
+
+import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.Scanner;
+
+/**
+ *@ClassName GeneratorCodeConfig
+ *@Description 自动生成mybatisplus的相关代码
+ *@Author 谢生杰
+ *@Date 2020/9/25 18:26
+ *@Version 1.0
+ **/
+public class GeneratorCodeConfig {
+    public static String scanner(String tip) {
+        Scanner scanner = new Scanner(System.in);
+        StringBuilder help = new StringBuilder();
+        help.append("请输入" + tip + ":");
+        System.out.println(help.toString());
+        if (scanner.hasNext()) {
+            String ipt = scanner.next();
+            if (StringUtils.isNotEmpty(ipt)) {
+                return ipt;
+            }
+        }
+        throw new MybatisPlusException("请输入正确的" + tip + "!");
+    }
+
+    public static void main(String[] args) {
+        // 代码生成器
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 全局配置
+        GlobalConfig gc = new GlobalConfig();
+        String projectPath = System.getProperty("user.dir");
+        gc.setOutputDir(projectPath + "/src/main/java");
+        gc.setAuthor("谢生杰");
+        gc.setOpen(false);
+        //实体属性 Swagger2 注解
+        gc.setSwagger2(false);
+        mpg.setGlobalConfig(gc);
+
+        // 数据源配置
+        DataSourceConfig dsc = new DataSourceConfig();
+        /*dsc.setUrl("jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true");
+        dsc.setDriverName("com.mysql.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("root");
+        mpg.setDataSource(dsc);*/
+        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
+        dsc.setUsername("gdprod");
+        dsc.setPassword("gd123");
+        dsc.setUrl("jdbc:oracle:thin:@10.83.68.165:1521:gdsj");
+
+        mpg.setDataSource(dsc);
+
+
+
+        // 包配置
+        PackageConfig pc = new PackageConfig();
+//        pc.setModuleName(scanner("模块名"));
+        pc.setParent("com.gyee.analysis");
+        pc.setEntity("model.auto");
+        pc.setMapper("mapper.auto");
+        pc.setService("service");
+        pc.setServiceImpl("service.impl");
+        mpg.setPackageInfo(pc);
+
+        // 自定义配置
+//        InjectionConfig cfg = new InjectionConfig() {
+//            @Override
+//            public void initMap() {
+//                // to do nothing
+//            }
+//        };
+
+        // 如果模板引擎是 freemarker
+//        String templatePath = "/templates/mapper.xml.ftl";
+        // 如果模板引擎是 velocity
+        // String templatePath = "/templates/mapper.xml.vm";
+
+        // 自定义输出配置
+//        List<FileOutConfig> focList = new ArrayList<>();
+        // 自定义配置会被优先输出
+//        focList.add(new FileOutConfig(templatePath) {
+//            @Override
+//            public String outputFile(TableInfo tableInfo) {
+//                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+//                return projectPath + "/src/main/resources/mapper/" + pc.getModuleName()
+//                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+//            }
+//        });
+        /*
+        cfg.setFileCreate(new IFileCreate() {
+            @Override
+            public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
+                // 判断自定义文件夹是否需要创建
+                checkDir("调用默认方法创建的目录");
+                return false;
+            }
+        });
+        */
+//        cfg.setFileOutConfigList(focList);
+//        mpg.setCfg(cfg);
+
+        // 配置模板
+        TemplateConfig templateConfig = new TemplateConfig();
+
+        // 配置自定义输出模板
+        //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别
+        // templateConfig.setEntity("templates/entity2.java");
+        // templateConfig.setService();
+        // templateConfig.setController();
+
+        templateConfig.setXml(null);
+        mpg.setTemplate(templateConfig);
+
+        // 策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        strategy.setSuperEntityClass("com.baomidou.mybatisplus.extension.activerecord.Model");
+        strategy.setEntityLombokModel(true);
+        strategy.setRestControllerStyle(true);
+
+        strategy.setEntityLombokModel(true);
+        // 公共父类
+//        strategy.setSuperControllerClass("com.baomidou.ant.common.BaseController");
+        // 写于父类中的公共字段
+//        strategy.setSuperEntityColumns("id");
+        strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
+        strategy.setControllerMappingHyphenStyle(true);
+        strategy.setTablePrefix(pc.getModuleName() + "_");
+        mpg.setStrategy(strategy);
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+        mpg.execute();
+    }
+}

+ 23 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/MybatisPlusConfig.java

@@ -0,0 +1,23 @@
+package com.gyee.analysis.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ *@ClassName MybatisPlusConfig
+ *@Description 配置分页插件
+ *@Author 谢生杰
+ *@Date 2020/9/25 18:24
+ *@Version 1.0
+ **/
+@Configuration
+public class MybatisPlusConfig {
+    /**
+     * 分页插件
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        return new PaginationInterceptor();
+    }
+}

+ 71 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/R.java

@@ -0,0 +1,71 @@
+package com.gyee.analysis.config;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName : R
+ * @Author : xieshengjie
+ * @Date: 2021/5/16 16:59
+ * @Description : 结果集
+ */
+@Data
+public class R {
+    @ApiModelProperty(value = "是否成功")
+    private Boolean success;
+    @ApiModelProperty(value = "返回码")
+    private Integer code;
+    @ApiModelProperty(value = "返回消息")
+    private String message;
+    @ApiModelProperty(value = "总数量")
+    private Integer count;
+    @ApiModelProperty(value = "返回数据")
+    private Object data = new Object();
+    private R(){}
+    public static R ok(){
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(ResultCode.SUCCESS);
+        r.setMessage("成功");
+        return r;
+    }
+    public static R ok(Integer count){
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(ResultCode.SUCCESS);
+        r.setMessage("成功");
+        r.setCount(count);
+        return r;
+    }
+    public static R error(){
+        R r = new R();
+        r.setSuccess(false);
+        r.setCode(ResultCode.ERROR);
+        r.setMessage("失败");
+        return r;
+    }
+    public R success(Boolean success){
+        this.setSuccess(success);
+        return this;
+    }
+    public R message(String message){
+        this.setMessage(message);
+        return this;
+    }
+    public R code(Integer code){
+        this.setCode(code);
+        return this;
+    }
+//    public R data(String key, Object value){
+//        this.data.put(key, value);
+//        return this;
+//    }
+//    public R data(Map<String, Object> map){
+//        this.setData(map);
+//        return this;
+//    }
+    public R data(Object value){
+        this.setData(value);
+        return this;
+    }
+}

+ 12 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/ResultCode.java

@@ -0,0 +1,12 @@
+package com.gyee.analysis.config;
+
+/**
+ * @ClassName : ResultCode
+ * @Author : xieshengjie
+ * @Date: 2021/5/16 17:01
+ * @Description : 结果状态
+ */
+public class ResultCode {
+    public static Integer SUCCESS = 200;
+    public static Integer ERROR = 500;
+}

+ 87 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/ResultInfo.java

@@ -0,0 +1,87 @@
+package com.gyee.analysis.config;
+
+import lombok.Data;
+
+/**
+ *@ClassName ResultInfo
+ *@Description 返回结果类统一封装
+ *@Author 谢生杰
+ *@Date 2020/9/25 18:53
+ *@Version 1.0
+ **/
+@Data
+public class ResultInfo {
+    // 状态码
+    private Integer code;
+    // 消息
+    private String message;
+    // 数据对象
+    private Object result;
+
+    private Integer total;
+
+    /**
+     * 无参构造器
+     */
+    public ResultInfo() {
+        super();
+    }
+
+    public ResultInfo(Status status) {
+        super();
+        this.code = status.code;
+        this.message = status.message;
+    }
+
+    public ResultInfo result(Object result) {
+        this.result = result;
+        return this;
+    }
+
+    public ResultInfo message(String message) {
+        this.message = message;
+        return this;
+    }
+    public ResultInfo total(Integer total) {
+        this.total = total;
+        return this;
+    }
+
+    /**
+     * 只返回状态,状态码,消息
+     *
+     * @param code
+     * @param message
+     */
+    public ResultInfo(Integer code, String message) {
+        super();
+        this.code = code;
+        this.message = message;
+    }
+
+    /**
+     * 只返回状态,状态码,数据对象
+     *
+     * @param code
+     * @param result
+     */
+    public ResultInfo(Integer code, Object result) {
+        super();
+        this.code = code;
+        this.result = result;
+    }
+
+    /**
+     * 返回全部信息即状态,状态码,消息,数据对象
+     *
+     * @param code
+     * @param message
+     * @param result
+     */
+    public ResultInfo(Integer code, String message, Object result) {
+        super();
+        this.code = code;
+        this.message = message;
+        this.result = result;
+    }
+}

+ 37 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/config/Status.java

@@ -0,0 +1,37 @@
+package com.gyee.analysis.config;
+/**
+ *@ClassName Status
+ *@Description 枚举类对象
+ *@Author 谢生杰
+ *@Date 2020/9/25 18:54
+ *@Version 1.0
+ **/
+public enum Status {
+    // 公共
+    SUCCESS(2000, "成功"),
+    UNKNOWN_ERROR(9998,"未知异常"),
+    SYSTEM_ERROR(9999, "系统异常"),
+
+
+    INSUFFICIENT_PERMISSION(4003, "权限不足"),
+
+    WARN(9000, "失败"),
+    REQUEST_PARAMETER_ERROR(1002, "请求参数错误"),
+
+    // 登录
+    LOGIN_EXPIRE(2001, "未登录或者登录失效"),
+    LOGIN_CODE_ERROR(2002, "登录验证码错误"),
+    LOGIN_ERROR(2003, "用户名不存在或密码错误"),
+    LOGIN_USER_STATUS_ERROR(2004, "用户状态不正确"),
+    LOGOUT_ERROR(2005, "退出失败,token不存在"),
+    LOGIN_USER_NOT_EXIST(2006, "该用户不存在"),
+    LOGIN_USER_EXIST(2007, "该用户已存在");
+
+    public int code;
+    public String message;
+
+    Status(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+}

+ 14 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/contant/OpeContant.java

@@ -0,0 +1,14 @@
+package com.gyee.analysis.contant;
+
+/**
+ * @ClassName : OpeContant
+ * @Author : xieshengjie
+ * @Date: 2021/1/18 19:50
+ * @Description : 操作常量
+ */
+public class OpeContant {
+
+    public static String opePoints = "CI0668,CI0669,CI0670";
+
+    public static String benchPoints = "RSDJZSDL,RSSTZSDL,RXNZSDL,RSQXZSDL,RGZZSDL,RSZZSDL,RJXZSDL,RLZZSDL,RQFZSDL,RXDZSDL,RWZZSDL,RTZZSDL";
+}

+ 111 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/init/CacheContext.java

@@ -0,0 +1,111 @@
+package com.gyee.analysis.init;
+
+
+import com.gyee.analysis.model.auto.*;
+import com.gyee.analysis.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : CacheContext
+ * @Author : xieshengjie
+ * @Date: 2021/1/18 14:48
+ * @Description : 初始化资源
+ */
+@Component
+public class CacheContext implements CommandLineRunner {
+    private Logger logger= LoggerFactory.getLogger(CacheContext.class);
+    @Resource
+    private IWindturbinetestingpointaiService windturbinetestingpointai2Service;
+    @Resource
+    private IWindpowerstationtestingpointService windpowerstationtestingpoint2Service;
+    @Resource
+    private IProjectService projectService;
+    @Resource
+    private IWindpowerstationService windpowerstationService;
+    @Resource
+    private IMeterpointService meterpoint2Service;
+    @Resource
+    private IAnalysiswindtargetService analysiswindtargetService;
+
+    public static Map<String, Map<String, Windturbinetestingpointai>> wtpointMap = new HashMap<>();
+
+    public static Map<String,List<Windturbinetestingpointai>> wtpmap = new HashMap<>();
+
+    public static Map<String,Map<String, Windpowerstationtestingpoint>> wppointmap =new HashMap<>();
+
+    public static List<Project> projects = new ArrayList<>();
+
+    public static List<Windpowerstation> stations = new ArrayList<>();
+
+    public static Map<String,Windpowerstation> wpmaps = new HashMap<>();
+
+    public static Map<String,String> wpmap = new HashMap<>();
+
+    public static Map<String,Meterpoint> meterMap = new HashMap<>();
+
+    public static Map<String,List<Meterpoint>> wpmeterMap = new HashMap<>();
+
+    public static List<Analysiswindtarget> targetlist = new ArrayList<>();
+
+    public static Map<String,Project> projectMap = new HashMap<>();
+
+    @Override
+    public void run(String... args) throws Exception {
+
+        targetlist = analysiswindtargetService.list();
+
+        for (Meterpoint meterpoint2 : meterpoint2Service.list()) {
+            meterMap.put(meterpoint2.getId(),meterpoint2);
+            if (wpmeterMap.containsKey(meterpoint2.getWindpowerstationid())){
+                wpmeterMap.get(meterpoint2.getWindpowerstationid()).add(meterpoint2);
+            }else{
+                List<Meterpoint> list = new ArrayList<>();
+                list.add(meterpoint2);
+                wpmeterMap.put(meterpoint2.getWindpowerstationid(),list);
+            }
+        }
+
+        projects = projectService.list().stream().sorted(Comparator.comparing(Project::getOrdernum)).collect(Collectors.toList());
+        for (Project project : projects) {
+            projectMap.put(project.getId(),project);
+        }
+        stations = windpowerstationService.list();
+        for (Windpowerstation station : stations) {
+            wpmap.put(station.getId(),station.getName());
+            wpmaps.put(station.getId(),station);
+        }
+
+        List<Windturbinetestingpointai> wtplist = windturbinetestingpointai2Service.list();
+        for (Windturbinetestingpointai pointai : wtplist) {
+            if (wtpointMap.containsKey(pointai.getWindturbineid())){
+                wtpointMap.get(pointai.getWindturbineid()).put(pointai.getUniformcode(),pointai);
+            }else{
+                Map<String, Windturbinetestingpointai> map = new HashMap<>();
+                map.put(pointai.getUniformcode(),pointai);
+                wtpointMap.put(pointai.getWindturbineid(),map);
+            }
+        }
+
+        //----------------------------------------------------------------------------------------------------
+        List<Windpowerstationtestingpoint> wplist = windpowerstationtestingpoint2Service.list();
+        for (Windpowerstationtestingpoint windpowerstationtestingpoint2 : wplist) {
+            if (wppointmap.containsKey(windpowerstationtestingpoint2.getWindpowerstationid())){
+                wppointmap.get(windpowerstationtestingpoint2.getWindpowerstationid()).put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
+            }else{
+                Map<String,Windpowerstationtestingpoint> map = new HashMap<>();
+                map.put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
+                wppointmap.put(windpowerstationtestingpoint2.getWindpowerstationid(),map);
+            }
+        }
+
+
+
+    }
+}

Plik diff jest za duży
+ 1481 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/service/analysis/AnalysisNewService.java


+ 78 - 0
histroy/analysis-histroy-hb/src/main/java/com/gyee/analysis/task/SaticScheduleTask.java

@@ -0,0 +1,78 @@
+package com.gyee.analysis.task;
+
+
+import com.gyee.analysis.service.analysis.AnalysisNewService;
+import com.gyee.common.util.DateUtils;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import javax.annotation.Resource;
+
+/**
+ * @ClassName : SaticScheduleTask
+ * @Author : xieshengjie
+ * @Date: 2021/1/21 19:43
+ * @Description : 调度
+ */
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class SaticScheduleTask {
+
+
+    @Resource
+    private AnalysisNewService analysisNewService;
+
+
+    /**
+     * 风电统计分析
+     */
+    @Scheduled(cron = "0 30 0 * * ?")
+    //或直接指定时间间隔,例如:5秒
+    //@Scheduled(fixedRate=5000)
+    private void analysisTasks() {
+        String yesterday = DateUtils.getYesterdayStr("yyyy-MM-dd");
+        try {
+            //保存主表
+            analysisNewService.savaAnalysismain(yesterday, yesterday);
+            //风电表底
+            analysisNewService.saveAnalysisTableBottom(yesterday, yesterday);
+            //风电工程
+            analysisNewService.saveWindProject(yesterday, yesterday);
+            //风电场站
+            analysisNewService.saveWindStation(yesterday, yesterday);
+            //公司
+            analysisNewService.saveCompany(yesterday, yesterday);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+//    /**
+//     * 光伏统计分析
+//     */
+//    @Scheduled(cron = "0 5 18 * * ?")
+//    //或直接指定时间间隔,例如:5秒
+//    //@Scheduled(fixedRate=5000)
+//    private void analysisGfTasks() {
+////        String yesterday = DateUtils.getYesterdayStr("yyyy-MM-dd");
+//        String yesterday = DateUtils.toDate1(DateUtils.today());
+//
+//        try {
+//            //主表
+//            analysisNewService.savaAnalysismain(yesterday, yesterday);
+//            //光伏主表
+//            analysisNewService.savaAnalysisGfmain(yesterday, yesterday);
+//            //下午6点的表底存储
+//            analysisNewService.saveAnalysisTableBottom1(yesterday, yesterday);
+//            //光伏表底存储
+//            analysisNewService.saveAnalysisGfTableBottom(yesterday, yesterday);
+//            //光伏项目
+//            analysisNewService.savePvProject(yesterday, yesterday);
+//            //光伏场站
+//            analysisNewService.savePvStation(yesterday, yesterday);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+}

+ 69 - 0
histroy/analysis-histroy-hb/src/main/resources/application.yml

@@ -0,0 +1,69 @@
+server:
+  port: 8031
+  servlet:
+    context-path: /
+
+
+spring:
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: oracle.jdbc.OracleDriver
+    #外网
+    url: jdbc:oracle:thin:@10.83.68.165:1521:gdsj
+#    url: jdbc:oracle:thin:@49.4.50.80:1521:gdnxfd
+    #    url: jdbc:oracle:thin:@172.168.1.14:1521:gdnxfd
+    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
+    #    username: root
+    #    password: root
+    #    driver-class-name: com.mysql.jdbc.Driver
+    druid:
+      max-active: 20
+      initial-size: 1
+      min-idle: 3
+      max-wait: 60000
+      time-between-eviction-runs-millis: 60000
+      min-evictable-idle-time-millis: 300000
+      test-while-idle: true
+      test-on-borrow: false
+      test-on-return: false
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+logging:
+  level:
+    root: info
+    com.example: debug
+
+golden:
+  baseURL: http://10.155.32.4:8011/ts

+ 46 - 0
histroy/analysis-histroy-hb/src/test/java/com/gyee/analysis/AnalysisTest.java

@@ -0,0 +1,46 @@
+package com.gyee.analysis;
+
+import com.gyee.analysis.service.analysis.AnalysisNewService;
+import com.gyee.common.util.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+
+/**
+ * @ClassName : AnalysisTest
+ * @Author : xieshengjie
+ * @Date: 2021/12/29 17:42
+ * @Description :
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
+public class AnalysisTest {
+    @Resource
+    private AnalysisNewService analysisNewService;
+    @Test
+    public void test1(){
+        String yesterday = DateUtils.getYesterdayStr("yyyy-MM-dd");
+        try {
+//            //保存主表
+//            analysisNewService.savaAnalysismain(yesterday, yesterday);
+//            //风电表底
+//            analysisNewService.saveAnalysisTableBottom(yesterday, yesterday);
+//            //风电工程
+//            analysisNewService.saveWindProject(yesterday, yesterday);
+//            //风电场站
+//            analysisNewService.saveWindStation(yesterday, yesterday);
+            //公司
+            analysisNewService.saveCompany(yesterday, yesterday);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 287 - 0
histroy/benchmarking-histroy-hb/src/main/java/com/gyee/benchmarkinghistroy/service/specific/SpecificService.java

@@ -0,0 +1,287 @@
+package com.gyee.benchmarkinghistroy.service.specific;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import com.gyee.benchmarkinghistroy.init.CacheContext;
+import com.gyee.benchmarkinghistroy.model.auto.*;
+import com.gyee.benchmarkinghistroy.service.auto.*;
+import com.gyee.common.model.StringUtils;
+import com.gyee.common.util.BigDecimalUtils;
+import com.gyee.common.util.DateUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : SpecificService
+ * @Author : xieshengjie
+ * @Date: 2021/6/9 21:51
+ * @Description : 专题分析service
+ */
+@Service
+public class SpecificService {
+    private static final Logger log = LoggerFactory.getLogger(SpecificService.class);
+    @Autowired
+    private IWindpowerspecificinfodayService windpowerspecificinfodayService;
+    @Autowired
+    private IWindpowerinfodayService windpowerinfodayService;
+    @Autowired
+    private IWindpowerinfoday3Service windpowerinfoday3Service;
+    @Autowired
+    private IFaultsnapService faultsnapService;
+    @Autowired
+    private IFaulthistoryService faulthistoryService;
+    @Autowired
+    private IStatetransitionratesService statetransitionratesService;
+    @Autowired
+    private IFaulteliminatedefectsService faulteliminatedefectsService;
+    @Autowired
+    private IShutdowneventService shutdowneventService;
+
+
+    /**
+     * 存储专题分析日信息表
+     * @param beginDate
+     * @param endDate
+     */
+    public void saveWindpowerspecificinfoday(String beginDate,String endDate) {
+        List<Windpowerstation> wplist = CacheContext.wplist.stream().filter(i->i.getId().endsWith("FDC")).collect(Collectors.toList());
+        List<String> days = getDays(beginDate, endDate);
+        for (String day : days) {
+            log.info("开始执行"+day+"的专题分析数据写入");
+            //删除一天的数据
+            Date date = DateUtils.parseDate(day);
+            Integer month = DateUtils.getMonth(date);
+            Integer year = DateUtils.getYear(date);
+            QueryWrapper<Windpowerspecificinfoday> delQw = new QueryWrapper<>();
+            delQw.eq("recorddate",date);
+            windpowerspecificinfodayService.remove(delQw);
+
+            //  取一天windpowerinfoday 的数据
+            QueryWrapper<Windpowerinfoday> infodayQw = new QueryWrapper<>();
+            infodayQw.eq("recorddate",date);
+            List<Windpowerinfoday> indodayList = windpowerinfodayService.list(infodayQw);
+            // 取一天windpowerinfoday3 的数据
+            QueryWrapper<Windpowerinfoday3> infoday3Qw = new QueryWrapper<>();
+            infoday3Qw.eq("recorddate",date);
+            List<Windpowerinfoday3> infoday3Lis = windpowerinfoday3Service.list(infoday3Qw);
+
+            QueryWrapper<Shutdownevent> shutdowneventQueryWrapper = new QueryWrapper<>();
+            Date addDay = DateUtils.addDays(date, 1);
+            shutdowneventQueryWrapper.ge("stoptime",date).lt("stoptime",addDay);
+            List<Shutdownevent> historyList = shutdowneventService.list(shutdowneventQueryWrapper);
+
+//            //取出所有故障的snapid
+//            QueryWrapper<Faultsnap> snapQw = new QueryWrapper<>();
+//            snapQw.eq("category1","FJ").eq("category2","GZ");
+//            List<Faultsnap> snapList = faultsnapService.list(snapQw);
+//            Map<BigDecimal,Faultsnap> snapMap = new HashMap<>();
+//            snapList.stream().forEach(i->{
+//                snapMap.put(i.getId(),i);
+//            });
+//            List<BigDecimal> snapids = faultsnapService.list(snapQw).stream().map(i -> i.getId()).collect(Collectors.toList());
+//            //取出一天故障流水记录
+//            QueryWrapper<Faulthistory> historyQw = new QueryWrapper<>();
+////            historyQw.like("faulttime",date);
+//            Date addDay = DateUtils.addDays(date, 1);
+//            historyQw.ge("faulttime",date).lt("faulttime",addDay);
+//            historyQw.in("snapid",snapids);
+//            List<Faulthistory> historyList = faulthistoryService.list(historyQw);
+            //取出一天复位及时率表,状态转换率 记录
+            QueryWrapper<Statetransitionrates> fwQw = new QueryWrapper<>();
+            fwQw.eq("recorddate",date);
+            List<Statetransitionrates> fwList = statetransitionratesService.list(fwQw);
+            //取出一天故障消缺 记录
+            QueryWrapper<Faulteliminatedefects> xqQw = new QueryWrapper<>();
+            xqQw.eq("datetime",date);
+            List<Faulteliminatedefects> xqList = faulteliminatedefectsService.list(xqQw);
+
+            Double sjfdl = 0.0;
+            Double gzssdl = 0.0;
+            Double whssdl = 0.0;
+            Double xdssdl = 0.0;
+            Double xnssdl = 0.0;
+            Double slssdl = 0.0;
+            Double llfdl = 0.0;
+            Double faulttime = 0.0;
+            Long faultcount = 0l;
+            Integer fjts = 0;
+            Double yfwcs = 0.0;
+            Double sfwcs = 0.0;
+            Double yzhcs = 0.0;
+            Double szhcs = 0.0;
+            Double yxqcs = 0.0;
+            Double sxqcs = 0.0;
+            Double zhcydl = 0.0;
+
+            Double zsjfdl = 0.0;
+            Double zsjfdl2 = 0.0;
+            Double zgzssdl = 0.0;
+            Double zwhssdl = 0.0;
+            Double zxdssdl = 0.0;
+            Double zxnssdl = 0.0;
+            Double zslssdl = 0.0;
+            Double zllfdl = 0.0;
+            Double zfaulttime = 0.0;
+            Long zfaultcount = 0l;
+            Integer zfjts = 0;
+            Double zyfwcs = 0.0;
+            Double zsfwcs = 0.0;
+            Double zyzhcs = 0.0;
+            Double zszhcs = 0.0;
+            Double zyxqcs = 0.0;
+            Double zsxqcs = 0.0;
+            Double sjfdl2 = 0.0;
+            Double zzhcydl = 0.0;
+
+            for (Windpowerstation windpowerstation : wplist) {
+                Windpowerspecificinfoday windpowerspecificinfoday = new Windpowerspecificinfoday();
+                Windpowerinfoday windpowerinfoday = indodayList.stream().filter(i -> i.getForeignkeyid().equals(windpowerstation.getId())).findFirst().isPresent()?indodayList.stream().filter(i -> i.getForeignkeyid().equals(windpowerstation.getId())).findFirst().get():null;
+                Windpowerinfoday3 windpowerinfoday3 = infoday3Lis.stream().filter(i -> i.getForeignkeyid().equals(windpowerstation.getId())).findFirst().isPresent()?infoday3Lis.stream().filter(i -> i.getForeignkeyid().equals(windpowerstation.getId())).findFirst().get():null;
+//                faultcount = historyList.stream().filter(i -> snapMap.get(i.getSnapid()).getStationid().equals(windpowerstation.getId())).count();
+                faultcount = historyList.stream().filter(i -> i.getWindpowerstationid().equals(windpowerstation.getId())).count();
+                List<Statetransitionrates> wpfwList = fwList.stream().filter(i -> i.getWindpwoerid().equals(windpowerstation.getId())).collect(Collectors.toList());
+                if (StringUtils.isNotEmpty(wpfwList)){
+                    yfwcs = wpfwList.stream().mapToDouble(Statetransitionrates::getTimerate20).sum();
+                    sfwcs = wpfwList.stream().mapToDouble(Statetransitionrates::getTimerate19).sum();
+                    yzhcs = wpfwList.stream().filter(i->i.getTimerate13()!=null).mapToDouble(Statetransitionrates::getTimerate13).sum();
+                    szhcs = wpfwList.stream().filter(i->i.getTimerate4()!=null).mapToDouble(Statetransitionrates::getTimerate4).sum();
+                }
+
+                List<Faulteliminatedefects> wpxqList = xqList.stream().filter(i -> i.getWindpowerstationid().equals(windpowerstation.getId())).collect(Collectors.toList());
+                if (StringUtils.isNotEmpty(wpxqList)){
+                    yxqcs = wpxqList.stream().mapToDouble(Faulteliminatedefects::getFaultcount).sum();
+                    sxqcs = wpxqList.stream().mapToDouble(Faulteliminatedefects::getRightcount).sum();
+                }
+
+                if (StringUtils.isNotNull(windpowerinfoday3)){
+                    gzssdl = BigDecimalUtils.divide(new BigDecimal(windpowerinfoday3.getDaynhgzssdl()),new BigDecimal(10000),2).doubleValue();
+                    whssdl = BigDecimalUtils.divide(new BigDecimal(windpowerinfoday3.getDaynhwhssdl()),new BigDecimal(10000),2).doubleValue();
+                    xdssdl = BigDecimalUtils.divide(new BigDecimal(windpowerinfoday3.getDaynhxdssdl()),new BigDecimal(10000),2).doubleValue();
+                    xnssdl = BigDecimalUtils.divide(new BigDecimal(windpowerinfoday3.getDaynhqfdl()),new BigDecimal(10000),2).doubleValue();
+                    slssdl = BigDecimalUtils.divide(new BigDecimal(windpowerinfoday3.getDaynhcfdl()),new BigDecimal(10000),2).doubleValue();
+                }
+                if (StringUtils.isNotNull(windpowerinfoday)){
+                    sjfdl = windpowerinfoday.getGeneratingcapacity();
+                    faulttime = windpowerinfoday.getFaulttime();
+                    zhcydl = windpowerinfoday.getGeneratingcapacity2()+windpowerinfoday.getBuyelectricity()-windpowerinfoday.getGridelectricity();
+                    sjfdl2 = windpowerinfoday.getGeneratingcapacity2();
+                }
+
+                //赋值
+                windpowerspecificinfoday.setWindpowerstationid(windpowerstation.getId());
+                windpowerspecificinfoday.setRecorddate(DateUtils.parseDate(day));
+
+                windpowerspecificinfoday.setGeneratingcapacity(sjfdl);  //发电量
+                zsjfdl += sjfdl;
+                windpowerspecificinfoday.setGeneratingcapacity2(sjfdl2); //电计量发电量
+                zsjfdl2 += sjfdl2;
+                windpowerspecificinfoday.setZhcydl(zhcydl); //综合场用电量
+                zzhcydl += zhcydl;
+                windpowerspecificinfoday.setDaynhgzssdl(gzssdl); //故障损失电量
+                zgzssdl += gzssdl;
+                windpowerspecificinfoday.setDaynhwhssdl(whssdl); //维护损失电量
+                zwhssdl += whssdl;
+                windpowerspecificinfoday.setDaynhxdssdl(xdssdl); //限电损失电量
+                zxdssdl += xdssdl;
+                windpowerspecificinfoday.setDaynhqfdl(xnssdl); //性能损失电量
+                zxnssdl += xnssdl;
+                windpowerspecificinfoday.setDaynhcfdl(slssdl); //受累损失电量
+                zslssdl += slssdl;
+                llfdl =BigDecimalUtils.add(BigDecimalUtils.add(BigDecimalUtils.add(BigDecimalUtils.add(BigDecimalUtils.add(new BigDecimal(sjfdl),new BigDecimal(gzssdl)),new BigDecimal(whssdl)),new BigDecimal(xdssdl)),new BigDecimal(xnssdl)),new BigDecimal(slssdl)).doubleValue();
+                windpowerspecificinfoday.setTheoreticalcapacity(llfdl); //理论发电量
+                zllfdl += llfdl;
+                windpowerspecificinfoday.setWindenergyrate(llfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(sjfdl),new BigDecimal(llfdl),2),new BigDecimal(100),2).doubleValue()); //风能利用率
+                windpowerspecificinfoday.setDaynhgzssrate(llfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(gzssdl),new BigDecimal(llfdl),2),new BigDecimal(100),2).doubleValue()); //故障损失率
+                windpowerspecificinfoday.setDaynhwhssrate(llfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(whssdl),new BigDecimal(llfdl),2),new BigDecimal(100),2).doubleValue()); //维护损失率
+                windpowerspecificinfoday.setDaynhxdssrate(llfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(xdssdl),new BigDecimal(llfdl),2),new BigDecimal(100),2).doubleValue()); //限电损失率
+                windpowerspecificinfoday.setDaynhqfrate(llfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(xnssdl),new BigDecimal(llfdl),2),new BigDecimal(100),2).doubleValue()); //性能损失率
+                windpowerspecificinfoday.setDaynhcfrate(llfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(slssdl),new BigDecimal(llfdl),2),new BigDecimal(100),2).doubleValue()); //受累损失率
+                windpowerspecificinfoday.setFaultcount(faultcount);//故障次数
+                zfaultcount += faultcount;
+                windpowerspecificinfoday.setFaulttime(faulttime);//故障时间
+                zfaulttime += faulttime;
+                fjts = windpowerstation.getQuantity().intValue();
+                windpowerspecificinfoday.setWtcount(fjts); //风机台数
+                zfjts += fjts;
+                windpowerspecificinfoday.setCalendartime(BigDecimalUtils.multiply(new BigDecimal(windpowerspecificinfoday.getWtcount()),new BigDecimal(24),2).doubleValue()); //日历时间(台时)
+
+                windpowerspecificinfoday.setTheoresettimes(yfwcs); //应复位次数
+                zyfwcs += yfwcs;
+                windpowerspecificinfoday.setResettimes(sfwcs); //实际复位次数
+                zsfwcs += sfwcs;
+                windpowerspecificinfoday.setTheoconversiontimes(yzhcs); //应转换次数
+                zyzhcs += yzhcs;
+                windpowerspecificinfoday.setConversiontimes(szhcs); //实际转换次数
+                zszhcs += szhcs;
+                windpowerspecificinfoday.setTheofaultcount(yxqcs); //应消缺次数
+                zyxqcs += yxqcs;
+                windpowerspecificinfoday.setRightcount(sxqcs); //实际消缺次数
+                zsxqcs += sxqcs;
+                windpowerspecificinfoday.setYear(year);
+                windpowerspecificinfoday.setMonth(month);
+                windpowerspecificinfodayService.save(windpowerspecificinfoday);
+
+            }
+
+            Windpowerspecificinfoday capacityData = new Windpowerspecificinfoday();
+            capacityData.setWindpowerstationid("0");
+            capacityData.setRecorddate(DateUtils.parseDate(day));
+            capacityData.setTheoreticalcapacity(zllfdl);
+            capacityData.setGeneratingcapacity(zsjfdl);
+            capacityData.setGeneratingcapacity2(zsjfdl2);
+            capacityData.setWindenergyrate(zllfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(zsjfdl),new BigDecimal(zllfdl),2),new BigDecimal(100),2).doubleValue()); //风能利用率
+            capacityData.setDaynhwhssdl(zwhssdl);
+            capacityData.setDaynhgzssdl(zgzssdl);
+            capacityData.setDaynhxdssdl(zxdssdl);
+            capacityData.setZhcydl(zzhcydl);
+            capacityData.setDaynhqfdl(zxnssdl);
+            capacityData.setDaynhcfdl(zslssdl);
+            capacityData.setDaynhgzssrate(zllfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(zgzssdl),new BigDecimal(zllfdl),2),new BigDecimal(100),2).doubleValue()); //故障损失率
+            capacityData.setDaynhwhssrate(zllfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(zwhssdl),new BigDecimal(zllfdl),2),new BigDecimal(100),2).doubleValue()); //维护损失率
+            capacityData.setDaynhxdssrate(zllfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(zxdssdl),new BigDecimal(zllfdl),2),new BigDecimal(100),2).doubleValue()); //限电损失率
+            capacityData.setDaynhqfrate(zllfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(zxnssdl),new BigDecimal(zllfdl),2),new BigDecimal(100),2).doubleValue()); //性能损失率
+            capacityData.setDaynhcfrate(zllfdl==0?0:BigDecimalUtils.multiply(BigDecimalUtils.divide(new BigDecimal(zslssdl),new BigDecimal(zllfdl),2),new BigDecimal(100),2).doubleValue()); //受累损失率
+            capacityData.setFaultcount(zfaultcount);
+            capacityData.setFaulttime(zfaulttime);
+            capacityData.setWtcount(zfjts);
+            capacityData.setCalendartime(BigDecimalUtils.multiply(new BigDecimal(capacityData.getWtcount()),new BigDecimal(24),2).doubleValue()); //日历时间(台时)
+            capacityData.setTheoresettimes(zyfwcs);
+            capacityData.setResettimes(zsfwcs);
+            capacityData.setTheoconversiontimes(zyzhcs);
+            capacityData.setConversiontimes(zszhcs);
+            capacityData.setTheofaultcount(zyxqcs);
+            capacityData.setRightcount(zsxqcs);
+            capacityData.setYear(year);
+            capacityData.setMonth(month);
+            windpowerspecificinfodayService.save(capacityData);
+            log.info("结束执行"+day+"的专题分析数据写入");
+        }
+
+    }
+
+    /**
+     * 获取两日期间日期list
+     *
+     * @param beginDate
+     * @param endDate
+     * @return
+     */
+    public static List<String> getDays(String beginDate, String endDate) {
+        List<String> days = null;
+        if (StringUtils.isNotEmpty(beginDate) && StringUtils.isNotEmpty(endDate)) {
+            days = DateUtils.getDays(beginDate, endDate);
+        } else {
+            days = new ArrayList<>();
+            days.add(DateUtils.getYesterdayStr("yyyy-MM-dd"));
+        }
+        return days;
+    }
+
+
+}

+ 176 - 0
histroy/benchmarking-histroy-hb/src/main/java/com/gyee/benchmarkinghistroy/util/realtimesource/HttpClientUtil.java

@@ -0,0 +1,176 @@
+package com.gyee.benchmarkinghistroy.util.realtimesource;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.NameValuePair;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.params.HttpMethodParams;
+
+/**
+ * @ClassName : HttpClientUtil
+ * @Author : xieshengjie
+ * @Date: 2021/12/22 15:52
+ * @Description :
+ */
+public class HttpClientUtil {
+    public static String doGet(String url) {
+        // 输入流
+        InputStream is = null;
+        BufferedReader br = null;
+        String result = null;
+        // 创建httpClient实例
+        HttpClient httpClient = new HttpClient();
+        // 设置http连接主机服务超时时间:15000毫秒
+        // 先获取连接管理器对象,再获取参数对象,再进行参数的赋值
+        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
+        // 创建一个Get方法实例对象
+        GetMethod getMethod = new GetMethod(url);
+        // 设置get请求超时为60000毫秒
+        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
+        // 设置请求重试机制,默认重试次数:3次,参数设置为true,重试机制可用,false相反
+        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, true));
+        try {
+            // 执行Get方法
+            int statusCode = httpClient.executeMethod(getMethod);
+            // 判断返回码
+            if (statusCode != HttpStatus.SC_OK) {
+                // 如果状态码返回的不是ok,说明失败了,打印错误信息
+                System.err.println("Method faild: " + getMethod.getStatusLine());
+            } else {
+                // 通过getMethod实例,获取远程的一个输入流
+                is = getMethod.getResponseBodyAsStream();
+                // 包装输入流
+                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+                StringBuffer sbf = new StringBuffer();
+                // 读取封装的输入流
+                String temp = null;
+                while ((temp = br.readLine()) != null) {
+                    sbf.append(temp).append("\r\n");
+                }
+
+                result = sbf.toString();
+            }
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            // 关闭资源
+            if (null != br) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != is) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            // 释放连接
+            getMethod.releaseConnection();
+        }
+        return result;
+    }
+
+    public static String doPost(String url, Map<String, Object> paramMap) {
+        // 获取输入流
+        InputStream is = null;
+        BufferedReader br = null;
+        String result = null;
+        // 创建httpClient实例对象
+        HttpClient httpClient = new HttpClient();
+        // 设置httpClient连接主机服务器超时时间:15000毫秒
+        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
+        // 创建post请求方法实例对象
+        PostMethod postMethod = new PostMethod(url);
+        // 设置post请求超时时间
+        postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
+
+        NameValuePair[] nvp = null;
+        // 判断参数map集合paramMap是否为空
+        if (null != paramMap && paramMap.size() > 0) {// 不为空
+            // 创建键值参数对象数组,大小为参数的个数
+
+            nvp = new NameValuePair[paramMap.size()];
+            // 循环遍历参数集合map
+            Set<Entry<String, Object>> entrySet = paramMap.entrySet();
+            // 获取迭代器
+            Iterator<Entry<String, Object>> iterator = entrySet.iterator();
+
+            int index = 0;
+            while (iterator.hasNext()) {
+                Entry<String, Object> mapEntry = iterator.next();
+                // 从mapEntry中获取key和value创建键值对象存放到数组中
+                try {
+                    nvp[index] = new NameValuePair(mapEntry.getKey(),
+                            new String(mapEntry.getValue().toString().getBytes("UTF-8"), "UTF-8"));
+                } catch (UnsupportedEncodingException e) {
+                    e.printStackTrace();
+                }
+                index++;
+            }
+        }
+        // 判断nvp数组是否为空
+        if (null != nvp && nvp.length > 0) {
+            // 将参数存放到requestBody对象中
+            postMethod.setRequestBody(nvp);
+        }
+        // 执行POST方法
+        try {
+            int statusCode = httpClient.executeMethod(postMethod);
+            // 判断是否成功
+            if (statusCode != HttpStatus.SC_OK) {
+                System.err.println("Method faild: " + postMethod.getStatusLine());
+            }
+            // 获取远程返回的数据
+            is = postMethod.getResponseBodyAsStream();
+            // 封装输入流
+            br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+            StringBuffer sbf = new StringBuffer();
+            String temp = null;
+            while ((temp = br.readLine()) != null) {
+                sbf.append(temp).append("\r\n");
+            }
+
+            result = sbf.toString();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            // 关闭资源
+            if (null != br) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (null != is) {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            // 释放连接
+            postMethod.releaseConnection();
+        }
+        return result;
+    }
+}

+ 799 - 0
histroy/benchmarking-histroy-hb/src/main/java/com/gyee/benchmarkinghistroy/util/realtimesource/MongoEdosUtil.java

@@ -0,0 +1,799 @@
+package com.gyee.benchmarkinghistroy.util.realtimesource;
+
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerstationtestingpoint;
+import com.gyee.benchmarkinghistroy.model.auto.Windturbinetestingpointai;
+import com.gyee.benchmarkinghistroy.util.realtimesource.timeseries.ErrorRequest;
+import com.gyee.benchmarkinghistroy.util.realtimesource.timeseries.JsonObjectHelper;
+import com.gyee.common.model.DNAStatVal;
+import com.gyee.common.model.DNAVal;
+import com.gyee.common.model.PointData;
+import com.gyee.common.model.StringUtils;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.*;
+
+/**
+ */
+@Component
+public class MongoEdosUtil implements IEdosUtil {
+
+    private RestTemplate restTemplate =new RestTemplate();
+    private static String baseURL = "http://localhost:8080/mogodb";
+//    private static String baseURL = "http://10.65.79.30:8019/ts";
+    @Override
+    public PointData getRealData(Windpowerstationtestingpoint point) throws Exception {
+        try {
+            Optional<String> keys = Optional.ofNullable(point.getCode());
+
+
+            String url = baseURL + "/getRealData.action?";
+            if (keys.isPresent())
+                url = url + "point=" + keys.get();
+            String s = HttpClientUtil.doGet(url);
+            JSONObject jsonObject=JSONObject.parseObject(s);
+            PointData pointData = JSONObject.toJavaObject(jsonObject, PointData.class);
+            return pointData;
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestError(point.getCode());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+
+
+
+    @Override
+    public List<PointData> getHistoryDatasSnap(Windpowerstationtestingpoint point, Long beginDate, Long endDate, Long count, Long pried) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(point.getCode());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> uniformCode = Optional.ofNullable(point.getUniformcode());
+        Optional<Long> startTs = Optional.ofNullable(beginDate);
+        Optional<Long> endTs = Optional.ofNullable(endDate);
+        Optional<Long> counts = Optional.ofNullable(count);
+        Optional<Long> prieds = Optional.ofNullable(pried);
+        //通过时间区间和时间间隔获取点数
+
+
+        try {
+            String url = baseURL + "/getHistoryDatasSnap.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+            if (counts.isPresent())
+                url = url + "&count=" + counts.get();
+            if (prieds.isPresent())
+                url = url + "&pried=" + prieds.get();
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+
+            return pointDatas;
+
+
+
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(point.getCode());
+            } else {
+                throw exception;
+            }
+        }
+
+    }
+
+
+
+
+
+    @Override
+    public List<PointData> getHistoryDatasRaw(Windpowerstationtestingpoint point, Long beginDate, Long endDate) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(point.getCode());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> uniformCode = Optional.ofNullable(point.getUniformcode());
+        Optional<Long> startTs = Optional.ofNullable(beginDate);
+        Optional<Long> endTs = Optional.ofNullable(endDate);
+
+        try {
+            String url = baseURL + "/getHistoryDatasRaw.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+
+
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+           return pointDatas;
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(point.getCode());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public PointData getRealData(Windturbinetestingpointai point) throws Exception {
+        Optional<String> keys = Optional.ofNullable(point.getId());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> uniformCodes = Optional.ofNullable(point.getUniformcode());
+
+        try {
+            String url = baseURL + "/getRealData.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (keys.isPresent())
+                url = url + "point=" + keys.get();
+
+            String s = HttpClientUtil.doGet(url);
+            JSONObject jsonObject=JSONObject.parseObject(s);
+            PointData pointData = JSONObject.toJavaObject(jsonObject, PointData.class);
+            return pointData;
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestError(point.getId());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public List<PointData> getHistoryDatasSnap(Windturbinetestingpointai point, Long beginDate, Long endDate, Long count, Long pried) throws Exception {
+
+        Optional<String> tagName = Optional.ofNullable(point.getId());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> uniformCode = Optional.ofNullable(point.getUniformcode());
+        Optional<Long> startTs = Optional.ofNullable(beginDate);
+        Optional<Long> endTs = Optional.ofNullable(endDate);
+        Optional<Long> counts = Optional.ofNullable(count);
+        Optional<Long> prieds = Optional.ofNullable(pried);
+        //通过时间区间和时间间隔获取点数
+
+        try {
+            String url = baseURL + "/getHistoryDatasSnap.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+            if (counts.isPresent())
+                url = url + "&count=" + counts.get();
+            if (prieds.isPresent())
+                url = url + "&pried=" + prieds.get();
+
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(point.getId());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+
+    @Override
+    public List<PointData> getHistoryDatasRaw(Windturbinetestingpointai point, Long beginDate, Long endDate) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(point.getId());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> uniformCode = Optional.ofNullable(point.getUniformcode());
+        Optional<Long> startTs = Optional.ofNullable(beginDate);
+        Optional<Long> endTs = Optional.ofNullable(endDate);
+        try {
+            String url = baseURL + "/getHistoryDatasRaw.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(point.getId());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public PointData getRealData(String pointid) throws Exception {
+        Optional<String> keys = Optional.ofNullable(pointid);
+        String url = baseURL + "/getRealData.action?";
+        try {
+            if (keys.isPresent())
+                url = url + "point=" + keys.get();
+            else
+                return null;
+
+            String s = HttpClientUtil.doGet(url);
+            JSONObject jsonObject=JSONObject.parseObject(s);
+            PointData pointData = JSONObject.toJavaObject(jsonObject, PointData.class);
+            return pointData;
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestError(pointid);
+            } else {
+                return ErrorRequest.RequestError(pointid);
+            }
+        }
+    }
+
+    @Override
+    public List<PointData> getRealData(String... pointids) throws Exception {
+        String pointIdString = StringUtil.join(pointids, ",");
+        Optional<String> keys = Optional.ofNullable(pointIdString);
+        String url = baseURL + "/getRealData.action?1=1";
+        try {
+            if (keys.isPresent())
+                url = url + "&point=" + keys.get();
+            else {
+                return ErrorRequest.RequestListError(pointids);
+            }
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+
+
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(pointids);
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+
+
+    @Override
+    public List<PointData> getRealData(List<String> pointids) throws Exception {
+        String pointIdString = StringUtil.join(pointids.toArray(), ",");
+        Optional<String> keys = Optional.ofNullable(pointIdString);
+        String url = baseURL + "/getRealData.action?";
+        try {
+            if (keys.isPresent())
+                url = url + "keys=" + keys.get();
+            else {
+                String[] arr = new String[pointids.size()];
+                return ErrorRequest.RequestListError(pointids.toArray(arr));
+            }
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                String[] arr = new String[pointids.size()];
+                return ErrorRequest.RequestListError(pointids.toArray(arr));
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public Map<String, Double> getRealDataMap(String... pointids) throws Exception {
+        return null;
+    }
+
+
+	  @Override
+	    public List<PointData> getHistoryDatasSnap(String pointid, Long beginDate, Long endDate, Long count, Long pried) throws Exception {
+	        Optional<String> tagName = Optional.ofNullable(pointid);
+	        Optional<Long> startTs = Optional.ofNullable(beginDate);
+	        Optional<Long> endTs = Optional.ofNullable(endDate);
+          Optional<Long> counts = Optional.ofNullable(count);
+          Optional<Long> prieds = Optional.ofNullable(pried);
+
+
+          try {
+              String url = baseURL + "/getHistoryDatasSnap.action?";
+              //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+              if (tagName.isPresent())
+                  url = url + "point=" + tagName.get();
+
+              if (startTs.isPresent())
+                  url = url + "&begin=" + startTs.get();
+              if (endTs.isPresent())
+                  url = url + "&end=" + endTs.get();
+              if (counts.isPresent())
+                  url = url + "&count=" + counts.get();
+              if (prieds.isPresent())
+                  url = url + "&pried=" + prieds.get();
+
+
+              String s = HttpClientUtil.doGet(url);
+              List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+              return pointDatas;
+
+
+	        } catch (HttpClientErrorException exception) {
+	            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+	                System.out.println("404请求错误");
+	                return ErrorRequest.RequestListError(pointid);
+	            } else {
+	                throw exception;
+	            }
+	        }
+
+	    }
+
+
+    @Override
+    public List<PointData> getHistoryDatasRaw(String pointid, Long beginDate, Long endDate) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(pointid);
+        Optional<Long> startTs = Optional.ofNullable(beginDate * 1000);
+        Optional<Long> endTs = Optional.ofNullable(endDate * 1000);
+
+        try {
+            String url = baseURL + "/history/raw?null=0";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "&tagName=" + tagName.get();
+            if (startTs.isPresent())
+                url = url + "&startTs=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&endTs=" + endTs.get();
+
+            ResponseEntity<JSONArray> resp = restTemplate.getForEntity(url, JSONArray.class);
+
+            JSONArray jsonArray = resp.getBody();
+            if (jsonArray != null)
+                return JsonObjectHelper.phrasePointData(jsonArray, pointid);
+            else {
+                return ErrorRequest.RequestListError(pointid);
+            }
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(pointid);
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public List<PointData> getHistStat(Windturbinetestingpointai point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(point.getId());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> uniformCode = Optional.ofNullable(point.getUniformcode());
+        Optional<Long> startTs = Optional.ofNullable(beginDate);
+        Optional<Long> endTs = Optional.ofNullable(endDate);
+        Optional<Long> counts = Optional.ofNullable(count);
+        Optional<Long> prieds = Optional.ofNullable(pried);
+        Optional<Integer> types = Optional.ofNullable(type);
+
+
+        try {
+            String url = baseURL + "/getHistStat.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+            if (counts.isPresent())
+                url = url + "&count=" + counts.get();
+            if (prieds.isPresent())
+                url = url + "&pried=" + prieds.get();
+            if (types.isPresent())
+                url = url + "&type=" + types.get();
+
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(point.getId());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public List<PointData> getHistStat(Windpowerstationtestingpoint point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(point.getCode());
+        Optional<String> thingId = Optional.ofNullable(point.getWindpowerstationid());
+        Optional<String> thingType = Optional.ofNullable(point.getModelid());
+        Optional<String> uniformCode = Optional.ofNullable(point.getUniformcode());
+        Optional<Long> startTs = Optional.ofNullable(beginDate * 1000);
+        Optional<Long> endTs = Optional.ofNullable(endDate * 1000);
+        Optional<Long> counts = Optional.ofNullable(count);
+        Optional<Long> prieds = Optional.ofNullable(pried);
+        Optional<Integer> types = Optional.ofNullable(type);
+
+
+        try {
+            String url = baseURL + "/getHistStat.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+            if (counts.isPresent())
+                url = url + "&count=" + counts.get();
+            if (prieds.isPresent())
+                url = url + "&pried=" + prieds.get();
+            if (types.isPresent())
+                url = url + "&type=" + types.get();
+
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(point.getCode());
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public List<PointData> getHistStat(String pointid, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(pointid);
+        Optional<Long> startTs = Optional.ofNullable(beginDate * 1000);
+        Optional<Long> endTs = Optional.ofNullable(endDate * 1000);
+        Optional<Long> counts = Optional.ofNullable(count);
+        Optional<Long> prieds = Optional.ofNullable(pried);
+        Optional<Integer> types = Optional.ofNullable(type);
+
+
+        try {
+            String url = baseURL + "/getHistStat.action?";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "point=" + tagName.get();
+
+            if (startTs.isPresent())
+                url = url + "&begin=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&end=" + endTs.get();
+            if (counts.isPresent())
+                url = url + "&count=" + counts.get();
+            if (prieds.isPresent())
+                url = url + "&pried=" + prieds.get();
+            if (types.isPresent())
+                url = url + "&type=" + types.get();
+
+            String s = HttpClientUtil.doGet(url);
+            List<PointData> pointDatas = JSONArray.parseArray(s, PointData.class);
+            return pointDatas;
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                return ErrorRequest.RequestListError(pointid);
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public DNAStatVal[] getHistStat(String point, Long beginDate, Long endDate, Integer pried) throws Exception {
+        Optional<String> tagName = Optional.ofNullable(point);
+        Optional<Long> startTs = Optional.ofNullable(beginDate * 1000);
+        Optional<Long> endTs = Optional.ofNullable(endDate * 1000);
+        //通过时间区间和时间间隔获取点数
+        Optional<Integer> interval = Optional.ofNullable(pried);
+
+        try {
+            String url = baseURL + "/history/stat?null=0";
+            //tagName 或thingType,thingId,uniformCode可以确定一个标签点
+            if (tagName.isPresent())
+                url = url + "&tagName=" + tagName.get();
+            if (startTs.isPresent())
+                url = url + "&startTs=" + startTs.get();
+            if (endTs.isPresent())
+                url = url + "&endTs=" + endTs.get();
+            if (interval.isPresent())
+                url = url + "&interval=" + interval.get();
+
+            //System.out.println(restTemplate.getForEntity(url, JSONArray.class));
+            ResponseEntity<JSONArray> resp = restTemplate.getForEntity(url, JSONArray.class);
+            if (resp != null) {
+                JSONArray jsonArray = resp.getBody();
+                if (jsonArray == null || jsonArray.size() <= 0) {
+                    DNAStatVal[] dnaVal = new DNAStatVal[1];
+                    DNAVal errorData = new DNAVal();
+                    errorData.Status = 0;
+
+                    DNAStatVal val = new DNAStatVal();
+                    val.avg = errorData;
+                    val.max = errorData;
+                    val.min = errorData;
+                    dnaVal[0] = val;
+                    return dnaVal;
+                } else {
+                    return JsonObjectHelper.phraseDNAVal(jsonArray);
+                }
+            } else {
+                return null;
+            }
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                DNAStatVal val = new DNAStatVal();
+                DNAStatVal[] dnaVal = new DNAStatVal[1];
+                DNAVal errorData = new DNAVal();
+                errorData.Status = 0;
+                val.avg = errorData;
+                val.max = errorData;
+                val.min = errorData;
+                dnaVal[0] = val;
+                return dnaVal;
+
+            } else {
+                DNAStatVal val = new DNAStatVal();
+                DNAStatVal[] dnaVal = new DNAStatVal[1];
+                DNAVal errorData = new DNAVal();
+                errorData.Status = 0;
+                val.avg = errorData;
+                val.max = errorData;
+                val.min = errorData;
+                dnaVal[0] = val;
+                return dnaVal;
+            }
+        }
+    }
+
+    private JSONObject convertPointData(PointData pd) {
+        JSONObject jo = new JSONObject();
+        jo.put("tagName", pd.getEdnaId());
+        JSONObject joo = new JSONObject();
+        joo.put("ts", pd.getPointTime()*1000);
+        joo.put("status", 0);
+        joo.put("doubleValue", pd.getPointValueInDouble());
+        jo.put("tsData", joo);
+        return jo;
+    }
+
+    @Override
+    public void updatePoint(PointData point) throws Exception {
+        String url = baseURL + "/history";
+        try {
+            String result = restTemplate.postForObject(url, convertPointData(point), String.class);
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                return;
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public DNAVal[] getRealtimeTagValues(String... tagNames) throws Exception {
+        String pointIdString = StringUtil.join(tagNames, ",");
+        Optional<String> keys = Optional.ofNullable(pointIdString);
+        String url = baseURL + "/latest?null=0";
+        try {
+            if (keys.isPresent())
+                url = url + "&keys=" + keys.get();
+            else
+                return null;
+
+            ResponseEntity<JSONObject> resp = restTemplate.getForEntity(url, JSONObject.class);
+            JSONObject jsonObject = resp.getBody();
+            if (StringUtils.isNotEmpty(jsonObject) && !jsonObject.isEmpty()){
+                return JsonObjectHelper.phraseDNAVal(jsonObject,tagNames);
+            } else {
+            	  DNAVal[] errorResult = new DNAVal[tagNames.length];
+                  for(int i=0;i<tagNames.length;i++)
+                  {
+                  	 DNAVal val = new DNAVal();
+                       val.Status = 0;
+                       errorResult[i] = val;
+                  }
+                  return errorResult;
+            }
+
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+                DNAVal[] errorResult = new DNAVal[tagNames.length];
+                for(int i=0;i<tagNames.length;i++)
+                {
+                	 DNAVal val = new DNAVal();
+                     val.Status = 0;
+                     errorResult[i] = val;
+                }
+                return errorResult;
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public void updatePoint(List<PointData> pointls) throws Exception {
+        String url = baseURL + "/history/batch";
+        List<JSONObject> writeList = new ArrayList<>();
+
+        for (PointData entity : pointls) {
+            writeList.add(convertPointData(entity));
+        }
+        try {
+            String result = restTemplate.postForObject(url, writeList, String.class);
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                return;
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public void sendSinglePoint(PointData point) throws Exception {
+        String url = baseURL + "/latest";
+
+
+        try {
+            String result = restTemplate.postForObject(url, convertPointData(point), String.class);
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                return;
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public void sendMultiPoint(List<PointData> pointls) throws Exception {
+
+        String url = baseURL + "/latest/batch";
+        List<JSONObject> writeList = new ArrayList<>();
+
+        for (PointData entity : pointls) {
+            writeList.add(convertPointData(entity));
+        }
+        try {
+            String result = restTemplate.postForObject(url, writeList, String.class);
+        } catch (HttpClientErrorException exception) {
+            if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                System.out.println("404请求错误");
+            } else {
+                throw exception;
+            }
+        }
+    }
+
+    @Override
+    public void sendMultiPoint(String[] realvalue, DNAVal[] pointls) throws Exception {
+        String url = baseURL + "/latest/batch";
+
+        List<JSONObject> writeDataList = new ArrayList<>();
+        if (realvalue != null && pointls != null & realvalue.length == pointls.length) {
+            for (int i = 0; i < realvalue.length; i++) {
+                PointData writeData = new PointData();
+                writeData.setEdnaId(realvalue[i]);
+                writeData.setPointValueInDouble(pointls[i].DValue);
+                writeData.setPointTime((long)pointls[i].Time);
+                JSONObject jsonObject=convertPointData(writeData);
+                writeDataList.add(jsonObject);
+            }
+
+            try {
+                String result = restTemplate.postForObject(url, writeDataList, String.class);
+            } catch (HttpClientErrorException exception) {
+                if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
+                    System.out.println("404请求错误");
+                } else {
+                    throw exception;
+                }
+            }
+        } else
+            return;
+    }
+
+    //多点切面数据
+    @Override
+    public DNAVal[] getHistMatrix(String[] nameList, int tTime) throws Exception {
+        String tagNameString = StringUtil.join(nameList, ",");
+        Long time = Long.valueOf(tTime);
+        Optional<String> tagName = Optional.ofNullable(tagNameString);
+        Optional<Long> ts = Optional.ofNullable(time * 1000);
+        String url = baseURL + "/history/section?tagNames=" + tagName.get() + "&ts=" + ts.get();
+        try {
+            ResponseEntity<JSONObject> resp = restTemplate.getForEntity(url, JSONObject.class);
+            JSONObject jsonObject = resp.getBody();
+            if (StringUtils.isNotEmpty(jsonObject) && !jsonObject.isEmpty())
+            {
+            	 return JsonObjectHelper.phraseDNAVal(jsonObject,nameList);
+            }
+            else {
+                DNAVal[] errorResult = new DNAVal[nameList.length];
+                for(int i=0;i<nameList.length;i++)
+                {
+                	 DNAVal val = new DNAVal();
+                     val.Status = 0;
+                     errorResult[i] = val;
+                }
+                return errorResult;
+            }
+        } catch (Exception e) {
+        	  DNAVal[] errorResult = new DNAVal[nameList.length];
+              for(int i=0;i<nameList.length;i++)
+              {
+              	 DNAVal val = new DNAVal();
+                   val.Status = 0;
+                   errorResult[i] = val;
+              }
+              return errorResult;
+        }
+    }
+
+
+}

+ 25 - 1
histroy/benchmarking-histroy/pom.xml

@@ -22,6 +22,11 @@
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <optional>true</optional>
@@ -54,7 +59,26 @@
             <artifactId>common</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.17</version>
+        </dependency>
     </dependencies>
-
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 
 </project>

+ 123 - 31
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/init/CacheContext.java

@@ -1,15 +1,15 @@
 package com.gyee.benchmarkinghistroy.init;
 
-import com.alibaba.druid.support.json.JSONUtils;
-import com.gyee.benchmarkinghistroy.model.auto.Windturbinetestingpoint;
-import com.gyee.benchmarkinghistroy.service.auto.IWindturbinetestingpointService;
-import com.gyee.benchmarkinghistroy.util.redis.RedisService;
+
+import com.gyee.benchmarkinghistroy.model.auto.*;
+import com.gyee.benchmarkinghistroy.service.auto.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -23,37 +23,129 @@ import java.util.Map;
 @Component
 public class CacheContext implements CommandLineRunner {
 
-    private Logger logger = LoggerFactory.getLogger(CacheContext.class);
-    @Resource
-    private IWindturbinetestingpointService windturbinetestingpointService;
-    @Resource
-    private RedisService redisService;
 
-    public static Map<String, Map<String, Windturbinetestingpoint>> wtpAimap = new HashMap<>();// 风电机测点表
+    private static final Logger log = LoggerFactory.getLogger(CacheContext.class);
+
+    @Autowired
+    private IWindturbineService windturbineService;
+    @Autowired
+    private IWindpowerstationService windpowerstationService;
+    @Autowired
+    private IProjectService projectService;
+    @Autowired
+    private ILineService lineService;
+    @Autowired
+    private IWindturbinetestingpointai2Service windturbineTestingAi2Service;
+    @Autowired
+    private IWindpowerstationtestingpoint2Service windpowerstationtestingpoint2Service;
+
+    public static Map<String, List<Windturbine>> wtmap = new HashMap<>();
+
+    public static Map<String,Windturbine> wmap = new HashMap<>();
+
+    public static Map<String, Windpowerstation> wpmap = new HashMap<>();
+
+    public static List<Windpowerstation> wplist = new ArrayList<>();
+
+    public static List<Windturbine> wtls = new ArrayList<>();
+
+    public static Map<String, Map<String, Windturbinetestingpointai2>> wtpAimap = new HashMap<>();// 风电机测点AI表
+
+    public static Map<String,Map<String, Windpowerstationtestingpoint2>> wppointmap =new HashMap<>();
+
+    public static List<Project> projects = new ArrayList<>();
+
+    public static List<Line> lines = new ArrayList<>();
+
 
     @Override
-    public void run(String... args) {
-        logger.info("--------------------------------缓存开始--------------------------------");
-        if (redisService.hasKey("WT")){
-            String wt = redisService.get("WT");
-            wtpAimap = (Map<String, Map<String, Windturbinetestingpoint>>) JSONUtils.parse(wt);
-        }else {
-            List<Windturbinetestingpoint> windturbinetestingpointList = windturbinetestingpointService.list();
-            Map<String, Windturbinetestingpoint> map = null;
-
-            if(windturbinetestingpointList != null && !windturbinetestingpointList.isEmpty()){
-                for(Windturbinetestingpoint mp : windturbinetestingpointList){
-                    if(wtpAimap.containsKey(mp.getWindturbineid())){
-                        map = wtpAimap.get(mp.getWindturbineid());
-                        map.put(mp.getUniformcode(), mp);
-                    }else{
-                        map = new HashMap<String, Windturbinetestingpoint>();
-                        map.put(mp.getUniformcode(), mp);
-                        wtpAimap.put(mp.getWindturbineid(), map);
-                    }
+    public void run(String... args) throws Exception {
+
+        log.info("-------------------------------缓存开始--------------------------------------");
+
+        wplist = windpowerstationService.list();
+        wplist.stream().filter(i->i.getId().endsWith("FDC")).forEach(i->{
+            wpmap.put(i.getId(),i);
+        });
+
+        projects = projectService.list();
+
+        lines = lineService.list();
+
+        wtls = windturbineService.list();
+        wtls.stream().forEach(wt->{
+            wmap.put(wt.getId(),wt);
+            if (wtmap.containsKey(wt.getWindpowerstationid())){
+                wtmap.get(wt.getWindpowerstationid()).add(wt);
+            }else{
+                List<Windturbine> wts = new ArrayList<>();
+                wts.add(wt);
+                wtmap.put(wt.getWindpowerstationid(),wts);
+            }
+        });
+
+        List<Windturbinetestingpointai2> windturbinetestingpointai2List = windturbineTestingAi2Service.list();
+        Map<String, Windturbinetestingpointai2> map = null;
+
+        if(windturbinetestingpointai2List != null && !windturbinetestingpointai2List.isEmpty()){
+            for(Windturbinetestingpointai2 mp : windturbinetestingpointai2List){
+                if(wtpAimap.containsKey(mp.getWindturbineid())){
+                    map = wtpAimap.get(mp.getWindturbineid());
+                    map.put(mp.getUniformcode(), mp);
+                }else{
+                    map = new HashMap<String, Windturbinetestingpointai2>();
+                    map.put(mp.getUniformcode(), mp);
+                    wtpAimap.put(mp.getWindturbineid(), map);
                 }
             }
         }
-        logger.info("--------------------------------缓存结束--------------------------------");
+
+
+        List<Windpowerstationtestingpoint2> wplist = windpowerstationtestingpoint2Service.list();
+        for (Windpowerstationtestingpoint2 windpowerstationtestingpoint2 : wplist) {
+            if (wppointmap.containsKey(windpowerstationtestingpoint2.getWindpowerstationid())){
+                wppointmap.get(windpowerstationtestingpoint2.getWindpowerstationid()).put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
+            }else{
+                Map<String,Windpowerstationtestingpoint2> wpmap = new HashMap<>();
+                wpmap.put(windpowerstationtestingpoint2.getUniformcode(),windpowerstationtestingpoint2);
+                wppointmap.put(windpowerstationtestingpoint2.getWindpowerstationid(),wpmap);
+            }
+        }
+
+        log.info("-------------------------------缓存结束--------------------------------------");
     }
+//  取redis
+//    private Logger logger = LoggerFactory.getLogger(CacheContext.class);
+//    @Resource
+//    private IWindturbinetestingpointService windturbinetestingpointService;
+//    @Resource
+//    private RedisService redisService;
+//
+//    public static Map<String, Map<String, Windturbinetestingpoint>> wtpAimap = new HashMap<>();// 风电机测点表
+//
+//    @Override
+//    public void run(String... args) {
+//        logger.info("--------------------------------缓存开始--------------------------------");
+//        if (redisService.hasKey("WT")){
+//            String wt = redisService.get("WT");
+//            wtpAimap = (Map<String, Map<String, Windturbinetestingpoint>>) JSONUtils.parse(wt);
+//        }else {
+//            List<Windturbinetestingpoint> windturbinetestingpointList = windturbinetestingpointService.list();
+//            Map<String, Windturbinetestingpoint> map = null;
+//
+//            if(windturbinetestingpointList != null && !windturbinetestingpointList.isEmpty()){
+//                for(Windturbinetestingpoint mp : windturbinetestingpointList){
+//                    if(wtpAimap.containsKey(mp.getWindturbineid())){
+//                        map = wtpAimap.get(mp.getWindturbineid());
+//                        map.put(mp.getUniformcode(), mp);
+//                    }else{
+//                        map = new HashMap<String, Windturbinetestingpoint>();
+//                        map.put(mp.getUniformcode(), mp);
+//                        wtpAimap.put(mp.getWindturbineid(), map);
+//                    }
+//                }
+//            }
+//        }
+//        logger.info("--------------------------------缓存结束--------------------------------");
+//    }
 }

+ 21 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/BenchmarkMapper.java

@@ -0,0 +1,21 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Benchmark;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+public interface BenchmarkMapper extends BaseMapper<Benchmark> {
+
+    @Select("")
+    List<Benchmark> listTop(String timetype, String foreigntype);
+}

+ 23 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/BenchmarkingbetweenMapper.java

@@ -0,0 +1,23 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Benchmarkingbetween;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-24
+ */
+public interface BenchmarkingbetweenMapper extends BaseMapper<Benchmarkingbetween> {
+    @Select("select dutyname,sum(theoreticalgeneratity) theoreticalgeneratity,sum(generatity) generatity,sum(faultloss) faultloss,sum(mainloss) mainloss,sum(performanceloss) performanceloss,sum(rationingloss) rationingloss,sum(involvesloss) involvesloss from benchmarkingbetween where theday>=#{begin} and theday <=#{end} group by dutyname ")
+    public List<Benchmarkingbetween> findByBeginAndEnd(@Param(value = "begin")Date begin, @Param(value = "end")Date end);
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/DutyscheduleMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Dutyschedule;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-24
+ */
+public interface DutyscheduleMapper extends BaseMapper<Dutyschedule> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/EquipmentdaydetailedMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Equipmentdaydetailed;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-21
+ */
+public interface EquipmentdaydetailedMapper extends BaseMapper<Equipmentdaydetailed> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/LineMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Line;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-21
+ */
+public interface LineMapper extends BaseMapper<Line> {
+
+}

+ 31 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/OperationrecordMapper.java

@@ -0,0 +1,31 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Operationrecord;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-24
+ */
+public interface OperationrecordMapper extends BaseMapper<Operationrecord> {
+    @Select("select * from operationrecord where time>=#{begin} and time <=#{end} ")
+    public List<Operationrecord> listByBeginAndEnd(@Param(value = "begin") Date begin, @Param(value = "end")Date end);
+
+    @Select(" select s.name,o.wtid,o.id,w.windpowerstationid,o.time,o.value from operationrecord o left join windturbine w on w.id = o.wtid left join WindPowerStation s on s.id = w.windpowerstationid where w.windpowerstationid = #{WindPowerStation} and o.wtid = #{wtid} and o.time >=#{beginDate} and o.time <=#{endDate}")
+    public List<Map> listBy(@Param(value = "WindPowerStation") String WindPowerStation,@Param(value = "wtid")String wtid,
+                                @Param(value = "beginDate")Date beginDate,@Param(value = "endDate")Date endDate);
+
+    @Select(" select s.name,o.wtid,o.id,w.windpowerstationid,o.time,o.value from operationrecord o left join windturbine w on w.id = o.wtid left join WindPowerStation s on s.id = w.windpowerstationid where w.windpowerstationid = #{WindPowerStation} and o.wtid = #{wtid} and o.time >=#{beginDate} and o.time <=#{endDate}")
+    public List<Map> conversion(@Param(value = "WindPowerStation") String WindPowerStation,@Param(value = "wtid")String wtid,
+                                @Param(value = "beginDate")Date beginDate,@Param(value = "endDate")Date endDate);
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/ProjectMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Project;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-21
+ */
+public interface ProjectMapper extends BaseMapper<Project> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/Windpowerinfoday3Mapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerinfoday3;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+public interface Windpowerinfoday3Mapper extends BaseMapper<Windpowerinfoday3> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerinfodayMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerinfoday;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+public interface WindpowerinfodayMapper extends BaseMapper<Windpowerinfoday> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerspecificinfodayMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerspecificinfoday;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+public interface WindpowerspecificinfodayMapper extends BaseMapper<Windpowerspecificinfoday> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerstationMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerstation;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-06-01
+ */
+public interface WindpowerstationMapper extends BaseMapper<Windpowerstation> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/Windpowerstationtestingpoint2Mapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerstationtestingpoint2;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-05-13
+ */
+public interface Windpowerstationtestingpoint2Mapper extends BaseMapper<Windpowerstationtestingpoint2> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindpowerstationthewindinfoMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windpowerstationthewindinfo;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+public interface WindpowerstationthewindinfoMapper extends BaseMapper<Windpowerstationthewindinfo> {
+
+}

+ 17 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WindturbineMapper.java

@@ -0,0 +1,17 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windturbine;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-05-25
+ */
+public interface WindturbineMapper extends BaseMapper<Windturbine> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/Windturbinetestingpointai2Mapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Windturbinetestingpointai2;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-05-13
+ */
+public interface Windturbinetestingpointai2Mapper extends BaseMapper<Windturbinetestingpointai2> {
+
+}

+ 16 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/mapper/auto/WpmttrandmtbfdayMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.benchmarkinghistroy.mapper.auto;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.benchmarkinghistroy.model.auto.Wpmttrandmtbfday;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+public interface WpmttrandmtbfdayMapper extends BaseMapper<Wpmttrandmtbfday> {
+
+}

+ 132 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/model/auto/Benchmark.java

@@ -0,0 +1,132 @@
+package com.gyee.benchmarkinghistroy.model.auto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 谢生杰
+ * @since 2021-07-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("BENCHMARK")
+public class Benchmark extends Model {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "ID",type = IdType.INPUT)
+    private String id;
+
+    @TableField("RECORDDATE")
+    private Date recorddate;
+
+    @TableField("FOREIGNKEYID")
+    private String foreignkeyid;
+
+    @TableField("MARK")
+    private Double mark;
+
+    @TableField("CAPACITY")
+    private Double capacity;
+
+    @TableField("UNITS")
+    private Double units;
+
+    @TableField("THEORETICALPOWER")
+    private Double theoreticalpower;
+
+    @TableField("ACTUALPOWER")
+    private Double actualpower;
+
+    @TableField("DAYNHGZSSDL")
+    private Double daynhgzssdl;
+
+    @TableField("DAYNHWHSSDL")
+    private Double daynhwhssdl;
+
+    @TableField("DAYNHXDSSDL")
+    private Double daynhxdssdl;
+
+    @TableField("DAYNHQFDL")
+    private Double daynhqfdl;
+
+    @TableField("DAYNHCFDL")
+    private Double daynhcfdl;
+
+    @TableField("WINDENERGY")
+    private Double windenergy;
+
+    @TableField("POWERLOSSRATE")
+    private Double powerlossrate;
+
+    @TableField("PERFORMANCELOSSRATE")
+    private Double performancelossrate;
+
+    @TableField("COMPREHENSIVERATE")
+    private Double comprehensiverate;
+
+    @TableField("UTILIZATIONHOURS")
+    private Double utilizationhours;
+
+    @TableField("WINDPOWERACCURACY")
+    private Double windpoweraccuracy;
+
+    @TableField("AGCCURVEFOLLOWING")
+    private Double agccurvefollowing;
+
+    @TableField("MTBF")
+    private Double mtbf;
+
+    @TableField("MTTF")
+    private Double mttf;
+
+    @TableField("AVAILABILITY")
+    private Double availability;
+
+    @TableField("AVAILABILITYFACTOR")
+    private Double availabilityfactor;
+
+    @TableField("FAILURELOSSRATE")
+    private Double failurelossrate;
+
+    @TableField("MAINLOSSRATE")
+    private Double mainlossrate;
+
+    @TableField("MTTR")
+    private Double mttr;
+
+    @TableField("HIDDENTIMELY")
+    private Double hiddentimely;
+
+    @TableField("RESETTIMELYRATE")
+    private Double resettimelyrate;
+
+    @TableField("STATETRANSITIONRATE")
+    private Double statetransitionrate;
+
+    @TableField("ELIMINATIONRATE")
+    private Double eliminationrate;
+
+    @TableField("SPEED")
+    private Double speed;
+
+    @TableField("STATICWINDFREQUENCY")
+    private Double staticwindfrequency;
+
+    @TableField("EFFECTIVEWINDHOURRATE")
+    private Double effectivewindhourrate;
+    @TableField(exist = false)
+    private Double orderno;
+
+}

+ 0 - 0
histroy/benchmarking-histroy/src/main/java/com/gyee/benchmarkinghistroy/model/auto/Benchmarkingbetween.java


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików