hxf hai 1 ano
pai
achega
772f96c12f
Modificáronse 18 ficheiros con 1158 adicións e 456 borrados
  1. 4 1
      wrdep-biz/src/main/java/com/jiayue/biz/controller/DisplayConfigController.java
  2. 68 0
      wrdep-biz/src/main/java/com/jiayue/biz/domain/ProphaseAnemometryDataOrg.java
  3. 84 0
      wrdep-biz/src/main/java/com/jiayue/biz/domain/ProphaseWeatherDataOrg.java
  4. 31 0
      wrdep-biz/src/main/java/com/jiayue/biz/mapper/ProphaseAnemometryDataOrgMapper.java
  5. 38 0
      wrdep-biz/src/main/java/com/jiayue/biz/mapper/ProphaseWeatherDataOrgMapper.java
  6. 23 0
      wrdep-biz/src/main/java/com/jiayue/biz/service/ProphaseAnemometryDataOrgService.java
  7. 22 0
      wrdep-biz/src/main/java/com/jiayue/biz/service/ProphaseWeatherDataOrgService.java
  8. 1 0
      wrdep-biz/src/main/java/com/jiayue/biz/service/ProphaseWeatherDataService.java
  9. 27 25
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/AnalysisDataImpl.java
  10. 46 7
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/CheckDataRecode.java
  11. 4 13
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/DataRecalculationImpl.java
  12. 33 0
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseAnemometryDataOrgServiceImpl.java
  13. 35 0
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseWeatherDataOrgServiceImpl.java
  14. 3 0
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseWeatherDataServiceImpl.java
  15. 12 2
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/RealTimeDisplayServiceImpl.java
  16. 32 51
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerCalculationDataServiceImpl.java
  17. 113 85
      wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerDataParentTableServiceImpl.java
  18. 582 272
      wrdep-ui/src/api/biz/dataQuery/defaultOption.js

+ 4 - 1
wrdep-biz/src/main/java/com/jiayue/biz/controller/DisplayConfigController.java

@@ -1,5 +1,6 @@
 package com.jiayue.biz.controller;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jiayue.biz.domain.DisplayConfig;
 import com.jiayue.biz.service.IDisplayConfigService;
@@ -33,7 +34,9 @@ public class DisplayConfigController extends BaseController {
     @Log(title = "展示暂存", businessType = BusinessType.UPDATE)
     @PostMapping("/shuttle")
     public AjaxResult insertShuttle(@RequestBody DisplayConfig displayConfig) {
-//        displayConfig.setId(1L);
+       if(StrUtil.isBlank(displayConfig.getHiddenCode())){
+            displayConfig.setHiddenCode("LTD");
+        }
         return toAjax(iDisplayConfigService.save(displayConfig) ? 1 : 0);
     }
 

+ 68 - 0
wrdep-biz/src/main/java/com/jiayue/biz/domain/ProphaseAnemometryDataOrg.java

@@ -0,0 +1,68 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * 原始数据
+ */
+@Data
+public class ProphaseAnemometryDataOrg {
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 风速瞬时值(m/s)
+     **/
+    private Float wsInst;
+    /**
+     * 风速最大值(m/s)
+     **/
+    private Float wsMax;
+    /**
+     * 风速最小值(m/s)
+     **/
+    private Float wsMin;
+    /**
+     * 风速平均值(m/s)
+     **/
+    private Float wsAve;
+    /**
+     * 风速阵风(m/s)
+     **/
+    private Float wsGust;
+    /**
+     * 风速标准差(m/s)
+     **/
+    private Float wsSta;
+    /**
+     * 风向瞬时值(°)
+     **/
+    private Float wdInst;
+    /**
+     * 风向最大值(°)
+     **/
+    private Float wdMax;
+    /**
+     * 风向最小值(°)
+     **/
+    private Float wdMin;
+    /**
+     * 风向平均值(°)
+     **/
+    private Float wdAve;
+    /**
+     * 风向标准差(°)
+     **/
+    private Float wdSta;
+    /**
+     * 设备ID
+     **/
+    private String equipmentId;
+    /**
+     * 层高
+     **/
+    private String layerHeight;
+}

+ 84 - 0
wrdep-biz/src/main/java/com/jiayue/biz/domain/ProphaseWeatherDataOrg.java

@@ -0,0 +1,84 @@
+package com.jiayue.biz.domain;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+/**
+ * 原始数据
+ */
+@Data
+public class ProphaseWeatherDataOrg {
+    /**
+     * 时间戳
+     **/
+    private Timestamp ts;
+    /**
+     * 温度瞬时值(℃)
+     **/
+    private Float tInst;
+    /**
+     * 温度最大值(℃)
+     **/
+    private Float tMax;
+    /**
+     * 温度最小值(℃)
+     **/
+    private Float tMin;
+    /**
+     * 温度平均值(℃)
+     **/
+    private Float tAve;
+    /**
+     * 温度标准差(℃)
+     **/
+    private Float tSta;
+    /**
+     * 湿度瞬时值(%)
+     **/
+    private Float rhInst;
+    /**
+     * 湿度最大值(%)
+     **/
+    private Float rhMax;
+    /**
+     * 湿度最小值(%)
+     **/
+    private Float rhMin;
+    /**
+     * 湿度平均值(%)
+     **/
+    private Float rhAve;
+    /**
+     * 湿度标准差(%)
+     **/
+    private Float rhSta;
+    /**
+     * 气压瞬时值(hPa)
+     **/
+    private Float paInst;
+    /**
+     * 气压最大值(hPa)
+     **/
+    private Float paMax;
+    /**
+     * 气压最小值(hPa)
+     **/
+    private Float paMin;
+    /**
+     * 气压平均值(hPa)
+     **/
+    private Float paAve;
+    /**
+     * 气压标准差(hPa)
+     **/
+    private Float paSta;
+    /**
+     * 空气密度(Kg/m³)
+     **/
+    private Float airDensity;
+    /**
+     * 设备ID
+     **/
+    private String equipmentId;
+}

+ 31 - 0
wrdep-biz/src/main/java/com/jiayue/biz/mapper/ProphaseAnemometryDataOrgMapper.java

@@ -0,0 +1,31 @@
+package com.jiayue.biz.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.biz.domain.ProphaseAnemometryData;
+import com.jiayue.biz.domain.ProphaseAnemometryDataOrg;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+@DS("tdengine")
+public interface ProphaseAnemometryDataOrgMapper extends BaseMapper<ProphaseAnemometryDataOrg> {
+
+    @Insert("INSERT INTO anemometry_org_${equipmentId}_${layerHeight} USING prophase_anemometry_data_org TAGS(#{equipmentId}, #{layerHeight}) VALUES(#{ts}, #{wsInst}, #{wsMax}, #{wsMin}, #{wsAve}, #{wsGust}, #{wsSta}, #{wdInst}, #{wdMax}, #{wdMin}, #{wdAve}, #{wdSta})")
+    int insertOneWithNew(ProphaseAnemometryData one);
+
+
+    //所有层高风速风向平均值
+    @Select("SELECT t1.ts,t1.ws_ave,t1.wd_ave,t1.layer_height FROM prophase_anemometry_data_org t1 where  t1.equipment_id = #{equipmentId} and  t1.ts >= #{startTime} and t1.ts <= #{endTime}")
+    List<ProphaseAnemometryData> selectAve(@Param("equipmentId") String equipmentId, @Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime);
+
+
+
+    @Select("SELECT * FROM prophase_anemometry_data_org t1 where  t1.equipment_id = #{equipmentId} and  t1.ts >= #{startTime} and t1.ts <= #{endTime}")
+    List<ProphaseAnemometryData> selectAll(@Param("equipmentId") String equipmentId, @Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime);
+
+}

+ 38 - 0
wrdep-biz/src/main/java/com/jiayue/biz/mapper/ProphaseWeatherDataOrgMapper.java

@@ -0,0 +1,38 @@
+package com.jiayue.biz.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.biz.domain.ProphaseWeatherData;
+import com.jiayue.biz.domain.ProphaseWeatherDataOrg;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+@DS("tdengine")
+public interface ProphaseWeatherDataOrgMapper extends BaseMapper<ProphaseWeatherDataOrg> {
+
+    @Insert("<script>" +
+            "insert into weather_org_${equipmentId} USING prophase_weather_data_org TAGS(${equipmentId}) values " +
+            "<foreach collection='prophaseWeatherDataList' item='p' separator=','> " +
+            "(#{p.ts},#{p.tInst},#{p.tMax},#{p.tMin},#{p.tAve},#{p.tSta},#{p.rhInst},#{p.rhMax},#{p.rhMin},#{p.rhAve},#{p.rhSta},#{p.paInst},#{p.paMax},#{p.paMin},#{p.paAve},#{p.paSta},#{p.airDensity}) " +
+            "</foreach> " +
+            "</script>")
+    int insertSplice(@Param("prophaseWeatherDataList") List<ProphaseWeatherData> prophaseWeatherDataList, @Param("equipmentId") String equipmentId);
+
+
+    //查询温度平均值和压强平均值
+    @Select("SELECT t1.ts,t1.t_ave,t1.pa_ave,t1.air_density FROM weather_org_${equipmentId} t1 where  t1.ts >= #{startTime} and t1.ts <= #{endTime}")
+    List<ProphaseWeatherData> selectTAveAndPaAveAndAir(@Param("equipmentId") String equipmentId, @Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime);  //查询温度平均值和压强平均值
+
+    @Insert("INSERT INTO weather_org_${equipmentId} USING prophase_weather_data_org TAGS(#{equipmentId}) VALUES(#{ts},#{tInst},#{tMax},#{tMin},#{tAve},#{tSta},#{rhInst},#{rhMax},#{rhMin},#{rhAve},#{rhSta},#{paInst},#{paMax},#{paMin},#{paAve},#{paSta},#{airDensity})")
+    int insertOneWithNew(ProphaseWeatherData one);
+
+
+    @Select("select * from weather_org_${equipmentId} where equipment_id = #{equipmentId} and ts >= #{startTime} and ts <= #{endTime}")
+    List<ProphaseWeatherData> selectPublicData(@Param("equipmentId") String equipmentId, @Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime);
+
+}

+ 23 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/ProphaseAnemometryDataOrgService.java

@@ -0,0 +1,23 @@
+package com.jiayue.biz.service;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.biz.domain.ProphaseAnemometryData;
+import com.jiayue.biz.domain.ProphaseAnemometryDataOrg;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+public interface ProphaseAnemometryDataOrgService extends IService<ProphaseAnemometryDataOrg> {
+
+
+    List<ProphaseAnemometryData> selectAveWsAndWd(String equipmentId, Timestamp startTime, Timestamp endTime);
+
+    //单条保存
+    void insertOneWithNew(ProphaseAnemometryData prophaseAnemometryData);
+
+
+    //查询所有数据
+    List<ProphaseAnemometryData> selectAll(String equipmentId, Timestamp startTime, Timestamp endTime);
+
+}

+ 22 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/ProphaseWeatherDataOrgService.java

@@ -0,0 +1,22 @@
+package com.jiayue.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.biz.domain.ProphaseWeatherData;
+import com.jiayue.biz.domain.ProphaseWeatherDataOrg;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+public interface ProphaseWeatherDataOrgService extends IService<ProphaseWeatherDataOrg> {
+    List<ProphaseWeatherData> selectTAveAndPaAveAndAir(String equipmentId, Timestamp startTime, Timestamp endTime);
+
+    //批量保存
+    void insertSplice(List<ProphaseWeatherData> prophaseWeatherDataList, String equipmentId);
+
+
+    void insertOne(ProphaseWeatherData prophaseWeatherData);
+
+    //查询所有数据
+    List<ProphaseWeatherData> selectPublicData(String equipmentId, Timestamp startTime, Timestamp endTime);
+
+}

+ 1 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/ProphaseWeatherDataService.java

@@ -43,4 +43,5 @@ public interface ProphaseWeatherDataService extends IService<ProphaseWeatherData
     //删除时间段内数据
     void deleteData(String equipmentId, Timestamp startTime, Timestamp endTime);
 
+    void insertOne(ProphaseWeatherData prophaseWeatherData);
 }

+ 27 - 25
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/AnalysisDataImpl.java

@@ -1031,24 +1031,25 @@ public class AnalysisDataImpl {
             for (File file1 : files) {
                 if (file1.isDirectory()) {
                     File[] files1 = file1.listFiles();
-                    //筛选包含.elog后缀的文件
-                    List<File> fileNameList = Arrays.asList(files1).stream().filter(f -> f.getName().contains(".elog")).collect(Collectors.toList());
+                    //筛选包含.log后缀的文件
+                    List<File> fileNameList = Arrays.asList(files1).stream().filter(f ->  !f.isDirectory() &&  f.getName().substring(f.getName().lastIndexOf(".")).contains(".log")).collect(Collectors.toList());
                     //循环文件名
                     for (File fileNameForELog : fileNameList) {
-
-                        String fileName = fileNameForELog.getName().substring(0, fileNameForELog.getName().indexOf(".elog"));
-                        String eqNo = fileName.substring(fileName.indexOf("ID") + 2, fileName.indexOf("_"));
-                        //移动原始文件
-                        com.jiayue.biz.util.FileUtil.move(fileNameForELog.getPath(), eolFilePath + File.separator + eqNo);
-                        //找出csv文件
-                        List<File> csvFile = Arrays.stream(files1).filter(f -> f.getName().contains(".csv") && f.getName().contains(fileName)).collect(Collectors.toList());
+                        String fileName = fileNameForELog.getName().substring(0, fileNameForELog.getName().indexOf(".log"));
                         //找出wnd文件
                         List<File> wndFile = Arrays.stream(files1).filter(f -> f.getName().contains(".wnd") && f.getName().contains(fileName)).collect(Collectors.toList());
-                        if (csvFile.size() > 0 && wndFile.size() > 0) {
-                            parseEol(csvFile.get(0), wndFile.get(0), eqNo);
 
-                        }
+                        if (wndFile.size() > 0) {
+                            HashMap<String, String> stringStringHashMap = this.parseWnd(wndFile.get(0));
+                            String eqNo = stringStringHashMap.get("SiteNumber");
+                            //找出csv文件
+                            List<File> csvFile = Arrays.stream(files1).filter(f -> f.getName().contains(".csv") && f.getName().contains(fileName)).collect(Collectors.toList());
+
+                            if (csvFile.size() > 0 && wndFile.size() > 0) {
+                                parseEol(csvFile.get(0), stringStringHashMap, eqNo, fileNameForELog);
 
+                            }
+                        }
                     }
 
                 }
@@ -1061,7 +1062,7 @@ public class AnalysisDataImpl {
 
 
     //解析eol文件
-    public void parseEol(File fileCsv, File wndFile, String eqNo) {
+    public void parseEol(File fileCsv, HashMap<String, String> stringStringHashMap, String eqNo, File fileNameForELog) {
         //todo 需要修改
 //        String s = "C:\\Users\\Administrator\\Desktop\\ID220810_20220919_180304_20230515_063537.log_20230515_063540.csv";
 //        //从文件中读取CSV数据
@@ -1102,11 +1103,11 @@ public class AnalysisDataImpl {
                 dataList.add(hashMap);
             }
         }
-        List<WindTowerInfo> list = windTowerInfoService.getAllWindTower();
+        this.emailWindTowerInfoSave(eqNo);
+        List<WindTowerInfo> list = windTowerInfoService.list();
         List<WindTowerInfo> collect = list.stream().filter(w -> w.getEquipmentNo().equals(eqNo)).collect(Collectors.toList());
         if (collect.size() > 0) {
             if (collect.get(0).getRecorderNo() == null) {
-                HashMap<String, String> stringStringHashMap = this.parseWnd(wndFile);
                 String wsH = this.heightReverseOrder(wsHeight);
                 String wdH = this.heightReverseOrder(wdHeight);
                 WindTowerInfo windTowerInfo = new WindTowerInfo();
@@ -1121,20 +1122,21 @@ public class AnalysisDataImpl {
                 windTowerInfo.setRecorderNo(stringStringHashMap.get("SiteNumber"));
                 windTowerInfo.setModelNumber("eol");
                 windTowerInfoService.saveOrUpdate(windTowerInfo);
-            }
+            } else {
+                try {
+                    //移动原始文件
+                    com.jiayue.biz.util.FileUtil.move(fileNameForELog.getPath(), eolFilePath + File.separator + eqNo);
+                    //移动csv文件
+//                    com.jiayue.biz.util.FileUtil.move(fileCsv.getPath(), eolFilePath + File.separator + eqNo);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
 
-        }
-        this.emailWindTowerInfoSave(eqNo);
+                windTowerDataParentTableService.packageData(dataList, eqNo, "", "eol", "");
+            }
 
-        try {
-            //移动csv文件
-            com.jiayue.biz.util.FileUtil.move(fileCsv.getPath(), eolFilePath + File.separator + eqNo);
-        } catch (Exception e) {
-            e.printStackTrace();
         }
 
-        windTowerDataParentTableService.packageData(dataList, eqNo, "", "eol", "");
-
     }
 
     //解析经纬度 记录仪编号 解析wnd文件

+ 46 - 7
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/CheckDataRecode.java

@@ -11,6 +11,7 @@ import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 为审核数据的合理性提供历史数据
@@ -48,7 +49,7 @@ public class CheckDataRecode {
     public List<Map<String, Object>> checkValue(List<Map<String, Object>> allData, String type) {
         List<Map<String, Object>> filterData = new ArrayList<>();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
-        if (type.equals("rld")) {
+        if (type.equals("rld") || type.equals("station")) {
             simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         }
         if (type.equals("sld")) {
@@ -72,11 +73,11 @@ public class CheckDataRecode {
                         int min;
                         int change;
                         if (key.contains("Sta") || key.contains("sta")) {
-                            max = 3;
+                            max = 6;
                             min = 0;
                             change = 1;
                         } else {
-                            max = 35;
+                            max = 40;
                             min = 0;
                             change = 20;
                         }
@@ -93,7 +94,7 @@ public class CheckDataRecode {
                         int min;
                         int change;
                         if (key.contains("Sta") || key.contains("sta")) {
-                            max = 3;
+                            max = 6;
                             min = 0;
                             change = 1;
                         } else {
@@ -114,7 +115,7 @@ public class CheckDataRecode {
                         int min;
                         int change;
                         if (key.contains("Sta") || key.contains("sta")) {
-                            max = 3;
+                            max = 6;
                             min = 0;
                             change = 1;
                         } else {
@@ -135,7 +136,7 @@ public class CheckDataRecode {
                         int min;
                         int change;
                         if (key.contains("Sta") || key.contains("sta")) {
-                            max = 3;
+                            max = 6;
                             min = 0;
                             change = 1;
                         } else {
@@ -161,7 +162,8 @@ public class CheckDataRecode {
                 }
                 filterData.add(map);
             }
-
+            Map<String, Object> startTimeAndEndTimeMap = map.entrySet().stream().filter(k -> k.getKey().contains("DeadDataStartTimeAndEndTime")).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+            compareData(startTimeAndEndTimeMap, filterData,simpleDateFormat);
         } catch (Exception e) {
             log.error("数据筛选异常" + e);
             e.printStackTrace();
@@ -169,6 +171,43 @@ public class CheckDataRecode {
         return filterData;
     }
 
+    public void compareData(Map<String, Object> startTimeAndEndTimeMap, List<Map<String, Object>> filterData,SimpleDateFormat simpleDateFormat) {
+        for (Map<String, Object> filterDatum : filterData) {
+            for (Map.Entry<String, Object> entry : startTimeAndEndTimeMap.entrySet()) {
+                //获取异常数据字段名
+                String dataName = entry.getKey().replace("DeadDataStartTimeAndEndTime", "");
+                //是否存在多时间段异常数据
+                if (entry.getValue().toString().contains(",")) {
+                    String[] startTimeAndEndTime = entry.getValue().toString().split(",");
+                    for (String time : startTimeAndEndTime) {
+                        //保存异常值
+                        replaceData(time, filterDatum, dataName, simpleDateFormat);
+                    }
+                } else {
+                    replaceData(entry.getValue().toString(), filterDatum, dataName, simpleDateFormat);
+                }
+            }
+        }
+    }
+
+
+    public void replaceData(String value, Map<String, Object> filterDatum, String dataName,SimpleDateFormat simpleDateFormat){
+        Long time;
+        try {
+            time =  simpleDateFormat.parse(filterDatum.get("time").toString()).getTime();
+        } catch (ParseException e) {
+            time = Long.parseLong(filterDatum.get("time").toString());
+        }
+        String[] startTimeAndEndTimeSp = value.split("-");
+        //在时间段内 并且没有此字段名
+        if (time >= Long.parseLong(startTimeAndEndTimeSp[0]) && time <= Long.parseLong(startTimeAndEndTimeSp[1])) {
+            if (filterDatum.get("abnormalType") != null && !filterDatum.get("abnormalType").toString().contains(dataName)) {
+                filterDatum.put("abnormalType", filterDatum.get("abnormalType") + "," + dataName);
+            }
+        }
+    }
+
+
     public String check(Object object, Integer max, Integer min, Integer change, String name, Long time) {
         String s = "";
         if (null != object) {

+ 4 - 13
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/DataRecalculationImpl.java

@@ -555,9 +555,9 @@ public class DataRecalculationImpl implements DataRecalculationService {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         //所有数据
         List<Map<String, Object>> maps = windTowerDataParentTableService.selectDataByBetweenTimeAndEquipmetId(startTime, endTime, equipmentNo);
+        List<WindTowerInfo> list = windTowerInfoService.getByEquipmentNo(equipmentNo);
         CheckDataRecode checkDataRecode = new CheckDataRecode();
         checkDataRecode.map.clear();
-        List<String> parentIdList = new ArrayList<>();
         try {
             if (!maps.isEmpty()) {
                 long startDate = Long.parseLong(maps.get(0).get("time").toString());
@@ -575,20 +575,11 @@ public class DataRecalculationImpl implements DataRecalculationService {
                         endDate = Long.parseLong(map.get("time").toString());
                     }
                 }
-                //如果存在数据先删除
-                if (!maps.isEmpty()) {
-                    for (Map<String, Object> map : maps) {
-                        if (!map.get("id").toString().isEmpty()) {
-                            parentIdList.add(map.get("id").toString());
-                        }
-                    }
-                    windTowerDataChildTableService.deleteBetweenTimeAndEquipmentIdAndChild(parentIdList, equipmentNo);
-                    windTowerDataParentTableService.deleteBetweenTimeAndEquipmentIdAndParent(DateTimeUtil.getDayStartTime(startDate), DateTimeUtil.getDayLastTime(endDate), equipmentNo);
-                }
                 log.info("正在进行数据过滤");
                 //重新走一遍数据过滤 然后存库
-                List<Map<String, Object>> mapList = new CheckDataRecode().checkValue(maps, "rld");
-                windTowerDataParentTableService.packageData(mapList, equipmentNo, sdf.format(new Date(startDate)), "rld", "DataRecalculation");
+                List<Map<String, Object>> mapList = new CheckDataRecode().checkValue(maps, list.get(0).getModelNumber());
+                windTowerDataParentTableService.packageData(mapList, equipmentNo, sdf.format(new Date(startDate)), list.get(0).getModelNumber(), "DataRecalculation");
+                log.warn("数据筛选完成");
                 return AjaxResult.success("数据筛选完成");
             } else {
                 return AjaxResult.success("该时间范围内没有数据");

+ 33 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseAnemometryDataOrgServiceImpl.java

@@ -0,0 +1,33 @@
+package com.jiayue.biz.service.impl;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.biz.domain.ProphaseAnemometryData;
+import com.jiayue.biz.domain.ProphaseAnemometryDataOrg;
+import com.jiayue.biz.mapper.ProphaseAnemometryDataOrgMapper;
+import com.jiayue.biz.service.ProphaseAnemometryDataOrgService;
+import org.springframework.stereotype.Service;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+@Service
+public class ProphaseAnemometryDataOrgServiceImpl extends ServiceImpl<ProphaseAnemometryDataOrgMapper, ProphaseAnemometryDataOrg> implements ProphaseAnemometryDataOrgService {
+
+    //所有层高风速风向平均值
+    public List<ProphaseAnemometryData> selectAveWsAndWd(String equipmentId, Timestamp startTime, Timestamp endTime) {
+        return baseMapper.selectAve(equipmentId, startTime, endTime);
+    }
+
+    //单条保存
+    public void insertOneWithNew(ProphaseAnemometryData prophaseAnemometryData){
+        baseMapper.insertOneWithNew(prophaseAnemometryData);
+    }
+
+    //查询所有数据
+    public List<ProphaseAnemometryData> selectAll(String equipmentId, Timestamp startTime, Timestamp endTime) {
+        return baseMapper.selectAll(equipmentId, startTime, endTime);
+    }
+
+
+}

+ 35 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseWeatherDataOrgServiceImpl.java

@@ -0,0 +1,35 @@
+package com.jiayue.biz.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.biz.domain.ProphaseWeatherData;
+import com.jiayue.biz.domain.ProphaseWeatherDataOrg;
+import com.jiayue.biz.mapper.ProphaseWeatherDataOrgMapper;
+import com.jiayue.biz.service.ProphaseWeatherDataOrgService;
+import org.springframework.stereotype.Service;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+@Service
+public class ProphaseWeatherDataOrgServiceImpl extends ServiceImpl<ProphaseWeatherDataOrgMapper, ProphaseWeatherDataOrg> implements ProphaseWeatherDataOrgService {
+
+    //查询温度平均值、压强平均值、空气密度
+    public List<ProphaseWeatherData> selectTAveAndPaAveAndAir(String equipmentId, Timestamp startTime, Timestamp endTime){
+        return baseMapper.selectTAveAndPaAveAndAir(equipmentId,startTime,endTime);
+    }
+
+    //批量保存
+    public void insertSplice(List<ProphaseWeatherData> prophaseWeatherDataList,String equipmentId){
+        baseMapper.insertSplice(prophaseWeatherDataList,equipmentId);
+    }
+
+    public void insertOne(ProphaseWeatherData prophaseWeatherData){
+        baseMapper.insertOneWithNew(prophaseWeatherData);
+    }
+
+    //查询所有数据
+    public List<ProphaseWeatherData> selectPublicData(String equipmentId, Timestamp startTime, Timestamp endTime) {
+        return baseMapper.selectPublicData(equipmentId, startTime, endTime);
+    }
+
+}

+ 3 - 0
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/ProphaseWeatherDataServiceImpl.java

@@ -78,5 +78,8 @@ public class ProphaseWeatherDataServiceImpl extends ServiceImpl<ProphaseWeatherD
         baseMapper.deleteData(equipmentId, startTime, endTime);
     }
 
+    public void insertOne(ProphaseWeatherData prophaseWeatherData){
+        baseMapper.insertOneWithNew(prophaseWeatherData);
+    }
 
 }

+ 12 - 2
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/RealTimeDisplayServiceImpl.java

@@ -58,6 +58,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
         ArrayList densityList = new ArrayList<>();
         ArrayList<HashMap<String, Object>> densityList2 = new ArrayList<>();
         ArrayList<HashMap<String, Object>> densityList3 = new ArrayList<>();
+        ArrayList<HashMap<String, Object>> densityListTi = new ArrayList<>();
         //用于遍历数据
         TreeMap<String, Object> map = new TreeMap<>();
         if (height == null || height.equals("")) {
@@ -95,7 +96,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
             /*
              * 风速段-----湍流平均值
              */
-            TreeMap<Object, Object> treeMap = new TreeMap();
+            TreeMap<BigDecimal, BigDecimal> treeMap = new TreeMap();
             Map<BigDecimal, BigDecimal> speedLevel_turbulenceAvgMap = new HashMap<>();
             BigDecimal avgContent;
             for (Map.Entry<BigDecimal, List<BigDecimal>> e : speedLevel_turbulenceMap.entrySet()) {
@@ -122,7 +123,15 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
 
 
             //拼接返回给前台
-            for (Map.Entry<Object, Object> o1 : treeMap.entrySet()) {
+            for (Map.Entry<BigDecimal, BigDecimal> o1 : treeMap.entrySet()) {
+                if(o1.getKey().compareTo(BigDecimal.valueOf(15)) == 0){
+                    HashMap<String, Object> mapTi = new HashMap<>();
+                    mapTi.put("heightTi", h);
+                    mapTi.put("TurAveTi", o1.getValue());
+                    densityListTi.add(mapTi);
+
+
+                }
                 Map<String, Object> map2 = new HashMap();
 
                 map2.put("ws", o1.getKey());
@@ -158,6 +167,7 @@ public class RealTimeDisplayServiceImpl implements RealTimeDisplayService {
         densityList.add(densityList2);
 
         densityList.add(densityList3);
+        densityList.add(densityListTi);
 
         return densityList;
 

+ 32 - 51
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerCalculationDataServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jiayue.biz.service.impl;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -562,30 +563,25 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
         ArrayList<Object> DataOneList = new ArrayList<>();
         ArrayList<Object> DataTWOList = new ArrayList<>();
 
-        Calendar calendar1 = Calendar.getInstance();
-        calendar1.clear();
-        calendar1.set(Calendar.YEAR, DateUtil.year(new Date(endTime)));
-        calendar1.roll(Calendar.DAY_OF_YEAR, -1);
-        //获取年份最后一天
-        endTime = calendar1.getTime().getTime();
-        List<WindTowerInfo> windTowerInfos = windTowerInfoService.getByEquipmentNo(eqId);
+
+        List<WindTowerInfo> windTowerInfos = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo, eqId).list();
         if (height == null || height.equals("")) {
             height = windTowerInfos.get(0).getHeights();
         }
 
-        //设置年份用的
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
         //获取查询的年份
-        int toYearStart = Integer.parseInt(sdf.format(startTime));
-        int toYearEnd = Integer.parseInt(sdf.format(endTime));
+        DateTime startTimeYear = DateUtil.beginOfYear(new Date(startTime));
+        DateTime endTimeYear = DateUtil.endOfYear(new Date(endTime));
 
-        List<String> heightSort = new ArrayList<>();
 
         String[] heightAll = height.split(",");
 
-        List<EquipmentAttribute> equipmentAttributeList = equipmentAttributeService.list();
-        List<WindTowerCalculationData> windTowerCalculationDataList = getByBetweenTimeAndEquipmentId(new Date(startTime), new Date(endTime), eqId);
-
+        List<EquipmentAttribute> equipmentAttributeList = equipmentAttributeService.lambdaQuery().likeLeft(EquipmentAttribute::getFieldName, "awsMonth").or().likeLeft(EquipmentAttribute::getFieldName, "awsMonth").list();
+        List<EquipmentAttribute> equipmentAttributeList1 = equipmentAttributeService.lambdaQuery().likeLeft(EquipmentAttribute::getFieldName, "wpdMonth").or().likeLeft(EquipmentAttribute::getFieldName, "awsMonth").list();
+        equipmentAttributeList.addAll(equipmentAttributeList1);
+//        List<WindTowerCalculationData> windTowerCalculationDataList = getByBetweenTimeAndEquipmentId(new Date(startTime), new Date(endTime), eqId);
+        List<WindTowerCalculationData> windTowerCalculationDataList = this.getByBetweenTimeAndEquipmentIdAndEbId(new Date(startTime), new Date(endTime), eqId, equipmentAttributeList);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
         //遍历层高
         for (String h : heightAll) {
             //设置 层高+fieldName(数据库字段 50awsMonth)
@@ -594,40 +590,25 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
 
             List<EquipmentAttribute> allWsFiledNameList = equipmentAttributeList.stream().filter(w -> w.getFieldName().equals(fieldNameWs)).collect(Collectors.toList());
             List<EquipmentAttribute> allWpdFiledNameList = equipmentAttributeList.stream().filter(w -> w.getFieldName().equals(fieldNameWpd)).collect(Collectors.toList());
-
-            //存放最后数据的map 防止重复数据 new外面
+            //存放最后数据的map
             HashMap<Object, Object> map1 = new HashMap<>();
-
             HashMap<String, Object> HDMap = new HashMap<>();
 
-
             //年平均风速存放的list
             ArrayList<Object> list = new ArrayList<>();
             //年风功率密度存放的list
             ArrayList<Object> list1 = new ArrayList<>();
-            for (int i = toYearStart; i <= toYearEnd; i++) {
-
-
-                Calendar calendar = Calendar.getInstance();
-                calendar.clear();
-                calendar.set(Calendar.YEAR, i);
-                //当前年的开始时间
-                long startHour = calendar.getTimeInMillis();
-                calendar.clear();
-                calendar.set(Calendar.YEAR, i);
-                calendar.roll(Calendar.DAY_OF_YEAR, -1);
-                //当前年的结束时间
-                long endHour = calendar.getTimeInMillis() - 1L;
+
+            for (long l = startTimeYear.getTime(); l <= endTimeYear.getTime(); l = DateUtil.offsetMonth(new Date(l), 12).getTime()) {
+
                 //开始时间
-                Date startTimeOfCurrentMonth = SEDateUtil.getStartTimeOfCurrentDay(new Date(startHour));
+                Date startTimeOfCurrentMonth = DateUtil.beginOfYear(new Date(l));
                 //结束时间
-                Date endTimeOfCurrentMonth = SEDateUtil.getEndTimeOfCurrentDay(new Date(endHour));
+                Date endTimeOfCurrentMonth = DateUtil.offsetMonth(new Date(l), 12);
 
 
                 if (!allWsFiledNameList.isEmpty()) {
                     String awsMonthEqId = allWsFiledNameList.get(0).getId();
-
-
                     List<WindTowerCalculationData> allDataWsList = windTowerCalculationDataList.stream().filter(w -> w.getEquipmentId().equals(eqId) && w.getEbId().equals(awsMonthEqId) &&
                             w.getTime().after(startTimeOfCurrentMonth) && w.getTime().before(endTimeOfCurrentMonth)).sorted(Comparator.comparing(WindTowerCalculationData::getTime)).collect(Collectors.toList());
                     BigDecimal wsYearData = BigDecimal.ZERO;
@@ -637,12 +618,12 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
                     HashMap<Object, Object> wsMap = new HashMap<>();
 
                     if (!allDataWsList.isEmpty()) {
-                        wsMap.put(i, wsYearData.divide(BigDecimal.valueOf(allDataWsList.size()), 2, RoundingMode.HALF_UP));
+                        wsMap.put(simpleDateFormat.format(new Date(l)), wsYearData.divide(BigDecimal.valueOf(allDataWsList.size()), 2, RoundingMode.HALF_UP));
                     }
 
                     //给时间和年平均数值添加标识
                     for (Map.Entry<Object, Object> ws1 : wsMap.entrySet()) {
-                        HashMap<Object, Object> map = new HashMap<>();
+                        HashMap<String, Object> map = new HashMap<>();
                         map.put("time", ws1.getKey());
                         map.put("ws", ws1.getValue());
                         list.add(map);
@@ -656,8 +637,6 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
                         map1.put("arr", hd.getValue());
 
                     }
-
-
                 }
                 if (!allWpdFiledNameList.isEmpty()) {
                     String wpdMonthEqId = allWpdFiledNameList.get(0).getId();
@@ -670,7 +649,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
                     HashMap<Object, Object> wpdMap = new HashMap<>();
                     //添加时间
                     if (!allDataWpdList.isEmpty()) {
-                        wpdMap.put(i, wpdYearData.divide(BigDecimal.valueOf(allDataWpdList.size()), 2, RoundingMode.HALF_UP));
+                        wpdMap.put(simpleDateFormat.format(new Date(l)), wpdYearData.divide(BigDecimal.valueOf(allDataWpdList.size()), 2, RoundingMode.HALF_UP));
                     }
 
                     for (Map.Entry<Object, Object> wpd1 : wpdMap.entrySet()) {
@@ -1702,6 +1681,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
         return list;
     }
 
+
     /**
      * 计算日风切变入库
      *
@@ -1710,12 +1690,14 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
      * @param equipmentId 设备id
      * @return
      */
-    public ArrayList<WindTowerCalculationData> shearDay(Date startTime, Date endTime, String equipmentId, List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerInfo> windTowerInfoList,List<ProphaseAnemometryData> prophaseAnemometryDataList) {
+    public ArrayList<WindTowerCalculationData> shearDay(Date startTime, Date endTime, String equipmentId
+            , List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList
+            , List<WindTowerInfo> windTowerInfoList, List<ProphaseAnemometryData> prophaseAnemometryDataList) {
         long startHour = startTime.getTime();
         long endHour = endTime.getTime();
         long dayTime = 86400000L;
         String[] heights = windTowerInfoList.get(0).getHeights().split(",");
-
+        List<ProphaseAnemometryData> prophaseAnemometryData = prophaseAnemometryDataList.stream().filter(p -> p.getWsAve() != null && p.getWsAve() != -99).collect(Collectors.toList());
         ArrayList<WindTowerCalculationData> list = new ArrayList<>();
         try {
             //获取日综合风切变
@@ -1728,7 +1710,7 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
 
                 //获取所有小时风切变数据
                 long start = start1;
-                List<ProphaseAnemometryData> collect = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= start && p.getTs().getTime() < start2).collect(Collectors.toList());
+                List<ProphaseAnemometryData> collect = prophaseAnemometryData.stream().filter(p -> p.getTs().getTime() >= start && p.getTs().getTime() < start2).collect(Collectors.toList());
                 BigDecimal windShear = CalculationUtil.getWindShear(collect, heights);
                 if (collect.size() > 0) {
                     WindTowerCalculationData windTowerCalculationData = new WindTowerCalculationData();
@@ -1761,7 +1743,9 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
      * @param equipmentId 设备id
      * @return
      */
-    public ArrayList<WindTowerCalculationData> shearMonth(Date startTime, Date endTime, String equipmentId, List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList, List<WindTowerInfo> windTowerInfoList,List<ProphaseAnemometryData> prophaseAnemometryDataList) {
+    public ArrayList<WindTowerCalculationData> shearMonth(Date startTime, Date endTime, String equipmentId
+            , List<WindTowerCalculationData> windTowerCalculationDataList, List<EquipmentAttribute> equipmentAttributeList
+            , List<WindTowerInfo> windTowerInfoList,List<ProphaseAnemometryData> prophaseAnemometryDataList) {
         //时间-1防止0点数据查不到
         Date startHour = new Date(startTime.getTime() - 1);
         //获取时间段所有统计数据
@@ -1944,21 +1928,18 @@ public class WindTowerCalculationDataServiceImpl extends ServiceImpl<WindTowerCa
      */
     public ArrayList<WindTowerCalculationData> calculateWindPowerShear(Date startTime, Date endTime, String equipmentId, List<ProphaseAnemometryData> prophaseAnemometryDataList, List<WindTowerCalculationData> windTowerCalculationDataList) {
         log.info("开始计算小时风切变指数");
-        long startHour = startTime.getTime();
-        long endHour = endTime.getTime();
-        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.getByEquipmentNo(equipmentId);
+        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.lambdaQuery().eq(WindTowerInfo::getEquipmentNo, equipmentId).list();
         String[] heights = windTowerInfoList.get(0).getHeights().split(",");
         ArrayList<WindTowerCalculationData> listAll = new ArrayList<>();
         //时间段内所有风数据
-        List<ProphaseAnemometryData> prophaseAnemometryData = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() <= endTime.getTime()).collect(Collectors.toList());
+        List<ProphaseAnemometryData> prophaseAnemometryData = prophaseAnemometryDataList.stream().filter(p -> p.getTs().getTime() >= startTime.getTime() && p.getTs().getTime() <= endTime.getTime() && p.getWsAve() != null && p.getWsAve() > 0).collect(Collectors.toList());
         EquipmentAttribute equipmentAttribute = equipmentAttributeService.lambdaQuery().eq(EquipmentAttribute::getFieldName, windShearFiledName).list().get(0);
         //删除综合风切变
         removeByStartTimeBetweenAndEquipmentIdAndEbId(startTime, endTime, equipmentId, equipmentAttribute.getId());
         try {
-            for (long start1 = startHour; start1 <= endHour; start1 = start1 + 3600000) {
+            for (long start1 = startTime.getTime(); start1 <= endTime.getTime(); start1 = start1 + 3600000) {
                 //开始时间--->start1  结束时间---->start2
                 long start2 = start1 + 3600000L;
-                BigDecimal total = BigDecimal.ZERO;
 
                 long finalStart = start1;
                 List<ProphaseAnemometryData> collect = prophaseAnemometryData.stream().filter(p -> p.getTs().getTime() >= finalStart && p.getTs().getTime() < start2).collect(Collectors.toList());

+ 113 - 85
wrdep-biz/src/main/java/com/jiayue/biz/service/impl/WindTowerDataParentTableServiceImpl.java

@@ -59,6 +59,11 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
     DisplayConfigServiceImpl displayConfigService;
 
     @Autowired
+    ProphaseAnemometryDataOrgService prophaseAnemometryDataOrgService;
+
+    @Autowired
+    ProphaseWeatherDataOrgService prophaseWeatherDataOrgService;
+    @Autowired
     ProphaseAnemometryDataService prophaseAnemometryDataService;
 
     @Autowired
@@ -87,7 +92,7 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
             simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
         }
         String eqNo = equipmentId;
-        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.getAllWindTower();
+        List<WindTowerInfo> windTowerInfoList = windTowerInfoService.list();
         List<WindTowerInfo> windTowerInfo = windTowerInfoList.stream().filter(w -> w.getEquipmentNo().equals(eqNo)).collect(Collectors.toList());
         String windTowerInfoHeights = windTowerInfo.get(0).getHeights();
         String windTowerInfoWdHeights = windTowerInfo.get(0).getWdHeights();
@@ -97,105 +102,128 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
         heightAll.addAll(Arrays.asList(wdHeight));
         heightAll.addAll(Arrays.asList(heights));
         //层高
-        ArrayList<ProphaseAnemometryData> prophaseAnemometryDataArrayList = new ArrayList<>();
-        ArrayList<ProphaseWeatherData> prophaseAnemometryPublicDataArrayList = new ArrayList<>();
-
+//        ArrayList<ProphaseAnemometryData> prophaseAnemometryDataArrayList = new ArrayList<>();
+//        ArrayList<ProphaseWeatherData> prophaseAnemometryPublicDataArrayList = new ArrayList<>();
         try {
             //所有数据
-            for (String height : heightAll) {
-                for (Map<String, Object> m : allData) {
-                    ProphaseAnemometryData one = new ProphaseAnemometryData();
-                    //组装子表数据
-                    one.setWsAve(m.get("wsAve_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsAve_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWsMin(m.get("wsMin_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsMin_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWsMax(m.get("wsMax_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsMax_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWsSta(m.get("wsSta_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsSta_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWsInst(m.get("wsInst_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsInst_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWdAve(m.get("wdAve_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdAve_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWdMax(m.get("wdMax_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdMax_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWdMin(m.get("wdMin_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdMin_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWdSta(m.get("wdSta_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdSta_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setWdInst(m.get("wdInst_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdInst_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    one.setLayerHeight(height);
-                    one.setEquipmentId(equipmentId);
-                    prophaseAnemometryDataArrayList.add(one);
-                    if (m.get("time") != null) {
-                        try {
-                            try {
-                                one.setTs(new Timestamp(simpleDateFormat.parse(m.get("time").toString()).getTime()));
-                            } catch (ParseException e) {
-                                one.setTs(new Timestamp(new Date(Long.parseLong(m.get("time").toString())).getTime()));
-                            }
-
-                        } catch (Exception e) {
-                            log.error("时间转换异常:" + e);
+            for (Map<String, Object> m : allData) {
+                if (!operation.equals("DataRecalculation")) {
+                    this.packageOrgData(m, heightAll, simpleDateFormat, eqNo, "org");
+                }
+                //异常数据赋值为-99
+                if (m.get("abnormalType") != null) {
+                    if (m.get("abnormalType").toString().contains(",")) {
+                        String[] abnormalTypes = m.get("abnormalType").toString().split(",");
+                        for (String abnormalType : abnormalTypes) {
+                            m.put(abnormalType, -99f);
                         }
+                    } else {
+                        m.put(m.get("abnormalType").toString(), -99f);
                     }
-                    prophaseAnemometryDataService.insertOneWithNew(one);
                 }
-
-//                log.error("prophaseAnemometryDataArrayList = " + JSONUtil.toJsonPrettyStr(prophaseAnemometryDataArrayList));
-//                prophaseAnemometryDataMapper.insertSplice(prophaseAnemometryDataArrayList, equipmentId, height);
+                this.packageOrgData(m, heightAll, simpleDateFormat, eqNo, "noOrg");
             }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
-            for (Map<String, Object> m : allData) {
-                ProphaseWeatherData prophaseAnemometryPublicData = new ProphaseWeatherData();
-                if (m.get("paMax") != null)
-                    //kpa转hpa
-                    if (BigDecimal.valueOf(Double.parseDouble(m.get("paMax").toString())).compareTo(new BigDecimal(200)) < 0)
-                        prophaseAnemometryPublicData.setPaMax(CalculationUtil.getBigDecimal(m.get("paMax").toString()).multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    else
-                        prophaseAnemometryPublicData.setPaMax(CalculationUtil.getBigDecimal(m.get("paMax").toString()).floatValue());
-                if (m.get("paMin") != null)
-                    //kpa转hpa
-                    if (BigDecimal.valueOf(Double.parseDouble(m.get("paMin").toString())).compareTo(new BigDecimal(200)) < 0)
-                        prophaseAnemometryPublicData.setPaMin(CalculationUtil.getBigDecimal(m.get("paMin").toString()).multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    else
-                        prophaseAnemometryPublicData.setPaMin(CalculationUtil.getBigDecimal(m.get("paMin").toString()).floatValue());
-                if (m.get("paAve") != null)
-                    //kpa转hpa
-                    if (BigDecimal.valueOf(Double.parseDouble(m.get("paAve").toString())).compareTo(new BigDecimal(200)) < 0)
-                        prophaseAnemometryPublicData.setPaAve(CalculationUtil.getBigDecimal(m.get("paAve").toString()).multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP).floatValue());
-                    else
-                        prophaseAnemometryPublicData.setPaAve(CalculationUtil.getBigDecimal(m.get("paAve").toString()).floatValue());
-                prophaseAnemometryPublicData.setPaSta(m.get("paSta") == null ? null : CalculationUtil.getBigDecimal(m.get("paSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setTMax(m.get("tMax") == null ? null : CalculationUtil.getBigDecimal(m.get("tMax")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setTMin(m.get("tMin") == null ? null : CalculationUtil.getBigDecimal(m.get("tMin")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setTAve(m.get("tAve") == null ? null : CalculationUtil.getBigDecimal(m.get("tAve")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setTSta(m.get("tSta") == null ? null : CalculationUtil.getBigDecimal(m.get("tSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setRhMax(m.get("rhMax") == null ? null : CalculationUtil.getBigDecimal(m.get("rhMax")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setRhMin(m.get("rhMin") == null ? null : CalculationUtil.getBigDecimal(m.get("rhMin")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setRhAve(m.get("rhAve") == null ? null : CalculationUtil.getBigDecimal(m.get("rhAve")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                prophaseAnemometryPublicData.setRhSta(m.get("rhSta") == null ? null : CalculationUtil.getBigDecimal(m.get("rhSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
-                //计算空气密度  1.293*(273/(273+温度摄氏度))*气压百帕/1013
-                if (prophaseAnemometryPublicData.getTAve() != null && prophaseAnemometryPublicData.getPaAve() != null) {
-                    BigDecimal airDensity = BigDecimal.valueOf(1.293).multiply(new BigDecimal(273).divide(new BigDecimal(273).add(BigDecimal.valueOf(prophaseAnemometryPublicData.getTAve())), 2, RoundingMode.HALF_UP)).multiply(BigDecimal.valueOf(prophaseAnemometryPublicData.getPaAve())).divide(new BigDecimal(1013), 2, RoundingMode.HALF_UP);
-                    prophaseAnemometryPublicData.setAirDensity(airDensity.floatValue());
-                }
-                if (m.get("time") != null) {
+    }
+    public void packageOrgData(Map<String, Object> m, HashSet<String> heightAll, SimpleDateFormat simpleDateFormat, String equipmentId, String org) {
+        for (String height : heightAll) {
+            ProphaseAnemometryData one = new ProphaseAnemometryData();
+            //组装子表数据
+            one.setWsAve(m.get("wsAve_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsAve_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWsMin(m.get("wsMin_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsMin_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWsMax(m.get("wsMax_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsMax_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWsSta(m.get("wsSta_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsSta_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWsInst(m.get("wsInst_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wsInst_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWdAve(m.get("wdAve_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdAve_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWdMax(m.get("wdMax_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdMax_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWdMin(m.get("wdMin_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdMin_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWdSta(m.get("wdSta_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdSta_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setWdInst(m.get("wdInst_" + height) == null ? null : CalculationUtil.getBigDecimal(m.get("wdInst_" + height)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            one.setLayerHeight(height);
+            one.setEquipmentId(equipmentId);
+            if (m.get("time") != null) {
+                try {
                     try {
-                        try {
-                            prophaseAnemometryPublicData.setTs(new Timestamp(simpleDateFormat.parse(m.get("time").toString()).getTime()));
-                        } catch (ParseException e) {
-                            prophaseAnemometryPublicData.setTs(new Timestamp(new Date(Long.parseLong(m.get("time").toString())).getTime()));
-                        }
-
-                    } catch (Exception e) {
-                        log.error("时间转换异常:" + e);
+                        one.setTs(new Timestamp(simpleDateFormat.parse(m.get("time").toString()).getTime()));
+                    } catch (ParseException e) {
+                        one.setTs(new Timestamp(new Date(Long.parseLong(m.get("time").toString())).getTime()));
                     }
+
+                } catch (Exception e) {
+                    log.error("时间转换异常:" + e);
+                }
+            }
+            if (org.equals("org")) {
+                prophaseAnemometryDataOrgService.insertOneWithNew(one);
+            } else {
+                prophaseAnemometryDataService.insertOneWithNew(one);
+            }
+        }
+
+        ProphaseWeatherData prophaseAnemometryPublicData = new ProphaseWeatherData();
+        prophaseAnemometryPublicData.setEquipmentId(equipmentId);
+        if (m.get("paMax") != null)
+            //kpa转hpa
+            if (BigDecimal.valueOf(Double.parseDouble(m.get("paMax").toString())).compareTo(new BigDecimal(200)) < 0)
+                prophaseAnemometryPublicData.setPaMax(CalculationUtil.getBigDecimal(m.get("paMax").toString()).multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            else
+                prophaseAnemometryPublicData.setPaMax(CalculationUtil.getBigDecimal(m.get("paMax").toString()).floatValue());
+        if (m.get("paMin") != null)
+            //kpa转hpa
+            if (BigDecimal.valueOf(Double.parseDouble(m.get("paMin").toString())).compareTo(new BigDecimal(200)) < 0)
+                prophaseAnemometryPublicData.setPaMin(CalculationUtil.getBigDecimal(m.get("paMin").toString()).multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            else
+                prophaseAnemometryPublicData.setPaMin(CalculationUtil.getBigDecimal(m.get("paMin").toString()).floatValue());
+        if (m.get("paAve") != null)
+            //kpa转hpa
+            if (BigDecimal.valueOf(Double.parseDouble(m.get("paAve").toString())).compareTo(new BigDecimal(200)) < 0)
+                prophaseAnemometryPublicData.setPaAve(CalculationUtil.getBigDecimal(m.get("paAve").toString()).multiply(new BigDecimal(10)).setScale(2, RoundingMode.HALF_UP).floatValue());
+            else
+                prophaseAnemometryPublicData.setPaAve(CalculationUtil.getBigDecimal(m.get("paAve").toString()).floatValue());
+        prophaseAnemometryPublicData.setPaSta(m.get("paSta") == null ? null : CalculationUtil.getBigDecimal(m.get("paSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setTMax(m.get("tMax") == null ? null : CalculationUtil.getBigDecimal(m.get("tMax")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setTMin(m.get("tMin") == null ? null : CalculationUtil.getBigDecimal(m.get("tMin")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setTAve(m.get("tAve") == null ? null : CalculationUtil.getBigDecimal(m.get("tAve")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setTSta(m.get("tSta") == null ? null : CalculationUtil.getBigDecimal(m.get("tSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setRhMax(m.get("rhMax") == null ? null : CalculationUtil.getBigDecimal(m.get("rhMax")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setRhMin(m.get("rhMin") == null ? null : CalculationUtil.getBigDecimal(m.get("rhMin")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setRhAve(m.get("rhAve") == null ? null : CalculationUtil.getBigDecimal(m.get("rhAve")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        prophaseAnemometryPublicData.setRhSta(m.get("rhSta") == null ? null : CalculationUtil.getBigDecimal(m.get("rhSta")).setScale(2, RoundingMode.HALF_UP).floatValue());
+        //计算空气密度  1.293*(273/(273+温度摄氏度))*气压百帕/1013
+        if (prophaseAnemometryPublicData.getTAve() != null && prophaseAnemometryPublicData.getPaAve() != null &&
+                prophaseAnemometryPublicData.getTAve() != -99 && prophaseAnemometryPublicData.getPaAve() > 0) {
+            BigDecimal airDensity = BigDecimal.valueOf(1.293).multiply(new BigDecimal(273).divide(new BigDecimal(273).add(BigDecimal.valueOf(prophaseAnemometryPublicData.getTAve())), 2, RoundingMode.HALF_UP)).multiply(BigDecimal.valueOf(prophaseAnemometryPublicData.getPaAve())).divide(new BigDecimal(1013), 2, RoundingMode.HALF_UP);
+            prophaseAnemometryPublicData.setAirDensity(airDensity.floatValue());
+        }else{
+            //随机数 上限1.28 下限1.15
+            Random random = new Random();
+            int randNumber = random.nextInt(128 - 115 + 1) + 115;
+            BigDecimal air = BigDecimal.valueOf(randNumber).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
+            prophaseAnemometryPublicData.setAirDensity(air.floatValue());
+        }
+        if (m.get("time") != null) {
+            try {
+                try {
+                    prophaseAnemometryPublicData.setTs(new Timestamp(simpleDateFormat.parse(m.get("time").toString()).getTime()));
+                } catch (ParseException e) {
+                    prophaseAnemometryPublicData.setTs(new Timestamp(new Date(Long.parseLong(m.get("time").toString())).getTime()));
                 }
-                prophaseAnemometryPublicDataArrayList.add(prophaseAnemometryPublicData);
 
+            } catch (Exception e) {
+                log.error("时间转换异常:" + e);
             }
-//            log.error("prophaseAnemometryPublicDataArrayList = " + JSONUtil.toJsonPrettyStr(prophaseAnemometryPublicDataArrayList));
-            prophaseWeatherDataService.insertSplice(prophaseAnemometryPublicDataArrayList, equipmentId);
-        } catch (Exception e) {
-            e.printStackTrace();
         }
 
+        if (org.equals("org")) {
+            prophaseWeatherDataOrgService.insertOne(prophaseAnemometryPublicData);
+        } else {
+            prophaseWeatherDataService.insertOne(prophaseAnemometryPublicData);
+        }
     }
 
-
     /**
      * 组装数据
      *
@@ -755,7 +783,7 @@ public class WindTowerDataParentTableServiceImpl extends ServiceImpl<WindTowerDa
                         .append(",").append("pa_ave")
                         .append(",").append("pa_sta");
                 //所有层高
-                String[] height = {"150", "150A", "140", "140A", "120", "120A", "110", "110A", "100", "100A", "90", "90A", "80", "80A", "70", "70A", "50", "50A", "30", "30A", "10", "10A"};
+                String[] height = {"200", "200A","190", "190A","180", "180A","170", "170A","160", "160A","150", "150A", "140", "140A", "120", "120A", "110", "110A", "100", "100A", "90", "90A", "80", "80A", "70", "70A", "50", "50A", "30", "30A", "10", "10A"};
                 Map<String, Object> map = new HashMap<>();
                 if (!mapList.isEmpty()) {
                     map = mapList.get(0);

+ 582 - 272
wrdep-ui/src/api/biz/dataQuery/defaultOption.js

@@ -1,783 +1,1093 @@
 export default {
   fieldList: [
+    // {
+    //   label: "设备主键ID",
+    //   key: "equipmentId"
+    // },
     {
-      label: "设备主键ID",
-      key: "equipment_id"
-    }, {
       label: "时间",
       key: "time"
-    },
-    {
+    },{
+      label: "_200A米风向瞬时值",
+      key: "wdInst_200A"
+    }, {
+      label: "_200A米风向最大值",
+      key: "wdMax_200A"
+    }, {
+      label: "_200A米风向最小值",
+      key: "wdMin_200A"
+    }, {
+      label: "_200A米风向平均值",
+      key: "wdAve_200A"
+    }, {
+      label: "_200A米风向标准偏差",
+      key: "wdSta_200A"
+    }, {
+      label: "_200A米风速瞬时值",
+      key: "wsInst_200A"
+    }, {
+      label: "_200A米风速最大值",
+      key: "wsMax_200A"
+    }, {
+      label: "_200A米风速最小值",
+      key: "wsMin_200A"
+    }, {
+      label: "_200A米风速平均值",
+      key: "wsAve_200A"
+    }, {
+      label: "_200A米风速标准偏差",
+      key: "wsSta_200A"
+    },{
+      label: "200米风向瞬时值",
+      key: "wdInst_200"
+    }, {
+      label: "200米风向最大值",
+      key: "wdMax_200"
+    }, {
+      label: "200米风向最小值",
+      key: "wdMin_200"
+    }, {
+      label: "200米风向平均值",
+      key: "wdAve_200"
+    }, {
+      label: "200米风向标准偏差",
+      key: "wdSta_200"
+    }, {
+      label: "200米风速瞬时值",
+      key: "wsInst_200"
+    }, {
+      label: "200米风速最大值",
+      key: "wsMax_200"
+    }, {
+      label: "200米风速最小值",
+      key: "wsMin_200"
+    }, {
+      label: "200米风速平均值",
+      key: "wsAve_200"
+    }, {
+      label: "200米风速标准偏差",
+      key: "wsSta_200"
+    },{
+      label: "_190A风向瞬时值",
+      key: "wdInst_190A"
+    }, {
+      label: "_190A风向最大值",
+      key: "wdMax_190A"
+    }, {
+      label: "_190A风向最小值",
+      key: "wdMin_190A"
+    }, {
+      label: "_190A风向平均值",
+      key: "wdAve_190A"
+    }, {
+      label: "_190A风向标准偏差",
+      key: "wdSta_190A"
+    }, {
+      label: "_190A风速瞬时值",
+      key: "wsInst_190A"
+    }, {
+      label: "_190A风速最大值",
+      key: "wsMax_190A"
+    }, {
+      label: "_190A风速最小值",
+      key: "wsMin_190A"
+    }, {
+      label: "_190A风速平均值",
+      key: "wsAve_190A"
+    }, {
+      label: "_190A风速标准偏差",
+      key: "wsSta_190A"
+    },{
+      label: "190米风向瞬时值",
+      key: "wdInst_190"
+    }, {
+      label: "190米风向最大值",
+      key: "wdMax_190"
+    }, {
+      label: "190米风向最小值",
+      key: "wdMin_190"
+    }, {
+      label: "190米风向平均值",
+      key: "wdAve_190"
+    }, {
+      label: "190米风向标准偏差",
+      key: "wdSta_190"
+    }, {
+      label: "190米风速瞬时值",
+      key: "wsInst_190"
+    }, {
+      label: "190米风速最大值",
+      key: "wsMax_190"
+    }, {
+      label: "190米风速最小值",
+      key: "wsMin_190"
+    }, {
+      label: "190米风速平均值",
+      key: "wsAve_190"
+    }, {
+      label: "190米风速标准偏差",
+      key: "wsSta_190"
+    },{
+      label: "_180A米风向瞬时值",
+      key: "wdInst_180A"
+    }, {
+      label: "_180A米风向最大值",
+      key: "wdMax_180A"
+    }, {
+      label: "_180A米风向最小值",
+      key: "wdMin_180A"
+    }, {
+      label: "_180A米风向平均值",
+      key: "wdAve_180A"
+    }, {
+      label: "_180A米风向标准偏差",
+      key: "wdSta_180A"
+    }, {
+      label: "_180A米风速瞬时值",
+      key: "wsInst_180A"
+    }, {
+      label: "_180A米风速最大值",
+      key: "wsMax_180A"
+    }, {
+      label: "_180A米风速最小值",
+      key: "wsMin_180A"
+    }, {
+      label: "_180A米风速平均值",
+      key: "wsAve_180A"
+    }, {
+      label: "_180A米风速标准偏差",
+      key: "wsSta_180A"
+    },{
+      label: "180米风向瞬时值",
+      key: "wdInst_180"
+    }, {
+      label: "180米风向最大值",
+      key: "wdMax_180"
+    }, {
+      label: "180米风向最小值",
+      key: "wdMin_180"
+    }, {
+      label: "180米风向平均值",
+      key: "wdAve_180"
+    }, {
+      label: "180米风向标准偏差",
+      key: "wdSta_180"
+    }, {
+      label: "180米风速瞬时值",
+      key: "wsInst_180"
+    }, {
+      label: "180米风速最大值",
+      key: "wsMax_180"
+    }, {
+      label: "180米风速最小值",
+      key: "wsMin_180"
+    }, {
+      label: "180米风速平均值",
+      key: "wsAve_180"
+    }, {
+      label: "180米风速标准偏差",
+      key: "wsSta_180"
+    },{
+      label: "_170A米风向瞬时值",
+      key: "wdInst__170A"
+    }, {
+      label: "_170A米风向最大值",
+      key: "wdMax__170A"
+    }, {
+      label: "_170A米风向最小值",
+      key: "wdMin__170A"
+    }, {
+      label: "_170A米风向平均值",
+      key: "wdAve__170A"
+    }, {
+      label: "_170A米风向标准偏差",
+      key: "wdSta__170A"
+    }, {
+      label: "_170A米风速瞬时值",
+      key: "wsInst__170A"
+    }, {
+      label: "_170A米风速最大值",
+      key: "wsMax__170A"
+    }, {
+      label: "_170A米风速最小值",
+      key: "wsMin__170A"
+    }, {
+      label: "_170A米风速平均值",
+      key: "wsAve__170A"
+    }, {
+      label: "_170A米风速标准偏差",
+      key: "wsSta__170A"
+    },{
+      label: "170米风向瞬时值",
+      key: "wdInst_170"
+    }, {
+      label: "170米风向最大值",
+      key: "wdMax_170"
+    }, {
+      label: "170米风向最小值",
+      key: "wdMin_170"
+    }, {
+      label: "170米风向平均值",
+      key: "wdAve_170"
+    }, {
+      label: "170米风向标准偏差",
+      key: "wdSta_170"
+    }, {
+      label: "170米风速瞬时值",
+      key: "wsInst_170"
+    }, {
+      label: "170米风速最大值",
+      key: "wsMax_170"
+    }, {
+      label: "170米风速最小值",
+      key: "wsMin_170"
+    }, {
+      label: "170米风速平均值",
+      key: "wsAve_170"
+    }, {
+      label: "170米风速标准偏差",
+      key: "wsSta_170"
+    },{
+      label: "_160A米风向瞬时值",
+      key: "wdInst__160A"
+    }, {
+      label: "_160A米风向最大值",
+      key: "wdMax__160A"
+    }, {
+      label: "_160A米风向最小值",
+      key: "wdMin__160A"
+    }, {
+      label: "_160A米风向平均值",
+      key: "wdAve__160A"
+    }, {
+      label: "_160A米风向标准偏差",
+      key: "wdSta__160A"
+    }, {
+      label: "_160A米风速瞬时值",
+      key: "wsInst__160A"
+    }, {
+      label: "_160A米风速最大值",
+      key: "wsMax__160A"
+    }, {
+      label: "_160A米风速最小值",
+      key: "wsMin__160A"
+    }, {
+      label: "_160A米风速平均值",
+      key: "wsAve__160A"
+    }, {
+      label: "_160A米风速标准偏差",
+      key: "wsSta__160A"
+    },{
+      label: "160米风向瞬时值",
+      key: "wdInst_160"
+    }, {
+      label: "160米风向最大值",
+      key: "wdMax_160"
+    }, {
+      label: "160米风向最小值",
+      key: "wdMin_160"
+    }, {
+      label: "160米风向平均值",
+      key: "wdAve_160"
+    }, {
+      label: "160米风向标准偏差",
+      key: "wdSta_160"
+    }, {
+      label: "160米风速瞬时值",
+      key: "wsInst_160"
+    }, {
+      label: "160米风速最大值",
+      key: "wsMax_160"
+    }, {
+      label: "160米风速最小值",
+      key: "wsMin_160"
+    }, {
+      label: "160米风速平均值",
+      key: "wsAve_160"
+    }, {
+      label: "160米风速标准偏差",
+      key: "wsSta_160"
+    }, {
       label: "150米风向瞬时值",
-      key: "wd_inst150"
+      key: "wdInst_150"
     }, {
       label: "150米风向最大值",
-      key: "wd_max150"
+      key: "wdMax_150"
     }, {
       label: "150米风向最小值",
-      key: "wd_min150"
+      key: "wdMin_150"
     }, {
       label: "150米风向平均值",
-      key: "wd_ave150"
+      key: "wdAve_150"
     }, {
       label: "150米风向标准偏差",
-      key: "wd_sta150"
+      key: "wdSta_150"
     }, {
       label: "150米风速瞬时值",
-      key: "ws_inst150"
+      key: "wsInst_150"
     }, {
       label: "150米风速最大值",
-      key: "ws_max150"
+      key: "wsMax_150"
     }, {
       label: "150米风速最小值",
-      key: "ws_min150"
+      key: "wsMin_150"
     }, {
       label: "150米风速平均值",
-      key: "ws_ave150"
+      key: "wsAve_150"
     }, {
       label: "150米风速标准偏差",
-      key: "ws_sta150"
-    },{
+      key: "wsSta_150"
+    }, {
       label: "150A米风向瞬时值",
-      key: "wd_inst150A"
+      key: "wdInst_150A"
     }, {
       label: "150A米风向最大值",
-      key: "wd_max150A"
+      key: "wdMax_150A"
     }, {
       label: "150A米风向最小值",
-      key: "wd_min150A"
+      key: "wdMin_150A"
     }, {
       label: "150A米风向平均值",
-      key: "wd_ave150A"
+      key: "wdAve_150A"
     }, {
       label: "150A米风向标准偏差",
-      key: "wd_sta150A"
+      key: "wdSta_150A"
     }, {
       label: "150A米风速瞬时值",
-      key: "ws_inst150A"
+      key: "wsInst_150A"
     }, {
       label: "150A米风速最大值",
-      key: "ws_max150A"
+      key: "wsMax_150A"
     }, {
       label: "150A米风速最小值",
-      key: "ws_min150A"
+      key: "wsMin_150A"
     }, {
       label: "150A米风速平均值",
-      key: "ws_ave150A"
+      key: "wsAve_150A"
     }, {
       label: "150A米风速标准偏差",
-      key: "ws_sta150A"
+      key: "wsSta_150A"
     }, {
       label: "140米风向瞬时值",
-      key: "wd_inst140"
+      key: "wdInst_140"
     }, {
       label: "140米风向最大值",
-      key: "wd_max140"
+      key: "wdMax_140"
     }, {
       label: "140米风向最小值",
-      key: "wd_min140"
+      key: "wdMin_140"
     }, {
       label: "140米风向平均值",
-      key: "wd_ave140"
+      key: "wdAve_140"
     }, {
       label: "140米风向标准偏差",
-      key: "wd_sta140"
+      key: "wdSta_140"
     }, {
       label: "140米风速瞬时值",
-      key: "ws_inst140"
+      key: "wsInst_140"
     }, {
       label: "140米风速最大值",
-      key: "ws_max140"
+      key: "wsMax_140"
     }, {
       label: "140米风速最小值",
-      key: "ws_min140"
+      key: "wsMin_140"
     }, {
       label: "140米风速平均值",
-      key: "ws_ave140"
+      key: "wsAve_140"
     }, {
       label: "140米风速标准偏差",
-      key: "ws_sta140"
-    },{
+      key: "wsSta_140"
+    }, {
       label: "140A米风向瞬时值",
-      key: "wd_inst140A"
+      key: "wdInst_140A"
     }, {
       label: "140A米风向最大值",
-      key: "wd_max140A"
+      key: "wdMax_140A"
     }, {
       label: "140A米风向最小值",
-      key: "wd_min140A"
+      key: "wdMin_140A"
     }, {
       label: "140A米风向平均值",
-      key: "wd_ave140A"
+      key: "wdAve_140A"
     }, {
       label: "140A米风向标准偏差",
-      key: "wd_sta140A"
+      key: "wdSta_140A"
     }, {
       label: "140A米风速瞬时值",
-      key: "ws_inst140A"
+      key: "wsInst_140A"
     }, {
       label: "140A米风速最大值",
-      key: "ws_max140A"
+      key: "wsMax_140A"
     }, {
       label: "140A米风速最小值",
-      key: "ws_min140A"
+      key: "wsMin_140A"
     }, {
       label: "140A米风速平均值",
-      key: "ws_ave140A"
+      key: "wsAve_140A"
     }, {
       label: "140A米风速标准偏差",
-      key: "ws_sta140A"
+      key: "wsSta_140A"
     }, {
       label: "120米风速瞬时值",
-      key: "ws_inst120"
+      key: "wsInst_120"
     }, {
       label: "120米风速最大值",
-      key: "ws_max120"
+      key: "wsMax_120"
     }, {
       label: "120米风速最小值",
-      key: "ws_min120"
+      key: "wsMin_120"
     }, {
       label: "120米风速平均值",
-      key: "ws_ave120"
+      key: "wsAve_120"
     }, {
       label: "120米风速标准偏差",
-      key: "ws_sta120"
+      key: "wsSta_120"
     }, {
       label: "120米风向瞬时值",
-      key: "wd_inst120"
+      key: "wdInst_120"
     }, {
       label: "120米风向最大值",
-      key: "wd_max120"
+      key: "wdMax_120"
     }, {
       label: "120米风向最小值",
-      key: "wd_min120"
+      key: "wdMin_120"
     }, {
       label: "120米风向平均值",
-      key: "wd_ave120"
+      key: "wdAve_120"
     }, {
       label: "120米风向标准偏差",
-      key: "wd_sta120"
-    },{
+      key: "wdSta_120"
+    }, {
       label: "120A米风速瞬时值",
-      key: "ws_inst120A"
+      key: "wsInst_120A"
     }, {
       label: "120A米风速最大值",
-      key: "ws_max120A"
+      key: "wsMax_120A"
     }, {
       label: "120A米风速最小值",
-      key: "ws_min120A"
+      key: "wsMin_120A"
     }, {
       label: "120A米风速平均值",
-      key: "ws_ave120A"
+      key: "wsAve_120A"
     }, {
       label: "120A米风速标准偏差",
-      key: "ws_sta120A"
+      key: "wsSta_120A"
     }, {
       label: "120A米风向瞬时值",
-      key: "wd_inst120A"
+      key: "wdInst_120A"
     }, {
       label: "120A米风向最大值",
-      key: "wd_max120A"
+      key: "wdMax_120A"
     }, {
       label: "120A米风向最小值",
-      key: "wd_min120A"
+      key: "wdMin_120A"
     }, {
       label: "120A米风向平均值",
-      key: "wd_ave120A"
+      key: "wdAve_120A"
     }, {
       label: "120A米风向标准偏差",
-      key: "wd_sta120A"
-    },{
+      key: "wdSta_120A"
+    }, {
       label: "110米风速瞬时值",
-      key: "ws_inst110"
+      key: "wsInst_110"
     }, {
       label: "110米风速最大值",
-      key: "ws_max110"
+      key: "wsMax_110"
     }, {
       label: "110米风速最小值",
-      key: "ws_min110"
+      key: "wsMin_110"
     }, {
       label: "110米风速平均值",
-      key: "ws_ave110"
+      key: "wsAve_110"
     }, {
       label: "110米风速标准偏差",
-      key: "ws_sta110"
+      key: "wsSta_110"
     }, {
       label: "110米风向瞬时值",
-      key: "wd_inst110"
+      key: "wdInst_110"
     }, {
       label: "110米风向最大值",
-      key: "wd_max110"
+      key: "wdMax_110"
     }, {
       label: "110米风向最小值",
-      key: "wd_min110"
+      key: "wdMin_110"
     }, {
       label: "110米风向平均值",
-      key: "wd_ave110"
+      key: "wdAve_110"
     }, {
       label: "110米风向标准偏差",
-      key: "wd_sta110"
-    },{
+      key: "wdSta_110"
+    }, {
       label: "110A米风速瞬时值",
-      key: "ws_inst110A"
+      key: "wsInst_110A"
     }, {
       label: "110A米风速最大值",
-      key: "ws_max110A"
+      key: "wsMax_110A"
     }, {
       label: "110A米风速最小值",
-      key: "ws_min110A"
+      key: "wsMin_110A"
     }, {
       label: "110A米风速平均值",
-      key: "ws_ave110A"
+      key: "wsAve_110A"
     }, {
       label: "110A米风速标准偏差",
-      key: "ws_sta110A"
+      key: "wsSta_110A"
     }, {
       label: "110A米风向瞬时值",
-      key: "wd_inst110A"
+      key: "wdInst_110A"
     }, {
       label: "110A米风向最大值",
-      key: "wd_max110A"
+      key: "wdMax_110A"
     }, {
       label: "110A米风向最小值",
-      key: "wd_min110A"
+      key: "wdMin_110A"
     }, {
       label: "110A米风向平均值",
-      key: "wd_ave110A"
+      key: "wdAve_110A"
     }, {
       label: "110A米风向标准偏差",
-      key: "wd_sta110A"
+      key: "wdSta_110A"
     }, {
       label: "100米风速瞬时值",
-      key: "ws_inst100"
+      key: "wsInst_100"
     }, {
       label: "100米风速最大值",
-      key: "ws_max100"
+      key: "wsMax_100"
     }, {
       label: "100米风速最小值",
-      key: "ws_min100"
+      key: "wsMin_100"
     }, {
       label: "100米风速平均值",
-      key: "ws_ave100"
+      key: "wsAve_100"
     }, {
       label: "100米风速标准偏差",
-      key: "ws_sta100"
+      key: "wsSta_100"
     }, {
       label: "100米风向瞬时值",
-      key: "wd_inst100"
+      key: "wdInst_100"
     }, {
       label: "100米风向最大值",
-      key: "wd_max100"
+      key: "wdMax_100"
     }, {
       label: "100米风向最小值",
-      key: "wd_min100"
+      key: "wdMin_100"
     }, {
       label: "100米风向平均值",
-      key: "wd_ave100"
+      key: "wdAve_100"
     }, {
       label: "100米风向标准偏差",
-      key: "wd_sta100"
-    },{
+      key: "wdSta_100"
+    }, {
       label: "100A米风速瞬时值",
-      key: "ws_inst100A"
+      key: "wsInst_100A"
     }, {
       label: "100A米风速最大值",
-      key: "ws_max100A"
+      key: "wsMax_100A"
     }, {
       label: "100A米风速最小值",
-      key: "ws_min100A"
+      key: "wsMin_100A"
     }, {
       label: "100A米风速平均值",
-      key: "ws_ave100A"
+      key: "wsAve_100A"
     }, {
       label: "100A米风速标准偏差",
-      key: "ws_sta100A"
+      key: "wsSta_100A"
     }, {
       label: "100A米风向瞬时值",
-      key: "wd_inst100A"
+      key: "wdInst_100A"
     }, {
       label: "100A米风向最大值",
-      key: "wd_max100A"
+      key: "wdMax_100A"
     }, {
       label: "100A米风向最小值",
-      key: "wd_min100A"
+      key: "wdMin_100A"
     }, {
       label: "100A米风向平均值",
-      key: "wd_ave100A"
+      key: "wdAve_100A"
     }, {
       label: "100A米风向标准偏差",
-      key: "wd_sta100A"
+      key: "wdSta_100A"
     }, {
       label: "90米风速瞬时值",
-      key: "ws_inst90"
+      key: "wsInst_90"
     }, {
       label: "90米风速最大值",
-      key: "ws_max90"
+      key: "wsMax_90"
     }, {
       label: "90米风速最小值",
-      key: "ws_min90"
+      key: "wsMin_90"
     }, {
       label: "90米风速平均值",
-      key: "ws_ave90"
+      key: "wsAve_90"
     }, {
       label: "90米风速标准偏差",
-      key: "ws_sta90"
+      key: "wsSta_90"
     }, {
       label: "90米风向瞬时值",
-      key: "wd_inst90"
+      key: "wdInst_90"
     }, {
       label: "90米风向最大值",
-      key: "wd_max90"
+      key: "wdMax_90"
     }, {
       label: "90米风向最小值",
-      key: "wd_min90"
+      key: "wdMin_90"
     }, {
       label: "90米风向平均值",
-      key: "wd_ave90"
+      key: "wdAve_90"
     }, {
       label: "90米风向标准偏差",
-      key: "wd_sta90"
+      key: "wdSta_90"
     }, {
       label: "90A米风速瞬时值",
-      key: "ws_inst90A"
+      key: "wsInst_90A"
     }, {
       label: "90A米风速最大值",
-      key: "ws_max90A"
+      key: "wsMax_90A"
     }, {
       label: "90A米风速最小值",
-      key: "ws_min90A"
+      key: "wsMin_90A"
     }, {
       label: "90A米风速平均值",
-      key: "ws_ave90A"
+      key: "wsAve_90A"
     }, {
       label: "90A米风速标准偏差",
-      key: "ws_sta90A"
+      key: "wsSta_90A"
     }, {
       label: "90A米风向瞬时值",
-      key: "wd_inst90A"
+      key: "wdInst_90A"
     }, {
       label: "90A米风向最大值",
-      key: "wd_max90A"
+      key: "wdMax_90A"
     }, {
       label: "90A米风向最小值",
-      key: "wd_min90A"
+      key: "wdMin_90A"
     }, {
       label: "90A米风向平均值",
-      key: "wd_ave90A"
+      key: "wdAve_90A"
     }, {
       label: "90A米风向标准偏差",
-      key: "wd_sta90A"
-    },{
+      key: "wdSta_90A"
+    }, {
       label: "80米风速瞬时值",
-      key: "ws_inst80"
+      key: "wsInst_80"
     }, {
       label: "80米风速最大值",
-      key: "ws_max80"
+      key: "wsMax_80"
     }, {
       label: "80米风速最小值",
-      key: "ws_min80"
+      key: "wsMin_80"
     }, {
       label: "80米风速平均值",
-      key: "ws_ave80"
+      key: "wsAve_80"
     }, {
       label: "80米风速标准偏差",
-      key: "ws_sta80"
+      key: "wsSta_80"
     }, {
       label: "80米风向瞬时值",
-      key: "wd_inst80"
+      key: "wdInst_80"
     }, {
       label: "80米风向最大值",
-      key: "wd_max80"
+      key: "wdMax_80"
     }, {
       label: "80米风向最小值",
-      key: "wd_min80"
+      key: "wdMin_80"
     }, {
       label: "80米风向平均值",
-      key: "wd_ave80"
+      key: "wdAve_80"
     }, {
       label: "80米风向标准偏差",
-      key: "wd_sta80"
+      key: "wdSta_80"
     }, {
       label: "80A米风速瞬时值",
-      key: "ws_inst80A"
+      key: "wsInst_80A"
     }, {
       label: "80A米风速最大值",
-      key: "ws_max80A"
+      key: "wsMax_80A"
     }, {
       label: "80A米风速最小值",
-      key: "ws_min80A"
+      key: "wsMin_80A"
     }, {
       label: "80A米风速平均值",
-      key: "ws_ave80A"
+      key: "wsAve_80A"
     }, {
       label: "80A米风速标准偏差",
-      key: "ws_sta80A"
+      key: "wsSta_80A"
     }, {
       label: "80A米风向瞬时值",
-      key: "wd_inst80A"
+      key: "wdInst_80A"
     }, {
       label: "80A米风向最大值",
-      key: "wd_max80A"
+      key: "wdMax_80A"
     }, {
       label: "80A米风向最小值",
-      key: "wd_min80A"
+      key: "wdMin_80A"
     }, {
       label: "80A米风向平均值",
-      key: "wd_ave80A"
+      key: "wdAve_80A"
     }, {
       label: "80A米风向标准偏差",
-      key: "wd_sta80A"
+      key: "wdSta_80A"
     }, {
       label: "70米风速瞬时值",
-      key: "ws_inst70"
+      key: "wsInst_70"
     }, {
       label: "70米风速最大值",
-      key: "ws_max70"
+      key: "wsMax_70"
     }, {
       label: "70米风速最小值",
-      key: "ws_min70"
+      key: "wsMin_70"
     }, {
       label: "70米风速平均值",
-      key: "ws_ave70"
+      key: "wsAve_70"
     }, {
       label: "70米风速标准偏差",
-      key: "ws_sta70"
+      key: "wsSta_70"
     }, {
       label: "70米风向瞬时值",
-      key: "wd_inst70"
+      key: "wdInst_70"
     }, {
       label: "70米风向最大值",
-      key: "wd_max70"
+      key: "wdMax_70"
     }, {
       label: "70米风向最小值",
-      key: "wd_min70"
+      key: "wdMin_70"
     }, {
       label: "70米风向平均值",
-      key: "wd_ave70"
+      key: "wdAve_70"
     }, {
       label: "70米风向标准偏差",
-      key: "wd_sta70"
+      key: "wdSta_70"
     }, {
       label: "70A米风速瞬时值",
-      key: "ws_inst70A"
+      key: "wsInst_70A"
     }, {
       label: "70A米风速最大值",
-      key: "ws_max70A"
+      key: "wsMax_70A"
     }, {
       label: "70A米风速最小值",
-      key: "ws_min70A"
+      key: "wsMin_70A"
     }, {
       label: "70A米风速平均值",
-      key: "ws_ave70A"
+      key: "wsAve_70A"
     }, {
       label: "70A米风速标准偏差",
-      key: "ws_sta70A"
+      key: "wsSta_70A"
     }, {
       label: "70A米风向瞬时值",
-      key: "wd_inst70A"
+      key: "wdInst_70A"
     }, {
       label: "70A米风向最大值",
-      key: "wd_max70A"
+      key: "wdMax_70A"
     }, {
       label: "70A米风向最小值",
-      key: "wd_min70A"
+      key: "wdMin_70A"
     }, {
       label: "70A米风向平均值",
-      key: "wd_ave70A"
+      key: "wdAve_70A"
     }, {
       label: "70A米风向标准偏差",
-      key: "wd_sta70A"
+      key: "wdSta_70A"
     }, {
       label: "60米风速瞬时值",
-      key: "ws_inst60"
+      key: "wsInst_60"
     }, {
       label: "60米风速最大值",
-      key: "ws_max60"
+      key: "wsMax_60"
     }, {
       label: "60米风速最小值",
-      key: "ws_min60"
+      key: "wsMin_60"
     }, {
       label: "60米风速平均值",
-      key: "ws_ave60"
+      key: "wsAve_60"
     }, {
       label: "60米风速标准偏差",
-      key: "ws_sta60"
+      key: "wsSta_60"
     }, {
       label: "60米风向瞬时值",
-      key: "wd_inst60"
+      key: "wdInst_60"
     }, {
       label: "60米风向最大值",
-      key: "wd_max60"
+      key: "wdMax_60"
     }, {
       label: "60米风向最小值",
-      key: "wd_min60"
+      key: "wdMin_60"
     }, {
       label: "60米风向平均值",
-      key: "wd_ave60"
+      key: "wdAve_60"
     }, {
       label: "60米风向标准偏差",
-      key: "wd_sta60"
-    },{
+      key: "wdSta_60"
+    }, {
       label: "60A米风速瞬时值",
-      key: "ws_inst60A"
+      key: "wsInst_60A"
     }, {
       label: "60A米风速最大值",
-      key: "ws_max60A"
+      key: "wsMax_60A"
     }, {
       label: "60A米风速最小值",
-      key: "ws_min60A"
+      key: "wsMin_60A"
     }, {
       label: "60A米风速平均值",
-      key: "ws_ave60A"
+      key: "wsAve_60A"
     }, {
       label: "60A米风速标准偏差",
-      key: "ws_sta60A"
+      key: "wsSta_60A"
     }, {
       label: "60A米风向瞬时值",
-      key: "wd_inst60A"
+      key: "wdInst_60A"
     }, {
       label: "60A米风向最大值",
-      key: "wd_max60A"
+      key: "wdMax_60A"
     }, {
       label: "60A米风向最小值",
-      key: "wd_min60A"
+      key: "wdMin_60A"
     }, {
       label: "60A米风向平均值",
-      key: "wd_ave60A"
+      key: "wdAve_60A"
     }, {
       label: "60A米风向标准偏差",
-      key: "wd_sta60A"
-    },{
+      key: "wdSta_60A"
+    }, {
       label: "50米风速瞬时值",
-      key: "ws_inst50"
+      key: "wsInst_50"
     }, {
       label: "50米风速最大值",
-      key: "ws_max50"
+      key: "wsMax_50"
     }, {
       label: "50米风速最小值",
-      key: "ws_min50"
+      key: "wsMin_50"
     }, {
       label: "50米风速平均值",
-      key: "ws_ave50"
+      key: "wsAve_50"
     }, {
       label: "50米风速标准偏差",
-      key: "ws_sta50"
+      key: "wsSta_50"
     }, {
       label: "50米风向瞬时值",
-      key: "wd_inst50"
+      key: "wdInst_50"
     }, {
       label: "50米风向最大值",
-      key: "wd_max50"
+      key: "wdMax_50"
     }, {
       label: "50米风向最小值",
-      key: "wd_min50"
+      key: "wdMin_50"
     }, {
       label: "50米风向平均值",
-      key: "wd_ave50"
+      key: "wdAve_50"
     }, {
       label: "50米风向标准偏差",
-      key: "wd_sta50"
+      key: "wdSta_50"
     }, {
       label: "50A米风速瞬时值",
-      key: "ws_inst50A"
+      key: "wsInst_50A"
     }, {
       label: "50A米风速最大值",
-      key: "ws_max50A"
+      key: "wsMax_50A"
     }, {
       label: "50A米风速最小值",
-      key: "ws_min50A"
+      key: "wsMin_50A"
     }, {
       label: "50A米风速平均值",
-      key: "ws_ave50A"
+      key: "wsAve_50A"
     }, {
       label: "50A米风速标准偏差",
-      key: "ws_sta50A"
+      key: "wsSta_50A"
     }, {
       label: "50A米风向瞬时值",
-      key: "wd_inst50A"
+      key: "wdInst_50A"
     }, {
       label: "50A米风向最大值",
-      key: "wd_max50A"
+      key: "wdMax_50A"
     }, {
       label: "50A米风向最小值",
-      key: "wd_min50A"
+      key: "wdMin_50A"
     }, {
       label: "50A米风向平均值",
-      key: "wd_ave50A"
+      key: "wdAve_50A"
     }, {
       label: "50A米风向标准偏差",
-      key: "wd_sta50A"
+      key: "wdSta_50A"
     }, {
       label: "30米风速瞬时值",
-      key: "ws_inst30"
+      key: "wsInst_30"
     }, {
       label: "30米风速最大值",
-      key: "ws_max30"
+      key: "wsMax_30"
     }, {
       label: "30米风速最小值",
-      key: "ws_min30"
+      key: "wsMin_30"
     }, {
       label: "30米风速平均值",
-      key: "ws_ave30"
+      key: "wsAve_30"
     }, {
       label: "30米风速标准偏差",
-      key: "ws_sta30"
+      key: "wsSta_30"
     }, {
       label: "30米风向瞬时值",
-      key: "wd_inst30"
+      key: "wdInst_30"
     }, {
       label: "30米风向最大值",
-      key: "wd_max30"
+      key: "wdMax_30"
     }, {
       label: "30米风向最小值",
-      key: "wd_min30"
+      key: "wdMin_30"
     }, {
       label: "30米风向平均值",
-      key: "wd_ave30"
+      key: "wdAve_30"
     }, {
       label: "30米风向标准偏差",
-      key: "wd_sta30"
+      key: "wdSta_30"
     }, {
       label: "30A米风速瞬时值",
-      key: "ws_inst30A"
+      key: "wsInst_30A"
     }, {
       label: "30A米风速最大值",
-      key: "ws_max30A"
+      key: "wsMax_30A"
     }, {
       label: "30A米风速最小值",
-      key: "ws_min30A"
+      key: "wsMin_30A"
     }, {
       label: "30A米风速平均值",
-      key: "ws_ave30A"
+      key: "wsAve_30A"
     }, {
       label: "30A米风速标准偏差",
-      key: "ws_sta30A"
+      key: "wsSta_30A"
     }, {
       label: "30A米风向瞬时值",
-      key: "wd_inst30A"
+      key: "wdInst_30A"
     }, {
       label: "30A米风向最大值",
-      key: "wd_max30A"
+      key: "wdMax_30A"
     }, {
       label: "30A米风向最小值",
-      key: "wd_min30A"
+      key: "wdMin_30A"
     }, {
       label: "30A米风向平均值",
-      key: "wd_ave30A"
+      key: "wdAve_30A"
     }, {
       label: "30A米风向标准偏差",
-      key: "wd_sta30A"
-    },{
+      key: "wdSta_30A"
+    }, {
       label: "10米风速瞬时值",
-      key: "ws_inst10"
+      key: "wsInst_10"
     }, {
       label: "10米风速最大值",
-      key: "ws_max10"
+      key: "wsMax_10"
     }, {
       label: "10米风速最小值",
-      key: "ws_min10"
+      key: "wsMin_10"
     }, {
       label: "10米风速平均值",
-      key: "ws_ave10"
+      key: "wsAve_10"
     }, {
       label: "10米风速标准偏差",
-      key: "ws_sta10"
+      key: "wsSta_10"
     }, {
       label: "10米风向瞬时值",
-      key: "wd_inst10"
+      key: "wdInst_10"
     }, {
       label: "10米风向最大值",
-      key: "wd_max10"
+      key: "wdMax_10"
     }, {
       label: "10米风向最小值",
-      key: "wd_min10"
+      key: "wdMin_10"
     }, {
       label: "10米风向平均值",
-      key: "wd_ave10"
+      key: "wdAve_10"
     }, {
       label: "10米风向标准偏差",
-      key: "wd_sta10"
+      key: "wdSta_10"
     }, {
       label: "10A米风速瞬时值",
-      key: "ws_inst10A"
+      key: "wsInst_10A"
     }, {
       label: "10A米风速最大值",
-      key: "ws_max10A"
+      key: "wsMax_10A"
     }, {
       label: "10A米风速最小值",
-      key: "ws_min10A"
+      key: "wsMin_10A"
     }, {
       label: "10A米风速平均值",
-      key: "ws_ave10A"
+      key: "wsAve_10A"
     }, {
       label: "10A米风速标准偏差",
-      key: "ws_sta10A"
+      key: "wsSta_10A"
     }, {
       label: "10A米风向瞬时值",
-      key: "wd_inst10A"
+      key: "wdInst_10A"
     }, {
       label: "10A米风向最大值",
-      key: "wd_max10A"
+      key: "wdMax_10A"
     }, {
       label: "10A米风向最小值",
-      key: "wd_min10A"
+      key: "wdMin_10A"
     }, {
       label: "10A米风向平均值",
-      key: "wd_ave10A"
+      key: "wdAve_10A"
     }, {
       label: "10A米风向标准偏差",
-      key: "wd_sta10A"
+      key: "wdSta_10A"
     }, {
       label: "温度瞬时值",
-      key: "t_inst"
+      key: "tInst"
     }, {
       label: "温度最大值",
-      key: "t_max"
+      key: "tMax"
     }, {
       label: "温度最小值",
-      key: "t_min"
+      key: "tMin"
     }, {
       label: "温度平均值",
-      key: "t_ave"
+      key: "tAve"
     }, {
       label: "温度标准差",
-      key: "t_sta"
+      key: "tSta"
     }, {
       label: "湿度瞬时值",
-      key: "rh_inst"
+      key: "rhInst"
     }, {
       label: "湿度最大值",
-      key: "rh_max"
+      key: "rhMax"
     }, {
       label: "湿度最小值",
-      key: "rh_min"
+      key: "rhMin"
     }, {
       label: "湿度平均值",
-      key: "rh_ave"
+      key: "rhAve"
     }, {
       label: "湿度标准偏差",
-      key: "rh_sta"
+      key: "rhSta"
     }, {
       label: "气压瞬时值",
-      key: "pa_inst"
+      key: "paInst"
     }, {
       label: "气压最大值",
-      key: "pa_max"
+      key: "paMax"
     }, {
       label: "气压最小值",
-      key: "pa_min"
+      key: "paMin"
     }, {
       label: "气压平均值",
-      key: "pa_ave"
-    },{
+      key: "paAve"
+    }, {
       label: "气压标准偏差",
-      key: "pa_sta"
+      key: "paSta"
     }, {
       label: "空气密度",
-      key: "air_density"
+      key: "airDensity"
     }
   ],
   allHeightOptions: [
+    {value: '200A', label: '200Am'},
+    {value: '200', label: '200m'},
+    {value: '190A', label: '190Am'},
+    {value: '190', label: '190m'},
+    {value: '180A', label: '180Am'},
+    {value: '180', label: '180m'},
+    {value: '170A', label: '170Am'},
+    {value: '170', label: ' 170m'},
+    {value: '160A', label: '160Am'},
+    {value: '160', label: '160m'},
     {value: '150', label: '150m'},
     {value: '150A', label: '150Am'},
     {value: '140', label: '140m'},