Browse Source

Merge branch 'master' of http://124.70.43.205:3000/xieshengjie/sis-background

chenminghua 3 years ago
parent
commit
02452668cc
54 changed files with 4474 additions and 134 deletions
  1. 87 0
      cache/src/main/java/com/gyee/cache/common/CharsetKit.java
  2. 1015 0
      cache/src/main/java/com/gyee/cache/common/Convert.java
  3. 7 0
      cache/src/main/java/com/gyee/cache/common/DNAStatVal.java
  4. 6 0
      cache/src/main/java/com/gyee/cache/common/DNAVal.java
  5. 55 0
      cache/src/main/java/com/gyee/cache/common/PointData.java
  6. 94 0
      cache/src/main/java/com/gyee/cache/common/StrFormatter.java
  7. 446 0
      cache/src/main/java/com/gyee/cache/common/StringUtils.java
  8. 124 107
      cache/src/main/java/com/gyee/cache/init/CacheContext.java
  9. 23 0
      cache/src/main/java/com/gyee/cache/model/test/SampleLibraryVo.java
  10. 48 0
      cache/src/main/java/com/gyee/cache/util/golden/ApiGolden.java
  11. 1269 0
      cache/src/main/java/com/gyee/cache/util/golden/EdosUtil.java
  12. 27 0
      cache/src/main/java/com/gyee/cache/util/golden/GoldenConfig.java
  13. 235 0
      cache/src/main/java/com/gyee/cache/util/golden/IEdosUtil.java
  14. 34 0
      cache/src/main/java/com/gyee/cache/util/golden/StringUtil.java
  15. 28 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BaseTsQuery.java
  16. 38 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BasicTsData.java
  17. 29 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BasicTsPoint.java
  18. 24 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BlobTsData.java
  19. 22 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BlobWriteTsData.java
  20. 24 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BooleanTsData.java
  21. 19 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/BooleanWriteTsData.java
  22. 18 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/Coordinate.java
  23. 26 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/CoordinateTsData.java
  24. 21 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/CoordinateWriteTsData.java
  25. 30 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/DoubleStatData.java
  26. 25 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/DoubleTsData.java
  27. 19 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/DoubleWriteTsData.java
  28. 43 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/ErrorRequest.java
  29. 27 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/GeneralTsData.java
  30. 8 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/Interpolation.java
  31. 204 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/JsonObjectHelper.java
  32. 24 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/LongTsData.java
  33. 20 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/LongWriteTsData.java
  34. 24 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/StringTsData.java
  35. 34 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/StringUtil.java
  36. 20 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/StringWriteTsData.java
  37. 15 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsData.java
  38. 15 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsDataType.java
  39. 12 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsPoint.java
  40. 36 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsPointData.java
  41. 23 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsPointDataList.java
  42. 17 0
      cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsQuery.java
  43. 1 1
      cache/src/main/resources/application.yml
  44. 50 0
      cache/src/test/java/com/gyee/cache/CacheApplicationTests.java
  45. 4 0
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/controller/auto/BenchmarkController.java
  46. 15 9
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/controller/gradeevaluation/OutputController.java
  47. 23 0
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/model/test/SampleLibraryVo.java
  48. 12 2
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/auto/impl/BenchmarkServiceImpl.java
  49. 9 8
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/bigscreen/BigScreenService.java
  50. 14 3
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/gradeevaluation/OutputService.java
  51. 1 1
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/targetdata/TargetdataService.java
  52. 8 1
      gradeevaluation/src/main/java/com/gyee/gradeevaluation/variable/MainConstant.java
  53. 14 2
      gradeevaluation/src/test/java/com/gyee/gradeevaluation/GradeevaluationApplicationTests.java
  54. 8 0
      pom.xml

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

@@ -0,0 +1,87 @@
+package com.gyee.cache.common;
+
+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();
+    }
+
+}

File diff suppressed because it is too large
+ 1015 - 0
cache/src/main/java/com/gyee/cache/common/Convert.java


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

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

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

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

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

@@ -0,0 +1,55 @@
+package com.gyee.cache.common;
+
+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
cache/src/main/java/com/gyee/cache/common/StrFormatter.java

@@ -0,0 +1,94 @@
+package com.gyee.cache.common;
+
+
+/**
+ * 字符串格式化
+ * 
+ * @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();
+    }
+
+}

+ 446 - 0
cache/src/main/java/com/gyee/cache/common/StringUtils.java

@@ -0,0 +1,446 @@
+package com.gyee.cache.common;
+
+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 String getUUID(){
+        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
+        return uuid;
+    }
+    public static double round(double num, int digit) {
+
+        return new BigDecimal(num).setScale(digit, RoundingMode.HALF_UP).doubleValue();
+    }
+}

+ 124 - 107
cache/src/main/java/com/gyee/cache/init/CacheContext.java

@@ -15,6 +15,7 @@ import org.springframework.boot.CommandLineRunner;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -50,119 +51,135 @@ public class CacheContext implements CommandLineRunner {
     @Autowired
     private IModelpowerrdService modelpowerrdService;
 
-
-
+    public static Map<String, Map<String, Windturbinetestingpointai2>> wtpointMap = new HashMap<>();
+    public static List<Windturbine> wtls = new ArrayList<>();
     @Override
     public void run(String... args) throws Exception {
 
         Logger logger= LoggerFactory.getLogger(CacheContext.class);
-        logger.info("----------------------数据中心点开始");
-        //缓存golden 所有点
-        List<Datacenter> datacenterList = datacenterService.list();
-
-        datacenterList.stream().forEach(i->{
-            if (!redisService.hasKey(i.getTableid())){
-                QueryWrapper<Datacenterpoint> queryWrapper = new QueryWrapper<>();
-                queryWrapper.eq("tid",i.getTableid());
-                List<Datacenterpoint> realtimedataList = datacenterpointService.list(queryWrapper);
-                String s = null;
-                try {
-                    s = JSONUtil.objectToJson(realtimedataList);
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-                redisService.set(i.getTableid(),s);
+        logger.info("----------------------缓存开始");
+        wtls = windturbineService.list();
+        List<Windturbinetestingpointai2> wtplist = windturbinetestingpointai2Service.list();
+        for (Windturbinetestingpointai2 pointai : wtplist) {
+            if (wtpointMap.containsKey(pointai.getWindturbineid())){
+                wtpointMap.get(pointai.getWindturbineid()).put(pointai.getUniformcode(),pointai);
+            }else{
+                Map<String, Windturbinetestingpointai2> map = new HashMap<>();
+                map.put(pointai.getUniformcode(),pointai);
+                wtpointMap.put(pointai.getWindturbineid(),map);
             }
-        });
-        logger.info("----------------------数据中心点结束");
-        logger.info("----------------------设备点开始");
-        //缓存设备点
-        if (!redisService.hasKey("WT")){
-            Map<String,Map<String,Windturbinetestingpointai2>> wtaimap = new HashMap<>();
-            List<Windturbine> windturbineList = windturbineService.list();
-            windturbineList.stream().forEach(i->{
-                Map<String,Windturbinetestingpointai2> codeaimap = new HashMap<>();
-                QueryWrapper<Windturbinetestingpointai2> qw = new QueryWrapper<>();
-                qw.eq("windturbineid",i.getId());
-                List<Windturbinetestingpointai2> windturbinetestingpointai2List = windturbinetestingpointai2Service.list(qw);
-                windturbinetestingpointai2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                wtaimap.put(i.getId(),codeaimap);
-            });
-            String s = JSONObject.toJSONString(wtaimap);
-            redisService.set("WT",s);
-        };
-        logger.info("----------------------设备点结束");
-        logger.info("----------------------线路点开始");
-        //缓存线路点
-        if (!redisService.hasKey("LN")){
-            Map<String,Map<String, Windpowerstationtestingpoint2>> lnaimap = new HashMap<>();
-            List<Line> lineList = lineService.list();
-            lineList.stream().forEach(i->{
-                Map<String,Windpowerstationtestingpoint2> codeaimap = new HashMap<>();
-                QueryWrapper<Windpowerstationtestingpoint2> qw = new QueryWrapper<>();
-                qw.eq("windpowerstationid",i.getId());
-                List<Windpowerstationtestingpoint2> windpowerstationtestingpoint2List = windpowerstationtestingpoint2Service.list(qw);
-                windpowerstationtestingpoint2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                lnaimap.put(i.getId(),codeaimap);
-            });
-            String s = JSONObject.toJSONString(lnaimap);
-            redisService.set("LN",s);
-        };
-        logger.info("----------------------线路点结束");
-        logger.info("----------------------工程点开始");
-        //缓存工程点
-        if (!redisService.hasKey("PJ")){
-            Map<String,Map<String, Windpowerstationtestingpoint2>> pjaimap = new HashMap<>();
-            List<Project> projectList = projectService.list();
-            projectList.stream().forEach(i->{
-                Map<String,Windpowerstationtestingpoint2> codeaimap = new HashMap<>();
-                QueryWrapper<Windpowerstationtestingpoint2> qw = new QueryWrapper<>();
-                qw.eq("windpowerstationid",i.getId());
-                List<Windpowerstationtestingpoint2> windpowerstationtestingpoint2List = windpowerstationtestingpoint2Service.list(qw);
-                windpowerstationtestingpoint2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                pjaimap.put(i.getId(),codeaimap);
-            });
-            String s = JSONObject.toJSONString(pjaimap);
-            redisService.set("PJ",s);
-        };
-        logger.info("----------------------工程点结束");
-        logger.info("----------------------场站点开始");
-        //缓存场站点
-        if (!redisService.hasKey("WP")){
-            Map<String,Map<String, Windpowerstationtestingpoint2>> wpaimap = new HashMap<>();
-            List<Windpowerstation> wpList = windpowerstationService.list();
-            List<String> wpids = wpList.stream().map(i -> i.getId()).collect(Collectors.toList());
-            wpids.add("0");
-            wpids.add("-1");
-            wpids.add("-2");
-            wpids.stream().forEach(i->{
-                Map<String,Windpowerstationtestingpoint2> codeaimap = new HashMap<>();
-                QueryWrapper<Windpowerstationtestingpoint2> qw = new QueryWrapper<>();
-                qw.eq("windpowerstationid",i);
-                List<Windpowerstationtestingpoint2> windpowerstationtestingpoint2List = windpowerstationtestingpoint2Service.list(qw);
-                windpowerstationtestingpoint2List.stream().forEach(x->{
-                    codeaimap.put(x.getUniformcode(),x);
-                });
-                wpaimap.put(i,codeaimap);
-            });
-            String s = JSONObject.toJSONString(wpaimap);
-
-            redisService.set("WP",s);
-        };
-        logger.info("----------------------场站点结束");
-        logger.info("----------------------MODELPOWERRD表开始");
-        if (!redisService.hasKey("MPRD")){
-            List<Modelpowerrd> mordlist = modelpowerrdService.list();
-            String s = JSONObject.toJSONString(mordlist);
-            redisService.set("MPRD",s);
         }
-        logger.info("----------------------MODELPOWERRD表结束");
+
+        logger.info("----------------------缓存结束");
+
+
+        logger.info("----------------------数据中心点开始");
+        //缓存golden 所有点
+//        List<Datacenter> datacenterList = datacenterService.list();
+//
+//        datacenterList.stream().forEach(i->{
+//            if (!redisService.hasKey(i.getTableid())){
+//                QueryWrapper<Datacenterpoint> queryWrapper = new QueryWrapper<>();
+//                queryWrapper.eq("tid",i.getTableid());
+//                List<Datacenterpoint> realtimedataList = datacenterpointService.list(queryWrapper);
+//                String s = null;
+//                try {
+//                    s = JSONUtil.objectToJson(realtimedataList);
+//                } catch (IOException e) {
+//                    e.printStackTrace();
+//                }
+//                redisService.set(i.getTableid(),s);
+//            }
+//        });
+//        logger.info("----------------------数据中心点结束");
+//        logger.info("----------------------设备点开始");
+//        //缓存设备点
+//        if (!redisService.hasKey("WT")){
+//            Map<String,Map<String,Windturbinetestingpointai2>> wtaimap = new HashMap<>();
+//            List<Windturbine> windturbineList = windturbineService.list();
+//            windturbineList.stream().forEach(i->{
+//                Map<String,Windturbinetestingpointai2> codeaimap = new HashMap<>();
+//                QueryWrapper<Windturbinetestingpointai2> qw = new QueryWrapper<>();
+//                qw.eq("windturbineid",i.getId());
+//                List<Windturbinetestingpointai2> windturbinetestingpointai2List = windturbinetestingpointai2Service.list(qw);
+//                windturbinetestingpointai2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                wtaimap.put(i.getId(),codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(wtaimap);
+//            redisService.set("WT",s);
+//        };
+//        logger.info("----------------------设备点结束");
+//        logger.info("----------------------线路点开始");
+//        //缓存线路点
+//        if (!redisService.hasKey("LN")){
+//            Map<String,Map<String, Windpowerstationtestingpoint2>> lnaimap = new HashMap<>();
+//            List<Line> lineList = lineService.list();
+//            lineList.stream().forEach(i->{
+//                Map<String,Windpowerstationtestingpoint2> codeaimap = new HashMap<>();
+//                QueryWrapper<Windpowerstationtestingpoint2> qw = new QueryWrapper<>();
+//                qw.eq("windpowerstationid",i.getId());
+//                List<Windpowerstationtestingpoint2> windpowerstationtestingpoint2List = windpowerstationtestingpoint2Service.list(qw);
+//                windpowerstationtestingpoint2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                lnaimap.put(i.getId(),codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(lnaimap);
+//            redisService.set("LN",s);
+//        };
+//        logger.info("----------------------线路点结束");
+//        logger.info("----------------------工程点开始");
+//        //缓存工程点
+//        if (!redisService.hasKey("PJ")){
+//            Map<String,Map<String, Windpowerstationtestingpoint2>> pjaimap = new HashMap<>();
+//            List<Project> projectList = projectService.list();
+//            projectList.stream().forEach(i->{
+//                Map<String,Windpowerstationtestingpoint2> codeaimap = new HashMap<>();
+//                QueryWrapper<Windpowerstationtestingpoint2> qw = new QueryWrapper<>();
+//                qw.eq("windpowerstationid",i.getId());
+//                List<Windpowerstationtestingpoint2> windpowerstationtestingpoint2List = windpowerstationtestingpoint2Service.list(qw);
+//                windpowerstationtestingpoint2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                pjaimap.put(i.getId(),codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(pjaimap);
+//            redisService.set("PJ",s);
+//        };
+//        logger.info("----------------------工程点结束");
+//        logger.info("----------------------场站点开始");
+//        //缓存场站点
+//        if (!redisService.hasKey("WP")){
+//            Map<String,Map<String, Windpowerstationtestingpoint2>> wpaimap = new HashMap<>();
+//            List<Windpowerstation> wpList = windpowerstationService.list();
+//            List<String> wpids = wpList.stream().map(i -> i.getId()).collect(Collectors.toList());
+//            wpids.add("0");
+//            wpids.add("-1");
+//            wpids.add("-2");
+//            wpids.stream().forEach(i->{
+//                Map<String,Windpowerstationtestingpoint2> codeaimap = new HashMap<>();
+//                QueryWrapper<Windpowerstationtestingpoint2> qw = new QueryWrapper<>();
+//                qw.eq("windpowerstationid",i);
+//                List<Windpowerstationtestingpoint2> windpowerstationtestingpoint2List = windpowerstationtestingpoint2Service.list(qw);
+//                windpowerstationtestingpoint2List.stream().forEach(x->{
+//                    codeaimap.put(x.getUniformcode(),x);
+//                });
+//                wpaimap.put(i,codeaimap);
+//            });
+//            String s = JSONObject.toJSONString(wpaimap);
+//
+//            redisService.set("WP",s);
+//        };
+//        logger.info("----------------------场站点结束");
+//        logger.info("----------------------MODELPOWERRD表开始");
+//        if (!redisService.hasKey("MPRD")){
+//            List<Modelpowerrd> mordlist = modelpowerrdService.list();
+//            String s = JSONObject.toJSONString(mordlist);
+//            redisService.set("MPRD",s);
+//        }
+//        logger.info("----------------------MODELPOWERRD表结束");
 
 
     }

+ 23 - 0
cache/src/main/java/com/gyee/cache/model/test/SampleLibraryVo.java

@@ -0,0 +1,23 @@
+package com.gyee.cache.model.test;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : SampleLibraryVo
+ * @Author : xieshengjie
+ * @Date: 2021/11/12 16:09
+ * @Description :样本库vo
+ */
+@Data
+public class SampleLibraryVo implements Serializable {
+
+    private static final long serialVersionUID = -1625722918616233085L;
+    private Long time;
+    private Double speed;
+    private Double power;
+    private Double turnspeed;
+    private Integer status;
+    private Integer underissuedstatus;
+}

+ 48 - 0
cache/src/main/java/com/gyee/cache/util/golden/ApiGolden.java

@@ -0,0 +1,48 @@
+/** 
+ * Project Name:nxfd2 
+ * File Name:ApiEdos.java 
+ * Package Name:com.gyee.frame.util
+ * Date:2016-7-25下午12:26:14 
+ * Copyright (c) 2016, chenzhou1025@126.com All Rights Reserved. 
+ * 
+ */
+
+package com.gyee.cache.util.golden;
+
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * ClassName:ApiEdos <br/>
+ * Function: TODO ADD FUNCTION. <br/>
+ * Reason: TODO ADD REASON. <br/>
+ * Date: 2016-7-25 下午12:26:14 <br/>
+ * 
+ * @author 石林
+ * @version
+ * @since JDK 1.6
+ * @see
+ */
+public class ApiGolden {
+
+    private static RestTemplate restTemplate = null;
+
+  
+    private ApiGolden() {
+
+    }
+
+    public static RestTemplate getInstance() {
+    	
+    	
+
+        if (restTemplate == null) {
+        	
+        	restTemplate = new RestTemplate();
+
+        }
+
+        return restTemplate;
+
+    }
+
+}

File diff suppressed because it is too large
+ 1269 - 0
cache/src/main/java/com/gyee/cache/util/golden/EdosUtil.java


+ 27 - 0
cache/src/main/java/com/gyee/cache/util/golden/GoldenConfig.java

@@ -0,0 +1,27 @@
+package com.gyee.cache.util.golden;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 读取项目相关配置
+ * 
+ * @author gyee
+ */
+
+@Configuration
+@ConfigurationProperties(prefix = "golden")
+public class GoldenConfig
+{
+    private static String baseURL;
+
+    public static String getBaseurl() {
+        return baseURL;
+    }
+
+    public  void setBaseurl(String baseURL) {
+        GoldenConfig.baseURL = baseURL;
+    }
+}
+
+

+ 235 - 0
cache/src/main/java/com/gyee/cache/util/golden/IEdosUtil.java

@@ -0,0 +1,235 @@
+package com.gyee.cache.util.golden;
+
+
+
+
+import com.gyee.cache.common.DNAStatVal;
+import com.gyee.cache.common.DNAVal;
+import com.gyee.cache.common.PointData;
+import com.gyee.cache.model.auto.Windpowerstationtestingpoint2;
+import com.gyee.cache.model.auto.Windturbinetestingpointai2;
+
+import java.util.List;
+import java.util.Map;
+
+
+public interface IEdosUtil {
+
+	/**
+	 * 通过风场测点获得测点实时数据
+	 * @param point 只是用了code字段,作为唯一标识
+	 * @return
+	 * @throws Exception
+	 */
+    public PointData getRealData(Windpowerstationtestingpoint2 point) throws Exception;
+
+    /**
+     * 通过风场测点获得测点历史快照数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(Windpowerstationtestingpoint2 point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风场测点获得测点历史存储数据,存多少取多少
+     * @param point 只是用了code字段,作为唯一标识
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(Windpowerstationtestingpoint2 point, Long beginDate, Long endDate) throws Exception;
+
+    /**
+     * 通过风机测点获得测点实时数据
+     * @param point 只是用了id字段,作为唯一标识
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(Windturbinetestingpointai2 point) throws Exception;
+
+    /**
+     * 通过风机测点获得历史快照
+     * @param point  只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(Windturbinetestingpointai2 point, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风机测点获得测点历史存储数据,存多少取多少
+     * @param point 只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(Windturbinetestingpointai2 point, Long beginDate, Long endDate) throws Exception;
+
+
+    /**
+     * 通过风机测点获得测点实时数据
+     * @param pointid 测点编号
+     * @return
+     * @throws Exception
+     */
+    public PointData getRealData(String pointid) throws Exception;
+
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的数组
+     * @return 列表集合
+     * @throws Exception
+     */
+    public List<PointData> getRealData(String... pointids) throws Exception;
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的列表
+     * @return 列表集合
+     * @throws Exception
+     */
+    public List<PointData> getRealData(List<String> pointids) throws Exception;
+    /**
+     * 通过全局点名获得测点实时数据 读取多个点
+     * @param pointids 测点的数组
+     * @return Map集合
+     * @throws Exception
+     */
+    public Map<String,Double> getRealDataMap(String... pointids) throws Exception;
+
+    /**
+     * 通过全局点名获得历史数据快照
+     * @param pointid  全局点名
+     * @param beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasSnap(String pointid, Long beginDate, Long endDate, Long count, Long pried) throws Exception;
+
+    /**
+     * 通过风机测点获得测点历史存储数据,存多少取多少
+     * @param pointid 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistoryDatasRaw(String pointid, Long beginDate, Long endDate) throws Exception;
+
+
+    /**
+     * 通过风机测点获得测点指定时间周期的统计数据
+     * @param point 只是用了id字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(Windturbinetestingpointai2 point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过风场测点获得测点指定时间周期的统计数据
+     * @param point 只是用了code字段,作为唯一标识
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(Windpowerstationtestingpoint2 point, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过全局点名获得测点指定时间周期的统计数据
+     * @param pointid 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param count  点数
+     * @param pried  时间间隔
+     * @type 0、最大值。1、最小值。、平均值
+     * @return
+     * @throws Exception
+     */
+    public List<PointData> getHistStat(String pointid, Long beginDate, Long endDate, Long count, Long pried, int type) throws Exception;
+
+    /**
+     * 通过全局点名获得测点指定时间周期的统计数据 同时返回max、min、avg数据
+     * @param point 全局点名
+     * @param  beginDate 开始时间(秒级)
+     * @param endDate 结束时间(秒级)
+     * @param pried  时间间隔
+     * @return
+     * @throws Exception
+     */
+    public DNAStatVal[] getHistStat(String point, Long beginDate, Long endDate, Integer pried) throws Exception;
+    /**
+     * 补录单点历史数据
+     * @param point 测点对象
+     * @return
+     * @throws Exception
+     */
+    public void updatePoint(PointData point) throws Exception;
+
+    /**
+     * 批量查询实时数据
+     * @param tagNames 测点字符串数组
+     * @return
+     * @throws Exception
+     */
+
+    public DNAVal[] getRealtimeTagValues(String... tagNames) throws Exception;
+
+    /**
+     * 批量插入历史数据
+     * @param pointls 测点对象集合
+     * @throws Exception
+     */
+    public void updatePoint(List<PointData> pointls) throws Exception;
+
+    /**
+     * 单点写入实时数据
+     * @param point 测点对象
+     * @throws Exception
+     */
+    public void sendSinglePoint(PointData point) throws Exception ;
+    /**
+     * 批量写入实时数据
+     * @param pointls 测点对象列表
+     * @throws Exception
+     */
+    public void sendMultiPoint(List<PointData> pointls) throws Exception ;
+
+    /**
+     * 通过两个字符串数组对象批量写入实时数据
+     * @param realvalue 插入值字符串数组
+     * @param pointls 存储对象数组对象
+     * @throws Exception
+     */
+
+    public void sendMultiPoint(String[] realvalue,DNAVal[] pointls) throws Exception;
+    /**
+     *
+     * @param nameList 测点名称列表集合
+     * @param tTime  时间点(秒级)
+     * @return
+     * @throws Exception
+     */
+    public DNAVal[] getHistMatrix(String[] nameList, int tTime) throws Exception;
+
+}

+ 34 - 0
cache/src/main/java/com/gyee/cache/util/golden/StringUtil.java

@@ -0,0 +1,34 @@
+package com.gyee.cache.util.golden;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * String辅助类
+ * 
+ */
+public class StringUtil extends StringUtils {
+	
+	/**
+	 * 非空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isNotBlank(Object obj) {
+		return !isBlank(obj);
+	}
+
+	/**
+	 * 为空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isBlank(Object obj) {
+		if (obj == null || StringUtils.isBlank(obj.toString())) {
+			return true;
+		}
+		return false;
+	}
+
+}

+ 28 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BaseTsQuery.java

@@ -0,0 +1,28 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+@Data
+public class BaseTsQuery implements TsQuery {
+
+    private final TsPoint tsPoint;
+    private final long startTs;
+    private final long endTs;
+    private final int interval;
+    private final int limit;
+    private final Interpolation interpolation;
+
+    public BaseTsQuery(TsPoint tsPoint, long startTs, long endTs, int interval, int limit, Interpolation interpolation) {
+        this.tsPoint = tsPoint;
+        this.startTs = startTs;
+        this.endTs = endTs;
+        this.interval = interval;
+        this.limit = limit;
+        this.interpolation = interpolation;
+    }
+
+    public BaseTsQuery(TsPoint tsPoint, long startTs, long endTs) {
+        this(tsPoint, startTs, endTs, 1, 1, Interpolation.RAW);
+    }
+
+}

+ 38 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BasicTsData.java

@@ -0,0 +1,38 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public abstract class BasicTsData implements TsData, Comparable<BasicTsData>{
+
+    private final long ts;
+
+    private final short status;
+
+    public BasicTsData(long ts, short status) {
+        this.ts = ts;
+        this.status = status;
+    }
+
+    public long getTs() {
+        return ts;
+    }
+
+    public short getStatus() {
+        return status;
+    }
+
+    @Override
+    public int compareTo(BasicTsData o) {
+        return Long.compare(ts, o.ts);
+    }
+
+    @Override
+    public String toString() {
+        return "BasicTsData{ts='" + ts +
+                "', status='" + this.getStatus() +
+                "'}";
+    }
+
+}
+

+ 29 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BasicTsPoint.java

@@ -0,0 +1,29 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class BasicTsPoint implements TsPoint{
+
+    private final String id;
+
+    private final TsDataType tsDataType;
+
+    public BasicTsPoint(String id,  TsDataType tsDataType) {
+        this.id = id;
+        this.tsDataType = tsDataType;
+    }
+
+    public String getId() { return id; }
+
+    public TsDataType getTsDataType() {return tsDataType; }
+
+    @Override
+    public String toString() {
+        return "BasicTsPoint{id='" + id +
+                "', dataType='" + this.getTsDataType() +
+                "'}";
+    }
+
+}
+

+ 24 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BlobTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import java.util.Base64;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class BlobTsData extends BasicTsData {
+
+    private final byte[] blob;
+
+    public BlobTsData(long ts, short status, byte[] blob) {
+        super(ts, status);
+        this.blob = blob;
+    }
+
+    //public byte[] getBlob() { return  blob ;}
+
+    public String getBlobValue() {
+        return Base64.getEncoder().encodeToString(blob);
+    }
+
+}
+

+ 22 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BlobWriteTsData.java

@@ -0,0 +1,22 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+import java.util.Base64;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class BlobWriteTsData {
+    private String tagName;
+    private long ts;
+    private  byte[]blob;
+
+    public String getValue() {
+        return Base64.getEncoder().encodeToString(blob);
+    }
+
+}

+ 24 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BooleanTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class BooleanTsData extends BasicTsData {
+
+    private final boolean actualValue;
+
+    public BooleanTsData(long ts, short status, boolean actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+//    public boolean getActualValue() {
+//        return actualValue;
+//    }
+
+    public String getBooleanValue() {
+        return Boolean.toString(actualValue);
+    }
+
+}
+

+ 19 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/BooleanWriteTsData.java

@@ -0,0 +1,19 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class BooleanWriteTsData  {
+    private String tagName;
+    private long ts;
+    private boolean actualValue;
+
+    public boolean getValue() {
+        return this.actualValue;
+    }
+}

+ 18 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/Coordinate.java

@@ -0,0 +1,18 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+public class Coordinate {
+
+    private double latitude;
+
+    private double longitude;
+
+}
+

+ 26 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/CoordinateTsData.java

@@ -0,0 +1,26 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class CoordinateTsData extends BasicTsData {
+
+    private final Coordinate coordinate;
+
+    public CoordinateTsData(long ts, short status, double latitude, double longitude) {
+        super(ts, status);
+        this.coordinate = new Coordinate(latitude, longitude);
+    }
+
+    public CoordinateTsData(long ts, short status, Coordinate coordinate) {
+        super(ts, status);
+        this.coordinate = coordinate;
+    }
+
+    public Coordinate getCoordinateValue() {
+        return coordinate;
+        //return String.format("{\"longitude\":%f,\"latitude\":\"%f\"}", longitude, latitude);
+    }
+
+}
+

+ 21 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/CoordinateWriteTsData.java

@@ -0,0 +1,21 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class CoordinateWriteTsData  {
+
+    private String tagName;
+    private long ts;
+    private  double latitude;
+    private  double longitude;
+
+    public double getLatitude() { return  latitude ;}
+    public double getLongitude() {return  longitude; }
+
+}

+ 30 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/DoubleStatData.java

@@ -0,0 +1,30 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class DoubleStatData {
+
+    private DoubleTsData avg;
+    private DoubleTsData max;
+    private DoubleTsData min;
+
+    public DoubleStatData(DoubleTsData avg, DoubleTsData max, DoubleTsData min) {
+        this.avg = avg;
+        this.max = max;
+        this.min = min;
+    }
+
+    public DoubleTsData getAvg() {
+        return avg;
+    }
+
+    public DoubleTsData getMax() {
+        return max;
+    }
+
+    public DoubleTsData getMin() {
+        return min;
+    }
+}
+

+ 25 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/DoubleTsData.java

@@ -0,0 +1,25 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class DoubleTsData extends BasicTsData {
+
+    private final double actualValue;
+
+    public DoubleTsData(long ts, short status, double actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+
+    public double getDoubleValue() {
+        return actualValue;
+    }
+
+//    public String getValue() {
+//        return Double.toString(actualValue);
+//    }
+
+}
+

+ 19 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/DoubleWriteTsData.java

@@ -0,0 +1,19 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class DoubleWriteTsData  {
+    private String tagName;
+    private long ts;
+    private double actualValue;
+
+    public double getValue() {
+        return this.actualValue;
+    }
+}

+ 43 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/ErrorRequest.java

@@ -0,0 +1,43 @@
+package com.gyee.cache.util.golden.timeseries;
+
+
+
+
+
+
+import com.gyee.cache.common.PointData;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @descrition:接口请求失败返回操作类
+ * @author:Wanghs
+ * @date:2018-05-21
+ */
+public class ErrorRequest {
+
+    public static List<PointData> RequestListError(String pointId) {
+        List<PointData> dataList = new ArrayList<>();
+        return dataList;
+    }
+
+    public static List<PointData> RequestListError(String... pointId) {
+        List<PointData> dataList = new ArrayList<>();
+        return dataList;
+    }
+
+    public static PointData RequestError(String pointId) {
+        PointData data = new PointData();
+        data.setPointValueInDouble(0);
+        data.setPointName("0");
+        return data;
+    }
+
+    public static Map<String, Double> RequestMapError() {
+        Map<String, Double> resultMap = new HashMap();
+        return resultMap;
+    }
+}

+ 27 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/GeneralTsData.java

@@ -0,0 +1,27 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Optional;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GeneralTsData implements TsData {
+
+    private long ts;
+    private short status;
+    private Optional<Double> doubleValue;
+    private Optional<Long> longValue;
+    private Optional<Boolean> booleanValue;
+    private Optional<String> stringValue;
+    private Optional<String> blobValue;
+    private Optional<Coordinate> coordinateValue;
+
+}
+

+ 8 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/Interpolation.java

@@ -0,0 +1,8 @@
+
+package com.gyee.cache.util.golden.timeseries;
+
+public enum Interpolation {
+    SNAP,   // 历史快照数据
+    INTERPOLATION, //插值
+    RAW    //原始数据
+}

+ 204 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/JsonObjectHelper.java

@@ -0,0 +1,204 @@
+package com.gyee.cache.util.golden.timeseries;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.gyee.cache.common.DNAStatVal;
+import com.gyee.cache.common.DNAVal;
+import com.gyee.cache.common.PointData;
+
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * @descrition:JSONObject转实体辅助类
+ * @author:Wanghs
+ * @date:2018-05-10
+ */
+public class JsonObjectHelper {
+    public static List<PointData> phrasePointData(JSONArray jsonArray, String tagName) {
+        List<PointData> result = new ArrayList<>();
+
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject tsData = jsonArray.getJSONObject(i);
+
+            Long ts = tsData.getLong("ts");
+            String pointValue = null;
+            if (tsData.containsKey("doubleValue")) {
+                pointValue = tsData.getString("doubleValue");
+            } else if (tsData.containsKey("booleanValue")) {
+                pointValue = tsData.getString("booleanValue");
+            } else if (tsData.containsKey("longValue")) {
+                pointValue = tsData.getString("longValue");
+            } else if (tsData.containsKey("stringValue")) {
+                pointValue = tsData.getString("stringValue");
+            }
+            PointData pointData = new PointData();
+            pointData.setEdnaId(tagName);
+            pointData.setPointName("1");
+            pointData.setPointTime(ts / 1000);
+            pointData.setPointValue(pointValue);
+            pointData.setPointValueInDouble(Double.parseDouble(pointValue));
+            //System.out.println("key= " + tagName + ", ts = " + ts + ", value = " + pointValue);
+            result.add(pointData);
+        }
+        return result;
+    }
+
+
+    public static List<PointData> phrasePointData(JSONObject jsonObject) {
+        List<PointData> result = new ArrayList<>();
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+        while (sIterator.hasNext()) {
+            // 获得key
+            String key = sIterator.next();
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            Long ts = jsonData.getLong("ts");
+            String pointValue = null;
+            if (jsonData.containsKey("doubleValue")) {
+                pointValue = jsonData.getString("doubleValue");
+            } else if (jsonData.containsKey("booleanValue")) {
+                pointValue = jsonData.getString("booleanValue");
+            } else if (jsonData.containsKey("longValue")) {
+                pointValue = jsonData.getString("longValue");
+            } else if (jsonData.containsKey("stringValue")) {
+                pointValue = jsonData.getString("stringValue");
+            }
+
+            PointData pointData = new PointData();
+            pointData.setEdnaId(key);
+            pointData.setPointName("1");
+            pointData.setPointValue(pointValue);
+            pointData.setPointTime(ts/1000);
+            if(pointValue.equals("false")  )
+            {
+            	pointData.setPointValueInDouble(0.0);
+            }else  if(pointValue.equals("true") )
+            {
+            	pointData.setPointValueInDouble(1.0);
+            }else
+            {
+                pointData.setPointValueInDouble(Double.parseDouble(pointValue));
+            }
+
+         //  System.out.println("key= " + key + ", ts = " + ts + ", value = " + pointValue);
+            result.add(pointData);
+        }
+        return result;
+    }
+    /**
+     * @param arry    DoubleStatData集合
+     * @param tagName 标签点名
+     * @param type    0、最大值。1、最小值。2、平均值
+     */
+    public static List<PointData> GeneralTsDataToPointDataByStat(JSONArray arry, String tagName, int type) {
+        List<PointData> result = new ArrayList<>();
+        for (int i = 0; i < arry.size(); i++) {
+            JSONObject jsonData = arry.getJSONObject(i);
+            PointData data = new PointData();
+            data.setEdnaId(tagName);
+            data.setPointName("1");
+            JSONObject avgData = null;
+            JSONObject maxData = null;
+            JSONObject minData = null;
+            if (jsonData.containsKey("avg")) {
+                avgData = jsonData.getJSONObject("avg");
+            }
+            if (jsonData.containsKey("max")) {
+                maxData = jsonData.getJSONObject("max");
+            }
+            if (jsonData.containsKey("min")) {
+                minData = jsonData.getJSONObject("min");
+            }
+            switch (type) {
+                case 0:
+                    data.setPointValue(String.valueOf(maxData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(maxData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(maxData.getString("ts")) / 1000);
+                    break;
+                case 1:
+                    data.setPointValue(String.valueOf(minData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(minData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(minData.getString("ts")) / 1000);
+                    break;
+                case 2:
+                    data.setPointValue(String.valueOf(avgData.getString("doubleValue")));
+                    data.setPointValueInDouble(Double.valueOf(avgData.getString("doubleValue")));
+                    data.setPointTime(Long.valueOf(avgData.getString("ts")) / 1000);
+                    break;
+                default:
+                    break;
+            }
+            result.add(data);
+        }
+        return result;
+    }
+
+    public static DNAVal[] phraseDNAVal(JSONObject jsonObject, String[] tagName) {
+        DNAVal[] arr = new DNAVal[jsonObject.size()];
+        List<DNAVal> list = new ArrayList<>();
+        Iterator<String> sIterator = jsonObject.keySet().iterator();
+
+        for (int i = 0; i < tagName.length; i++) {
+            // 获得key
+            String key = tagName[i];
+            // 根据key获得value, value也可以是JSONObject,JSONArray,使用对应的参数接收即可
+            JSONObject jsonData = jsonObject.getJSONObject(key);
+            DNAVal data = new DNAVal();
+            data.Time = Integer.parseInt(String.valueOf(Long.valueOf(jsonData.getString("ts")) / 1000));
+            data.Status = (short) jsonData.getShortValue("status");
+            data.DValue = (Double.valueOf(jsonData.getDoubleValue("doubleValue")));
+            list.add(data);
+        }
+
+        return list.toArray(arr);
+    }
+
+    public static DNAStatVal[] phraseDNAVal(JSONArray jsonArray) {
+
+        DNAStatVal[] arr = new DNAStatVal[jsonArray.size()];
+        List<DNAStatVal> list = new ArrayList<>();
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject jsonData = jsonArray.getJSONObject(i);
+            JSONObject avgData = null;
+            JSONObject maxData = null;
+            JSONObject minData = null;
+            if (jsonData.containsKey("avg")) {
+                avgData = jsonData.getJSONObject("avg");
+            }
+            if (jsonData.containsKey("max")) {
+                maxData = jsonData.getJSONObject("max");
+            }
+            if (jsonData.containsKey("min")) {
+                minData = jsonData.getJSONObject("min");
+            }
+            DNAStatVal statVal = new DNAStatVal();
+
+            DNAVal avgVal = new DNAVal();
+            DNAVal maxVal = new DNAVal();
+            DNAVal minVal = new DNAVal();
+
+            avgVal.Time = Integer.valueOf(String.valueOf(Long.valueOf(avgData.getString("ts")) / 1000));
+            avgVal.DValue = Double.valueOf(avgData.getString("doubleValue"));
+
+            maxVal.Time =  Integer.valueOf(String.valueOf(Long.valueOf(maxData.getString("ts")) / 1000));
+            maxVal.DValue = Double.valueOf(maxData.getString("doubleValue"));
+
+            minVal.Time =  Integer.valueOf(String.valueOf(Long.valueOf(minData.getString("ts")) / 1000));
+            minVal.DValue = Double.valueOf(minData.getString("doubleValue"));
+
+            statVal.max = maxVal;
+            statVal.min = minVal;
+            statVal.avg = avgVal;
+
+            list.add(statVal);
+        }
+
+        return list.toArray(arr);
+    }
+
+}

+ 24 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/LongTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class LongTsData extends BasicTsData {
+
+    private final long actualValue;
+
+    public LongTsData(long ts, short status, long actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+    public long getLongValue() {
+        return actualValue;
+    }
+
+//    public String getValue() {
+//        return Long.toString(actualValue);
+//    }
+
+}
+

+ 20 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/LongWriteTsData.java

@@ -0,0 +1,20 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class LongWriteTsData  {
+
+    private String tagName;
+    private long ts;
+    private long actualValue;
+
+    public long getValue() {
+        return this.actualValue;
+    }
+}

+ 24 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/StringTsData.java

@@ -0,0 +1,24 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public class StringTsData extends BasicTsData {
+
+    private final String actualValue;
+
+    public StringTsData(long ts, short status, String actualValue) {
+        super(ts, status);
+        this.actualValue = actualValue;
+    }
+
+//    public String getActualValue() {
+//        return actualValue;
+//    }
+
+    public String getStringValue() {
+        return actualValue;
+    }
+
+}
+

+ 34 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/StringUtil.java

@@ -0,0 +1,34 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * String辅助类
+ * 
+ */
+public class StringUtil extends StringUtils {
+	
+	/**
+	 * 非空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isNotBlank(Object obj) {
+		return !isBlank(obj);
+	}
+
+	/**
+	 * 为空判断
+	 * 
+	 * @param obj
+	 * @return
+	 */
+	public static boolean isBlank(Object obj) {
+		if (obj == null || StringUtils.isBlank(obj.toString())) {
+			return true;
+		}
+		return false;
+	}
+
+}

+ 20 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/StringWriteTsData.java

@@ -0,0 +1,20 @@
+package com.gyee.cache.util.golden.timeseries;
+
+import lombok.Data;
+
+/**
+ * @descrition:String类型写入实体类
+ * @author:Wanghs
+ * @date:2018-05-04
+ */
+@Data
+public class StringWriteTsData  {
+    private String tagName;
+    private long ts;
+    private String actualValue;
+
+    public String getValue() {
+        return this.actualValue;
+    }
+
+}

+ 15 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsData.java

@@ -0,0 +1,15 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public interface TsData {
+
+    long getTs();
+
+    short getStatus();
+
+    //double getValue();
+
+}
+

+ 15 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsDataType.java

@@ -0,0 +1,15 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public enum TsDataType {
+    LONG,
+    DOUBLE,
+    BOOLEAN,
+    STRING,
+    BLOB,
+    COORDINATE
+
+}
+

+ 12 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsPoint.java

@@ -0,0 +1,12 @@
+package com.gyee.cache.util.golden.timeseries;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+public interface TsPoint {
+
+    String getId();
+
+    TsDataType getTsDataType();
+}
+

+ 36 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsPointData.java

@@ -0,0 +1,36 @@
+package com.gyee.cache.util.golden.timeseries;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TsPointData {
+
+    private String tagName;
+    private GeneralTsData tsData;
+
+    public TsDataType findDataType() {
+        if (tsData.getDoubleValue().isPresent())
+            return TsDataType.DOUBLE;
+        else if (tsData.getBooleanValue().isPresent())
+            return TsDataType.BOOLEAN;
+        else if (tsData.getLongValue().isPresent())
+            return TsDataType.LONG;
+        else if (tsData.getStringValue().isPresent())
+            return TsDataType.STRING;
+        else if (tsData.getBlobValue().isPresent())
+            return TsDataType.BLOB;
+        else if (tsData.getCoordinateValue().isPresent())
+            return TsDataType.COORDINATE;
+
+        return TsDataType.DOUBLE;
+    }
+}
+

+ 23 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsPointDataList.java

@@ -0,0 +1,23 @@
+package com.gyee.cache.util.golden.timeseries;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author songwb<songwb@aliyun.com>
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TsPointDataList {
+
+    private String tagName;
+
+    private List<GeneralTsData> tsDataList;
+
+}
+

+ 17 - 0
cache/src/main/java/com/gyee/cache/util/golden/timeseries/TsQuery.java

@@ -0,0 +1,17 @@
+package com.gyee.cache.util.golden.timeseries;
+
+public interface TsQuery {
+
+    TsPoint getTsPoint();
+
+    long getStartTs();
+
+    long getEndTs();
+
+    int getInterval();
+
+    int getLimit();
+
+    Interpolation getInterpolation();
+
+}

+ 1 - 1
cache/src/main/resources/application.yml

@@ -28,7 +28,7 @@ spring:
         min-idle: 0
         max-idle: 8
         max-wait: -1
-    database: 1
+    database: 15
   autoconfigure:
     exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
   datasource:

+ 50 - 0
cache/src/test/java/com/gyee/cache/CacheApplicationTests.java

@@ -3,9 +3,16 @@ package com.gyee.cache;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
+import com.gyee.cache.common.PointData;
+import com.gyee.cache.init.CacheContext;
 import com.gyee.cache.model.auto.Windpowerstationtestingpoint2;
+import com.gyee.cache.model.auto.Windturbine;
+import com.gyee.cache.model.auto.Windturbinetestingpointai2;
+import com.gyee.cache.model.test.SampleLibraryVo;
 import com.gyee.cache.output.WindPowerStationTestingPoint2;
 import com.gyee.cache.redis.RedisService;
+import com.gyee.cache.util.golden.EdosUtil;
+import com.gyee.cache.util.golden.IEdosUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -14,8 +21,11 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @RunWith(SpringRunner.class)
 @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@@ -35,6 +45,46 @@ public class CacheApplicationTests {
 
     }
 
+    @Test
+    public void contextLoads3() throws Exception {
+        IEdosUtil edosUtil = new EdosUtil();
+        Map<String,List<SampleLibraryVo>> map = new HashMap<>();
+        List<Windturbine> wtls = CacheContext.wtls.stream().filter(i -> i.getWindpowerstationid().equals("NSS_FDC")).collect(Collectors.toList());
+        Map<String, Map<String, Windturbinetestingpointai2>> wtpointMap = CacheContext.wtpointMap;
+        wtls.stream().forEach(wt->{
+            List<SampleLibraryVo> dlist = new ArrayList<>();
+            Map<String, Windturbinetestingpointai2> stringWindturbinetestingpointai2Map = wtpointMap.get(wt.getId());
+            Windturbinetestingpointai2 jsssfs = stringWindturbinetestingpointai2Map.get("AI022");
+            Windturbinetestingpointai2 power = stringWindturbinetestingpointai2Map.get("AI130");
+            Windturbinetestingpointai2 fjzt = stringWindturbinetestingpointai2Map.get("FJ5T");
+            Windturbinetestingpointai2 qfzt = stringWindturbinetestingpointai2Map.get("RSSQFZT");
+            Windturbinetestingpointai2 zs = stringWindturbinetestingpointai2Map.get("AI012");//10.4
+            try {
+                List<PointData> jsssfsdata = edosUtil.getHistoryDatasSnap(jsssfs, 1609430400l, 1636702856l, null, 60l);
+                List<PointData> powerdata = edosUtil.getHistoryDatasSnap(power, 1609430400l, 1636702856l, null, 60l);
+                List<PointData> fjztdata = edosUtil.getHistoryDatasSnap(fjzt, 1609430400l, 1636702856l, null, 60l);
+                List<PointData> qfztdata = edosUtil.getHistoryDatasSnap(qfzt, 1609430400l, 1636702856l, null, 60l);
+                List<PointData> zsdata = edosUtil.getHistoryDatasSnap(zs, 1609430400l, 1636702856l, null, 60l);
+                for (int j=0;j<jsssfsdata.size();j++){
+                    SampleLibraryVo vo = new SampleLibraryVo();
+                    vo.setTime(jsssfsdata.get(j).getPointTime());
+                    vo.setSpeed(jsssfsdata.get(j).getPointValueInDouble());
+                    vo.setPower(powerdata.get(j).getPointValueInDouble());
+                    vo.setStatus((int) fjztdata.get(j).getPointValueInDouble());
+                    vo.setUnderissuedstatus((int) qfztdata.get(j).getPointValueInDouble());
+                    vo.setTurnspeed(zsdata.get(j).getPointValueInDouble());
+                    dlist.add(vo);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
+        String s = JSONObject.toJSONString(map);
+        redisService.set("2021",s);
+
+
+    }
+
 
 
 }

+ 4 - 0
gradeevaluation/src/main/java/com/gyee/gradeevaluation/controller/auto/BenchmarkController.java

@@ -40,6 +40,10 @@ public class BenchmarkController {
     @CrossOrigin(origins = "*", maxAge = 3600)
     public R zyzb(@RequestParam(value = "windPowerStation", required = false) String windPowerStation) {
 
+
+        if("0".equals(windPowerStation)){
+            windPowerStation = "";
+        }
         List<Map> resultlist = benchmarkService.zyzb(windPowerStation);
 
         return R.ok().data(resultlist);

+ 15 - 9
gradeevaluation/src/main/java/com/gyee/gradeevaluation/controller/gradeevaluation/OutputController.java

@@ -188,10 +188,12 @@ public class OutputController {
     @CrossOrigin(origins = "*", maxAge = 3600)
     public R dayilyList(@RequestParam(value = "tid",required = true)Integer tid,
                         @RequestParam(value = "wpid",required = false)String wpid,
-                        @RequestParam(value = "date",required = false)String date){
-        List<Object> resultList = outputService.dayilyList(tid,wpid,date);
+                        @RequestParam(value = "date",required = false)String date,
+                        @RequestParam(value = "wt1",required = false)String wt1,
+                        @RequestParam(value = "wt2",required = false)String wt2){
+        List<Object> resultList = outputService.dayilyList(tid,wpid,date,wt1,wt2);
         if (StringUtils.isNotNull(resultList)) {
-            return R.ok().data(resultList);
+            return R.ok((long) resultList.size()).data(resultList);
         }else{
             return R.error().message("访问失败");
         }
@@ -206,10 +208,12 @@ public class OutputController {
     @CrossOrigin(origins = "*", maxAge = 3600)
     public R monthlyList(@RequestParam(value = "tid",required = true)Integer tid,
                         @RequestParam(value = "wpid",required = false)String wpid,
-                        @RequestParam(value = "date",required = false)String date){
-        List<Object> resultList = outputService.monthlyList(tid,wpid,date);
+                        @RequestParam(value = "date",required = false)String date,
+                         @RequestParam(value = "wt1",required = false)String wt1,
+                         @RequestParam(value = "wt2",required = false)String wt2){
+        List<Object> resultList = outputService.monthlyList(tid,wpid,date,wt1,wt2);
         if (StringUtils.isNotNull(resultList)) {
-            return R.ok().data(resultList);
+            return R.ok((long) resultList.size()).data(resultList);
         }else{
             return R.error().message("访问失败");
         }
@@ -223,10 +227,12 @@ public class OutputController {
     @CrossOrigin(origins = "*", maxAge = 3600)
     public R yearlyList(@RequestParam(value = "tid",required = true)Integer tid,
                           @RequestParam(value = "wpid",required = false)String wpid,
-                          @RequestParam(value = "date",required = false)String date){
-        List<Object> resultList = outputService.yearlyList(tid,wpid,date);
+                          @RequestParam(value = "date",required = false)String date,
+                        @RequestParam(value = "wt1",required = false)String wt1,
+                        @RequestParam(value = "wt2",required = false)String wt2){
+        List<Object> resultList = outputService.yearlyList(tid,wpid,date,wt1,wt2);
         if (StringUtils.isNotNull(resultList)) {
-            return R.ok().data(resultList);
+            return R.ok((long) resultList.size()).data(resultList);
         }else{
             return R.error().message("访问失败");
         }

+ 23 - 0
gradeevaluation/src/main/java/com/gyee/gradeevaluation/model/test/SampleLibraryVo.java

@@ -0,0 +1,23 @@
+package com.gyee.gradeevaluation.model.test;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName : SampleLibraryVo
+ * @Author : xieshengjie
+ * @Date: 2021/11/12 16:09
+ * @Description :样本库vo
+ */
+@Data
+public class SampleLibraryVo implements Serializable {
+
+    private static final long serialVersionUID = -1625722918616233085L;
+    private Long time;
+    private Double speed;
+    private Double power;
+    private Double turnspeed;
+    private Integer status;
+    private Integer underissuedstatus;
+}

+ 12 - 2
gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/auto/impl/BenchmarkServiceImpl.java

@@ -1,13 +1,14 @@
 package com.gyee.gradeevaluation.service.auto.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.gyee.gradeevaluation.config.R;
 import com.gyee.gradeevaluation.model.auto.Benchmark;
 import com.gyee.gradeevaluation.mapper.auto.BenchmarkMapper;
+import com.gyee.gradeevaluation.model.auto.Windpowerstation;
 import com.gyee.gradeevaluation.service.auto.IBenchmarkService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.gradeevaluation.util.BigDecimalUtils;
 import com.gyee.gradeevaluation.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -24,6 +25,10 @@ import java.util.*;
 @Service
 public class BenchmarkServiceImpl extends ServiceImpl<BenchmarkMapper, Benchmark> implements IBenchmarkService {
 
+
+    @Autowired
+    private WindpowerstationServiceImpl windpowerstationService;
+
     @Override
     public List<Map> zyzb(String windPowerStation) {
         Date monthFirst = DateUtils.getMonthFirst(new Date());
@@ -38,13 +43,18 @@ public class BenchmarkServiceImpl extends ServiceImpl<BenchmarkMapper, Benchmark
         if (null != windPowerStation && !"".equals(windPowerStation)) {
             wrapper.eq("foreignkeyid", windPowerStation);
         }
+
         wrapper.ge("recorddate", monthFirst).le("recorddate", monthLast);
         wrapper.groupBy("foreignkeyid");
         List<Benchmark> resultlist = this.list(wrapper);
         List<Map> list = new ArrayList<>();
         resultlist.stream().forEach(i -> {
             Map m = new HashMap();
-            m.put("foreignkeyid", i.getForeignkeyid());
+
+            Windpowerstation st = windpowerstationService.getById(i.getForeignkeyid());
+            m.put("foreignkeyid", i.getForeignkeyid());//场站
+            m.put("name", st.getName());//场站name
+            //
             if (i.getTheoreticalpower().compareTo(BigDecimal.ZERO) != 0) {
                 m.put("actualpower", (BigDecimalUtils.divide(i.getActualpower(), i.getTheoreticalpower(), 2).multiply(new BigDecimal(100))));
             } else {

+ 9 - 8
gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/bigscreen/BigScreenService.java

@@ -192,15 +192,16 @@ public class BigScreenService {
         map.put("qsfs",qsfs);
         map.put("sbqfs",sbqfs);
         map.put("xsfs",xsfs);
-        double mhsgl = ednaApiUtil.getRealData(MainConstant.JSFW_MHSSZGL).getPointValueInDouble();// 麻黄山总功率
-        double nssgl = ednaApiUtil.getRealData(MainConstant.JSFW_NSSSZGL).getPointValueInDouble();// 牛首山总功率
-        double qsgl= ednaApiUtil.getRealData(MainConstant.JSFW_QSSSZGL).getPointValueInDouble();// 青山总功率
-        double sbqgl = ednaApiUtil.getRealData(MainConstant.JSFW_SBSSZGL).getPointValueInDouble();// 石板泉总功率
-        double xsgl = ednaApiUtil.getRealData(MainConstant.JSFW_XSSSZGL).getPointValueInDouble();// 香山总功率
+        double mhsgl = ednaApiUtil.getRealData(MainConstant.MHSDQ_POWER).getPointValueInDouble();// 麻黄山总功率
+        double nssgl = ednaApiUtil.getRealData(MainConstant.NSSDQ_POWER).getPointValueInDouble();// 牛首山总功率
+        double qsgl= ednaApiUtil.getRealData(MainConstant.QSDQ_POWER).getPointValueInDouble();// 青山总功率
+        double sbqgl = ednaApiUtil.getRealData(MainConstant.SBQDQ_POWER).getPointValueInDouble();// 石板泉总功率
+        double sbqgl2 = ednaApiUtil.getRealData(MainConstant.SBQDQ_POWER2).getPointValueInDouble();// 石板泉总功率
+        double xsgl = ednaApiUtil.getRealData(MainConstant.XSDQ_POWER).getPointValueInDouble();// 香山总功率
         map.put("mhsgl",mhsgl);
         map.put("nssgl",nssgl);
         map.put("qsgl",qsgl);
-        map.put("sbqgl",sbqgl);
+        map.put("sbqgl",sbqgl+sbqgl2);
         map.put("xsgl",xsgl);
         double gfssgl = ednaApiUtil.getRealData(MainConstant.JSFW_GFSSZGL).getPointValueInDouble();// 总功率合计
         double gfrfdl = ednaApiUtil.getRealData(MainConstant.JSFW_GFRFDLB).getPointValueInDouble();// 光伏日发电量合计
@@ -218,15 +219,15 @@ public class BigScreenService {
         map.put("mchrzqd",mchrzqd);
         double dwkgl = ednaApiUtil.getRealData(MainConstant.JSFW_DWSSZGL).getPointValueInDouble();// 大武口总功率
         double plgl = ednaApiUtil.getRealData(MainConstant.JSFW_PLSSZGL).getPointValueInDouble();// 平罗总功率
-        double xhgl = ednaApiUtil.getRealData(MainConstant.JSFW_XHSSZGL).getPointValueInDouble();// 宣和总功率
         double mchgl = ednaApiUtil.getRealData(MainConstant.JSFW_MCSSZGL).getPointValueInDouble();// 马场湖总功率
+        double xhgl = ednaApiUtil.getRealData(MainConstant.JSFW_XHSSZGL).getPointValueInDouble(); // 宣和总功率
         double hzjfdl = ednaApiUtil.getRealData(MainConstant.JSFW_HZJRFDLB).getPointValueInDouble();
         double hzjgl = ednaApiUtil.getRealData(MainConstant.JSFW_HZJSSZGL).getPointValueInDouble();
         double hzjrzqd = ednaApiUtil.getRealData(MainConstant.HZJFS).getPointValueInDouble();
         double gfrzqd = new BigDecimal(dwkrzqd + plrzqd + xhrzqd + mchrzqd + hzjrzqd) .divide(new BigDecimal(3), 2, RoundingMode.HALF_EVEN).doubleValue();
         map.put("dwkgl",dwkgl);
         map.put("plgl",plgl);
-        map.put("xhgl",xhgl);
+        map.put("xhgl",xhgl-mchgl);
         map.put("mchgl",mchgl);
         map.put("hzjfdl",hzjfdl);
         map.put("hzjgl",hzjgl);

+ 14 - 3
gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/gradeevaluation/OutputService.java

@@ -115,12 +115,15 @@ public class OutputService {
     }
 
 
-    public List<Object> dayilyList(Integer tid, String wpid, String date) {
+    public List<Object> dayilyList(Integer tid, String wpid, String date,String wt1,String wt2) {
         QueryWrapper<Dailyratingmain> qw = new QueryWrapper<>();
         List<Object> resultList = new ArrayList<>();
         if (null != wpid){
             qw.eq("wpid",wpid);
         }
+        if (null != wt1 && null != wt2){
+            qw.in("wtid",wt1,wt2);
+        }
         if (null != date){
             qw.eq("recorddate", DateUtils.parseDate(date));
         }
@@ -160,8 +163,10 @@ public class OutputService {
             } catch (Exception e) {
                 e.printStackTrace();
             }
+
             resultList.add(blo);
         });
+
         return resultList;
     }
 
@@ -185,7 +190,7 @@ public class OutputService {
     }
 
 
-    public List<Object> monthlyList(Integer tid, String wpid, String date) {
+    public List<Object> monthlyList(Integer tid, String wpid, String date,String wt1,String wt2) {
 
         QueryWrapper<Monthlyratingmain> qw = new QueryWrapper<>();
         List<Object> resultList = new ArrayList<>();
@@ -196,6 +201,9 @@ public class OutputService {
         if (null != wpid){
             qw.eq("wpid",wpid);
         }
+        if (null != wt1 && null != wt2){
+            qw.in("wtid",wt1,wt2);
+        }
         if (null != date){
             qw.eq("year", year);
             qw.eq("month",month);
@@ -243,7 +251,7 @@ public class OutputService {
         return resultList;
     }
 
-    public List<Object> yearlyList(Integer tid, String wpid, String date) {
+    public List<Object> yearlyList(Integer tid, String wpid, String date,String wt1,String wt2) {
 
         QueryWrapper<Yearlyratingmain> qw = new QueryWrapper<>();
         List<Object> resultList = new ArrayList<>();
@@ -252,6 +260,9 @@ public class OutputService {
         if (null != wpid){
             qw.eq("wpid",wpid);
         }
+        if (null != wt1 && null != wt2){
+            qw.in("wtid",wt1,wt2);
+        }
         if (null != date){
             qw.eq("year", year);
         }

+ 1 - 1
gradeevaluation/src/main/java/com/gyee/gradeevaluation/service/targetdata/TargetdataService.java

@@ -134,7 +134,7 @@ public class TargetdataService {
         double jys = fdl * 10 * 3.05;   //节约水
         double jyso2 = fdl * 10 * 0.0059;   //节约二氧化硫
         double jyco2 = fdl *  10 * 0.8568;  //节约二氧化碳
-        double gls = jyco2 * 1000000 / 300;  //公里数(2.0排量1公里排300克)
+        double gls = jyco2 * 1000000 / 300/10000;  //公里数(2.0排量1公里排300克)
         double hs = jys / 180;  // 户数(一户一年用180吨)
         double wqw = jym / 15000;   //万千瓦(1万千瓦一年用1.5万吨)
         resultMap.put("fdl",fdl);

+ 8 - 1
gradeevaluation/src/main/java/com/gyee/gradeevaluation/variable/MainConstant.java

@@ -26,21 +26,27 @@ public class MainConstant {
     public static final String JSFW_NSSWDLB = "NSSFCJSFW.NX_GD_NSSF_XX_XX_XXX_XXX_CI0136"; // 牛首山上网电量
     public static final String JSFW_NSSSZGL = "NSSFCJSFW.NX_GD_NSSF_XX_XX_XXX_XXX_CI0135"; //牛首山实时总功率
     public static final String JSFW_NSSSFS = "NSSFCJSFW.NX_GD_NSSF_XX_XX_XXX_XXX_CI0134"; // 牛首山实时平均风速
+    public static final String NSSDQ_POWER = "NSSDQN.NX_GD_NSSF_DQ_P1_L1_001_AI1009"; // 牛首山原始测点总功率
 
     public static final String JSFW_MHRFDLB = "MHSFCJSFW.NX_GD_MHSF_XX_XX_XXX_XXX_CI0088"; // 麻黄山日发电量
     public static final String JSFW_MHSWDLB = "MHSFCJSFW.NX_GD_MHSF_XX_XX_XXX_XXX_CI0136"; // 麻黄山上网电量
     public static final String JSFW_MHSSZGL = "MHSFCJSFW.NX_GD_MHSF_XX_XX_XXX_XXX_CI0135"; // 麻黄山总功率
     public static final String JSFW_MHSSFS = "MHSFCJSFW.NX_GD_MHSF_XX_XX_XXX_XXX_CI0134"; // 麻黄山风速
+    public static final String MHSDQ_POWER = "MHSDQ.NX_GD_MHSF_DQ_P1_L1_001_AI0013"; // 麻黄山原始测点总功率
+
 
     public static final String JSFW_QSRFDLB = "QSFCJSFW.NX_GD_QSF_XX_XX_XXX_XXX_CI0088"; // 青山日发电量(升压站)
     public static final String JSFW_QSSWDLB = "QSFCJSFW.NX_GD_QSF_XX_XX_XXX_XXX_CI0136"; // 青山上网电量
     public static final String JSFW_QSSSZGL = "QSFCJSFW.NX_GD_QSF_XX_XX_XXX_XXX_CI0135"; // 青山总功率
     public static final String JSFW_QSSSFS = "QSFCJSFW.NX_GD_QSF_XX_XX_XXX_XXX_CI0134"; // 青山风速
+    public static final String QSDQ_POWER = "QSDQ.NX_GD_QSF_DQ_P1_L1_001_AI0330"; // 青山原始测点总功率
 
     public static final String JSFW_SBRFDLB = "SBQFCJSFW.NX_GD_SBQF_XX_XX_XXX_XXX_CI0088"; // 石板泉日发电量(升压站)
     public static final String JSFW_SBSWDLB = "SBQFCJSFW.NX_GD_SBQF_XX_XX_XXX_XXX_CI0136"; // 石板泉上网电量
     public static final String JSFW_SBSSZGL = "SBQFCJSFW.NX_GD_SBQF_XX_XX_XXX_XXX_CI0135"; // 石板泉实时总功率
     public static final String JSFW_SBSSFS = "SBQFCJSFW.NX_GD_SBQF_XX_XX_XXX_XXX_CI0134"; // 石板泉实时平均风速
+    public static final String SBQDQ_POWER = "SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0044"; // 石板泉原始测点总功率
+    public static final String SBQDQ_POWER2 = "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0012"; // 石板泉原始测点总功率
 
     public static final String JSFW_DWRFDLB = "DWKGDCJSFW.NX_GD_DWKG_XX_XX_XXX_XXX_CI0088"; // 大武口日发电量(升压站)
     public static final String JSFW_DWSWDLB = "DWKGDCJSFW.NX_GD_DWKG_XX_XX_XXX_XXX_CI0136"; // 大武口上网电量
@@ -55,7 +61,7 @@ public class MainConstant {
 
     public static final String JSFW_MCRFDLB = "JSFW_MCRFDLB"; // 马场湖日发电量
     public static final String JSFW_MCSWDLB = "JSFW_MCSWDLB"; // 马场湖上网电量
-    public static final String JSFW_MCSSZGL = "MCHDQ.NX_GD_MCHG_DQ_P1_L1_001_AI0138"; // 马场湖总功率
+    public static final String JSFW_MCSSZGL = "MCHDQ.NX_GD_MCHG_DQ_P1_L1_001_AI0020"; // 马场湖总功率
     public static final String JSFW_MCSSFSX = "MCHGGL.NX_GD_MCHG_YC_P1_L1_001_QXZ001"; // //
     // 马场湖日照强度
 
@@ -94,6 +100,7 @@ public class MainConstant {
     public static final String JSFW_XSSWDLB = "XSFCJSFW.NX_GD_XSF_XX_XX_XXX_XXX_CI0136"; // 香山上网电量
     public static final String JSFW_XSSSZGL = "XSFCJSFW.NX_GD_XSF_XX_XX_XXX_XXX_CI0135"; // 香山实时总功率
     public static final String JSFW_XSSSFS = "XSFCJSFW.NX_GD_XSF_XX_XX_XXX_XXX_CI0134"; // 香山实时平均风速
+    public static final String XSDQ_POWER = "XSDQ.NX_GD_XSF_DQ_P1_L1_001_AI0001"; // 香山原始测点总功率
 
 
     public static final String JSFW_XHYFDLB = "XHGDCJSFW.NX_GD_XHG_XX_XX_XXX_XXX_CI0146"; // 宣和月发电量

+ 14 - 2
gradeevaluation/src/test/java/com/gyee/gradeevaluation/GradeevaluationApplicationTests.java

@@ -1,6 +1,8 @@
 package com.gyee.gradeevaluation;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.gyee.gradeevaluation.init.CacheContext;
+import com.gyee.gradeevaluation.model.auto.Windturbine;
 import com.gyee.gradeevaluation.service.gradeevaluation.QuartService;
 import com.gyee.gradeevaluation.service.health.HealthReportService;
 import com.gyee.gradeevaluation.service.mttrmtbf.MTTRMTBFTaskService;
@@ -20,7 +22,9 @@ import org.springframework.test.context.junit4.SpringRunner;
 import java.io.UnsupportedEncodingException;
 import java.text.ParseException;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 
 @RunWith(SpringRunner.class)
@@ -82,9 +86,17 @@ class GradeevaluationApplicationTests {
 
 
     @Test
-    void contextLoads2() throws ParseException, UnsupportedEncodingException, JsonProcessingException {
-
+    void contextLoads2() throws Exception {
       IEdosUtil edosUtil = new EdosUtil();
+        List<Windturbine> wtls = CacheContext.wtls.stream().filter(i -> i.getWindpowerstationid().endsWith("FDC")).collect(Collectors.toList());
+        edosUtil.getHistoryDatasSnap("XSFJJSFW.NX_GD_XSF_FJ_P1_L1_001_CI0116",1609430400l,1609430800l,null,60l);
     }
 
+
+    @Test
+    void contextLoads3() throws Exception {
+        IEdosUtil edosUtil = new EdosUtil();
+        List<Windturbine> wtls = CacheContext.wtls.stream().filter(i -> i.getWindpowerstationid().endsWith("FDC")).collect(Collectors.toList());
+        edosUtil.getHistoryDatasSnap("XSFJJSFW.NX_GD_XSF_FJ_P1_L1_001_CI0116",1609430400l,1609430800l,null,60l);
+    }
 }

+ 8 - 0
pom.xml

@@ -32,6 +32,7 @@
         <java.version>1.8</java.version>
         <commons.fileupload.version>1.3.3</commons.fileupload.version>
         <commons.io.version>2.5</commons.io.version>
+        <log4j.version>2.15.0</log4j.version>
     </properties>
     <dependencies>
         <dependency>
@@ -65,6 +66,13 @@
             <artifactId>jackson-mapper-asl</artifactId>
             <version>1.9.13</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+
     </dependencies>