wanghc 3 年之前
父節點
當前提交
899e0943b7

+ 3 - 5
ipfcst-common/ipfcst-common-data/src/main/java/com/jiayue/ipfcst/common/data/entity/ProtocolGatherDataPoint.java → ipfcst-common/ipfcst-common-data/src/main/java/com/jiayue/ipfcst/common/data/entity/DataPoint.java

@@ -1,6 +1,5 @@
 package com.jiayue.ipfcst.common.data.entity;
 
-import com.jiayue.ipfcst.common.data.constant.enums.DataSourceEnum;
 import com.jiayue.ipfcst.common.data.constant.enums.EquipmentTypeEnum;
 import lombok.Data;
 import org.hibernate.annotations.GenericGenerator;
@@ -15,7 +14,7 @@ import javax.persistence.*;
  */
 @Data
 @Entity
-public class ProtocolGatherDataPoint {
+public class DataPoint {
 
     /**
      * id主键
@@ -32,10 +31,9 @@ public class ProtocolGatherDataPoint {
     private String measuringPoint;
 
     /**
-     * 该测点对应的设备id
+     * 该测点对应的设备类型
      */
-    @Column(length = 5)
-    private Integer equipmentId;
+    private EquipmentTypeEnum equipmentType;
 
     /**
      * 测点描述的设备属性

+ 0 - 5
ipfcst-common/ipfcst-common-data/src/main/java/com/jiayue/ipfcst/common/data/entity/EquipmentAttribute.java

@@ -52,11 +52,6 @@ public class EquipmentAttribute {
     @Enumerated(EnumType.STRING)
     EquipmentTypeEnum equipmentType;
 
-    /**
-     * 场站标识
-     */
-    @Column
-    private String stationCode;
 
     /**
      * 字段类型

+ 6 - 0
ipfcst-common/ipfcst-common-data/src/main/java/com/jiayue/ipfcst/common/data/entity/WindTowerStatusData.java

@@ -30,6 +30,12 @@ public class WindTowerStatusData extends AbstractEquipmentStatusData {
 	@Digits(integer = 10, fraction = 2)
 	@Column
 	private BigDecimal tInst = new BigDecimal(-99);
+	/**
+	 * 温度瞬时值(℃)
+	 */
+	@Digits(integer = 10, fraction = 2)
+	@Column
+	private BigDecimal wsInst = new BigDecimal(-99);
 
 	/**
 	 * 温度最大值(℃)

+ 42 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/console/service/DataPointService.java

@@ -0,0 +1,42 @@
+package com.jiayue.ipfcst.console.service;
+
+
+import com.jiayue.ipfcst.common.core.exception.BusinessException;
+import com.jiayue.ipfcst.common.core.util.CommonUtil;
+import com.jiayue.ipfcst.common.core.util.DateMomentUtil;
+import com.jiayue.ipfcst.common.data.entity.DataPoint;
+import com.jiayue.ipfcst.common.data.entity.InverterInfo;
+import com.jiayue.ipfcst.common.data.repository.DataPointRepository;
+import com.jiayue.ipfcst.common.data.service.BaseService;
+import com.sun.istack.internal.NotNull;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class DataPointService extends BaseService {
+
+  @Autowired
+  DataPointRepository dataPointRepository;
+  /**
+   * 查询设备下所有测点
+   */
+  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
+  public List<DataPoint> getByEquipmentType(Integer equipmentType) {
+    List<DataPoint> resultList;
+    resultList = this.dataPointRepository.findAllByEquipmentType(equipmentType);
+    return resultList;
+  }
+
+
+
+
+}

+ 12 - 16
ipfcst-console/src/main/java/com/jiayue/ipfcst/console/service/DownLoadService.java

@@ -6,12 +6,9 @@ import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.jiayue.ipfcst.common.core.util.DateTimeUtil;
 import com.jiayue.ipfcst.common.data.entity.FileCreateLog;
-import com.jiayue.ipfcst.fileupload.util.FileUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
@@ -21,7 +18,7 @@ import java.util.List;
 /**
  * DownLoadController
  *
- * @author bizy
+ * @author whc
  * @version 1.0
  * @since 2019/4/9 13:36
  */
@@ -29,7 +26,7 @@ import java.util.List;
 @RestController
 public class DownLoadService {
 
-	public void download(String stationCode) {
+  public void download(String stationCode) {
     log.info("开始执行定时任务:http下载文件");
     String body = HttpRequest.get("https://117.78.19.70:9010/client/getDownLoadFileAll/" + stationCode).execute().body();
     JSONObject json = JSONUtil.parseObj(body);
@@ -43,27 +40,27 @@ public class DownLoadService {
       //String dir = FileUtil.getDownloadFilePath() +File.separator+stationCode+File.separator+"new/";
       //String dirBak = FileUtil.getDownloadFilePath() +File.separator+stationCode+File.separator+"backups/"+simpleDateFormat.format(date)+"/";
       //测试使用
-      String dir = "/Users/wanghongchen/fsdownload/"+stationCode+"/"+"new/";
-      String dirBak = "/Users/wanghongchen/fsdownload/"+stationCode+"/"+"backups/"+simpleDateFormat.format(date)+"/";
+      String dir = "/Users/wanghongchen/fsdownload/" + stationCode + "/" + "new/";
+      String dirBak = "/Users/wanghongchen/fsdownload/" + stationCode + "/" + "backups/" + simpleDateFormat.format(date) + "/";
       //循环backups下的文件,有文件则不下载
       File fileDirectory = new File(dir);
-      if(!fileDirectory.exists()){
+      if (!fileDirectory.exists()) {
         fileDirectory.mkdir();
       }
       File bakDirectory = new File(dirBak);
-      if(!bakDirectory.exists()){
+      if (!bakDirectory.exists()) {
         bakDirectory.mkdir();
       }
       try {
         for (FileCreateLog fileCreateLog : list) {
-          File file= new File(bakDirectory+File.separator+fileCreateLog.getFileName());
-          if(!file.exists()){
+          File file = new File(bakDirectory + File.separator + fileCreateLog.getFileName());
+          if (!file.exists()) {
             String url = "https://117.78.19.70:9010/client/getFileById?id=" + fileCreateLog.getId();
             long a = HttpUtil.downloadFile(url, dir + File.separatorChar + fileCreateLog.getFileName());
-            if(a>0){
-              log.info(stationCode+"场站"+fileCreateLog.getFileName()+"文件下载成功");
+            if (a > 0) {
+              log.info(stationCode + "场站" + fileCreateLog.getFileName() + "文件下载成功");
             }
-          }else{
+          } else {
             log.info("文件已经下载过了");
           }
         }
@@ -71,8 +68,7 @@ public class DownLoadService {
         log.error("文件下载失败", e);
       }
     }
-	}
-
+  }
 
 
 }

+ 110 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/console/service/EquipmentAttributeService.java

@@ -0,0 +1,110 @@
+package com.jiayue.ipfcst.console.service;
+
+import com.jiayue.ipfcst.common.core.exception.BusinessException;
+import com.jiayue.ipfcst.common.data.constant.enums.EquipmentTypeEnum;
+import com.jiayue.ipfcst.common.data.entity.EquipmentAttribute;
+import com.jiayue.ipfcst.common.data.repository.EquipmentAttributeRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+/**
+ * 装置的状态描述表的操作service类
+ *
+ * @author 修唯xiuwei
+ * @version 3.0
+ */
+@Service
+public class EquipmentAttributeService {
+
+	/**
+	 * 操作仓库
+	 */
+	@Autowired
+  EquipmentAttributeRepository equipmentAttributeRepository;
+	@Autowired
+	ElectricFieldService electricFieldService;
+
+	/**
+	 * 获取某类设备的状态数据描述属性
+	 * 查询设备属性by设备类型
+	 *
+	 * @param dataObjectTypeEnum 设备类型
+	 * @return EquipmentAttribute 设备属性
+	 */
+	public List<EquipmentAttribute> getByEquipmentType(EquipmentTypeEnum dataObjectTypeEnum) {
+		EquipmentAttribute equipmentAttribute = new EquipmentAttribute();
+		equipmentAttribute.setEquipmentType(dataObjectTypeEnum);
+		return this.equipmentAttributeRepository.findAll(Example.of(equipmentAttribute));
+	}
+
+
+	/**
+	 * 查找符合条件的设备属性
+	 *
+	 * @param equipmentAttribute 设备属性
+	 * @return EquipmentAttribute 设备属性列表
+	 */
+	public List<EquipmentAttribute> get(EquipmentAttribute equipmentAttribute) {
+		return this.equipmentAttributeRepository.findAll(Example.of(equipmentAttribute));
+	}
+
+	/**
+	 * 查所有的设备属性
+	 *
+	 * @return EquipmentAttribute 设备属性列表
+	 */
+	public List<EquipmentAttribute> getAll() {
+		return this.equipmentAttributeRepository.findAll();
+	}
+
+	/**
+	 *  分页查询
+	 */
+	public Page getAllByPage(Integer page, Integer size) {
+		Pageable pageable = PageRequest.of(page - 1, size);
+		Page equipmentAttributePage = equipmentAttributeRepository.findAll(pageable);
+		return equipmentAttributePage;
+	}
+
+	/**
+	 * 获取某类设备的状态数据描述属性
+	 * 查询设备属性by设备类型
+	 * 分页
+	 *
+	 * @param equipmentType 设备类型
+	 * @return EquipmentAttribute 设备属性
+	 */
+	public Page<EquipmentAttribute> findByEquipmentType(String equipmentType, Integer page, Integer size) {
+		Pageable pageable = PageRequest.of(page - 1, size);
+		EquipmentTypeEnum equipmentTypeEnum = EquipmentTypeEnum.valueOf(equipmentType);
+		Page<EquipmentAttribute> equipmentAttributePage = equipmentAttributeRepository.findAllByEquipmentType(equipmentTypeEnum, pageable);
+		return equipmentAttributePage;
+	}
+
+
+	/**
+	 * 删除
+	 * */
+	public void delete(Integer id) throws BusinessException {
+		if (StringUtils.isEmpty(id)) {
+			throw new BusinessException("设备属性id不能为空!");
+		} else {
+			equipmentAttributeRepository.deleteById(id);
+		}
+	}
+
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public void saveCloud(List<EquipmentAttribute> beans) {
+		equipmentAttributeRepository.deleteAll();
+		equipmentAttributeRepository.saveAll(beans);
+	}
+}

+ 385 - 406
ipfcst-console/src/main/java/com/jiayue/ipfcst/console/service/FileAnalysisService.java

@@ -18,12 +18,15 @@ import org.apache.commons.lang.time.DateFormatUtils;
 import org.springframework.stereotype.Service;
 
 import java.io.*;
-import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 解析电科院NWP和DQ文件
@@ -38,63 +41,93 @@ import java.util.*;
 @Slf4j
 public class FileAnalysisService extends BaseService {
 
-	ElectricFieldService electricFieldService;
+  ElectricFieldService electricFieldService;
 
-	ForecastPowerShortTermService forecastPowerShortTermService;
+  ForecastPowerShortTermService forecastPowerShortTermService;
 
-	HolidayCalendarRepository holidayCalendarRepository;
+  HolidayCalendarRepository holidayCalendarRepository;
 
-	NwpService nwpService;
+  NwpService nwpService;
 
-	FileAnalysisRecordService fileAnalysisRecordService;
+  FileAnalysisRecordService fileAnalysisRecordService;
 
-	OverHaulPlanService overHaulPlanService;
+  OverHaulPlanService overHaulPlanService;
 
-	SysParameterService sysParameterService;
+  SysParameterService sysParameterService;
 
-	ElectricFieldRepository electricFieldRepository;
+  ElectricFieldRepository electricFieldRepository;
 
-	HolidayCalendarService holidayCalendarService;
+  HolidayCalendarService holidayCalendarService;
 
+  public static void mvFile(File file, String fdPath) {
+    try {
+      FileUtils.copyFile(file, new File(fdPath), true);
+    } catch (IOException e) {
+      log.error("文件移动错误", e);
+    }
+  }
+
+  /**
+   * 创建备份文件夹
+   */
+  public static String mkDirForTime(String targetRoot, String format) {
+    String path;
+    File file;
+    if (StringUtils.isNotEmpty(format)) {
+      long current = System.currentTimeMillis();
+      path = DateFormatUtils.format(current, format);
+      file = new File(targetRoot + File.separator + path + File.separator);
+
+    } else {
+      file = new File(targetRoot + File.separator);
+    }
 
+    if (!file.exists() && !file.isFile()) {
 
-	@SneakyThrows
-	public void analysisJob() {
-		log.info("-----------------开始执行文件解析任务----------------------");
-		long timeD = 15 * 60 * 1000;
-		Long currentDate = DateTimeUtil.getMillisecondsSubDay();//今日凌晨
-		boolean flag = false;
-		List<ElectricField> electricFieldList = electricFieldService.getAll();
+      if (file.mkdir()) {
+        log.info("已创建文件夹");
+      } else {
+        log.info("创建文件夹失败,路径:" + file.getPath());
+      }
+    }
+    return file.getPath() + File.separator;
+  }
+
+  @SneakyThrows
+  public void analysisJob() {
+    log.info("-----------------开始执行文件解析任务----------------------");
+    long timeD = 15 * 60 * 1000;
+    Long currentDate = DateTimeUtil.getMillisecondsSubDay();//今日凌晨
+    boolean flag;
+    List<ElectricField> electricFieldList = electricFieldService.getAll();
     List<String> eList = new ArrayList<>();
-    for(ElectricField electricField : electricFieldList){
+    for (ElectricField electricField : electricFieldList) {
       eList.add(electricField.getStationCode());
     }
-		//String path = FileUtil.getDownloadFilePath() + File.separator + "new";
+    //String path = FileUtil.getDownloadFilePath() + File.separator + "new";
     String path = FileUtil.getDownloadFilePath();
     //downloadFile
-		File dirFile = new File(path);
-		//判断该目录是否存在,不存在时创建
-		if (!dirFile.exists()) {
-			dirFile.mkdirs();
-		}
-		log.info("系统扫描路径【" + dirFile.getPath() + "】");
-    for(String stationCode : eList){
+    File dirFile = new File(path);
+    //判断该目录是否存在,不存在时创建
+    if (!dirFile.exists()) {
+      dirFile.mkdirs();
+    }
+    log.info("系统扫描路径【" + dirFile.getPath() + "】");
+    for (String stationCode : eList) {
       // downLoadFile/场站编号/new
-      //String dirFiles = dirFile.getPath()+File.separator+ stationCode+ File.separator + "new";
-      String dirFiles = "/Users/wanghongchen/fsdownload"+File.separator+ stationCode+ File.separator + "new";
-      File  filePath = new File(dirFiles);
+      String dirFiles = dirFile.getPath() + File.separator + stationCode + File.separator + "new";
+      //String dirFiles = "/Users/wanghongchen/fsdownload"+File.separator+ stationCode+ File.separator + "new";
+      File filePath = new File(dirFiles);
       if (!filePath.exists()) {
         filePath.mkdirs();
       }
       Collection<File> files = FileUtils.listFiles(filePath, new String[]{"RB"}, false);
       String dayStr = new SimpleDateFormat("yyyyMMdd").format(new Date());//当前时间格式化为年月日
-      if (files != null && files.size() > 0) {
+      if (files.size() > 0) {
         for (File file : files) {
           flag = false;
-          boolean sfqbxf = false;
-          boolean startConsole = false;
           String fileName = file.getName();
-          if (fileName.indexOf(dayStr) < 0) {
+          if (!fileName.contains(dayStr)) {
             file.delete();
             log.info(fileName + "不是当天的文件,删除!");
             break;
@@ -103,7 +136,7 @@ public class FileAnalysisService extends BaseService {
             //假期文件
             if (file.getName().startsWith("JH")) {
               List<HolidayCalendar> listJq = fileAnalysisJqTerm(file);
-              if (listJq != null && listJq.size() > 0) {
+              if (listJq.size() > 0) {
                 holidayCalendarRepository.deleteAll();
                 holidayCalendarRepository.saveAll(listJq);
                 flag = true;
@@ -113,9 +146,9 @@ public class FileAnalysisService extends BaseService {
             }
             if (file.getName().startsWith("DQ")) {
               try {
-                List<ForecastPowerShortTerm> listDq = fileAnalysisShortTerm(file, currentDate,stationCode);
-                ForecastPowerShortTerm forecastPowerShortTerm = null;
-                if (listDq != null && listDq.size() > 0) {
+                List<ForecastPowerShortTerm> listDq = fileAnalysisShortTerm(file, currentDate, stationCode);
+                ForecastPowerShortTerm forecastPowerShortTerm;
+                if (listDq.size() > 0) {
                   //如果数据不全,进行补入
                   while (listDq.get(listDq.size() - 1).getForecastTime() < DateTimeUtil.getMillisecondsSubDay() + 4 * 24 * 60 * 60 * 1000 - timeD) {
                     forecastPowerShortTerm = new ForecastPowerShortTerm();
@@ -130,7 +163,7 @@ public class FileAnalysisService extends BaseService {
                     //短期数据修正
                     Long startTime = listDq.get(0).getForecastTime();
                     Long endTime = listDq.get(listDq.size() - 1).getForecastTime();//删除相同时间数据
-                    forecastPowerShortTermService.deleteBetweenAndGenTime(startTime, endTime, listDq,stationCode);
+                    forecastPowerShortTermService.deleteBetweenAndGenTime(startTime, endTime, listDq, stationCode);
                     flag = true;
                   } catch (Exception e) {
                     log.error("保存短期数据报错", e);
@@ -147,10 +180,10 @@ public class FileAnalysisService extends BaseService {
             }
             if (file.getName().startsWith("NWP")) {
               try {
-                List<Nwp> listNwp = fileAnalysisNwp(file,stationCode);
-                Nwp nwpData = null;
+                List<Nwp> listNwp = fileAnalysisNwp(file, stationCode);
+                Nwp nwpData;
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-                if (listNwp != null && listNwp.size() > 0) {
+                if (listNwp.size() > 0) {
                   while (listNwp.get(listNwp.size() - 1).getPreTime() < DateTimeUtil.getMillisecondsSubDay() + 4 * 24 * 60 * 60 * 1000 - timeD) {
                     nwpData = new Nwp();
                     long time = 0;
@@ -195,13 +228,12 @@ public class FileAnalysisService extends BaseService {
                     listNwp.add(nwpData);
                   }
                 } else {
-                  flag = false;
                   log.info(file.getName() + "文件数据内容为空、不能正常解析 、移除该文件、执行数据修正功能");
                 }
                 //保存NWP实时数据
                 Long startTime = listNwp.get(0).getPreTime();
                 Long endTime = listNwp.get(listNwp.size() - 1).getPreTime();//删除相同时间数据
-                nwpService.deleteBetweenAndPreTime(startTime, endTime, listNwp,stationCode);
+                nwpService.deleteBetweenAndPreTime(startTime, endTime, listNwp, stationCode);
                 flag = true;
               } catch (Exception e) {
                 log.error("解析NWP文件失败", e);
@@ -210,378 +242,325 @@ public class FileAnalysisService extends BaseService {
             }
             if (flag) {
               //文件解析成功之后,保存记录
-              saveFileParsingRecord(file, "1",stationCode);
+              saveFileParsingRecord(file, "1", stationCode);
               //移除文件备份到临时文件下
               moveFile(file);
-              if (startConsole){
-                //重启console程序
-                Runtime.getRuntime().exec("service console restart");
-              }
             } else {
               //文件解析失败之后,保存记录
-              saveFileParsingRecord(file, "0",stationCode);
+              saveFileParsingRecord(file, "0", stationCode);
               //移除文件备份到error文件下
               moveFileError(file);
             }
           }
         }
-      } else {
       }
       log.info("-----------------执行文件解析任务完成----------------------");
     }
-	}
-
-	public static void mvFile(File file, String fdPath) {
-		try {
-			FileUtils.copyFile(file, new File(fdPath), true);
-		} catch (IOException e) {
-			log.error("文件移动错误", e);
-		}
-	}
-
-	/**
-	 * NWP解析
-	 *
-	 * @param file 文件路径
-	 * @return 样例集合
-	 */
-	private List<Nwp> fileAnalysisNwp(File file,String stationCode) {
-		List<Nwp> listNwp = new ArrayList<>();
-		if (file.renameTo(file)) {
-			InputStreamReader readNwp = null;
-			BufferedReader bufferedReaderNwp = null;
-			try {
-				readNwp = new InputStreamReader(new FileInputStream(file), "utf-8");//考虑到编码格式
-				bufferedReaderNwp = new BufferedReader(readNwp);
-				String fileName = file.getName();
-				fileName = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("."));
-				String lineTxt;
-				Nwp nwpData = null;
-				BigDecimal nwpDirectRadiation = new BigDecimal(0.7); //直接辐射
-				BigDecimal nwpDiffuseRadiation = new BigDecimal(0.3); //散接辐射
-
-				while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
-					//NWP文件按照Tab方式截取
-					String[] datas = lineTxt.split("\t");
-					if (datas.length == 35 && datas[0].startsWith("#")) {
-						SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-						if (datas != null && datas.length > 0) {
-							//过滤当天的数据
-							//if (sdf.parse(datas[5]).getTime() >= TimeUtils.getMillisecondsSubDay() + 24 * 60 * 60 *
-							// 1000) {
-							nwpData = new Nwp();
-
-							//将截取的文件放入nwpData中
-							nwpData.setFarmId(datas[1]);
-							nwpData.setScDate(datas[2]);
-							nwpData.setScTime(datas[3]);
-							nwpData.setPreDate(datas[4]);
-							nwpData.setPreTime(sdf.parse(datas[5]).getTime());//采集时间 与 短期预测时间关联
-							nwpData.setT(NumberUtils.subtract(new BigDecimal(datas[6]), new BigDecimal(273.15)));//温度
-
-							nwpData.setSenf(new BigDecimal(datas[11]).setScale(2, RoundingMode.HALF_UP));//感热
-							nwpData.setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
-							nwpData.setLwr(new BigDecimal(datas[10]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
-							nwpData.setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
-							nwpData.setRh(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
-							nwpData.setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
-							nwpData.setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
-
-							nwpData.setWs10(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs30(new BigDecimal(datas[20]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs50(new BigDecimal(datas[21]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs70(new BigDecimal(datas[22]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs80(new BigDecimal(datas[23]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs90(new BigDecimal(datas[24]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs100(new BigDecimal(datas[25]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWs170(new BigDecimal(datas[26]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd10(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd30(new BigDecimal(datas[28]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd50(new BigDecimal(datas[29]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd70(new BigDecimal(datas[30]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd80(new BigDecimal(datas[31]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd90(new BigDecimal(datas[32]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd100(new BigDecimal(datas[33]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setWd170(new BigDecimal(datas[34]).setScale(2, RoundingMode.HALF_UP));
-							nwpData.setStationCode(stationCode);
-							listNwp.add(nwpData);
-							//}
-						}
-					}
-				}
-			} catch (IOException | ParseException | RuntimeException e) {
-				log.error("系统错误:", e);
-				// 进行告警
-				String name = "NWP文件解析失败";
-				String describe = "请查看NWP文件格式是否正常";
-				String solution = "请修改NWP文件内容";
-				File destFile = new File(file.getPath().replaceFirst("new", "error"));
-				if (destFile.exists()) {
-					destFile.delete();
-				}
-				try {
-					FileUtils.moveFile(file, destFile);
-				} catch (IOException e1) {
-					log.error(file.getName() + "文件解析失败", e);
-				}
-			} finally {
-				close(bufferedReaderNwp, readNwp);
-			}
-		}
-		return listNwp;
-	}
-
-
-	/**
-	 * 假期解析
-	 *
-	 * @param file 文件路径
-	 * @return 样例集合
-	 */
-	private List<HolidayCalendar> fileAnalysisJqTerm(File file) {
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		List<HolidayCalendar> holidayCalendars = new ArrayList<>();
-		// 当文件未被使用时,进行解析上报
-		if (file.renameTo(file)) {
-			InputStreamReader read = null;
-			BufferedReader bufferedReader = null;
-			String stringLine;
-			HolidayCalendar holiday;
-			try {
-				read = new InputStreamReader(new FileInputStream(file), "utf-8");
-				bufferedReader = new BufferedReader(read);
-				while ((stringLine = bufferedReader.readLine()) != null) {
-					String[] string_arr = stringLine.split("\t");
-					if (string_arr.length == 7 && string_arr[0].startsWith("#")) {
-						holiday = new HolidayCalendar();
-						holiday.setId(Integer.parseInt(string_arr[1] + ""));
-						holiday.setName(string_arr[2] + "");
-						holiday.setStartTime(sdf.parse(string_arr[3]).getTime());
-						holiday.setEndTime(sdf.parse(string_arr[4]).getTime());
-						holiday.setDays(Integer.parseInt(string_arr[5] + ""));
-						if (string_arr[6].equals("1")) {
-							holiday.setHolidayTypeEnum(HolidayTypeEnum.valueOf(string_arr[6]));
-						}
-						holidayCalendars.add(holiday);
-					}
-				}
-			} catch (IOException | ParseException | RuntimeException e) {
-				log.error("系统错误:", e);
-				// 进行告警
-				String name = "假期文件解析失败";
-				String describe = "请查看假期文件格式是否正常";
-				String solution = "请修改假期文件内容";
-
-				File destFile = new File(file.getPath().replaceFirst("new", "error"));
-				if (destFile.exists()) {
-					destFile.delete();
-				}
-				try {
-					FileUtils.moveFile(file, destFile);
-				} catch (IOException e1) {
-					log.error(file.getName() + "文件解析失败", e);
-				}
-			} finally {
-				close(bufferedReader, read);
-			}
-		}
-		return holidayCalendars;
-	}
-
-	/**
-	 * 短期解析
-	 *
-	 * @param file        文件路径
-	 * @param currentDate 当前时间
-	 * @return 样例集合
-	 */
-	private List<ForecastPowerShortTerm> fileAnalysisShortTerm(File file, Long currentDate,String stationCode) {
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		List<ForecastPowerShortTerm> forecastPowerShortTerm = new ArrayList<>();
-		// 当文件未被使用时,进行解析上报
-		if (file.renameTo(file)) {
-			InputStreamReader read = null;
-			BufferedReader bufferedReader = null;
-			String stringLine;
-			ForecastPowerShortTerm stf;
-			try {
-				read = new InputStreamReader(new FileInputStream(file), "utf-8");
-				bufferedReader = new BufferedReader(read);
-				while ((stringLine = bufferedReader.readLine()) != null) {
-					String[] string_arr = stringLine.split("\t");
-
-              if (string_arr.length == 4 && string_arr[0].startsWith("#")) {
-                if (StringUtils.isNotEmpty(string_arr[2])) {
-                  //过滤当天的数据
-                //if (sdf.parse(string_arr[2]).getTime() >= TimeUtils.getMillisecondsSubDay() + 24 * 60 *
-                // 60 * 1000) {
-                stf = new ForecastPowerShortTerm();
-                stf.setFpValue(new BigDecimal(string_arr[3] + ""));
-                stf.setForecastTime(sdf.parse(string_arr[2]).getTime());
-                stf.setGenDate(new Date(currentDate));
-                stf.setPredictionModelEnum(PredictionModelEnum.E1);
-                stf.setStationCode(stationCode);
-                forecastPowerShortTerm.add(stf);
-                // }
-						}
-					}
-				}
-			} catch (IOException | ParseException | RuntimeException e) {
-				log.error("系统错误:", e);
-				// 进行告警
-				File destFile = new File(file.getPath().replaceFirst("new", "error"));
-				if (destFile.exists()) {
-					destFile.delete();
-				}
-				try {
-					FileUtils.moveFile(file, destFile);
-				} catch (IOException e1) {
-					log.error(file.getName() + "文件解析失败", e);
-				}
-			} finally {
-				close(bufferedReader, read);
-			}
-		}
-		return forecastPowerShortTerm;
-	}
-
-	/**
-	 * 移动文件到临时目录下
-	 *
-	 * @param file 文件
-	 */
-	private void moveFile(File file) {
-		// 移动文件到处理目录
-		File destFile = new File(file.getPath().replaceFirst("new", "backupsTemp"));
-		log.info("move file :{}, dest file:{}", file, destFile);
-		if (destFile.exists()) {
-			destFile.delete();
-		}
-		try {
-			FileUtils.moveFile(file, destFile);
-		} catch (IOException e) {
-			log.error("系统移除文件错误:", e);
-			// 进行告警
-		}
-		moveFileBackups(destFile.getParent());
-	}
-
-	/**
-	 * 移动文件到处理目录
-	 *
-	 * @param filePath 文件路径
-	 */
-	private void moveFileBackups(String filePath) {
-		String targetRoot = filePath.replaceFirst("backupsTemp", "backups");
-		String path = mkDirForTime(targetRoot, null);
-		path = mkDirForTime(path, "yyyyMMdd");
-		// 移动文件夹内容
-		File sourceFile = new File(filePath);
-		if (sourceFile.exists()) {
-			try {
-				File[] files = sourceFile.listFiles();
-				if (files != null && files.length > 0) {
-					for (File f : files) {
-						if (f.renameTo(new File(path + f.getName()))) {
-							log.info("move file :{}, dest file:{}", path, f.getName());
-						}
-					}
-				}
-			} catch (Exception e) {
-				// 进行告警
-			}
-		}
-	}
-
-	/**
-	 * 移动文件到处理错误目录下
-	 *
-	 * @param file 文件
-	 */
-	private void moveFileError(File file) {
-		File destFile = new File(file.getPath().replaceFirst("new", "error"));
-		if (destFile.exists()) {
-			destFile.delete();
-		}
-		try {
-			FileUtils.moveFile(file, destFile);
-		} catch (IOException e) {
-			log.error(file.getName() + "文件解析失败", e);
-		}
-	}
-
-	/**
-	 * 创建备份文件夹
-	 *
-	 * @param targetRoot
-	 * @param format
-	 * @return
-	 */
-	public static String mkDirForTime(String targetRoot, String format) {
-		String path = null;
-		File file = null;
-		if (StringUtils.isNotEmpty(format)) {
-			Long current = System.currentTimeMillis();
-			path = DateFormatUtils.format(current, format);
-			file = new File(targetRoot + File.separator + path + File.separator);
-
-		} else {
-			file = new File(targetRoot + File.separator);
-		}
-
-		if (!file.exists() && !file.isFile()) {
-
-			if (file.mkdir()) {
-				log.info("已创建文件夹");
-			} else {
-				log.info("创建文件夹失败,路径:" + file.getPath());
-			}
-		}
-		return file.getPath() + File.separator;
-	}
-
-	/**
-	 * 保存文件解析记录
-	 *
-	 * @param file       文件信息
-	 * @param fileStatus 文件解析状态 1:表示解析成功 0:解析失败
-	 */
-	private void saveFileParsingRecord(File file, String fileStatus,String staticCode) {
-		String fileType = "";
-		if (file.getName().startsWith("JH")) {
-			fileType = "JH";//假期文件
-		} else if (file.getName().startsWith("DQ")) {
-			fileType = "DQ";//短期文件
-		} else {
-			fileType = "NWP";//NWP文件
-		}
-		FileAnalysisRecord fileParsingRecord = new FileAnalysisRecord();
-		fileParsingRecord.setFileTitle(file.getName());
-		fileParsingRecord.setFileType(fileType);
-		fileParsingRecord.setFileStatus(fileStatus);
-		fileParsingRecord.setFilePath(file.getPath());
-		fileParsingRecord.setFileDescription(DateTimeUtil.getStringDate() + " 正常解析文件");
-		fileParsingRecord.setStationCode(staticCode);
-		fileAnalysisRecordService.save(fileParsingRecord);
-	}
-
-
-	/**
-	 * 关闭文件流
-	 *
-	 * @param bufferedReader 字符数据
-	 * @param read           字节流
-	 */
-	private void close(BufferedReader bufferedReader, InputStreamReader read) {
-		try {
-			if (bufferedReader != null) {
-				bufferedReader.close();
-			}
-			if (read != null) {
-				read.close();
-			}
-		} catch (IOException e) {
-			log.error("关闭文件流失败:", e);
-		}
-	}
+  }
+
+  /**
+   * NWP解析
+   *
+   * @param file 文件路径
+   * @return 样例集合
+   */
+  private List<Nwp> fileAnalysisNwp(File file, String stationCode) {
+    List<Nwp> listNwp = new ArrayList<>();
+    if (file.renameTo(file)) {
+      InputStreamReader readNwp = null;
+      BufferedReader bufferedReaderNwp = null;
+      try {
+        readNwp = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8.name());//考虑到编码格式
+        bufferedReaderNwp = new BufferedReader(readNwp);
+        String lineTxt;
+        Nwp nwpData;
+        BigDecimal nwpDirectRadiation = new BigDecimal("0.7"); //直接辐射
+        BigDecimal nwpDiffuseRadiation = new BigDecimal("0.3"); //散接辐射
+
+        while ((lineTxt = bufferedReaderNwp.readLine()) != null) {
+          //NWP文件按照Tab方式截取
+          String[] datas = lineTxt.split("\t");
+          if (datas.length == 35 && datas[0].startsWith("#")) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            //过滤当天的数据
+            //if (sdf.parse(datas[5]).getTime() >= TimeUtils.getMillisecondsSubDay() + 24 * 60 * 60 *
+            // 1000) {
+            nwpData = new Nwp();
+
+            //将截取的文件放入nwpData中
+            nwpData.setFarmId(datas[1]);
+            nwpData.setScDate(datas[2]);
+            nwpData.setScTime(datas[3]);
+            nwpData.setPreDate(datas[4]);
+            nwpData.setPreTime(sdf.parse(datas[5]).getTime());//采集时间 与 短期预测时间关联
+            nwpData.setT(NumberUtils.subtract(new BigDecimal(datas[6]), new BigDecimal("273.15")));//温度
+
+            nwpData.setSenf(new BigDecimal(datas[11]).setScale(2, RoundingMode.HALF_UP));//感热
+            nwpData.setSwr(new BigDecimal(datas[9]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
+            nwpData.setLwr(new BigDecimal(datas[10]).setScale(2, RoundingMode.HALF_UP));//短波辐射(相当于总辐射)
+            nwpData.setPressure(new BigDecimal(datas[8]).setScale(2, RoundingMode.HALF_UP));//地表气压
+            nwpData.setRh(new BigDecimal(datas[7]).setScale(2, RoundingMode.HALF_UP));//2m相对湿度
+            nwpData.setDiffuseRadiation(new BigDecimal(datas[9]).multiply(nwpDiffuseRadiation).setScale(2, RoundingMode.HALF_UP));//散接辐射
+            nwpData.setDirectRadiation(new BigDecimal(datas[9]).multiply(nwpDirectRadiation).setScale(2, RoundingMode.HALF_UP));//直接辐射
+
+            nwpData.setWs10(new BigDecimal(datas[19]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs30(new BigDecimal(datas[20]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs50(new BigDecimal(datas[21]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs70(new BigDecimal(datas[22]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs80(new BigDecimal(datas[23]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs90(new BigDecimal(datas[24]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs100(new BigDecimal(datas[25]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWs170(new BigDecimal(datas[26]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd10(new BigDecimal(datas[27]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd30(new BigDecimal(datas[28]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd50(new BigDecimal(datas[29]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd70(new BigDecimal(datas[30]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd80(new BigDecimal(datas[31]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd90(new BigDecimal(datas[32]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd100(new BigDecimal(datas[33]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setWd170(new BigDecimal(datas[34]).setScale(2, RoundingMode.HALF_UP));
+            nwpData.setStationCode(stationCode);
+            listNwp.add(nwpData);
+            //}
+          }
+        }
+      } catch (IOException | ParseException | RuntimeException e) {
+        log.error("系统错误:", e);
+        // 进行告警
+        File destFile = new File(file.getPath().replaceFirst("new", "error"));
+        if (destFile.exists()) {
+          destFile.delete();
+        }
+        try {
+          FileUtils.moveFile(file, destFile);
+        } catch (IOException e1) {
+          log.error(file.getName() + "文件解析失败", e);
+        }
+      } finally {
+        close(bufferedReaderNwp, readNwp);
+      }
+    }
+    return listNwp;
+  }
+
+  /**
+   * 假期解析
+   *
+   * @param file 文件路径
+   * @return 样例集合
+   */
+  private List<HolidayCalendar> fileAnalysisJqTerm(File file) {
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    List<HolidayCalendar> holidayCalendars = new ArrayList<>();
+    // 当文件未被使用时,进行解析上报
+    if (file.renameTo(file)) {
+      InputStreamReader read = null;
+      BufferedReader bufferedReader = null;
+      String stringLine;
+      HolidayCalendar holiday;
+      try {
+        read = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
+        bufferedReader = new BufferedReader(read);
+        while ((stringLine = bufferedReader.readLine()) != null) {
+          String[] string_arr = stringLine.split("\t");
+          if (string_arr.length == 7 && string_arr[0].startsWith("#")) {
+            holiday = new HolidayCalendar();
+            holiday.setId(Integer.parseInt(string_arr[1] + ""));
+            holiday.setName(string_arr[2] + "");
+            holiday.setStartTime(sdf.parse(string_arr[3]).getTime());
+            holiday.setEndTime(sdf.parse(string_arr[4]).getTime());
+            holiday.setDays(Integer.parseInt(string_arr[5] + ""));
+            if (string_arr[6].equals("1")) {
+              holiday.setHolidayTypeEnum(HolidayTypeEnum.valueOf(string_arr[6]));
+            }
+            holidayCalendars.add(holiday);
+          }
+        }
+      } catch (IOException | ParseException | RuntimeException e) {
+        log.error("系统错误:", e);
+        // 进行告警
+
+
+        File destFile = new File(file.getPath().replaceFirst("new", "error"));
+        if (destFile.exists()) {
+          destFile.delete();
+        }
+        try {
+          FileUtils.moveFile(file, destFile);
+        } catch (IOException e1) {
+          log.error(file.getName() + "文件解析失败", e);
+        }
+      } finally {
+        close(bufferedReader, read);
+      }
+    }
+    return holidayCalendars;
+  }
+
+  /**
+   * 短期解析
+   *
+   * @param file        文件路径
+   * @param currentDate 当前时间
+   * @return 样例集合
+   */
+  private List<ForecastPowerShortTerm> fileAnalysisShortTerm(File file, Long currentDate, String stationCode) {
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    List<ForecastPowerShortTerm> forecastPowerShortTerm = new ArrayList<>();
+    // 当文件未被使用时,进行解析上报
+    if (file.renameTo(file)) {
+      InputStreamReader read = null;
+      BufferedReader bufferedReader = null;
+      String stringLine;
+      ForecastPowerShortTerm stf;
+      try {
+        read = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
+        bufferedReader = new BufferedReader(read);
+        while ((stringLine = bufferedReader.readLine()) != null) {
+          String[] string_arr = stringLine.split("\t");
+
+          if (string_arr.length == 4 && string_arr[0].startsWith("#")) {
+            if (StringUtils.isNotEmpty(string_arr[2])) {
+              //过滤当天的数据
+              //if (sdf.parse(string_arr[2]).getTime() >= TimeUtils.getMillisecondsSubDay() + 24 * 60 *
+              // 60 * 1000) {
+              stf = new ForecastPowerShortTerm();
+              stf.setFpValue(new BigDecimal(string_arr[3] + ""));
+              stf.setForecastTime(sdf.parse(string_arr[2]).getTime());
+              stf.setGenDate(new Date(currentDate));
+              stf.setPredictionModelEnum(PredictionModelEnum.E1);
+              stf.setStationCode(stationCode);
+              forecastPowerShortTerm.add(stf);
+              // }
+            }
+          }
+        }
+      } catch (IOException | ParseException | RuntimeException e) {
+        log.error("系统错误:", e);
+        // 进行告警
+        File destFile = new File(file.getPath().replaceFirst("new", "error"));
+        if (destFile.exists()) {
+          destFile.delete();
+        }
+        try {
+          FileUtils.moveFile(file, destFile);
+        } catch (IOException e1) {
+          log.error(file.getName() + "文件解析失败", e);
+        }
+      } finally {
+        close(bufferedReader, read);
+      }
+    }
+    return forecastPowerShortTerm;
+  }
+
+  /**
+   * 移动文件到临时目录下
+   *
+   * @param file 文件
+   */
+  private void moveFile(File file) {
+    // 移动文件到处理目录
+    File destFile = new File(file.getPath().replaceFirst("new", "backupsTemp"));
+    log.info("move file :{}, dest file:{}", file, destFile);
+    if (destFile.exists()) {
+      destFile.delete();
+    }
+    try {
+      FileUtils.moveFile(file, destFile);
+    } catch (IOException e) {
+      log.error("系统移除文件错误:", e);
+      // 进行告警
+    }
+    moveFileBackups(destFile.getParent());
+  }
+
+  /**
+   * 移动文件到处理目录
+   *
+   * @param filePath 文件路径
+   */
+  private void moveFileBackups(String filePath) {
+    String targetRoot = filePath.replaceFirst("backupsTemp", "backups");
+    String path = mkDirForTime(targetRoot, null);
+    path = mkDirForTime(path, "yyyyMMdd");
+    // 移动文件夹内容
+    File sourceFile = new File(filePath);
+    if (sourceFile.exists()) {
+      try {
+        File[] files = sourceFile.listFiles();
+        if (files != null && files.length > 0) {
+          for (File f : files) {
+            if (f.renameTo(new File(path + f.getName()))) {
+              log.info("move file :{}, dest file:{}", path, f.getName());
+            }
+          }
+        }
+      } catch (Exception e) {
+        // 进行告警
+      }
+    }
+  }
+
+  /**
+   * 移动文件到处理错误目录下
+   *
+   * @param file 文件
+   */
+  private void moveFileError(File file) {
+    File destFile = new File(file.getPath().replaceFirst("new", "error"));
+    if (destFile.exists()) {
+      destFile.delete();
+    }
+    try {
+      FileUtils.moveFile(file, destFile);
+    } catch (IOException e) {
+      log.error(file.getName() + "文件解析失败", e);
+    }
+  }
+
+  /**
+   * 保存文件解析记录
+   *
+   * @param file       文件信息
+   * @param fileStatus 文件解析状态 1:表示解析成功 0:解析失败
+   */
+  private void saveFileParsingRecord(File file, String fileStatus, String staticCode) {
+    String fileType;
+    if (file.getName().startsWith("JH")) {
+      fileType = "JH";//假期文件
+    } else if (file.getName().startsWith("DQ")) {
+      fileType = "DQ";//短期文件
+    } else {
+      fileType = "NWP";//NWP文件
+    }
+    FileAnalysisRecord fileParsingRecord = new FileAnalysisRecord();
+    fileParsingRecord.setFileTitle(file.getName());
+    fileParsingRecord.setFileType(fileType);
+    fileParsingRecord.setFileStatus(fileStatus);
+    fileParsingRecord.setFilePath(file.getPath());
+    fileParsingRecord.setFileDescription(DateTimeUtil.getStringDate() + " 正常解析文件");
+    fileParsingRecord.setStationCode(staticCode);
+    fileAnalysisRecordService.save(fileParsingRecord);
+  }
+
+
+  /**
+   * 关闭文件流
+   *
+   * @param bufferedReader 字符数据
+   * @param read           字节流
+   */
+  private void close(BufferedReader bufferedReader, InputStreamReader read) {
+    try {
+      if (bufferedReader != null) {
+        bufferedReader.close();
+      }
+      if (read != null) {
+        read.close();
+      }
+    } catch (IOException e) {
+      log.error("关闭文件流失败:", e);
+    }
+  }
 }

+ 178 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/console/service/ReceiveDataService.java

@@ -0,0 +1,178 @@
+package com.jiayue.ipfcst.console.service;
+
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.jiayue.ipfcst.common.core.exception.BusinessException;
+import com.jiayue.ipfcst.common.core.util.DateTimeUtil;
+import com.jiayue.ipfcst.common.data.entity.*;
+import com.jiayue.ipfcst.common.data.repository.InverterStatusDataRepository;
+import com.jiayue.ipfcst.common.data.repository.WeatherStationStatusDataRepository;
+import com.jiayue.ipfcst.common.data.repository.WindTowerStatusDataRepository;
+import com.jiayue.ipfcst.common.data.repository.WindTurbineStatusDataRepository;
+import com.jiayue.ipfcst.console.dto.ResponseResults;
+import com.jiayue.ipfcst.console.dto.ResponseRows;
+import com.jiayue.ipfcst.console.util.RedisUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 接收数据service类
+ *
+ * @author whc
+ */
+@Service
+@Slf4j
+public class ReceiveDataService {
+  @Autowired
+  ElectricFieldService electricFieldService;
+  @Autowired
+  WindTowerInfoService windTowerInfoService;
+  @Autowired
+  WindTurbineInfoService windTurbineInfoService;
+  @Autowired
+  WeatherStationInfoService weatherStationInfoService;
+  @Autowired
+  InverterInfoService inverterInfoService;
+  @Autowired
+  DataPointService dataPointService;
+  @Autowired
+  WeatherStationStatusDataRepository weatherStationStatusDataRepository;
+  @Autowired
+  InverterStatusDataRepository inverterStatusDataRepository;
+  @Autowired
+  WindTurbineStatusDataRepository windTurbineStatusDataRepository;
+  @Autowired
+  WindTowerStatusDataRepository windTowerStatusDataRepository;
+  @Autowired
+  RedisUtils redisUtils;
+  @Autowired
+  EquipmentAttributeService equipmentAttributeService;
+
+
+  public void receive() {
+    List<ElectricField> electricFieldList = electricFieldService.getAll();
+    //每个场站请求一次
+    for (ElectricField electricField : electricFieldList) {
+      log.info(electricField.getName() + "开始请求数据");
+      Long startTime = DateTimeUtil.getCurrentTimeForMinute().getTime();
+      Long endTime = startTime + 60000L;
+      try {
+        //通用查询
+        if (electricField.getElectricFieldTypeEnum().getCode() == 1) {
+          //气象站
+          List<WeatherStationInfo> weatherStationInfoList = weatherStationInfoService.get(electricField.getStationCode());
+          //逆变器
+          List<InverterInfo> inverterInfoList = inverterInfoService.getByStationCode(electricField.getStationCode());
+          //按设备请求
+          for (WeatherStationInfo weatherStationInfo : weatherStationInfoList) {
+            HashMap<String, Object> paramMap = new HashMap<>();
+            paramMap.put("deviceIds", weatherStationInfo.getEquipmentNo());
+            paramMap.put("startTime", startTime);
+            paramMap.put("endTime", endTime);
+            String body = HttpUtil.post("https://10.220.57.13:7085/dataService/v1/getTaosData", paramMap);
+            AnalysisData(body, weatherStationInfo.getId(), weatherStationInfo.getEquipmentType().getCode(), electricField);
+          }
+          for (InverterInfo inverterInfo : inverterInfoList) {
+            HashMap<String, Object> paramMap = new HashMap<>();
+            paramMap.put("deviceIds", inverterInfo.getEquipmentNo());
+            paramMap.put("startTime", startTime);
+            paramMap.put("endTime", endTime);
+            String body = HttpUtil.post("https://10.220.57.13:7085/dataService/v1/getTaosData", paramMap);
+            AnalysisData(body, inverterInfo.getId(), inverterInfo.getEquipmentType().getCode(), electricField);
+          }
+        } else {
+          //测风塔
+          List<WindTowerInfo> windTowerInfoList = windTowerInfoService.get(electricField.getStationCode());
+          //风机
+          List<WindTurbineInfo> windTurbineInfoList = windTurbineInfoService.getByStationCode(electricField.getStationCode());
+          for (WindTowerInfo windTowerInfo : windTowerInfoList) {
+            HashMap<String, Object> paramMap = new HashMap<>();
+            paramMap.put("deviceIds", windTowerInfo.getEquipmentNo());
+            paramMap.put("startTime", startTime);
+            paramMap.put("endTime", endTime);
+            String body = HttpUtil.post("https://10.220.57.13:7085/dataService/v1/getTaosData", paramMap);
+            AnalysisData(body, windTowerInfo.getId(), windTowerInfo.getEquipmentType().getCode(), electricField);
+          }
+          for (WindTurbineInfo windTurbineInfo : windTurbineInfoList) {
+            HashMap<String, Object> paramMap = new HashMap<>();
+            paramMap.put("deviceIds", windTurbineInfo.getEquipmentNo());
+            paramMap.put("startTime", startTime);
+            paramMap.put("endTime", endTime);
+            String body = HttpUtil.post("https://10.220.57.13:7085/dataService/v1/getTaosData", paramMap);
+            AnalysisData(body, windTurbineInfo.getId(), windTurbineInfo.getEquipmentType().getCode(), electricField);
+          }
+        }
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  /**
+   * 解析数据
+   *
+   * @param boby          所有数据
+   * @param equipmentId   设备id
+   * @param equipmentType 设备类型
+   * @param electricField 场站对象
+   */
+  public void AnalysisData(String boby, Integer equipmentId, Integer equipmentType, ElectricField electricField) throws BusinessException {
+    List<DataPoint> dataPointList = dataPointService.getByEquipmentType(equipmentType);
+    JSONObject jsonObject = JSONUtil.parseObj(boby);
+    ResponseResults results = (ResponseResults) jsonObject.get("results");
+    ResponseRows rows = results.getRows();
+    String[] value = rows.getValues();
+    String[] sensorIds = results.getSensorIds();
+    Map<String, String> map = new HashMap<>();
+    map.put("equipmentNo", equipmentId.toString());
+    map.put("time", new Date(rows.getTimestamp()).toString());
+    for (DataPoint dataPoint : dataPointList) {
+      for (int i = 0; i < sensorIds.length; i++) {
+        if (dataPoint.getMeasuringPoint().equals(sensorIds[i])) {
+          map.put(dataPoint.getEquipmentAttribute().getFieldName(), value[i]);
+        }
+      }
+    }
+    //光
+    if (electricField.getElectricFieldTypeEnum().getCode() == 1) {
+      WeatherStationInfo weatherStationInfo = weatherStationInfoService.get(equipmentId);
+      if (weatherStationInfo != null) {
+        redisUtils.hmset("qxz-" + electricField.getStationCode() + "-" + equipmentId, map);
+        WeatherStationStatusData weatherStationStatusData = JSON.parseObject(JSON.toJSONString(map), WeatherStationStatusData.class);
+        weatherStationStatusDataRepository.save(weatherStationStatusData);
+      } else {
+        InverterInfo inverterInfo = inverterInfoService.get(equipmentId);
+        if (inverterInfo != null) {
+          redisUtils.hmset("nbq-" + electricField.getStationCode() + "-" + equipmentId, map);
+          InverterStatusData inverterStatusData = JSON.parseObject(JSON.toJSONString(map), InverterStatusData.class);
+          inverterStatusDataRepository.save(inverterStatusData);
+        }
+      }
+    } else {
+      //风
+      WindTurbineInfo windTurbineInfo = windTurbineInfoService.get(equipmentId);
+      if (windTurbineInfo != null) {
+        redisUtils.hmset("fj-" + electricField.getStationCode() + "-" + equipmentId, map);
+        WindTurbineStatusData windTurbineStatusData = JSON.parseObject(JSON.toJSONString(map), WindTurbineStatusData.class);
+        windTurbineStatusDataRepository.save(windTurbineStatusData);
+      } else {
+        WindTowerInfo windTowerInfo = windTowerInfoService.get(equipmentId);
+        if (windTowerInfo != null) {
+          redisUtils.hmset("cft-" + electricField.getStationCode() + "-" + equipmentId, map);
+          WindTowerStatusData windTowerStatusData = JSON.parseObject(JSON.toJSONString(map), WindTowerStatusData.class);
+          windTowerStatusDataRepository.save(windTowerStatusData);
+        }
+      }
+
+    }
+  }
+
+}

+ 17 - 0
ipfcst-console/src/main/java/com/jiayue/ipfcst/console/service/WindTowerInfoService.java

@@ -3,6 +3,7 @@ package com.jiayue.ipfcst.console.service;
 import com.jiayue.ipfcst.common.core.exception.BusinessException;
 import com.jiayue.ipfcst.common.data.entity.WeatherStationInfo;
 import com.jiayue.ipfcst.common.data.entity.WindTowerInfo;
+import com.jiayue.ipfcst.common.data.entity.WindTurbineInfo;
 import com.jiayue.ipfcst.common.data.repository.WindTowerInfoRepository;
 import com.jiayue.ipfcst.common.data.service.BaseService;
 import lombok.extern.slf4j.Slf4j;
@@ -101,6 +102,22 @@ public class WindTowerInfoService extends BaseService {
     return resultList.stream().sorted(Comparator.comparing(WindTowerInfo::getStationCode)).collect(Collectors.toList());
   }
 
+  /**
+   * 查询测风塔
+   *
+   * @param no 测风塔编号
+   * @return 测风塔
+   * @throws BusinessException 业务异常
+   */
+  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
+  public WindTowerInfo get(final Integer no) throws BusinessException {
+    Optional<WindTowerInfo> optional = this.windTowerInfoRepository.findById(no);
+    if (optional.isPresent()) {
+      return optional.get();
+    } else {
+      throw new BusinessException("测风塔不存在!");
+    }
+  }
 
   /**
    * 获取到所有的测风塔   create by xiuwei

+ 3 - 0
ipfcst-console/src/main/resources/sql/t_data_point.sql

@@ -0,0 +1,3 @@
+INSERT INTO t_data_point (C_MEASURING_POINT, C_EQUIPMENT_TYPE, C_EQUIPMENT_ATTRIBUTE_ID)
+VALUES ('1', , '正常', 'com.jiayue.ipfcst.fileupload.job.UploadFileE3Job', '青海理论功率', '15 0/1 * * * ?', 'fileCreate',
+        '1604305788000', NULL);

+ 284 - 0
ipfcst-console/src/main/resources/sql/t_equipment_attribute.sql

@@ -0,0 +1,284 @@
+ALTER TABLE t_equipment_attribute MODIFY COLUMN `C_EXPLANATION` varchar(50) DEFAULT NULL;
+ALTER TABLE t_equipment_attribute MODIFY COLUMN  `C_FIELD_NAME` varchar(90) DEFAULT NULL;
+ALTER TABLE t_equipment_attribute MODIFY COLUMN `C_MEASUREMENT_UNITS` varchar(5) DEFAULT NULL;
+ALTER TABLE t_equipment_attribute MODIFY COLUMN `C_EQUIPMENT_TYPE` varchar(200) DEFAULT NULL;
+ALTER TABLE t_equipment_attribute MODIFY COLUMN `C_STATION_CODE` varchar(255) DEFAULT NULL;
+ALTER TABLE t_equipment_attribute MODIFY COLUMN C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM VARCHAR ( 200 ) DEFAULT NULL;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 97, '系统自动判断是否限电', 'isRationingByAutoControl', '', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 97) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 98, '人工判断是否限电', 'isRationingByManualControl', '', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 98) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 99, '场站状态', 'status', '', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 99) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 100, '实际功率', 'realValue', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 100) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 101, '可用功率', 'ableValue', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 101) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 102, '理论功率', 'theoryValue', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 102) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 103, '开机容量', 'openCapacity', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 103) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 104, '装机容量', 'capacity', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 104) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 105, '站内受阻功率', 'onSiteObstructed', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 105) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 106, '站外受阻功率', 'offSiteObstructed', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 106) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 107, '并网设备数', 'onGridNum', '', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 107) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 108, '样板机理论功率', 'referencePowerBySample', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 108) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 109, '测风/光法理论功率', 'referencePowerByMeasuring', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 109) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 112, '样板机可用功率', 'ablePowerBySample', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 112) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 113, '测风/光法可用功率', 'ablePowerByMeasuring', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 113) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 110, '日发电量', 'dailyOutPut', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 110) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 111, '日上网电量', 'dailyGridOutPut', 'MW', 'POWERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 111) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 190, '备用字段1', 'data1', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 190) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 191, '备用字段2', 'data2', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 191) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 192, '备用字段3', 'data3', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 192) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 193, '备用字段4', 'data4', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 193) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 194, '备用字段5', 'data5', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 194) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 195, '备用字段6', 'data6', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 195) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 196, '备用字段7', 'data7', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 196) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 197, '备用字段8', 'data8', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 197) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 198, '备用字段9', 'data9', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 198) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 199, '备用字段10', 'data10', '', 'POWERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 199) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1100, '状态', 'status', '', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1100) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1101, '总辐射', 'globalR', 'W/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1101) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1102, '直辐射', 'directR', 'W/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1102) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1103, '散辐射', 'diffuseR', 'W/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1103) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1104, '斜面辐射', 'obliqueR', 'W/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1104) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1105, '环境温度', 'airT', '℃', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1105) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1106, '气压', 'p', 'KPa', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1106) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1107, '湿度', 'rh', '%', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1107) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1108, '光伏电池板温度', 'cellT', '℃', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1108) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1109, '风速', 'ws', 'm/s', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1109) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1110, '风向', 'wd', '°', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1110) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1111, '日照小时数', 'hourDA', '', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1111) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1112, '总辐射日累计', 'globalRDA', 'MJ/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1112) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1113, '直辐射日累计', 'directRDA', 'MJ/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1113) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1114, '散射辐射日累计', 'diffuseRDA', 'MJ/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1114) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1115, '斜面辐射日累计', 'obliqueRDA', 'MJ/㎡', 'WEATHERSTATION',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1115) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1990, '备用字段1', 'data1', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1990) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1991, '备用字段2', 'data2', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1991) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1992, '备用字段3', 'data3', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1992) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1993, '备用字段4', 'data4', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1993) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1994, '备用字段5', 'data5', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1994) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1995, '备用字段6', 'data6', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1995) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1996, '备用字段7', 'data7', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1996) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1997, '备用字段8', 'data8', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1997) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1998, '备用字段9', 'data9', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1998) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 1999, '备用字段10', 'data10', '', 'WEATHERSTATION',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 1999) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2099, '状态', 'status', '', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2099) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2100, '有功', 'activePower', 'kW', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2100) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2101, '无功', 'reactivePower', 'kVar', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2101) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2102, '功率因数', 'powerFactor', '', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2102) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2103, '电压', 'voltage', 'V', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2103) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2104, '电流', 'electricalCurrent', 'A', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2104) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2105, '当日发电量', 'dayElectricQuantity', 'kW·h', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2105) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2106, '当日并网小时数', 'dayGridConnectedHours', '', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2106) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2107, '转速', 'windWheelRatedSpeed', 'rpm', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2107) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2108, '风速', 'ws', 'm/s', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2108) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2109, '风向', 'wd', '°', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2109) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2110, '温度', 't', '℃', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2110) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2111, '桨距角', 'pitchAngle', '°', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2111) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2112, '累积发电量', 'cumulativeGeneratedEnergy', 'MW·h', 'WINDTURBINE',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2112) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2990, '备用字段1', 'data1', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2990) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2991, '备用字段2', 'data2', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2991) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2992, '备用字段3', 'data3', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2992) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2993, '备用字段4', 'data4', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2993) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2994, '备用字段5', 'data5', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2994) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2995, '备用字段6', 'data6', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2995) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2996, '备用字段7', 'data7', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2996) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2997, '备用字段8', 'data8', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2997) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2998, '备用字段9', 'data9', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2998) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 2999, '备用字段10', 'data10', '', 'WINDTURBINE',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 2999) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3099, '状态', 'status', '', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3099) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3100, '有功', 'activePower', 'kW', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3100) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3101, '无功', 'reactivePower', 'kVar', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3101) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3102, '功率因数', 'powerFactor', '', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3102) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3103, '电压', 'voltage', 'V', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3103) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3104, '电流', 'electricalCurrent', 'A', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3104) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3105, '当日发电量', 'dayElectricQuantity', 'kW·h', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3105) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3106, '当日并网小时数', 'dayGridConnectedHours', '', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3106) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3107, '累积发电量', 'cumulativeGeneratedEnergy', 'MW·h', 'INVERTER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3107) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3990, '备用字段1', 'data1', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3990) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3991, '备用字段2', 'data2', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3991) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3992, '备用字段3', 'data3', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3992) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3993, '备用字段4', 'data4', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3993) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3994, '备用字段5', 'data5', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3994) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3995, '备用字段6', 'data6', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3995) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3996, '备用字段7', 'data7', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3996) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3997, '备用字段8', 'data8', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3997) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3998, '备用字段9', 'data9', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3998) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 3999, '备用字段10', 'data10', '', 'INVERTER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 3999) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4100, '运行状态', 'status', '', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4100) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4101, '瞬时温度', 'tInst', '℃', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4101) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4102, '最大温度', 'tMax', '℃', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4102) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4103, '最小温度', 'tMin', '℃', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4103) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4104, '平均温度', 'tAve', '℃', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4104) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4105, '温度标准差', 'tSta', '℃', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4105) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4106, '瞬时湿度', 'rhInst', '%', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4106) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4107, '最大湿度', 'rhMax', '%', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4107) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4108, '最小湿度', 'rhMin', '%', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4108) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4109, '平均湿度', 'rhAve', '%', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4109) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4110, '湿度标准差', 'rhSta', '%', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4110) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4111, '瞬时气压', 'paInst', 'KPa', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4111) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4112, '最大气压', 'paMax', 'KPa', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4112) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4113, '最小气压', 'paMin', 'KPa', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4113) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4114, '平均气压', 'paAve', 'KPa', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4114) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4115, '气压标准差', 'paSta', 'KPa', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4115) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4116, '10米瞬时风速', 'wsInst10', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4116) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4117, '10米最大风速', 'wsMax10', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4117) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4118, '10米最小风速', 'wsMin10', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4118) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4119, '10米平均风速', 'wsAve10', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4119) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4120, '10米风速标准差', 'wsSta10', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4120) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4121, '10米瞬时风向', 'wdInst10', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4121) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4122, '10米最大风向', 'wdMax10', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4122) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4123, '10米最小风向', 'wdMin10', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4123) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4124, '10米平均风向', 'wdAve10', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4124) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4125, '10米风向标准差', 'wdSta10', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4125) ;
+/*INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4126, '20米瞬时风速', 'wsInst20', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4126) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4127, '20米最大风速', 'wsMax20', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4127) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4128, '20米最小风速', 'wsMin20', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4128) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4129, '20米平均风速', 'wsAve20', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4129) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4130, '20米风速标准差', 'wsSta20', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4130) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4131, '20米瞬时风向', 'wdInst20', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4131) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4132, '20米最大风向', 'wdMax20', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4132) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4133, '20米最小风向', 'wdMin20', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4133) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4134, '20米平均风向', 'wdAve20', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4134) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4135, '20米风向标准差', 'wdSta20', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4135) ;*/
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4136, '30米瞬时风速', 'wsInst30', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4136) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4137, '30米最大风速', 'wsMax30', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4137) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4138, '30米最小风速', 'wsMin30', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4138) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4139, '30米平均风速', 'wsAve30', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4139) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4140, '30米风速标准差', 'wsSta30', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4140) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4141, '30米瞬时风向', 'wdInst30', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4141) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4142, '30米最大风向', 'wdMax30', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4142) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4143, '30米最小风向', 'wdMin30', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4143) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4144, '30米平均风向', 'wdAve30', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4144) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4145, '30米风向标准差', 'wdSta30', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4145) ;
+/*INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4146, '40米瞬时风速', 'wsInst40', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4146) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4147, '40米最大风速', 'wsMax40', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4147) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4148, '40米最小风速', 'wsMin40', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4148) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4149, '40米平均风速', 'wsAve40', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4149) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4150, '40米风速标准差', 'wsSta40', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4150) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4151, '40米瞬时风向', 'wdInst40', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4151) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4152, '40米最大风向', 'wdMax40', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4152) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4153, '40米最小风向', 'wdMin40', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4153) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4154, '40米平均风向', 'wdAve40', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4154) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4155, '40米风向标准差', 'wdSta40', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4155) ;*/
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4156, '50米瞬时风速', 'wsInst50', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4156) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4157, '50米最大风速', 'wsMax50', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4157) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4158, '50米最小风速', 'wsMin50', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4158) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4159, '50米平均风速', 'wsAve50', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4159) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4160, '50米风速标准差', 'wsSta50', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4160) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4161, '50米瞬时风向', 'wdInst50', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4161) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4162, '50米最大风向', 'wdMax50', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4162) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4163, '50米最小风向', 'wdMin50', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4163) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4164, '50米平均风向', 'wdAve50', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4164) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4165, '50米风向标准差', 'wdSta50', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4165) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4166, '60米瞬时风速', 'wsInst60', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4166) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4167, '60米最大风速', 'wsMax60', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4167) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4168, '60米最小风速', 'wsMin60', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4168) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4169, '60米平均风速', 'wsAve60', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4169) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4170, '60米风速标准差', 'wsSta60', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4170) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4171, '60米瞬时风向', 'wdInst60', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4171) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4172, '60米最大风向', 'wdMax60', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4172) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4173, '60米最小风向', 'wdMin60', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4173) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4174, '60米平均风向', 'wdAve60', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4174) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4175, '60米风向标准差', 'wdSta60', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4175) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4176, '70米瞬时风速', 'wsInst70', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4176) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4177, '70米最大风速', 'wsMax70', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4177) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4178, '70米最小风速', 'wsMin70', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4178) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4179, '70米平均风速', 'wsAve70', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4179) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4180, '70米风速标准差', 'wsSta70', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4180) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4181, '70米瞬时风向', 'wdInst70', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4181) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4182, '70米最大风向', 'wdMax70', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4182) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4183, '70米最小风向', 'wdMin70', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4183) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4184, '70米平均风向', 'wdAve70', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4184) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4185, '70米风向标准差', 'wdSta70', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4185) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4186, '80米瞬时风速', 'wsInst80', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4186) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4187, '80米最大风速', 'wsMax80', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4187) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4188, '80米最小风速', 'wsMin80', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4188) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4189, '80米平均风速', 'wsAve80', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4189) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4190, '80米风速标准差', 'wsSta80', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4190) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4191, '80米瞬时风向', 'wdInst80', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4191) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4192, '80米最大风向', 'wdMax80', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4192) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4193, '80米最小风向', 'wdMin80', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4193) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4194, '80米平均风向', 'wdAve80', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4194) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4195, '80米风向标准差', 'wdSta80', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4195) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4196, '90米瞬时风速', 'wsInst90', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4196) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4197, '90米最大风速', 'wsMax90', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4197) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4198, '90米最小风速', 'wsMin90', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4198) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4199, '90米平均风速', 'wsAve90', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4199) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4200, '90米风速标准差', 'wsSta90', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4200) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4201, '90米瞬时风向', 'wdInst90', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4201) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4202, '90米最大风向', 'wdMax90', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4202) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4203, '90米最小风向', 'wdMin90', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4203) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4204, '90米平均风向', 'wdAve90', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4204) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4205, '90米风向标准差', 'wdSta90', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4205) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4206, '100米瞬时风速', 'wsInst100', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4206) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4207, '100米最大风速', 'wsMax100', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4207) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4208, '100米最小风速', 'wsMin100', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4208) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4209, '100米平均风速', 'wsAve100', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4209) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4210, '100米风速标准差', 'wsSta100', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4210) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4211, '100米瞬时风向', 'wdInst100', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4211) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4212, '100米最大风向', 'wdMax100', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4212) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4213, '100米最小风向', 'wdMin100', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4213) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4214, '100米平均风向', 'wdAve100', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4214) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4215, '100米风向标准差', 'wdSta100', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4215) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4216, '110米瞬时风速', 'wsInst110', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4216) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4217, '110米最大风速', 'wsMax110', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4217) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4218, '110米最小风速', 'wsMin110', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4218) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4219, '110米平均风速', 'wsAve110', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4219) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4220, '110米风速标准差', 'wsSta110', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4220) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4221, '110米瞬时风向', 'wdInst110', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4221) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4222, '110米最大风向', 'wdMax110', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4222) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4223, '110米最小风向', 'wdMin110', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4223) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4224, '110米平均风向', 'wdAve110', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4224) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4225, '110米风向标准差', 'wdSta110', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4225) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4226, '轮毂高瞬时风速', 'wsInstHubHeight', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4226) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4227, '轮毂高最大风速', 'wsMaxHubHeight', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4227) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4228, '轮毂高最小风速', 'wsMinHubHeight', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4228) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4229, '轮毂高平均风速', 'wsAveHubHeight', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4229) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4230, '轮毂高风速标准差', 'wsStaHubHeight', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4230) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4231, '轮毂高瞬时风向', 'wdInstHubHeight', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4231) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4232, '轮毂高最大风向', 'wdMaxHubHeight', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4232) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4233, '轮毂高最小风向', 'wdMinHubHeight', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4233) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4234, '轮毂高平均风向', 'wdAveHubHeight', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4234) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4235, '轮毂高风向标准差', 'wdStaHubHeight', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4235) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4236, '空气密度', 'airDensity', 'Kg/m³', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4236) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4237, '120米瞬时风速', 'wsInst120', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4237) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4238, '120米最大风速', 'wsMax120', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4238) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4239, '120米最小风速', 'wsMin120', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4239) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4240, '120米平均风速', 'wsAve120', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4240) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4241, '120米风速标准差', 'wsSta120', 'm/s', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4241) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4242, '120米瞬时风向', 'wdInst120', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4242) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4243, '120米最大风向', 'wdMax120', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4243) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4244, '120米最小风向', 'wdMin120', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4244) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4245, '120米平均风向', 'wdAve120', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4245) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4246, '120米风向标准差', 'wdSta120', '°', 'WINDTOWER',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4246) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4990, '备用字段1', 'data1', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4990) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4991, '备用字段2', 'data2', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4991) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4992, '备用字段3', 'data3', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4992) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4993, '备用字段4', 'data4', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4993) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4994, '备用字段5', 'data5', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4994) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4995, '备用字段6', 'data6', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4995) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4996, '备用字段7', 'data7', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4996) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4997, '备用字段8', 'data8', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4997) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4998, '备用字段9', 'data9', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4998) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 4999, '备用字段10', 'data10', '', 'WINDTOWER',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 4999) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6100, '全场出力上限', 'upperLimitOfWholeStation', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6100) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6101, '全厂出力下限', 'lowerLimitOfWholeStation', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6101) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6102, '全场响应速率', 'speedRateOfWholeStation', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6102) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6103, '全场目标定值返回值', 'targetValueOfWholeStation', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6103) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6104, 'AGC投/退', 'AGCOnOrOff', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6104) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6105, 'AGC远方/就地', 'AGCRemoteOrOnTheSpot', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6105) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6106, 'AGC增出力闭锁', 'AGCIncreaseOutputAtresia', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6106) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6107, 'AGC减出力闭锁', 'AGCDecreaseOutputAtresia', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6107) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6108, '升压变高压侧母线电压上限值', 'upperLimitOfBoosterHighPressureSideBusVoltage', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6108) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6109, '升压变高压侧母线电压下限值', 'lowerLimitOfBoosterHighPressureSideBusVoltage', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6109) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6110, 'AVC投/退', 'AVCOnOrOff', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6110) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6111, 'AVC远方/就地', 'AVCRemoteOrOnTheSpot', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6111) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6112, 'AVC增出力闭锁', 'AVCIncreaseOutputAtresia', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6112) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6113, 'AVC减出力闭锁', 'AVCDecreaseOutputAtresia', NULL, 'AGC_AVC',  NULL, 'INVARIANT' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6113) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6990, '备用字段1', 'data1', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6990) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6991, '备用字段2', 'data2', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6991) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6992, '备用字段3', 'data3', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6992) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6993, '备用字段4', 'data4', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6993) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6994, '备用字段5', 'data5', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6994) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6995, '备用字段6', 'data6', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6995) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6996, '备用字段7', 'data7', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6996) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6997, '备用字段8', 'data8', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6997) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6998, '备用字段9', 'data9', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6998) ;
+INSERT INTO t_equipment_attribute(C_ID,C_EXPLANATION,C_FIELD_NAME,C_MEASUREMENT_UNITS,C_EQUIPMENT_TYPE,C_STATION_CODE, C_EQUIPMENT_ATTRIBUTE_TYPE_ENUM)  select 6999, '备用字段10', 'data10', '', 'AGC_AVC',  NULL, 'SPARE' from dual where not exists (select C_ID from t_equipment_attribute where C_ID = 6999) ;
+