Переглянути джерело

测试解析功能后的调整,站端预测增加了理论生成日期或理论剩时间字段

tl 7 місяців тому
батько
коміт
47171e034c

+ 5 - 0
cpp-admin/src/main/java/com/cpp/web/domain/station/ForecastPowerShortTermStation.java

@@ -30,6 +30,11 @@ public class ForecastPowerShortTermStation extends BaseCppEntity {
     @ApiModelProperty(value = "预测值时间")
     private Date time;
 
+    /**
+     * 生成日期
+     */
+    @ApiModelProperty(value = "生成日期")
+    private Date genDate;
 
     /**
      * 预测功率

+ 5 - 0
cpp-admin/src/main/java/com/cpp/web/domain/station/ForecastPowerUltraShortTermStation.java

@@ -36,6 +36,11 @@ public class ForecastPowerUltraShortTermStation extends BaseCppEntity {
     @Digits(integer = 10, fraction = 2)
     private BigDecimal fpValue = new BigDecimal(-99);
 
+    /**
+     * 生成时间
+     */
+    @ApiModelProperty(value = "生成时间")
+    private Date genTime;
 
     /**
      * 开机容量

+ 6 - 1
cpp-admin/src/main/java/com/cpp/web/domain/station/NwpStation.java

@@ -37,7 +37,12 @@ public class NwpStation extends BaseCppEntity {
      */
     @ApiModelProperty(value = "预测值时间")
     private Date time;
-    
+
+    /**
+     * 生成日期
+     */
+    @ApiModelProperty(value = "生成日期")
+    private Date genDate;
 
     /**
      * 温度

+ 2 - 3
cpp-admin/src/main/java/com/cpp/web/service/cloud/CloudFileParsing.java

@@ -12,6 +12,7 @@ import com.cpp.web.service.AbnormalAlarmService;
 import com.cpp.web.service.datafactory.ParsingLogService;
 import com.cpp.web.utils.DateTimeUtil;
 import com.cpp.web.utils.NumberUtils;
+import com.cpp.web.utils.ParsingFileUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
@@ -47,9 +48,7 @@ public class CloudFileParsing {
     private final ForecastPowerShortTermCloudService forecastPowerShortTermCloudService;
     private final NwpCloudService nwpCloudService;
 
-    private final String PARSING_FILE_NEW_DIR = "/";
-
-    private final File fileNewDir = new File(PARSING_FILE_NEW_DIR);
+    private final File fileNewDir = ParsingFileUtil.checkGetPath(ParsingFileUtil.getOutDownload() + File.separator + "new");
 
     private final ThreadPoolTaskExecutor executor;
 

+ 67 - 67
cpp-admin/src/main/java/com/cpp/web/service/datafactory/SftpFileParsing.java

@@ -32,7 +32,6 @@ import org.springframework.stereotype.Service;
 import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.Field;
-import java.nio.charset.Charset;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -59,11 +58,11 @@ public class SftpFileParsing {
 
     private final AbnormalAlarmService abnormalAlarmService;
 
-    private final File PARSING_FILE_TEMP_DIR = ParsingFileUtil.checkGetPath(ParsingFileUtil.getSftpDownload()+File.separator+"temp");
-    private final File PARSING_FILE_SUCCESS_DIR = ParsingFileUtil.checkGetPath(ParsingFileUtil.getSftpDownload()+File.separator+"success");
-    private final File PARSING_FILE_FAIL_DIR = ParsingFileUtil.checkGetPath(ParsingFileUtil.getSftpDownload()+File.separator+"fail");
+    private final File PARSING_FILE_TEMP_DIR = ParsingFileUtil.checkGetPath(ParsingFileUtil.getSftpDownload() + File.separator + "temp");
+    private final File PARSING_FILE_SUCCESS_DIR = ParsingFileUtil.checkGetPath(ParsingFileUtil.getSftpDownload() + File.separator + "success");
+    private final File PARSING_FILE_FAIL_DIR = ParsingFileUtil.checkGetPath(ParsingFileUtil.getSftpDownload() + File.separator + "fail");
 
-    private final ThreadPoolTaskExecutor executor;
+//    private final ThreadPoolTaskExecutor executor;
 
     /**
      * 解析文件得定时任务
@@ -78,7 +77,7 @@ public class SftpFileParsing {
      * @return
      */
 //    @Scheduled(fixedRate = 300000L)
-    @Scheduled(fixedRate = 60000L)
+//    @Scheduled(fixedRate = 60000L)
     public void parsingFileJob() {
 
 
@@ -110,6 +109,7 @@ public class SftpFileParsing {
 
     /**
      * sftp下载文件并解析文件的具体步骤
+     *
      * @param parsingTypes
      * @param channelElectricFields
      * @param sftp
@@ -121,74 +121,74 @@ public class SftpFileParsing {
 //            executor.execute(new Runnable() {
 //                @Override
 //                public void run() {
-                    ParsingInterface parsingInterface = parsingInterfaceMap.get(parsingType.getFileType().name() + "Parsing");
-                    parsingInterface.activationParsingConf();//初始化解析配置
-                    for (ElectricField electricField : channelElectricFields) {
-
-                        String ftpUrl = electricField.getFtpUrl();
-                        List<String> fileNames = sftp.ls(ftpUrl).stream().filter(f -> f.contains(parsingType.getFileName())).collect(Collectors.toList());
-                        if (fileNames.size() > 0) {
-                            for (String fileName : fileNames) {
+            ParsingInterface parsingInterface = parsingInterfaceMap.get(parsingType.getFileType().name() + "Parsing");
+            parsingInterface.activationParsingConf();//初始化解析配置
+            for (ElectricField electricField : channelElectricFields) {
+
+                String ftpUrl = electricField.getFtpUrl();
+                List<String> fileNames = sftp.ls(ftpUrl).stream().filter(f -> f.contains(parsingType.getFileName())).collect(Collectors.toList());
+                if (fileNames.size() > 0) {
+                    for (String fileName : fileNames) {
+                        try {
+                            String sftpFileNameDir = ftpUrl + "/" + fileName;
+                            String destFileNameDir = PARSING_FILE_TEMP_DIR.getPath() + File.separator + fileName;
+                            //下载文件到临时目录
+                            sftp.get(sftpFileNameDir, destFileNameDir);
+                            File file = FileUtils.getFile(PARSING_FILE_TEMP_DIR, fileName);
+                            ParsingLog parsingLog = new ParsingLog();
+                            Date now = new Date();
+                            parsingLog.setParsingTime(now);
+                            ParsingResultDto parsingResultDto = parsingInterface.parsing(file, electricField.getStationCode());
+                            parsingLog.setParsingDescribe(parsingResultDto.getMessage());
+                            parsingLog.setFileType(parsingType.getFileType());
+                            parsingLog.setDataSources(DataSourcesEnum.E1);
+                            if (parsingResultDto.getStatus().equals("fail")) {
                                 try {
-                                    String sftpFileNameDir = ftpUrl+"/"+fileName;
-                                    String destFileNameDir = PARSING_FILE_TEMP_DIR.getPath()+File.separator+fileName;
-                                    //下载文件到临时目录
-                                    sftp.get(sftpFileNameDir, destFileNameDir);
-                                    File file = FileUtils.getFile(PARSING_FILE_TEMP_DIR, fileName);
-                                    ParsingLog parsingLog = new ParsingLog();
-                                    Date now = new Date();
-                                    parsingLog.setParsingTime(now);
-                                    ParsingResultDto parsingResultDto = parsingInterface.parsing(file, electricField.getStationCode());
-                                    parsingLog.setParsingDescribe(parsingResultDto.getMessage());
-                                    parsingLog.setFileType(parsingType.getFileType());
-                                    parsingLog.setDataSources(DataSourcesEnum.E1);
-                                    if (parsingResultDto.getStatus().equals("fail")) {
-                                        try {
-                                            File failFileDir = new File(PARSING_FILE_FAIL_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd"));
-                                            File failFile = new File(failFileDir.getPath() + File.separator + fileName);
-                                            if (failFile.exists()) {
-                                                failFile.delete();
-                                                log.error("已有过解析失败文件,错误文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
-                                            }
-
-                                            ParsingFileUtil.move(file.getAbsolutePath(), failFileDir.getAbsolutePath(),true);
-                                        } catch (IOException e) {
-                                            log.error("解析文件失败后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
-                                            e.printStackTrace();
-                                        }
-                                        file.delete();//失败删除本地文件,等待下次下载
-                                        parsingLog.setParsingFileStatus("失败");
-
-                                        abnormalAlarms.add(new AbnormalAlarm(DataSourcesEnum.E3, AlarmEnum.E4, MessageUtils.format("无法解析场站端文件:{}", fileName), electricField.getStationCode()));
-
-                                    } else {
-                                        sftp.delFile(ftpUrl + "/" + fileName);//成功删除ftp上的文件
-
-                                        try {
-                                            File successFileDir = new File(PARSING_FILE_SUCCESS_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd"));
-                                            File successFile = new File(successFileDir.getPath() + File.separator + fileName);
-                                            if (successFile.exists()) {
-                                                successFile.delete();
-                                                log.error("已有过解析成功文件,成功文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
-                                            }
-
-                                            ParsingFileUtil.move(file.getAbsolutePath(), successFileDir.getAbsolutePath(),true);
-                                        } catch (IOException e) {
-                                            log.error("解析文件成功后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
-                                            e.printStackTrace();
-                                        }
-                                        file.delete();//失败删除本地文件,等待下次下载
-                                        parsingLog.setParsingFileStatus("成功");
+                                    File failFileDir = new File(PARSING_FILE_FAIL_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd"));
+                                    File failFile = new File(failFileDir.getPath() + File.separator + fileName);
+                                    if (failFile.exists()) {
+                                        failFile.delete();
+                                        log.error("已有过解析失败文件,错误文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
                                     }
-                                    parsingLogs.add(parsingLog);
-                                } catch (Exception e) {
-                                    abnormalAlarms.add(new AbnormalAlarm(DataSourcesEnum.E3, AlarmEnum.E4, MessageUtils.format("无法解析场站端文件:{}", fileName), electricField.getStationCode()));
-                                    log.error("下载并解析文件{}时异常", fileName, e);
+
+                                    ParsingFileUtil.move(file.getAbsolutePath(), failFileDir.getAbsolutePath(), true);
+                                } catch (IOException e) {
+                                    log.error("解析文件失败后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
+                                    e.printStackTrace();
                                 }
+                                file.delete();//失败删除本地文件,等待下次下载
+                                parsingLog.setParsingFileStatus("失败");
+
+                                abnormalAlarms.add(new AbnormalAlarm(DataSourcesEnum.E3, AlarmEnum.E4, MessageUtils.format("无法解析场站端文件:{}", fileName), electricField.getStationCode()));
 
+                            } else {
+                                sftp.delFile(ftpUrl + "/" + fileName);//成功删除ftp上的文件
+
+                                try {
+                                    File successFileDir = new File(PARSING_FILE_SUCCESS_DIR.getPath() + File.separator + DateFormatUtils.format(now, "yyyy-MM-dd"));
+                                    File successFile = new File(successFileDir.getPath() + File.separator + fileName);
+                                    if (successFile.exists()) {
+                                        successFile.delete();
+                                        log.error("已有过解析成功文件,成功文件将覆盖!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName);
+                                    }
+
+                                    ParsingFileUtil.move(file.getAbsolutePath(), successFileDir.getAbsolutePath(), true);
+                                } catch (IOException e) {
+                                    log.error("解析文件成功后文件移动失败!场站编号:{},文件名称:{}", electricField.getStationCode(), fileName, e);
+                                    e.printStackTrace();
+                                }
+                                file.delete();//失败删除本地文件,等待下次下载
+                                parsingLog.setParsingFileStatus("成功");
                             }
+                            parsingLogs.add(parsingLog);
+                        } catch (Exception e) {
+                            abnormalAlarms.add(new AbnormalAlarm(DataSourcesEnum.E3, AlarmEnum.E4, MessageUtils.format("无法解析场站端文件:{}", fileName), electricField.getStationCode()));
+                            log.error("下载并解析文件{}时异常", fileName, e);
                         }
+
                     }
+                }
+            }
 //                }
 //            });
 

+ 3 - 1
cpp-admin/src/main/java/com/cpp/web/service/datafactory/impl/ParsingCdqServiceImpl.java

@@ -67,17 +67,19 @@ public class ParsingCdqServiceImpl extends ServiceImpl<ParsingCdqMapper, Parsing
                 List<String> fileContent = ParsingFileUtil.getFileContent(file);
                 if (parsingCdq.getDataType().equals(ParsingFieldUtil.MULTI)) {//多行操作
                     Date forecastTime = parsingForecastTime(parsingCdq.getForecastTime(), fileContent);
+                    Date genTime = new Date(forecastTime.getTime() - 900000L);
                     Date time = forecastTime;
                     if (forecastTime != null) {//解析时间成功才可以进行以下操作
                         if (parsingCdq.getFpValue() != null) {
                             List<BigDecimal> fpValues = parsingFpValue(parsingCdq.getFpValue(), fileContent);
                             if (fpValues.size() > 0) {
                                 List<ForecastPowerUltraShortTermStation> forecastPowerUltraShortTermStationList = new ArrayList();
-                                BigDecimal openCapacity = parsingValue(parsingCdq.getOpenCapacity(),fileContent);
+                                BigDecimal openCapacity = parsingValue(parsingCdq.getOpenCapacity(), fileContent);
                                 for (BigDecimal fpValue : fpValues) {
                                     ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation = new ForecastPowerUltraShortTermStation();
                                     forecastPowerUltraShortTermStation.setStationCode(stationCode);
                                     forecastPowerUltraShortTermStation.setFpValue(fpValue);
+                                    forecastPowerUltraShortTermStation.setGenTime(genTime);
                                     forecastPowerUltraShortTermStation.setTime(time);
                                     forecastPowerUltraShortTermStation.setForecastHowLongAgo(calcHowLongAgo(forecastTime, time));
                                     forecastPowerUltraShortTermStation.setOpenCapacity(openCapacity);

+ 3 - 0
cpp-admin/src/main/java/com/cpp/web/service/datafactory/impl/ParsingDqServiceImpl.java

@@ -11,6 +11,7 @@ import com.cpp.web.mapper.datafactory.ParsingDqMapper;
 import com.cpp.web.service.datafactory.ParsingDqService;
 import com.cpp.web.service.datafactory.ParsingInterface;
 import com.cpp.web.service.station.ForecastPowerShortTermStationService;
+import com.cpp.web.utils.DateTimeUtil;
 import com.cpp.web.utils.ParsingFieldUtil;
 import com.cpp.web.utils.ParsingFileUtil;
 import com.cpp.web.utils.ParsingUtil;
@@ -73,6 +74,7 @@ public class ParsingDqServiceImpl extends ServiceImpl<ParsingDqMapper, ParsingDq
                 List<String> fileContent = ParsingFileUtil.getFileContent(file);
                 if (parsingDqInfo.getDataType().equals(ParsingFieldUtil.MULTI)) {//多行操作
                     Date forecastTime = parsingForecastTime(parsingDqInfo.getForecastTime(), fileContent);
+                    Date genDate = DateTimeUtil.getDayStartTime(forecastTime.getTime() - 86400000L);
                     Date time = forecastTime;
                     if (forecastTime != null) {//解析时间成功才可以进行以下操作
                         if (parsingDqInfo.getFpValue() != null) {
@@ -87,6 +89,7 @@ public class ParsingDqServiceImpl extends ServiceImpl<ParsingDqMapper, ParsingDq
                                     forecastPowerShortTermStation.setTime(time);
                                     forecastPowerShortTermStation.setForecastHowLongAgo(calcHowLongAgo(forecastTime, time));
                                     forecastPowerShortTermStation.setCapacity(capacity);
+                                    forecastPowerShortTermStation.setGenDate(genDate);
                                     forecastPowerShortTermStationList.add(forecastPowerShortTermStation);
                                     time = new Date(time.getTime() + 900000L);//递增15分钟
                                 }

+ 3 - 0
cpp-admin/src/main/java/com/cpp/web/service/datafactory/impl/ParsingNwpServiceImpl.java

@@ -11,6 +11,7 @@ import com.cpp.web.mapper.datafactory.ParsingNwpMapper;
 import com.cpp.web.service.datafactory.ParsingInterface;
 import com.cpp.web.service.datafactory.ParsingNwpService;
 import com.cpp.web.service.station.NwpStationService;
+import com.cpp.web.utils.DateTimeUtil;
 import com.cpp.web.utils.ParsingFieldUtil;
 import com.cpp.web.utils.ParsingFileUtil;
 import com.cpp.web.utils.ParsingUtil;
@@ -65,6 +66,7 @@ public class ParsingNwpServiceImpl extends ServiceImpl<ParsingNwpMapper, Parsing
                 List<String> fileContent = ParsingFileUtil.getFileContent(file);
                 if (parsingNwpInfo.getDataType().equals(ParsingFieldUtil.MULTI)) {
                     Date forecastTime = parsingTime(parsingNwpInfo.getTime(), fileContent);
+                    Date genDate = DateTimeUtil.getDayStartTime(forecastTime.getTime() - 86400000L);
                     Date time = forecastTime;
                     if (time != null) {
                         List<BigDecimal> ws10s = parsingNwpValue(parsingNwpInfo.getWs10(), fileContent);
@@ -94,6 +96,7 @@ public class ParsingNwpServiceImpl extends ServiceImpl<ParsingNwpMapper, Parsing
                         //以十米风速为基准
                         for (int i = 0; i < ws10s.size(); i++) {
                             NwpStation nwpStation = new NwpStation();
+                            nwpStation.setGenDate(genDate);
                             nwpStation.setTime(time);
                             nwpStation.setDirectRadiation(valueSet(directRadiations, i));
                             nwpStation.setDiffuseRadiation(valueSet(diffuseRadiations, i));

+ 5 - 0
cpp-admin/src/main/java/com/cpp/web/utils/ParsingFileUtil.java

@@ -397,6 +397,11 @@ public class ParsingFileUtil {
     }
 
 
+    public static String getOutDownload() {
+        return createUploadAllDir("outDownload");
+    }
+
+
     private static String createUploadAllDir(String dir) {
         String path = "";
         if (System.getProperties().getProperty("file.separator").equals("\\")) {

+ 2 - 2
cpp-ui/src/views/configManager/parsingConf/cftparsing.vue

@@ -136,10 +136,10 @@
                 <el-col :span="8">
                   <el-form-item prop="time" label-width="150px" class="formulaColor">
                     <span slot="label">
-                     <font color="red">*</font>预测时间公式
+                     <font color="red">*</font>时间公式
                     </span>
                     <el-input v-model="form.time" readonly
-                              @click.native="ftck(form.time,'form.time','(预测时间)')"></el-input>
+                              @click.native="ftck(form.time,'form.time','(时间)')"></el-input>
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">

+ 9 - 9
cpp-ui/src/views/configManager/parsingConf/fjparsing.vue

@@ -119,6 +119,15 @@
                               @click.native="ftck(form.equipmentName,'form.equipmentName','(设备名称)')"></el-input>
                   </el-form-item>
                 </el-col>
+                <el-col :span="8">
+                  <el-form-item prop="isSample" label-width="110px" class="formulaColor">
+                    <span slot="label">
+                      是否样板机公式
+                    </span>
+                    <el-input v-model="form.isSample" readonly
+                              @click.native="ftck(form.isSample,'form.isSample','(是否样板机)')"></el-input>
+                  </el-form-item>
+                </el-col>
               </el-row>
 <!--              <el-row>-->
 <!--                <el-col :span="24">-->
@@ -271,15 +280,6 @@
                               @click.native="ftck(form.pitchAngle,'form.pitchAngle','(桨距角)')"></el-input>
                   </el-form-item>
                 </el-col>
-                <el-col :span="8">
-                  <el-form-item prop="isSample" label-width="110px" class="formulaColor">
-                    <span slot="label">
-                      是否样板机公式
-                    </span>
-                    <el-input v-model="form.isSample" readonly
-                              @click.native="ftck(form.isSample,'form.isSample','(是否样板机)')"></el-input>
-                  </el-form-item>
-                </el-col>
               </el-row>
             </el-form>
             <div slot="footer" class="dialog-footer">

+ 34 - 33
cpp-ui/src/views/configManager/parsingConf/nwpparsing.vue

@@ -97,15 +97,7 @@
                     </el-select>
                   </el-form-item>
                 </el-col>
-                <el-col :span="8">
-                  <el-form-item prop="time" label-width="110px" class="formulaColor">
-                    <span slot="label">
-                      <font color="red">*</font>预测时间公式
-                    </span>
-                    <el-input v-model="form.time" readonly
-                              @click.native="ftck(form.time,'form.time','(预测时间)')"></el-input>
-                  </el-form-item>
-                </el-col>
+
               </el-row>
 <!--              <el-row>-->
 <!--                <el-col :span="24">-->
@@ -125,34 +117,14 @@
 <!--              </el-row>-->
               <el-row :gutter="16">
                 <el-col :span="8">
-                  <el-form-item prop="t" label-width="110px" class="formulaColor">
-                    <span slot="label">
-                     温度公式
-                    </span>
-                    <el-input v-model="form.t" readonly
-                              @click.native="ftck(form.t,'form.t','(温度)')"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item prop="rh" label-width="110px" class="formulaColor">
-                    <span slot="label">
-                      湿度公式
-                    </span>
-                    <el-input v-model="form.rh" readonly
-                              @click.native="ftck(form.rh,'form.rh','(湿度)')"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item prop="pressure" label-width="110px" class="formulaColor">
+                  <el-form-item prop="time" label-width="110px" class="formulaColor">
                     <span slot="label">
-                      气压公式
+                      <font color="red">*</font>预测时间公式
                     </span>
-                    <el-input v-model="form.pressure" readonly
-                              @click.native="ftck(form.pressure,'form.pressure','(气压)')"></el-input>
+                    <el-input v-model="form.time" readonly
+                              @click.native="ftck(form.time,'form.time','(预测时间)')"></el-input>
                   </el-form-item>
                 </el-col>
-              </el-row>
-              <el-row :gutter="16">
                 <el-col :span="8">
                   <el-form-item prop="globalRadiation" label-width="110px" class="formulaColor">
                     <span slot="label">
@@ -337,6 +309,35 @@
                   </el-form-item>
                 </el-col>
               </el-row>
+              <el-row :gutter="16">
+                <el-col :span="8">
+                  <el-form-item prop="t" label-width="110px" class="formulaColor">
+                    <span slot="label">
+                     温度公式
+                    </span>
+                    <el-input v-model="form.t" readonly
+                              @click.native="ftck(form.t,'form.t','(温度)')"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item prop="rh" label-width="110px" class="formulaColor">
+                    <span slot="label">
+                      湿度公式
+                    </span>
+                    <el-input v-model="form.rh" readonly
+                              @click.native="ftck(form.rh,'form.rh','(湿度)')"></el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item prop="pressure" label-width="110px" class="formulaColor">
+                    <span slot="label">
+                      气压公式
+                    </span>
+                    <el-input v-model="form.pressure" readonly
+                              @click.native="ftck(form.pressure,'form.pressure','(气压)')"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
             </el-form>
             <div slot="footer" class="dialog-footer">
               <el-button type="primary" @click="handleSave('form')">

+ 9 - 9
cpp-ui/src/views/configManager/parsingConf/rpparsing.vue

@@ -86,15 +86,6 @@
               <el-table-column prop="powerRationing" align="center" label="限电标记公式"></el-table-column>
               <el-row :gutter="16">
                 <el-col :span="12">
-                  <el-form-item prop="realValue" label-width="110px" class="formulaColor">
-                    <span slot="label">
-                      <font color="red">*</font>实际功率公式
-                    </span>
-                    <el-input v-model="form.realValue" readonly
-                              @click.native="ftck(form.realValue,'form.realValue','(实际功率数据)')"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="12">
                   <el-form-item prop="time" label-width="110px"
                                 class="formulaColor">
                     <span slot="label">
@@ -104,6 +95,15 @@
                               @click.native="ftck(form.time,'form.time','(时间)')"></el-input>
                   </el-form-item>
                 </el-col>
+                <el-col :span="12">
+                  <el-form-item prop="realValue" label-width="110px" class="formulaColor">
+                    <span slot="label">
+                      <font color="red">*</font>实际功率公式
+                    </span>
+                    <el-input v-model="form.realValue" readonly
+                              @click.native="ftck(form.realValue,'form.realValue','(实际功率数据)')"></el-input>
+                  </el-form-item>
+                </el-col>
               </el-row>
               <el-row :gutter="16">
                 <el-col :span="12">