浏览代码

11月6日BUG,以及首页部分功能展示

xusl 7 月之前
父节点
当前提交
73d40de044

+ 54 - 4
cpp-admin/src/main/java/com/cpp/web/controller/largeScreen/LargeScreenController.java

@@ -8,14 +8,15 @@ import com.cpp.common.core.domain.R;
 import com.cpp.common.core.domain.entity.SysDictData;
 import com.cpp.system.service.ISysConfigService;
 import com.cpp.system.service.ISysDictDataService;
+import com.cpp.web.domain.accuracy.AccuracyPassRate;
 import com.cpp.web.domain.cloud.NwpCloud;
+import com.cpp.web.domain.enums.DataSourcesEnum;
 import com.cpp.web.domain.powerGeneration.DayPowerGeneration;
+import com.cpp.web.domain.regulation.TempShortUsual;
 import com.cpp.web.domain.station.*;
 import com.cpp.web.domain.station.enums.ElectricFieldTypeEnum;
-import com.cpp.web.dto.largeScreen.ElectricFieldDataTotalDto;
-import com.cpp.web.dto.largeScreen.ForecastGeneratingDataDto;
-import com.cpp.web.dto.largeScreen.ForecastNwpDto;
-import com.cpp.web.dto.largeScreen.ProductionDataTotalDto;
+import com.cpp.web.dto.largeScreen.*;
+import com.cpp.web.service.accuracy.AccuracyPassRateService;
 import com.cpp.web.service.cloud.NwpCloudService;
 import com.cpp.web.service.powerGeneation.DayPowerGenerationService;
 import com.cpp.web.service.station.*;
@@ -66,6 +67,8 @@ public class LargeScreenController {
     ISysDictDataService iSysDictDataService;
     @Autowired
     NwpCloudService nwpCloudService;
+    @Autowired
+    AccuracyPassRateService accuracyPassRateService;
 
     @GetMapping("/getBizData")
     public R getBizData(String forecastDay,String forecastType) {
@@ -641,4 +644,51 @@ public class LargeScreenController {
 
         return curveMap;
     }
+
+    /**
+     * 首页准确率排名
+     * @return
+     */
+    private Map<String,List<AccuracyRankingDto>> accuracyRanking(String accuracyType){
+        Map<String,List<AccuracyRankingDto>> accuracyMap = new HashMap();
+        // 根据类型获取准确率数据
+        Date startTime = DateTimeUtil.getMonthStartTime(System.currentTimeMillis());
+        Date endTime = DateTimeUtil.getMonthLastTime(System.currentTimeMillis());
+        if ("day".equals(accuracyType)){
+            // 当日
+            startTime = DateTimeUtil.getDayStartTime(System.currentTimeMillis());
+            endTime = DateTimeUtil.getDayLastTime(System.currentTimeMillis());
+        }
+
+        String dqHowLongAgo = configService.selectConfigByKey("dqHowLongAgo");
+        QueryWrapper<AccuracyPassRate> accuracyPassRateQueryWrapper = new QueryWrapper<>();
+        accuracyPassRateQueryWrapper.eq("forecast_how_long_ago", dqHowLongAgo);
+        accuracyPassRateQueryWrapper.eq("data_sources", DataSourcesEnum.E4.name());
+        accuracyPassRateQueryWrapper.between("time", startTime,endTime);
+        List<AccuracyPassRate> accuracyPassRateList = accuracyPassRateService.list(accuracyPassRateQueryWrapper);
+        // 按场站编号分组
+        Map<String, List<AccuracyPassRate>> groupByStationCode = accuracyPassRateList.stream().collect(Collectors.groupingBy(AccuracyPassRate::getStationCode));
+
+
+
+
+
+
+        List<ElectricField> list = electricFieldService.list();
+        List<String> windStationCodeList = new ArrayList<>();
+        List<String> gfStationCodeList = new ArrayList<>();
+        for (ElectricField electricField:list){
+            if (electricField.getElectricFieldTypeEnum().equals("E1")){
+                gfStationCodeList.add(electricField.getStationCode());
+            }
+            else{
+                windStationCodeList.add(electricField.getStationCode());
+            }
+        }
+//        stationMap.put("gf",gfStationCodeList);
+//        stationMap.put("wind",windStationCodeList);
+        Map<String,List> forecastWeatherAvgDataMap = new HashMap<>();
+
+        return null;
+    }
 }

+ 11 - 3
cpp-admin/src/main/java/com/cpp/web/controller/regulation/DqRegulationController.java

@@ -101,12 +101,20 @@ public class DqRegulationController {
 
             List<AccuracyPassRate> accuracyPassRateList = accuracyPassRateService.findByTimeBetweenAndForecastTypeAndDataSourcesAndAgoAndForecastModelAndStationCode(DateTimeUtil.getDayStartTime(accuracyStartDate.getTime()), DateTimeUtil.getDayLastTime(accuracyEndDate.getTime()), ForecastTypeEnum.dq, DataSourcesEnum.E4, howLongAgo, null, stationCode);
             double accuracySum = 0;
+            int counts = 0;
             if (accuracyPassRateList.size()>0){
                 for (AccuracyPassRate accuracyPassRate:accuracyPassRateList){
-                    accuracySum = accuracySum + Double.parseDouble(accuracyPassRate.getAccuracy().replaceAll("%", ""));
+                    if (!accuracyPassRate.getAccuracy().isEmpty()){
+                        accuracySum = accuracySum + Double.parseDouble(accuracyPassRate.getAccuracy().replaceAll("%", ""));
+                        counts++;
+                    }
+
                 }
-                // 计算获取偏差率
-                accuracySum = 100 - accuracySum / accuracyPassRateList.size();
+                if (counts>0){
+                    // 计算获取偏差率
+                    accuracySum = 100 - accuracySum / counts;
+                }
+
             }
             // 获取调控数据
             QueryWrapper<TempShortRegulationDetail> tempShortRegulationDetailQueryWrapper = new QueryWrapper<>();

+ 4 - 2
cpp-admin/src/main/java/com/cpp/web/controller/stationDataQuery/PowerStationStatusDataController.java

@@ -66,8 +66,10 @@ public class PowerStationStatusDataController {
     @GetMapping("/getCompositeData")
     public R getCompositeData(String stationCode,
                                        Long startTime,
-                                       Long endTime) {
-        return R.ok(powerStationStatusDataService.getCompositeData(stationCode, startTime, endTime));
+                                       Long endTime,
+                              String dqForecastHowLongAgo,
+                              String cdqForecastHowLongAgo) {
+        return R.ok(powerStationStatusDataService.getCompositeData(stationCode, startTime, endTime,Integer.parseInt(dqForecastHowLongAgo),Integer.parseInt(cdqForecastHowLongAgo)));
     }
 
 

+ 21 - 0
cpp-admin/src/main/java/com/cpp/web/dto/largeScreen/AccuracyRankingDto.java

@@ -0,0 +1,21 @@
+package com.cpp.web.dto.largeScreen;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 首页准确率排名DTO
+ *
+ * @author jy
+ * @since 2024/11/11
+ */
+@Data
+public class AccuracyRankingDto {
+    // 名称
+    private String name;
+    // 排名
+    private String sort;
+    // 准确率
+    private BigDecimal accuracy;
+}

+ 1 - 1
cpp-admin/src/main/java/com/cpp/web/service/station/PowerStationStatusDataService.java

@@ -28,7 +28,7 @@ public interface PowerStationStatusDataService extends IService<PowerStationStat
 
     List<ArrayList<String>> timeStamp(Date startTime, Date endTime) throws ParseException;
 
-    Map<String, Object> getCompositeData(String stationCode, Long startTime, Long endTime);
+    Map<String, Object> getCompositeData(String stationCode, Long startTime, Long endTime,int dqForecastHowLongAgo,int cdqForecastHowLongAgo);
     Map<String, List> getCenterData(Date startTime, Date endTime);
 
     List<PowerStationStatusData> findByTimeBetweenAndStationCode(Date pointStarTime, Date pointEndTime, String stationCode);

+ 5 - 7
cpp-admin/src/main/java/com/cpp/web/service/station/impl/PowerStationStatusDataServiceImpl.java

@@ -97,7 +97,7 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         return sdf.format(date);
     }
 
-    public Map<String, Object> getCompositeData(String stationCode, Long startTime, Long endTime) {
+    public Map<String, Object> getCompositeData(String stationCode, Long startTime, Long endTime,int dqForecastHowLongAgo,int cdqForecastHowLongAgo) {
         ElectricField electricField = electricFieldService.findByStationCode(stationCode);
         String stationType = electricField.getElectricFieldTypeEnum();
 
@@ -190,9 +190,8 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         }
         // 获取短期原始曲线
         Map<Long, ForecastPowerShortTermStation> dqysMap = new HashMap<>();
-        String dqHowLongAgo = configService.selectConfigByKey("dqHowLongAgo");
         QueryWrapper dqysWrapper = new QueryWrapper<>();
-        dqysWrapper.eq("forecast_how_long_ago", Integer.parseInt(dqHowLongAgo));
+        dqysWrapper.eq("forecast_how_long_ago", dqForecastHowLongAgo);
         dqysWrapper.eq("station_code", stationCode);
         dqysWrapper.between("time", new Date(startTime), new Date(endTime));
         List<ForecastPowerShortTermStation> forecastPowerShortTermStationList = forecastPowerShortTermStationService.list(dqysWrapper);
@@ -201,9 +200,8 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         }
         // 获取超短期上报曲线
         Map<Long, ForecastPowerUltraShortTermRegulation> cdqysMap = new HashMap<>();
-        String cdqHowLongAgo = configService.selectConfigByKey("cdqHowLongAgo");
         QueryWrapper cdqysWrapper = new QueryWrapper<>();
-        cdqysWrapper.eq("forecast_how_long_ago", Integer.parseInt(cdqHowLongAgo));
+        cdqysWrapper.eq("forecast_how_long_ago", cdqForecastHowLongAgo);
         cdqysWrapper.eq("station_code", stationCode);
         cdqysWrapper.between("time", new Date(startTime), new Date(endTime));
         List<ForecastPowerUltraShortTermRegulation> forecastPowerUltraShortTermRegulationList = forecastPowerUltraShortTermRegulationService.list(cdqysWrapper);
@@ -213,7 +211,7 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         // 获取短期上报曲线
         Map<Long, ForecastPowerShortTermRegulation> dqsbMap = new HashMap<>();
         QueryWrapper dqsbWrapper = new QueryWrapper<>();
-        dqsbWrapper.eq("forecast_how_long_ago", Integer.parseInt(dqHowLongAgo));
+        dqsbWrapper.eq("forecast_how_long_ago", dqForecastHowLongAgo);
         dqsbWrapper.eq("station_code", stationCode);
         dqsbWrapper.between("time", new Date(startTime), new Date(endTime));
         List<ForecastPowerShortTermRegulation> forecastPowerShortTermRegulationList = forecastPowerShortTermRegulationService.list(dqsbWrapper);
@@ -223,7 +221,7 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         // 获取短期调控下发的中心曲线
         Map<Long, ForecastPowerShortTermSend> dqzxMap = new HashMap<>();
         QueryWrapper dqzxWrapper = new QueryWrapper<>();
-        dqzxWrapper.eq("forecast_how_long_ago", Integer.parseInt(dqHowLongAgo));
+        dqzxWrapper.eq("forecast_how_long_ago", dqForecastHowLongAgo);
         dqzxWrapper.eq("station_code", stationCode);
         dqzxWrapper.between("time", new Date(startTime), new Date(endTime));
         List<ForecastPowerShortTermSend> forecastPowerShortTermSendList = forecastPowerShortTermSendService.list(dqzxWrapper);

+ 26 - 0
cpp-admin/src/main/java/com/cpp/web/utils/DateTimeUtil.java

@@ -127,6 +127,22 @@ public class DateTimeUtil {
         date.set(Calendar.MILLISECOND, 0);
         return date.getTime();
     }
+    /**
+     * 获取指定时间所在当月第一天的0点0分
+     *
+     * @param dateTime 时间毫秒
+     * @return 0点0分的毫秒
+     */
+    public static Date getMonthStartTime(@NotNull final Long dateTime) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(dateTime);
+        calendar.set(Calendar.DAY_OF_MONTH, 1); // 设置为当月第一天
+        calendar.set(Calendar.HOUR_OF_DAY, 0); // 设置0点
+        calendar.set(Calendar.MINUTE, 0); // 设置0分
+        calendar.set(Calendar.SECOND, 0); // 设置0秒
+        calendar.set(Calendar.MILLISECOND, 0); // 设置0毫秒
+        return calendar.getTime();
+    }
 
     /**
      * 今日凌晨 毫秒
@@ -156,6 +172,16 @@ public class DateTimeUtil {
         return date.getTime();
     }
 
+    public static Date getMonthLastTime(@NotNull final Long dateTime) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(dateTime);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.SECOND, 59);
+        calendar.set(Calendar.MILLISECOND, 999);
+        return calendar.getTime();
+    }
     /**
      * 获取两个时间间的间隔天数(自然天)
      *

+ 30 - 7
cpp-ui/src/views/largeScreen/components/right-top.vue

@@ -65,13 +65,15 @@ export default {
 
   data() {
     return {
+      dayTableData:[],
+      monthTableData:[],
       tableData: [
-        {sort: 1, name: '新疆光伏电站', accuracy: '99.8%'},
-        {sort: 2, name: '新疆光伏电站', accuracy: '97.8%'},
-        {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
-        {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
-        {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'},
-        {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'}
+        // {sort: 1, name: '新疆光伏电站', accuracy: '99.8%'},
+        // {sort: 2, name: '新疆光伏电站', accuracy: '97.8%'},
+        // {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
+        // {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
+        // {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'},
+        // {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'}
       ],
       type: 'day',
       animateUp: false,
@@ -85,7 +87,20 @@ export default {
     params: {
       // immediate: true,// 第一次立即监听
       handler(value) {
-        this.tableData = value
+        this.dayTableData = value.dayTableData
+        this.monthTableData = value.monthTableData
+
+        if(sessionStorage.getItem('screen-accuracy-type')){
+          if (sessionStorage.getItem('screen-accuracy-type').includes('day')){
+            this.tableData = this.dayTableData
+          }
+          else{
+            this.tableData = this.monthTableData
+          }
+        }else{
+          this.tableData = this.dayTableData
+        }
+        // this.tableData = value
       }
     }
   },
@@ -115,6 +130,14 @@ export default {
       activeItem.classList.add('btu-no-checked')
       clickItem.classList.remove('btu-no-checked')
       clickItem.classList.add('btu-checked')
+
+      if (sessionStorage.getItem('screen-accuracy-type')=='day'){
+        this.tableData = this.dayTableData
+      }
+      else{
+        this.tableData = this.monthTableData
+      }
+
     },
     scrollAnimate (stop) {
       if (stop) {

+ 15 - 15
cpp-ui/src/views/largeScreen/index.vue

@@ -506,7 +506,7 @@ export default {
       expireTime: new Date().getTime(),
       leftMiddleParams: {}, //生产数据模块值
       rightBottomParams: {}, // 未来10天预测电量
-      rightTopParams: [], // 准确率排名
+      rightTopParams: {}, // 准确率排名
       centerBottomParams: {},//功率曲线
       rightMiddleParams: {},//气象预测
       leftBottomParams: {}//短期偏差统计
@@ -580,6 +580,7 @@ export default {
       let queryParams = {
         "forecastDay": forecastDay,
         "forecastType": forecastType,
+        "forecastType": forecastType,
       }
 
       await this.$axios({url: '/largeScreenController/getBizData', method: 'get',params: queryParams}).then(response => {
@@ -599,14 +600,9 @@ export default {
           theoryPowerSum: productionDataTotalDto.theoryPowerSum,
         }
         this.rightBottomParams = response.data.forecastGeneratingMap
+        // 气象预测
         this.rightMiddleParams = response.data.forecastNwpMap
-
-        // this.digitalDisk[0].num = this.formatNumber(sumMap.realSum) + ''
-        // this.digitalDisk[1].num = this.formatNumber(sumMap.ableSum) + ''
-        // this.digitalDisk[2].num = this.formatNumber(sumMap.theorySum) + ''
-        // this.digitalDisk[3].num = this.formatNumber(sumMap.cdqSum) + ''
-        // this.digitalDisk[4].num = this.formatNumber(sumMap.dqSum) + ''
-        // 曲线图
+        // 功率曲线图
         let curveMap = response.data.curveMap
         this.centerBottomParams = {
           realList: curveMap.realList,
@@ -616,6 +612,10 @@ export default {
           dqList: curveMap.dqList,
           timeList: curveMap.timeList,
         }
+        // 准确率排名
+        this.rightTopParams = response.data.accuracyMap
+
+
 
         // 限电信息
         let xdMap = response.data.xdMap
@@ -637,13 +637,13 @@ export default {
         xData: [],
         pData: []
       }
-      this.rightTopParams = [
-        {sort: 1, name: '新疆光伏电站', accuracy: '99.8%'},
-        {sort: 2, name: '新疆光伏电站', accuracy: '97.8%'},
-        {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
-        {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
-        {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'},
-        {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'}]
+      // this.rightTopParams = [
+      //   {sort: 1, name: '新疆光伏电站', accuracy: '99.8%'},
+      //   {sort: 2, name: '新疆光伏电站', accuracy: '97.8%'},
+      //   {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
+      //   {sort: 3, name: '新疆光伏电站', accuracy: '96.8%'},
+      //   {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'},
+      //   {sort: 4, name: '新疆光伏电站', accuracy: '95.8%'}]
       this.leftBottomParams = {
         boxplotData: [
           [-8.09, -3.11, -2.11, 0.21, 5.19],

+ 0 - 4
cpp-ui/src/views/regulation/dqHistoryContrast/index.vue

@@ -147,8 +147,6 @@ export default {
         xAxis: [
           {
             type: 'category',
-            boundaryGap: false,
-            axisLine: {onZero: false},
             splitLine: {show: true, lineStyle: {color: '#cbcbcb'}, interval: 95},
             axisLabel: {
               formatter: function (value) {
@@ -159,8 +157,6 @@ export default {
           },
           {
             type: 'category',
-            boundaryGap: false,
-            axisLine: {onZero: false},
             position: 'top',
             axisLabel: {
               padding: [0, 0, 0, 110],

+ 41 - 44
cpp-ui/src/views/regulation/dqRegulation/index.vue

@@ -44,50 +44,50 @@
 
         <div class="divTable">
           <el-table
-            :data="tableData"
-            :loading="loading"
-            size="mini" height="60vh"
-            style="width: 100%;">
+              :data="tableData"
+              :loading="loading"
+              size="mini" height="60vh"
+              style="width: 100%;">
             <el-table-column
-              prop="time"
-              header-align="center"
-              align="center"
-              label="时间" fixed min-width="50px"
+                prop="time"
+                header-align="center"
+                align="center"
+                label="时间" fixed min-width="50px"
             >
             </el-table-column>
             <el-table-column
-              prop="xs"
-              header-align="center"
-              align="center"
-              label="系数" min-width="50px">
+                prop="xs"
+                header-align="center"
+                align="center"
+                label="系数" min-width="50px">
               <template slot-scope="scope">
                 <vxe-input type="number" v-model="scope.row.xs" size="small" style="width:100%" min="0"
                            placeholder="" @change="setValueByManual(scope.row,scope.$index)"></vxe-input>
               </template>
             </el-table-column>
             <el-table-column
-              prop="sz"
-              header-align="center"
-              align="center"
-              label="数值" min-width="50px">
+                prop="sz"
+                header-align="center"
+                align="center"
+                label="数值" min-width="50px">
               <template slot-scope="scope">
                 <vxe-input type="number" v-model="scope.row.sz" size="small" style="width:100%"
                            placeholder="" @change="setValueByManual(scope.row,scope.$index)"></vxe-input>
               </template>
             </el-table-column>
             <el-table-column
-              prop="ysValue"
-              header-align="center"
-              align="center"
-              label="原始值" min-width="60px">
+                prop="ysValue"
+                header-align="center"
+                align="center"
+                label="原始值" min-width="60px">
             </el-table-column>
             <el-table-column
-              prop="tkValue"
-              header-align="center"
-              align="center"
-              label="调控值"
-              :max="capacity"
-              :min="0" min-width="60px"
+                prop="tkValue"
+                header-align="center"
+                align="center"
+                label="调控值"
+                :max="capacity"
+                :min="0" min-width="60px"
             >
             </el-table-column>
           </el-table>
@@ -281,7 +281,7 @@ export default {
   name: 'inverterinfo',
   data() {
     return {
-      showDeleteButton:true,
+      showDeleteButton: true,
       dqEndTime: '',
       markLineData: new Array(),
       visualMapPieces: new Array(),
@@ -305,7 +305,7 @@ export default {
       },
       expireDateOption: {
         disabledDate(time) {
-          return (time.getTime() > Date.now() + 8.64e7 *10) ||  (time.getTime() < Date.now())
+          return (time.getTime() > Date.now() + 8.64e7 * 10) || (time.getTime() < Date.now())
         }
       },
       loading: false,
@@ -404,12 +404,13 @@ export default {
           connectNulls: true,
           lineStyle: {
             normal: {
+              color: 'rgb(0,136,212)',
               width: 2
             }
           },
           itemStyle: {
             normal: {
-              color: 'rgb(219,50,51)',
+              color: 'rgb(0,136,212)',
               borderWidth: 12
             }
           },
@@ -426,13 +427,13 @@ export default {
             connectNulls: true,
             lineStyle: {
               normal: {
-                color: 'rgb(0,136,212)',
+                color: 'rgb(219,50,51)',
                 width: 2
               }
             },
             itemStyle: {
               normal: {
-                color: 'rgb(0,136,212)',
+                color: 'rgb(219,50,51)',
                 borderWidth: 50
               }
             },
@@ -502,7 +503,7 @@ export default {
   computed: {},
   methods: {
     // 中心侧预测模型选择
-    changeForecastModel(dictValue){
+    changeForecastModel(dictValue) {
       const item = this.forecastModelList.find(item => item.dictValue == dictValue)
       let dictLabel = item ? item.dictLabel : ''
       this.currentStrategy = dictLabel
@@ -531,8 +532,7 @@ export default {
         this.modelId = ''
         // 中心模型下拉框不可用
         this.modelDisabled = true
-      }
-      else if (radioValue == '2') {
+      } else if (radioValue == '2') {
         // 显示删除按钮
         this.showDeleteButton = true
         this.vradio = '2'
@@ -541,8 +541,7 @@ export default {
         this.modelId = ''
         // 中心模型下拉框不可用
         this.modelDisabled = true
-      }
-      else if (radioValue == '3') {
+      } else if (radioValue == '3') {
         // 隐藏删除按钮
         this.showDeleteButton = false
         this.vradio = '3'
@@ -616,11 +615,10 @@ export default {
         return
       }
       await this.executeTrial()
-      if (this.trialData.length==0){
+      if (this.trialData.length == 0) {
         this.$message.warning("此策略无数据,不能一键应用!")
         return
-      }
-      else{
+      } else {
         // 将列表数据赋值给底层列表
         this.tableData = this.trialData
         // 将预算的调控曲线赋值给底层曲线上
@@ -648,8 +646,8 @@ export default {
       this.vradio = '1'
       this.usualDisabled = true
       this.modelDisabled = true
-      this.usualId=''
-      this.modelId=''
+      this.usualId = ''
+      this.modelId = ''
       document.getElementById("currentSelectFunction").style.display = 'none'
     },
     renderUsual() {
@@ -738,8 +736,8 @@ export default {
         this.$message.warning("调控列表为空,不能调控!")
         return
       }
-      for (let i=0; i<this.tableData.length;i++){
-        if (this.tableData[i].tkValue>this.capacity){
+      for (let i = 0; i < this.tableData.length; i++) {
+        if (this.tableData[i].tkValue > this.capacity) {
           this.$message.warning("列表中调控值存在超装机容量现象,不能调控!")
           return
         }
@@ -824,7 +822,6 @@ export default {
         this.refDownData = response.data.refDownData
         this.tkData = response.data.tkDataList
         this.draData()
-
         this.loading = false
       }).catch(() => {
         this.tableData = []

+ 4 - 3
cpp-ui/src/views/regulation/dqRegulationRecord/index.vue

@@ -265,12 +265,13 @@ export default {
           connectNulls: true,
           lineStyle: {
             normal: {
+              color: 'rgb(0,136,212)',
               width: 2
             }
           },
           itemStyle: {
             normal: {
-              color: 'rgb(219,50,51)',
+              color: 'rgb(0,136,212)',
               borderWidth: 12
             }
           },
@@ -286,13 +287,13 @@ export default {
             connectNulls: true,
             lineStyle: {
               normal: {
-                color: 'rgb(0,136,212)',
+                color: 'rgb(219,50,51)',
                 width: 2
               }
             },
             itemStyle: {
               normal: {
-                color: 'rgb(0,136,212)',
+                color: 'rgb(219,50,51)',
                 borderWidth: 50
               }
             },

+ 40 - 1
cpp-ui/src/views/stationDataQuery/historyforecastdata/index.vue

@@ -24,6 +24,26 @@
             </el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="短期预测D+">
+          <el-select v-model="dqForecastHowLongAgo" placeholder="请选择" popper-class="cpp-popper">
+            <el-option
+                v-for="item in this.dqPoints()"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="超短期预测M+">
+          <el-select v-model="cdqForecastHowLongAgo" placeholder="请选择" popper-class="cpp-popper">
+            <el-option
+                v-for="item in this.cdqPoints()"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item>
           <el-button type="primary" style="margin-left: 5px" icon="el-icon-search" @click="dataQuery">查询
           </el-button>
@@ -83,6 +103,22 @@ export default {
   name: 'inverterinfo',
   data() {
     return {
+      cdqPoints() {
+        let points = []
+        for (let i = 1; i < 17; i++) {
+          points.push({label: i + "", value: i})
+        }
+        return points
+      },
+      cdqForecastHowLongAgo: 8,
+      dqPoints() {
+        let points = []
+        for (let i = 1; i < 11; i++) {
+          points.push({label: i + "", value: i})
+        }
+        return points
+      },
+      dqForecastHowLongAgo: 1,
       fromHead: [],
       zhChart: null,
       wdChart: null,
@@ -100,7 +136,7 @@ export default {
       // 日期使用
       pickerOptions: {
         disabledDate: (time) => {
-          return time.getTime() > new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1;
+          return time.getTime() >  new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 *11 - 1
         }
       },
       modId: '',//备用id
@@ -748,6 +784,9 @@ export default {
         "stationCode": this.stationCode,
         "startTime": startTime,
         "endTime": endTime,
+        "dqForecastHowLongAgo": this.dqForecastHowLongAgo,
+        "cdqForecastHowLongAgo": this.cdqForecastHowLongAgo,
+
       }
 
       this.loading = true

+ 30 - 27
cpp-ui/src/views/stationDataQuery/inverterstatusdata/index.vue

@@ -60,8 +60,8 @@
         <vxe-table-column field="equipmentId" title="设备名称" :formatter="nameFormat"></vxe-table-column>
         <vxe-table-column field="time" title="时间" width="150" :formatter="timeFormat"></vxe-table-column>
         <vxe-table-column field="status" title="状态" :formatter="statusFormat"></vxe-table-column>
-        <vxe-table-column field="activePower" title="有功(KW)"></vxe-table-column>
-        <vxe-table-column field="reactivePower" title="无功(KVar)"></vxe-table-column>
+        <vxe-table-column field="activePower" title="有功(kW)"></vxe-table-column>
+        <vxe-table-column field="reactivePower" title="无功(kVar)"></vxe-table-column>
         <vxe-table-column field="voltage" title="电压(V)"></vxe-table-column>
         <vxe-table-column field="electricalCurrent" title="电流(A)"></vxe-table-column>
         <vxe-table-column field="dayElectricQuantity" title="当日发电量(kW·h)"></vxe-table-column>
@@ -108,31 +108,26 @@ export default {
       },
     }
   },
-  created() {
-    // 获取所有逆变器名称(列表转义应用)
-    this.$axios.get('/inverterinfo/findAll').then((res) => {
-      this.nameList = res.data
-      if (res.data.length > 0) {
-        // 默认选中前5个逆变器
-        let count = 0
-        for (let i = 0; i < res.data.length; i++) {
-          if (count <= 4) {
-            this.equipmentId.push(res.data[i].value)
-            count++
-          }
-        }
-      }
-    }).catch((error) => {
-      this.$message.error('获取逆变器转义名称出错' + error)
-    })
-
+  async created() {
+    await this.getAllInverterInfo()
+    // 获取场站下拉列表
+    await this.getStationCode()
+    await this.stationChange()
+    await this.dataQuery()
   },
   mounted() {
-    // 获取场站下拉列表
-    this.getStationCode()
+
   },
   computed: {},
   methods: {
+    async getAllInverterInfo() {
+      // 获取所有逆变器名称(列表转义应用)
+      await this.$axios.get('/inverterinfo/findAll').then((res) => {
+        this.nameList = res.data
+      }).catch((error) => {
+        this.$message.error('获取逆变器转义名称出错' + error)
+      })
+    },
     selectCount(value){
       if (value.length > 5) {
         this.$message.warning('最多只能选择5台逆变器设备!');
@@ -181,13 +176,23 @@ export default {
       this.pageSize = 10
       this.dataQuery()
     },
-    stationChange() {
+    async stationChange() {
       const param = {
         "stationCode": this.stationCode,
       }
       // 获取场站下风机设备
-      this.$axios.get('/inverterinfo/findByStationCode', {params: param}).then((res) => {
+      await this.$axios.get('/inverterinfo/findByStationCode', {params: param}).then((res) => {
         this.equipmentOptions = res.data
+        if (res.data.length > 0) {
+          // 默认选中前5个逆变器
+          let count = 0
+          for (let i = 0; i < res.data.length; i++) {
+            if (count <= 4) {
+              this.equipmentId.push(res.data[i].value)
+              count++
+            }
+          }
+        }
       }).catch((error) => {
         this.$message.error('获取逆变器设备出错' + error)
       })
@@ -219,7 +224,7 @@ export default {
       this.pageSize = pageSize
       this.dataQuery();
     },
-    dataQuery() {
+    async dataQuery() {
       if (this.equipmentId.length == 0) {
         this.$message.error("请选择逆变器设备查询")
         return
@@ -260,8 +265,6 @@ export default {
         this.stationList = response.data
         if (this.stationList.length > 0) {
           this.stationCode = this.stationList[0].value
-          this.stationChange()
-          this.dataQuery()
         }
       })
     },

+ 1 - 1
cpp-ui/src/views/stationDataQuery/weatherstationstatusdata/index.vue

@@ -303,7 +303,7 @@ export default {
         }],
         yAxis: [{
           type: 'value',
-          name: '瓦/平方米',
+          name: 'W/㎡',
           axisTick: {
             show: false
           },

+ 29 - 26
cpp-ui/src/views/stationDataQuery/windturbinestatusdata/index.vue

@@ -59,8 +59,8 @@
         <vxe-table-column field="equipmentId" title="设备名称" :formatter="nameFormat"></vxe-table-column>
         <vxe-table-column field="time" title="时间" width="150" :formatter="timeFormat"></vxe-table-column>
         <vxe-table-column field="status" title="状态" :formatter="statusFormat"></vxe-table-column>
-        <vxe-table-column field="activePower" title="有功(KW)"></vxe-table-column>
-        <vxe-table-column field="reactivePower" title="无功(KVar)"></vxe-table-column>
+        <vxe-table-column field="activePower" title="有功(kW)"></vxe-table-column>
+        <vxe-table-column field="reactivePower" title="无功(kVar)"></vxe-table-column>
         <vxe-table-column field="voltage" title="电压(V)"></vxe-table-column>
         <vxe-table-column field="electricalCurrent" title="电流(A)"></vxe-table-column>
         <vxe-table-column field="windWheelRatedSpeed" title="转速(rpm)"></vxe-table-column>
@@ -109,31 +109,26 @@ export default {
       },
     }
   },
-  created() {
-    // 获取所有风机名称
-    this.$axios.get('/windturbineinfo/findAll').then((res) => {
-      this.nameList = res.data
-      if (res.data.length > 0) {
-        // 默认选中前5个风机
-        let count = 0
-        for (let i = 0; i < res.data.length; i++) {
-          if (count <= 4) {
-            this.equipmentId.push(res.data[i].value)
-            count++
-          }
-        }
-      }
-      // 获取场站下拉列表
-      this.getStationCode()
-    }).catch((error) => {
-      this.$message.error('获取风机转义名称出错' + error)
-    })
+  async created() {
+    await this.getAllWindturbineInfo()
+    // 获取场站下拉列表
+    await this.getStationCode()
+    await this.stationChange()
+    await this.dataQuery()
   },
   mounted() {
 
   },
   computed: {},
   methods: {
+    async getAllWindturbineInfo() {
+      // 获取所有逆变器名称(列表转义应用)
+      await this.$axios.get('/windturbineinfo/findAll').then((res) => {
+        this.nameList = res.data
+      }).catch((error) => {
+        this.$message.error('获取风机转义名称出错' + error)
+      })
+    },
     selectCount(value){
       if (value.length > 5) {
         this.$message.warning('最多只能选择5台风机设备!');
@@ -182,13 +177,23 @@ export default {
       this.pageSize = 10
       this.dataQuery()
     },
-    stationChange() {
+    async stationChange() {
       const param = {
         "stationCode": this.stationCode,
       }
       // 获取场站下风机设备
-      this.$axios.get('/windturbineinfo/findByStationCode', {params: param}).then((res) => {
+      await this.$axios.get('/windturbineinfo/findByStationCode', {params: param}).then((res) => {
         this.equipmentOptions = res.data
+        if (res.data.length > 0) {
+          // 默认选中前5个逆变器
+          let count = 0
+          for (let i = 0; i < res.data.length; i++) {
+            if (count <= 4) {
+              this.equipmentId.push(res.data[i].value)
+              count++
+            }
+          }
+        }
       }).catch((error) => {
         this.$message.error('获取风机设备出错' + error)
       })
@@ -220,7 +225,7 @@ export default {
       this.pageSize = pageSize
       this.dataQuery();
     },
-    dataQuery() {
+    async dataQuery() {
       if (this.equipmentId.length == 0) {
         this.$message.error("请选择风机设备查询")
         return
@@ -260,8 +265,6 @@ export default {
         this.stationList = response.data
         if (this.stationList.length > 0) {
           this.stationCode = this.stationList[0].value
-          this.stationChange()
-          this.dataQuery()
         }
       })
     },