xusl 1 yıl önce
ebeveyn
işleme
551f0ea223

+ 9 - 9
ipfcst/ipfcst-reportquery/src/main/frontend/layout/components/Sidebar/index.vue

@@ -89,11 +89,11 @@
 
 
         this.$axios.get('/electricField/').then((res) => {
         this.$axios.get('/electricField/').then((res) => {
           this.electricField = res.data;
           this.electricField = res.data;
-          var sign = 'windPower';
-
-          if (this.electricField.electricFieldTypeEnum == 'E2') {
-            sign = 'photovoltaic';
-          }
+          // var sign = 'windPower';
+          //
+          // if (this.electricField.electricFieldTypeEnum == 'E2') {
+          //   sign = 'photovoltaic';
+          // }
           for (var i = 0; i < routes.length; i++) {
           for (var i = 0; i < routes.length; i++) {
 
 
             if (routes[i].children != undefined) {
             if (routes[i].children != undefined) {
@@ -107,13 +107,13 @@
                   continue;
                   continue;
                 }
                 }
 
 
-                if (routeChildren[p].sign != sign) {
+                // if (routeChildren[p].sign != sign) {
                   routesR.push(routeChildren[p]);
                   routesR.push(routeChildren[p]);
                   // 如果不是甘肃(E62),去掉子菜单名称是accuracyPassRateDay(准确率日统计查询)
                   // 如果不是甘肃(E62),去掉子菜单名称是accuracyPassRateDay(准确率日统计查询)
                   if(this.electricField.provinceEnum != 'E62' && routeChildren[p].name == "accuracyPassRateDay"){
                   if(this.electricField.provinceEnum != 'E62' && routeChildren[p].name == "accuracyPassRateDay"){
                     routesR.pop();
                     routesR.pop();
                   }
                   }
-                }
+                // }
               }
               }
 
 
               if (routesR.length > 0) {
               if (routesR.length > 0) {
@@ -123,9 +123,9 @@
               }
               }
             } else {
             } else {
 
 
-              if (routes[i].sign != 'photovoltaic') {
+              // if (routes[i].sign != 'photovoltaic') {
                 routesResult.push(routes[i]);
                 routesResult.push(routes[i]);
-              }
+              // }
 
 
             }
             }
           }
           }

+ 10 - 2
ipfcst/ipfcst-reportquery/src/main/frontend/router/modules/contrastQuery.js

@@ -13,12 +13,20 @@ const contrastQueryRouter = {
   },
   },
   children: [
   children: [
     {
     {
-      path: 'comprehensiveQuery',
+      path: 'comprehensiveQueryg',
       component: () => import('@/views/contrastQuery/comprehensiveQuery'),
       component: () => import('@/views/contrastQuery/comprehensiveQuery'),
+      name: 'comprehensiveQueryg',
+      meta: { title: '光伏上报数据查询', noCache: true },
+      sign: 'currency'
+    },
+    {
+      path: 'comprehensiveQuery',
+      component: () => import('@/views/contrastQueryOne/comprehensiveQuery'),
       name: 'comprehensiveQuery',
       name: 'comprehensiveQuery',
-      meta: { title: '上报数据查询', noCache: true },
+      meta: { title: '风电上报数据查询', noCache: true },
       sign: 'currency'
       sign: 'currency'
     },
     },
+
     // {
     // {
     //   path: 'forecastPowerUltraShortTermHis',
     //   path: 'forecastPowerUltraShortTermHis',
     //   component: () => import('@/views/historicalQuery/forecastPowerUltraShortTermHis'),
     //   component: () => import('@/views/historicalQuery/forecastPowerUltraShortTermHis'),

+ 1 - 0
ipfcst/ipfcst-reportquery/src/main/frontend/views/contrastQuery/comprehensiveQuery/index.vue

@@ -408,6 +408,7 @@
       getElectricField(){
       getElectricField(){
         this.$axios.get('/electricField/').then((res) => {
         this.$axios.get('/electricField/').then((res) => {
           this.electricField = res.data
           this.electricField = res.data
+          this.electricField.electricFieldTypeEnum = 'E1'
           this.getEquipments(this.electricField.electricFieldTypeEnum)
           this.getEquipments(this.electricField.electricFieldTypeEnum)
         }).catch((error) => {
         }).catch((error) => {
           this.$message.error('查询场站信息出错' + error)
           this.$message.error('查询场站信息出错' + error)

+ 1478 - 0
ipfcst/ipfcst-reportquery/src/main/frontend/views/contrastQueryOne/comprehensiveQuery/charts/index.vue

@@ -0,0 +1,1478 @@
+<template>
+  <div style="width: 100%;height: 100%">
+    <div id="fpcharts"></div>
+  </div>
+</template>
+
+<script>
+import resize from '../../../../components/Charts/mixins/resize'
+import echarts from 'echarts'
+import cc from '../../../curvecolors'
+
+export default {
+  mixins: [resize],
+  watch: {
+    drawData: {
+      handler(newValue, oldValue) {
+        this.draw(newValue)
+
+      },
+      deep: true
+    },
+    resizeKey: function (newQuestion, oldQuestion) {
+      if (this.chart != null) {
+        this.chart.resize();
+      }
+
+    }
+  },
+  props: {
+    drawData: {
+      type: Object,
+    },
+    resizeKey: {
+      type: Number
+    }
+  },
+  data() {
+    return {
+      lineColor: '',
+      chart: null,
+    }
+  },
+  mounted() {
+    if(sessionStorage.getItem('styleSwitch') === 'blue'){
+      this.lineColor = 'white'
+    }else{
+      this.lineColor = '#3b3b3b'
+    }
+  },
+  // beforeDestroy() {
+  //   if (!this.chart) {
+  //     alert(11)
+  //     return
+  //   }
+  //   alert(22)
+  //   this.chart.dispose()
+  //   this.chart = null
+  // },
+  methods: {
+
+    draw(newValue) {
+      var minValue = 0
+      this.chart = echarts.init(document.getElementById('fpcharts'))
+      var option = {
+        backgroundColor: 'transparent',
+        title: {
+          top: 20,
+          text: '对比数据查询',
+          textStyle: {
+            fontWeight: 'normal',
+            fontSize: 16,
+            color: this.lineColor
+          },
+          left: '1%'
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        },
+        legend: {
+          top: 20,
+          icon: 'rect',
+          itemWidth: 14,
+          itemHeight: 5,
+          itemGap: 13,
+          data: [],
+          right: '4%',
+          textStyle: {
+            fontSize: 12,
+            color: this.lineColor
+          }
+        },
+        dataZoom: [{
+          show: true,
+          realtime: true,
+          start: 0,
+          end: 100,
+          left: "15%",
+          right: "15%",
+          textStyle: {
+            color: this.lineColor
+          }
+        }, {
+          type: 'inside'
+        }],
+        grid: {
+          top: 100,
+          left: '2%',
+          right: '2%',
+          bottom: '10%',
+          containLabel: true
+        },
+        xAxis: [{
+          type: 'category',
+          boundaryGap: false,
+          axisLine: {
+            lineStyle: {
+              color: this.lineColor
+            }
+          },
+          data: newValue.times
+        }],
+        yAxis: [{
+          type: 'value',
+          name: '(MW)',
+          max: newValue.electricField.capacity,
+          min: 0,
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: this.lineColor
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        }],
+        series: []
+      }
+
+      if (newValue.electricField.electricFieldTypeEnum == "E1") {
+        option.yAxis.push({
+          type: 'value',
+          name: '(W/㎡)',
+          min: 0,
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: '#ffe599'
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#57617B'
+            }
+          }
+        })
+      } else {
+        option.yAxis.push({
+          type: 'value',
+          name: '(m/s)',
+          min: 0,
+          axisTick: {
+            show: false
+          },
+          axisLine: {
+            lineStyle: {
+              color: '#fff2cc'
+            }
+          },
+          axisLabel: {
+            margin: 10,
+            textStyle: {
+              fontSize: 14
+            }
+          },
+          splitLine: {
+            lineStyle: {
+              color: '#666633'
+            }
+          }
+        })
+      }
+
+
+      if (newValue.realValue.length > 0) {
+        option.series.push({
+          name: '实际功率',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.sj,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.realValue
+        })
+        option.legend.data.push('实际功率')
+      }
+
+
+      if (newValue.ableValue.length > 0) {
+        option.series.push({
+          name: '可用功率',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.kygl,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ableValue
+        })
+        option.legend.data.push('可用功率')
+      }
+
+
+      if (newValue.theoryValue.length > 0) {
+
+        option.series.push({
+          name: '理论功率',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.llgl,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.theoryValue
+        })
+        option.legend.data.push('理论功率')
+      }
+
+      if (newValue.referencePowerBySample != undefined && newValue.referencePowerBySample.length > 0) {
+
+        option.series.push({
+          name: '参照功率(样板机)',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.cfgf,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.referencePowerBySample
+        })
+        option.legend.data.push('参照功率(样板机)')
+      }
+
+      if (newValue.referencePowerByMeasuring != undefined && newValue.referencePowerByMeasuring.length > 0) {
+
+        option.series.push({
+          name: '参照功率(测风、测光)',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.cfgf,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.referencePowerByMeasuring
+        })
+        option.legend.data.push('参照功率(测风、测光)')
+      }
+
+      if (newValue.dq.length > 0) {
+        option.series.push({
+          name: '上报短期',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.dq,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.dq
+        })
+        option.legend.data.push('上报短期')
+      }
+
+      if (newValue.cdq.length > 0) {
+
+        option.series.push({
+          name: '上报超短期',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.cdq,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.cdq
+        })
+        option.legend.data.push('上报超短期')
+      }
+
+      if (newValue.globalR.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '总辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.zfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.globalR
+        })
+        option.legend.data.push('总辐射')
+      }
+      if (newValue.diffuseR.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '散辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.sfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.diffuseR
+        })
+        option.legend.data.push('散辐射')
+      }
+      if (newValue.obliqueR.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '斜辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.xfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.obliqueR
+        })
+        option.legend.data.push('斜辐射')
+      }
+      if (newValue.directR.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '直辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.zfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.directR
+        })
+        option.legend.data.push('直辐射')
+      }
+      if (newValue.wsInst10.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '10米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws10,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst10
+        })
+        option.legend.data.push('10米风速')
+      }
+      if (newValue.wsInst30.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '30米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws30,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst30
+        })
+        option.legend.data.push('30米风速')
+      }
+      if (newValue.wsInst50.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '50米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws50,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst50
+        })
+        option.legend.data.push('50米风速')
+      }
+      if (newValue.wsInst60.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '60米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws60,
+              borderColor: 'rgba(64,94,94,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst60
+        })
+        option.legend.data.push('60米风速')
+      }
+      if (newValue.wsInst70.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '70米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws70,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst70
+        })
+        option.legend.data.push('70米风速')
+      }
+      if (newValue.wsInst80.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '80米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws80,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst80
+        })
+        option.legend.data.push('80米风速')
+      }
+      if (newValue.wsInst90.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '90米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws90,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst90
+        })
+        option.legend.data.push('90米风速')
+      }
+      if (newValue.wsInst100.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '100米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws100,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst100
+        })
+        option.legend.data.push('100米风速')
+      }
+      if (newValue.wsInst110.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '110米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws110,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst110
+        })
+        option.legend.data.push('110米风速')
+      }
+      if (newValue.wsInst120.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: '120米风速',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.ws120,
+              borderColor: 'rgba(201,209,210,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.wsInst120
+        })
+        option.legend.data.push('120米风速')
+      }
+      if (newValue.ws10.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws10,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp10,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws10
+        })
+        option.legend.data.push(newValue.columns.ws10)
+      }
+      if (newValue.ws30.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws30,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp30,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws30
+        })
+        option.legend.data.push(newValue.columns.ws30)
+      }
+      if (newValue.ws50.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws50,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp50,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws50
+        })
+        option.legend.data.push(newValue.columns.ws50)
+      }
+      if (newValue.ws70.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws70,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp70,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws70
+        })
+        option.legend.data.push(newValue.columns.ws70)
+      }
+      if (newValue.ws80.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws80,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp80,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws80
+        })
+        option.legend.data.push(newValue.columns.ws80)
+      }
+      if (newValue.ws90.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws90,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp90,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws90
+        })
+        option.legend.data.push(newValue.columns.ws90)
+      }
+      if (newValue.ws100.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws100,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp100,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws100
+        })
+        option.legend.data.push(newValue.columns.ws100)
+      }
+      if (newValue.ws170.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: newValue.columns.ws170,
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwp170,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.ws170
+        })
+        option.legend.data.push(newValue.columns.ws170)
+      }
+
+
+      if (newValue.swr.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: 'nwp辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwpfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.swr
+        })
+        option.legend.data.push('nwp辐射')
+      }
+
+      if (newValue.directRadiation.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: 'nwp直辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwpzhfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.directRadiation
+        })
+        option.legend.data.push('nwp直辐射')
+      }
+      if (newValue.diffuseRadiation.length > 0) {
+        option.series.push({
+          yAxisIndex: 1,
+          name: 'nwp散辐射',
+          type: 'line',
+          smooth: true,
+          symbol: 'circle',
+          symbolSize: 5,
+          showSymbol: false,
+          lineStyle: {
+            normal: {
+              width: 2
+            }
+          },
+          // areaStyle: {
+          //   normal: {
+          //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+          //       offset: 0,
+          //       color: 'rgba(50,194,219, 0.3)'
+          //     }, {
+          //       offset: 0.8,
+          //       color: 'rgba(219, 50, 51, 0)'
+          //     }], false),
+          //       shadowColor: 'rgba(0, 0, 0, 0.1)',
+          //       shadowBlur: 10
+          //   }
+          // },
+          itemStyle: {
+            normal: {
+
+              color: cc.nwpsfs,
+              borderColor: 'rgba(50,194,219,0.2)',
+              borderwidth: 22
+            }
+          },
+          data: newValue.diffuseRadiation
+        })
+        option.legend.data.push('nwp散辐射')
+      }
+
+
+      this.chart.setOption(option, true)
+    },
+
+  }
+}
+</script>
+<style scoped>
+#fpcharts {
+  width: 100%;
+  height: calc(80vh - 50px);
+}
+</style>

+ 1342 - 0
ipfcst/ipfcst-reportquery/src/main/frontend/views/contrastQueryOne/comprehensiveQuery/index.vue

@@ -0,0 +1,1342 @@
+<template>
+  <div class="chart-container">
+    <div class="filter">
+      <div class="startTime">
+        <span class="timeText">起始时间</span>
+        <el-date-picker
+          v-model="startTime"
+          :clearable="false"
+          type="datetime"
+          value-format="timestamp"
+          placeholder="选择日期">
+        </el-date-picker>
+      </div>
+      <div class="endTime">
+        <span class="timeText">截止时间</span>
+        <el-date-picker
+          v-model="endTime"
+          :clearable="false"
+          type="datetime"
+          value-format="timestamp"
+          placeholder="选择日期">
+        </el-date-picker>
+      </div>
+      <div>
+        <span class="timeText">设备编号</span>
+        <el-select v-model="equipmentId"   placeholder="请选择">
+          <el-option
+            v-for="item in equipments"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </div>
+      <div>
+        <span class="timeText">间隔时间</span>
+        <el-select v-model="jgTime"   placeholder="请选择" @change="changeJgTime">
+          <el-option
+            v-for="item in jgTimes"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </div>
+      <div class="timeQuery">
+        <el-button  size="small" :loading="loading"  @click="dateQuery">查询</el-button>
+      </div>
+      <div class="toolbar" v-show="this.showToolBar"> <vxe-toolbar ref="fstToolBar" custom >
+        <template v-slot:buttons>
+          <vxe-button class="downloadButton" style="border:none;"  @click="exportDataEvent"><i class="vxe-icon--download" ></i></vxe-button>
+        </template>
+      </vxe-toolbar></div>
+      <div class="toolbar" v-show="this.showToolBar"> <vxe-toolbar ref="nwpToolBar" custom></vxe-toolbar></div>
+
+
+      <div class="timeQuery">
+        <el-button  size="small" :loading="loading"  @click="dialogVisible = true">显示设置</el-button>
+      </div>
+      <div class="timeQuery">
+        <el-button  size="small" :loading="loading"  @click="dialogVisiblePoint = true">点位设置</el-button>
+      </div>
+<!--      <div class="toolbar" v-show="this.showToolBar"> <vxe-toolbar ref="nwpToolBar" custom export></vxe-toolbar></div>-->
+    </div>
+
+    <el-dialog
+      title="请选择点位"
+      :visible.sync="dialogVisiblePoint"
+      :before-close="this.cancelDisplayPoint"
+      width="18%">
+        <div class="inputNum">
+          <span class="timeText">上报超短期:</span>
+          <el-select v-model="cdqAgo"   placeholder="请选择">
+            <el-option
+              v-for="item in cdqOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="inputNum">
+          <span class="timeText">上报短期:</span>
+          <el-select v-model="dqAgo"   placeholder="请选择">
+            <el-option
+              v-for="item in dqOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="inputNum">
+          <span class="timeText">nwp:</span>
+          <el-select v-model="nwpAgo"   placeholder="请选择">
+            <el-option
+              v-for="item in nwpOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="this.cancelDisplayPoint" style="color: #1f2d3d">取 消</el-button>
+    <el-button type="primary" style="color: #1f2d3d" @click="this.changeDisplayPoint">确 定</el-button>
+  </span>
+    </el-dialog>
+
+
+    <el-dialog
+      title="选择数据类型"
+      :visible.sync="dialogVisible"
+      :before-close="this.cancelDisplay"
+      width="50%">
+      <div class="drag-box-item">
+        <div class="item-title">隐藏</div>
+
+        <draggable class="list-group" :list="listh" group="people" @change="log">
+          <transition-group id="done" tag="div" class="item-ul">
+          <div
+            v-for="(element, index) in listh"
+            :key="element.value"
+            class="drag-list"
+          >
+            {{ element.key }}
+          </div>
+          </transition-group>
+        </draggable>
+
+      </div>
+      <div class="drag-box-item">
+        <div class="item-title">展示</div>
+
+        <draggable class="list-group" :list="lists" group="people" @change="log">
+          <transition-group id="wdtodo" tag="div" class="item-ul">
+          <div
+            v-for="(element, index) in lists"
+            :key="element.value"
+            class="drag-list"
+          >
+            {{ element.key }}
+          </div>
+          </transition-group>
+        </draggable>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="this.initShow" style="color: #3d1f25">初始化</el-button>
+    <el-button @click="this.cancelDisplay" style="color: #1f2d3d">取 消</el-button>
+    <el-button type="primary" style="color: #1f2d3d" @click="this.changeDisplay">确 定</el-button>
+  </span>
+    </el-dialog>
+
+    <div class="content">
+      <el-tabs type="card" v-model="activeName" @tab-click="Byresize">
+        <el-tab-pane label="图表" name="first">
+          <chart :drawData = this.drawData :resizeKey=this.resizeKey  />
+        </el-tab-pane>
+        <el-tab-pane label="表格" name="second">
+          <div class="tableContent">
+            <vxe-grid
+            id="nwpTable"
+            ref="nwpRef"
+            border
+            :loading="loading"
+            export-config
+            :custom-config="{storage: true, checkMethod: checkColumnMethod}"
+            :auto-resize="true"
+            highlight-hover-row
+            :header-cell-style="styleStr"
+            max-height="90%"
+            :cell-style="styleTableStr"
+            align="center"
+            :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
+            :columns="tableColumn"
+            />
+            <div class="rtPageturning">
+              <vxe-pager
+                background
+                :loading="loading"
+                :current-page="currentPage"
+                :page-size="pageSize"
+                :total="tableData.length"
+                @page-change="handlePageChange"
+                :layouts="['PrevJump', 'PrevPage', 'JumpNumber', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']">
+              </vxe-pager>
+            </div>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+
+<script>
+  import Chart from './charts'
+  import resize from '../../../components/Charts/mixins/resize'
+  import moment from "moment";
+  import draggable from 'vuedraggable'
+  export default {
+    name: 'cq',
+    components: { Chart,draggable},
+    mixins: [resize],
+    data(){
+      return{
+        styleStr:{},
+        styleTableStr:{},
+        selectTime:new Date(),
+        columns:{},
+        dqAgo:"1",
+        cdqAgo:"1",
+        nwpAgo:"1",
+        chart: null,
+        queryStartTime:'',
+        queryEndTime:'',
+        startTime:new Date(new Date().toLocaleDateString()).getTime(),
+        endTime:new Date(new Date().toLocaleDateString()).getTime() + 60 * 60 * 24 * 1000-1,
+        loading:true,
+        drawLoading:true,
+        tableLoading:true,
+        resizeKey:1,
+        activeName: 'first',
+        drawData:{},
+        tableData:[],
+        total:0,
+        sortOrder:'asc',
+        pageSize: 10,
+        currentPage: 1,
+        showToolBar:false,
+        dialogVisible: false,
+        dialogVisiblePoint: false,
+        equipments:"",
+        equipmentId:"",
+        electricField:{},
+        displayCode:'comprehensiveContrast',
+        displayConfig:{
+          id:"",
+          displayCode:"comprehensiveContrast",
+          showCode:"",
+          hiddenCode:""
+        },
+        displayPointConfig:{
+          id:"",
+          displayCode:"comprehensivePoint",
+          showCode:"",
+          hiddenCode:""
+        },
+        displayConfigJgTime:{
+          id:"",
+          displayCode:"timeInterval",
+          showCode:"",
+          hiddenCode:""
+        },
+        displayConfigPageSize:{
+          id:"",
+          displayCode:"pageSize",
+          showCode:"",
+          hiddenCode:""
+        },
+        listh: [],
+        lists: [],
+        listhquery: [],
+        listsquery: [],
+        tableColumn:[],
+        dqOptions:[
+          {label: "预测前一天",value:"1"},
+          {label: "预测前两天",value:"2"},
+          {label: "预测前三天",value:"3"}
+        ],
+        cdqOptions:[
+          {label: "预测前第一点",value:"1"},
+          {label: "预测前第二点",value:"2"},
+          {label: "预测前第三点",value:"3"},
+          {label: "预测前第四点",value:"4"},
+          {label: "预测前第五点",value:"5"},
+          {label: "预测前第六点",value:"6"},
+          {label: "预测前第七点",value:"7"},
+          {label: "预测前第八点",value:"8"},
+          {label: "预测前第九点",value:"9"},
+          {label: "预测前第十点",value:"10"},
+          {label: "预测前第十一点",value:"11"},
+          {label: "预测前第十二点",value:"12"},
+          {label: "预测前第十三点",value:"13"},
+          {label: "预测前第十四点",value:"14"},
+          {label: "预测前第十五点",value:"15"},
+          {label: "预测前第十六点",value:"16"},
+        ],
+        nwpOptions:[
+          {label: "预测前一天",value:"1"},
+          {label: "预测前两天",value:"2"},
+          {label: "预测前三天",value:"3"}
+        ],
+        jgTime:3600000,
+        jgTimes:[
+          {label: "15分钟",value:900000},
+          {label: "1小时",value:3600000}
+        ]
+      }
+    },
+    created () {
+      if(sessionStorage.getItem('styleSwitch') === 'blue'){
+        this.styleStr = {background:'black',color:'white',border:'white'}
+        this.styleTableStr = {background:'black',color:'white'}
+      }
+      document.body.ondrop = function(event) {
+        event.preventDefault();
+        event.stopPropagation();
+      };
+      this.$nextTick(() => {
+        // 手动将表格和工具栏进行关联
+        this.$refs.nwpRef.connect(this.$refs.nwpToolBar)
+      })
+    },
+    mounted() {
+      this.getJgTimeAndPageSize()
+      this.init()
+
+    },
+    methods:{
+      initShow(){
+        this.dialogVisible = false
+
+        this.$XModal.confirm('您确定要初始化?').then(type => {
+
+          if (type === 'confirm') {
+            this.$axios.delete("displayConfig/deleteById/"+this.displayConfig.id).then(res =>{
+              if(res.code == 0 ){
+                this.$message.success("执行成功!")
+                location.reload()
+              }
+            })
+          }
+        })
+      },
+      exportDataEvent() {
+        this.loading = true
+        this.$axios.get('comprehensiveContrastExport/'+this.startTime+'/'+this.endTime+'/'+this.equipmentId+'/'+this.electricField.electricFieldTypeEnum+'/'+this.dqAgo+'/'+this.cdqAgo+'/'+this.nwpAgo+'/'+this.jgTime, {
+          responseType: 'blob'// 用于解决中文乱码
+        }).then((response) => {
+          this.loading = false
+        }).catch((error) => {
+          this.loading = false
+          this.$message.error('导出失败' + error)
+        })
+      },
+      init(){
+        this.$axios.get("/comprehensiveContrast/getSpeedColumn").then(res =>{
+          this.columns = res.data
+        })
+        this.queryStartTime = this.startTime
+        this.queryEndTime = this.endTime
+        this.loading = true
+        this.getElectricField()
+        this.getSelects()
+        // this.getTable()
+
+      },
+      changeJgTime(){
+        this.displayConfigJgTime.showCode = this.jgTime
+        this.$axios.post('displayConfig/',this.displayConfigJgTime).then((res) => {
+          this.displayConfigJgTime = res.data
+          // this.$message.success('间隔时间设置成功' )
+          this.dialogVisible = false
+          this.getDraw(this.startTime,this.endTime)
+        }).catch((error) => {
+          this.$message.error('间隔时间设置出错' + error)
+        })
+      },
+      changePageSize(pageSize){
+        this.displayConfigPageSize.showCode = pageSize
+        this.$axios.post('displayConfig/',this.displayConfigPageSize).then((res) => {
+          this.displayConfigPageSize = res.data
+          // this.$message.success('PageSize设置成功' )
+          this.dialogVisible = false
+        }).catch((error) => {
+          this.$message.error('PageSize设置出错' + error)
+        })
+      },
+      getJgTimeAndPageSize(){
+        this.$axios.get('displayConfig/timeInterval').then((res) => {
+          this.displayConfigJgTime = res.data
+          this.jgTime = parseInt(this.displayConfigJgTime.showCode)
+          // this.$message.success('间隔时间获取成功' )
+          this.dialogVisible = false
+        }).catch((error) => {
+          this.$message.error('间隔时间获取出错' + error)
+        })
+        this.$axios.get('displayConfig/pageSize').then((res) => {
+          this.displayConfigPageSize = res.data
+          this.pageSize = parseInt(this.displayConfigPageSize.showCode)
+          // this.$message.success('PageSize获取成功' )
+          this.dialogVisible = false
+        }).catch((error) => {
+          this.$message.error('PageSize获取出错' + error)
+        })
+      },
+      getSelects(){
+        this.$axios.get("/comprehensiveContrast/getSelects").then(res =>{
+          this.dqOptions = res.data.forecast
+          this.cdqOptions = res.data.cdq
+          this.nwpOptions = res.data.nwp
+        }).catch((error) => {
+          this.$message.error('PageSize获取出错' + error)
+        })
+        // this.getTable()
+
+      },
+      getElectricField(){
+        this.$axios.get('/electricField/').then((res) => {
+          this.electricField = res.data
+          this.electricField.electricFieldTypeEnum = 'E2'
+          this.getEquipments(this.electricField.electricFieldTypeEnum)
+        }).catch((error) => {
+          this.$message.error('查询场站信息出错' + error)
+        })
+      },
+      getEquipments(eType){
+        var url = '/weatherStationInfos'
+        this.displayConfig.displayCode = "weatherStationInfos"
+        //枚举类型E1光伏  E2风电
+        if(eType == 'E2'){
+          url = '/windTowerInfos'
+          this.displayConfig.displayCode = 'windTowerInfos'
+        }
+        this.$axios.get(url).then((res) => {
+          this.equipments = res.data
+          if (res.data != null && res.data.length > 0) {
+            this.equipmentId = this.equipments[0].id
+            this.getDisplay()
+          }else {
+            this.$message.warning("设备信息未维护")
+          }
+        }).catch((error) => {
+          this.$message.error('查询设备信息出错' + error)
+        })
+      },
+      initDisplay(){
+        // this.lists = []
+        // this.listsquery = []
+        if(this.electricField.electricFieldTypeEnum == 'E1'){
+          this.lists.push({key:'总辐射(W/㎡)(W/㎡)',value:'globalR'})
+          this.listh.push({key:'直辐射(W/㎡)',value:'directR'})
+          this.listh.push({key:'散辐射(W/㎡)',value:'diffuseR'})
+          this.listh.push({key:'斜辐射(W/㎡)',value:'obliqueR'})
+
+          this.lists.push({key:'nwp辐射(W/㎡)',value:'swr'})
+          this.listh.push({key:'nwp直辐射(W/㎡)',value:'directRadiation'})
+          this.listh.push({key:'nwp散辐射(W/㎡)',value:'diffuseRadiation'})
+
+          this.lists.push({key:'实际功率(MW)',value:'realValue'})
+          // this.listh.push({key:'可用功率',value:'ableValue'})
+          // this.listh.push({key:'理论功率',value:'theoryValue'})
+          this.lists.push({key:'上报短期(MW)',value:'dq'})
+          this.lists.push({key:'上报超短期(MW)',value:'cdq'})
+
+          this.listsquery.push({key:'总辐射(W/㎡)',value:'globalR'})
+          this.listhquery.push({key:'直辐射(W/㎡)',value:'directR'})
+          this.listhquery.push({key:'散辐射(W/㎡)',value:'diffuseR'})
+          this.listhquery.push({key:'斜辐射(W/㎡)',value:'obliqueR'})
+
+          this.listsquery.push({key:'nwp辐射(W/㎡)',value:'swr'})
+          this.listhquery.push({key:'nwp直辐射(W/㎡)',value:'directRadiation'})
+          this.listhquery.push({key:'nwp散辐射(W/㎡)',value:'diffuseRadiation'})
+
+          this.listsquery.push({key:'实际功率(MW)',value:'realValue'})
+          // this.listhquery.push({key:'可用功率',value:'ableValue'})
+          // this.listhquery.push({key:'理论功率',value:'theoryValue'})
+          this.listsquery.push({key:'上报短期(MW)',value:'dq'})
+          this.listsquery.push({key:'上报超短期(MW)',value:'cdq'})
+
+          this.changeDisplay()
+        }else{
+          this.lists.push({key:'实际功率(MW)',value:'realValue'})
+          // this.listh.push({key:'理论功率',value:'theoryValue'})
+          this.lists.push({key:'上报短期(MW)',value:'dq'})
+          this.lists.push({key:'上报超短期(MW)',value:'cdq'})
+
+          this.lists.push({key:'10米风速(m/s)',value:'wsInst10'})
+          this.listh.push({key:'30米风速(m/s)',value:'wsInst30'})
+          this.listh.push({key:'50米风速(m/s)',value:'wsInst50'})
+          this.listh.push({key:'60米风速(m/s)',value:'wsInst60'})
+          this.listh.push({key:'70米风速(m/s)',value:'wsInst70'})
+          this.listh.push({key:'80米风速(m/s)',value:'wsInst80'})
+          this.listh.push({key:'90米风速(m/s)',value:'wsInst90'})
+          this.listh.push({key:'100米风速(m/s)',value:'wsInst100'})
+          this.listh.push({key:'110米风速(m/s)',value:'wsInst110'})
+          this.listh.push({key:'120米风速(m/s)',value:'wsInst120'})
+
+          this.lists.push({key:this.columns.ws10,value:'ws10'})
+          this.listh.push({key:this.columns.ws30,value:'ws30'})
+          this.listh.push({key:this.columns.ws50,value:'ws50'})
+          this.listh.push({key:this.columns.ws70,value:'ws70'})
+          this.listh.push({key:this.columns.ws80,value:'ws80'})
+          this.listh.push({key:this.columns.ws90,value:'ws90'})
+          this.listh.push({key:this.columns.ws100,value:'ws100'})
+          this.listh.push({key:this.columns.ws170,value:'ws170'})
+
+          // this.listhquery.push({key:'可用功率',value:'ableValue'})
+          // this.listhquery.push({key:'理论功率',value:'theoryValue'})
+          this.listsquery.push({key:'实际功率(MW)',value:'realValue'})
+          this.listsquery.push({key:'上报短期(MW)',value:'dq'})
+          this.listsquery.push({key:'上报超短期(MW)',value:'cdq'})
+
+          this.listsquery.push({key:'10米风速(m/s)',value:'wsInst10'})
+          this.listhquery.push({key:'30米风速(m/s)',value:'wsInst30'})
+          this.listhquery.push({key:'50米风速(m/s)',value:'wsInst50'})
+          this.listhquery.push({key:'60米风速(m/s)',value:'wsInst60'})
+          this.listhquery.push({key:'70米风速(m/s)',value:'wsInst70'})
+          this.listhquery.push({key:'80米风速(m/s)',value:'wsInst80'})
+          this.listhquery.push({key:'90米风速(m/s)',value:'wsInst90'})
+          this.listhquery.push({key:'100米风速(m/s)',value:'wsInst100'})
+          this.listhquery.push({key:'110米风速(m/s)',value:'wsInst110'})
+          this.listhquery.push({key:'120米风速(m/s)',value:'wsInst120'})
+
+          this.listsquery.push({key:this.columns.ws10,value:'ws10'})
+          this.listhquery.push({key:this.columns.ws30,value:'ws30'})
+          this.listhquery.push({key:this.columns.ws50,value:'ws50'})
+          this.listhquery.push({key:this.columns.ws70,value:'ws70'})
+          this.listhquery.push({key:this.columns.ws80,value:'ws80'})
+          this.listhquery.push({key:this.columns.ws90,value:'ws90'})
+          this.listhquery.push({key:this.columns.ws100,value:'ws100'})
+          this.listhquery.push({key:this.columns.ws170,value:'ws170'})
+
+          this.changeDisplay()
+        }
+      },
+      getDisplay(){
+        this.$axios.get('displayConfig/'+this.displayConfig.displayCode).then((res) => {
+          if(res.data == null||res.data.code == 0){
+            this.initDisplay()
+          }else{
+            this.displayConfig = res.data
+            var showlist = this.displayConfig.showCode.split(',')
+            var hiddenlist = this.displayConfig.hiddenCode.split(',')
+            for(var i =0;i<showlist.length;i++){
+              switch (showlist[i]) {
+                case 'globalR':
+                  this.lists.push({key:'总辐射(W/㎡)',value:'globalR'})
+                  this.listsquery.push({key:'总辐射(W/㎡)',value:'globalR'})
+                      break;
+                case 'directR':
+                  this.lists.push({key:'直辐射(W/㎡)',value:'directR'})
+                  this.listsquery.push({key:'直辐射(W/㎡)',value:'directR'})
+                  break;
+                case 'diffuseR':
+                  this.lists.push({key:'散辐射(W/㎡)',value:'diffuseR'})
+                  this.listsquery.push({key:'散辐射(W/㎡)',value:'diffuseR'})
+                  break;
+                case 'obliqueR':
+                  this.lists.push({key:'斜辐射(W/㎡)',value:'obliqueR'})
+                  this.listsquery.push({key:'斜辐射(W/㎡)',value:'obliqueR'})
+                  break;
+                case 'wsInst10':
+                  this.lists.push({key:'10米风速(m/s)',value:'wsInst10'})
+                  this.listsquery.push({key:'10米风速(m/s)',value:'wsInst10'})
+                  break;
+                case 'wsInst30':
+                  this.lists.push({key:'30米风速(m/s)',value:'wsInst30'})
+                  this.listsquery.push({key:'30米风速(m/s)',value:'wsInst30'})
+                  break;
+                case 'wsInst50':
+                  this.lists.push({key:'50米风速(m/s)',value:'wsInst50'})
+                  this.listsquery.push({key:'50米风速(m/s)',value:'wsInst50'})
+                  break;
+                case 'wsInst60':
+                  this.lists.push({key:'60米风速(m/s)',value:'wsInst60'})
+                  this.listsquery.push({key:'60米风速(m/s)',value:'wsInst60'})
+                  break;
+                case 'wsInst70':
+                  this.lists.push({key:'70米风速(m/s)',value:'wsInst70'})
+                  this.listsquery.push({key:'70米风速(m/s)',value:'wsInst70'})
+                  break;
+                case 'wsInst80':
+                  this.lists.push({key:'80米风速(m/s)',value:'wsInst80'})
+                  this.listsquery.push({key:'80米风速(m/s)',value:'wsInst80'})
+                  break;
+                case 'wsInst90':
+                  this.lists.push({key:'90米风速(m/s)',value:'wsInst90'})
+                  this.listsquery.push({key:'90米风速(m/s)',value:'wsInst90'})
+                  break;
+                case 'wsInst100':
+                  this.lists.push({key:'100米风速(m/s)',value:'wsInst100'})
+                  this.listsquery.push({key:'100米风速(m/s)',value:'wsInst100'})
+                  break;
+                case 'wsInst110':
+                  this.lists.push({key:'110米风速(m/s)',value:'wsInst110'})
+                  this.listsquery.push({key:'110米风速(m/s)',value:'wsInst110'})
+                  break;
+                case 'wsInst120':
+                  this.lists.push({key:'120米风速(m/s)',value:'wsInst120'})
+                  this.listsquery.push({key:'120米风速(m/s)',value:'wsInst120'})
+                  break;
+                case 'ws10':
+                  this.lists.push({key:this.columns.ws10,value:'ws10'})
+                  this.listsquery.push({key:this.columns.ws10,value:'ws10'})
+                  break;
+                case 'ws30':
+                  this.lists.push({key:this.columns.ws30,value:'ws30'})
+                  this.listsquery.push({key:this.columns.ws30,value:'ws30'})
+                  break;
+                case 'ws50':
+                  this.lists.push({key:this.columns.ws50,value:'ws50'})
+                  this.listsquery.push({key:this.columns.ws50,value:'ws50'})
+                  break;
+                case 'ws70':
+                  this.lists.push({key:this.columns.ws70,value:'ws70'})
+                  this.listsquery.push({key:this.columns.ws70,value:'ws70'})
+                  break;
+                case 'ws80':
+                  this.lists.push({key:this.columns.ws80,value:'ws80'})
+                  this.listsquery.push({key:this.columns.ws80,value:'ws80'})
+                  break;
+                case 'ws90':
+                  this.lists.push({key:this.columns.ws90,value:'ws90'})
+                  this.listsquery.push({key:this.columns.ws90,value:'ws90'})
+                  break;
+                case 'ws100':
+                  this.lists.push({key:this.columns.ws100,value:'ws100'})
+                  this.listsquery.push({key:this.columns.ws100,value:'ws100'})
+                  break;
+                case 'ws170':
+                  this.lists.push({key:this.columns.ws170,value:'ws170'})
+                  this.listsquery.push({key:this.columns.ws170,value:'ws170'})
+                  break;
+                case 'swr':
+                  this.lists.push({key:'nwp辐射(W/㎡)',value:'swr'})
+                  this.listsquery.push({key:'nwp辐射(W/㎡)',value:'swr'})
+                  break;
+                case 'directRadiation':
+                  this.lists.push({key:'nwp直辐射(W/㎡)',value:'directRadiation'})
+                  this.listsquery.push({key:'nwp直辐射(W/㎡)',value:'directRadiation'})
+                  break;
+                case 'diffuseRadiation':
+                  this.lists.push({key:'nwp散辐射(W/㎡)',value:'diffuseRadiation'})
+                  this.listsquery.push({key:'nwp散辐射(W/㎡)',value:'diffuseRadiation'})
+                  break;
+                // case 'ableValue':
+                //   this.lists.push({key:'可用功率',value:'ableValue'})
+                //   this.listsquery.push({key:'可用功率',value:'ableValue'})
+                //   break;
+                // case 'theoryValue':
+                //   this.lists.push({key:'理论功率',value:'theoryValue'})
+                //   this.listsquery.push({key:'理论功率',value:'theoryValue'})
+                //   break;
+                case 'realValue':
+                  this.lists.push({key:'实际功率(MW)',value:'realValue'})
+                  this.listsquery.push({key:'实际功率(MW)',value:'realValue'})
+                  break;
+                case 'dq':
+                  this.lists.push({key:'上报短期(MW)',value:'dq'})
+                  this.listsquery.push({key:'上报短期(MW)',value:'dq'})
+                  break;
+                case 'cdq':
+                  this.lists.push({key:'上报超短期(MW)',value:'cdq'})
+                  this.listsquery.push({key:'上报超短期(MW)',value:'cdq'})
+                  break;
+
+              }
+            }
+            for(var i =0;i<hiddenlist.length;i++){
+              switch (hiddenlist[i]) {
+                case 'globalR':
+                  this.listh.push({key:'总辐射(W/㎡)',value:'globalR'})
+                  this.listhquery.push({key:'总辐射(W/㎡)',value:'globalR'})
+                  break;
+                case 'directR':
+                  this.listh.push({key:'直辐射(W/㎡)',value:'directR'})
+                  this.listhquery.push({key:'直辐射(W/㎡)',value:'directR'})
+                  break;
+                case 'diffuseR':
+                  this.listh.push({key:'散辐射(W/㎡)',value:'diffuseR'})
+                  this.listhquery.push({key:'散辐射(W/㎡)',value:'diffuseR'})
+                  break;
+                case 'obliqueR':
+                  this.listh.push({key:'斜辐射(W/㎡)',value:'obliqueR'})
+                  this.listhquery.push({key:'斜辐射(W/㎡)',value:'obliqueR'})
+                  break;
+                case 'wsInst10':
+                  this.listh.push({key:'10米风速(m/s)',value:'wsInst10'})
+                  this.listhquery.push({key:'10米风速(m/s)',value:'wsInst10'})
+                  break;
+                case 'wsInst30':
+                  this.listh.push({key:'30米风速(m/s)',value:'wsInst30'})
+                  this.listhquery.push({key:'30米风速(m/s)',value:'wsInst30'})
+                  break;
+                case 'wsInst50':
+                  this.listh.push({key:'50米风速(m/s)',value:'wsInst50'})
+                  this.listhquery.push({key:'50米风速(m/s)',value:'wsInst50'})
+                  break;
+                case 'wsInst60':
+                  this.listh.push({key:'60米风速(m/s)',value:'wsInst60'})
+                  this.listhquery.push({key:'60米风速(m/s)',value:'wsInst60'})
+                  break;
+                case 'wsInst70':
+                  this.listh.push({key:'70米风速(m/s)',value:'wsInst70'})
+                  this.listhquery.push({key:'70米风速(m/s)',value:'wsInst70'})
+                  break;
+                case 'wsInst80':
+                  this.listh.push({key:'80米风速(m/s)',value:'wsInst80'})
+                  this.listhquery.push({key:'80米风速(m/s)',value:'wsInst80'})
+                  break;
+                case 'wsInst90':
+                  this.listh.push({key:'90米风速(m/s)',value:'wsInst90'})
+                  this.listhquery.push({key:'90米风速(m/s)',value:'wsInst90'})
+                  break;
+                case 'wsInst100':
+                  this.listh.push({key:'100米风速(m/s)',value:'wsInst100'})
+                  this.listhquery.push({key:'100米风速(m/s)',value:'wsInst100'})
+                  break;
+                case 'wsInst110':
+                  this.listh.push({key:'110米风速(m/s)',value:'wsInst110'})
+                  this.listhquery.push({key:'110米风速(m/s)',value:'wsInst110'})
+                  break;
+                case 'wsInst120':
+                  this.listh.push({key:'120米风速(m/s)',value:'wsInst120'})
+                  this.listhquery.push({key:'120米风速(m/s)',value:'wsInst120'})
+                  break;
+                case 'ws10':
+                  this.listh.push({key:this.columns.ws10,value:'ws10'})
+                  this.listhquery.push({key:this.columns.ws10,value:'ws10'})
+                  break;
+                case 'ws30':
+                  this.listh.push({key:this.columns.ws30,value:'ws30'})
+                  this.listhquery.push({key:this.columns.ws30,value:'ws30'})
+                  break;
+                case 'ws50':
+                  this.listh.push({key:this.columns.ws50,value:'ws50'})
+                  this.listhquery.push({key:this.columns.ws50,value:'ws50'})
+                  break;
+                case 'ws70':
+                  this.listh.push({key:this.columns.ws70,value:'ws70'})
+                  this.listhquery.push({key:this.columns.ws70,value:'ws70'})
+                  break;
+                case 'ws80':
+                  this.listh.push({key:this.columns.ws80,value:'ws80'})
+                  this.listhquery.push({key:this.columns.ws80,value:'ws80'})
+                  break;
+                case 'ws90':
+                  this.listh.push({key:this.columns.ws90,value:'ws90'})
+                  this.listhquery.push({key:this.columns.ws90,value:'ws90'})
+                  break;
+                case 'ws100':
+                  this.listh.push({key:this.columns.ws100,value:'ws100'})
+                  this.listhquery.push({key:this.columns.ws100,value:'ws100'})
+                  break;
+                case 'ws170':
+                  this.listh.push({key:this.columns.ws170,value:'ws170'})
+                  this.listhquery.push({key:this.columns.ws170,value:'ws170'})
+                  break;
+                case 'swr':
+                  this.listh.push({key:'nwp辐射(W/㎡)',value:'swr'})
+                  this.listhquery.push({key:'nwp辐射(W/㎡)',value:'swr'})
+                  break;
+                case 'directRadiation':
+                  this.listh.push({key:'nwp直辐射(W/㎡)',value:'directRadiation'})
+                  this.listhquery.push({key:'nwp直辐射(W/㎡)',value:'directRadiation'})
+                  break;
+                case 'diffuseRadiation':
+                  this.listh.push({key:'nwp散辐射(W/㎡)',value:'diffuseRadiation'})
+                  this.listhquery.push({key:'nwp散辐射(W/㎡)',value:'diffuseRadiation'})
+                  break;
+                // case 'ableValue':
+                //   this.listh.push({key:'可用功率',value:'ableValue'})
+                //   this.listhquery.push({key:'可用功率',value:'ableValue'})
+                //   break;
+                // case 'theoryValue':
+                //   this.listh.push({key:'理论功率',value:'theoryValue'})
+                //   this.listhquery.push({key:'理论功率',value:'theoryValue'})
+                //   break;
+                case 'realValue':
+                  this.lists.push({key:'实际功率(MW)',value:'realValue'})
+                  this.listsquery.push({key:'实际功率(MW)',value:'realValue'})
+                  break;
+                case 'dq':
+                  this.listh.push({key:'上报短期(MW)',value:'dq'})
+                  this.listhquery.push({key:'上报短期(MW)',value:'dq'})
+                  break;
+                case 'cdq':
+                  this.listh.push({key:'上报超短期(MW)',value:'cdq'})
+                  this.listhquery.push({key:'上报超短期(MW)',value:'cdq'})
+                  break;
+              }
+            }
+          }
+          this.$axios.get('displayConfig/comprehensivePoint').then((res) => {
+            if(res.data==null||res.data.code == 0){
+              this.displayPointConfig = {
+                "displayCode":"comprehensivePoint",
+                "showCode":"1,1,1",
+                "hiddenCode":''
+              }
+              this.$axios.post('displayConfig/',this.displayPointConfig).then((res) => {
+                this.displayPointConfig = res.data
+                this.$message.success('点位设置成功' )
+                this.dialogVisible = false
+                this.getDraw(this.startTime,this.endTime)
+              }).catch((error) => {
+                this.$message.error('点位设置出错' + error)
+              })
+            }else {
+              this.displayPointConfig = res.data
+              var point = this.displayPointConfig.showCode.split(',')
+              this.cdqAgo =  point[0]
+              this.dqAgo =  point[1]
+              this.nwpAgo =  point[2]
+            }
+            this.getDraw(this.queryStartTime,this.queryEndTime)
+          })
+        })
+
+      },
+      changeDisplay(){
+        this.displayConfig.showCode = ""
+        this.displayConfig.hiddenCode = ""
+        this.listsquery=[]
+        this.listhquery=[]
+        for(var i = 0;i<this.listh.length;i++){
+          this.listhquery.push(this.listh[i])
+        }
+        for(var i = 0;i<this.lists.length;i++){
+          this.listsquery.push(this.lists[i])
+        }
+        for(var i =0;i<this.listsquery.length;i++){
+          this.displayConfig.showCode += this.listsquery[i].value+","
+        }
+        for(var i =0;i<this.listhquery.length;i++){
+          this.displayConfig.hiddenCode += this.listhquery[i].value+","
+        }
+        this.$axios.post('displayConfig/',this.displayConfig).then((res) => {
+          this.displayConfig = res.data
+          this.$message.success('展示设置成功' )
+          this.dialogVisible = false
+          this.getDraw(this.startTime,this.endTime)
+        }).catch((error) => {
+          this.$message.error('展示设置出错' + error)
+        })
+      },
+      changeDisplayPoint(){
+        this.displayPointConfig.showCode = this.cdqAgo+","+this.dqAgo+","+this.nwpAgo
+        this.$axios.post('displayConfig/',this.displayPointConfig).then((res) => {
+          // this.displayConfig = res.data
+          this.$message.success('点位设置成功' )
+          this.dialogVisiblePoint = false
+          this.getDraw(this.startTime,this.endTime)
+        }).catch((error) => {
+          this.$message.error('点位设置出错' + error)
+        })
+      },
+      cancelDisplay(){
+        this.lists=[]
+        this.listh=[]
+        for(var i = 0;i<this.listhquery.length;i++){
+          this.listh.push(this.listhquery[i])
+        }
+        for(var i = 0;i<this.listsquery.length;i++){
+          this.lists.push(this.listsquery[i])
+        }
+        this.dialogVisible = false
+      },
+      cancelDisplayPoint(){
+        // this.lists=[]
+        // this.listh=[]
+        // for(var i = 0;i<this.listhquery.length;i++){
+        //   this.listh.push(this.listhquery[i])
+        // }
+        // for(var i = 0;i<this.listsquery.length;i++){
+        //   this.lists.push(this.listsquery[i])
+        // }
+        this.dialogVisiblePoint = false
+      },
+      getDraw(startTime,endTime){
+        this.drawLoading = true
+        this.tableData = []
+
+        if(isNaN(this.dqAgo)){
+          this.dqAgo = 1
+        }
+        if(isNaN(this.cdqAgo)){
+          this.cdqAgo = 1
+        }
+        if(isNaN(this.nwpAgo)){
+          this.nwpAgo = 1
+        }
+        this.$axios.get('comprehensiveContrast/'+startTime+'/'+endTime+'/'+this.equipmentId+'/'+this.electricField.electricFieldTypeEnum+'/'+this.dqAgo+'/'+this.cdqAgo+'/'+this.nwpAgo+'/'+this.jgTime).then((res) => {
+            this.tableColumn = [
+              { field: 'times', title: '时间', width:200},
+            ]
+
+          for(let i = 0;i<this.listsquery.length;i++){
+            var colunm = {
+              field:this.listsquery[i].value , title: this.listsquery[i].key
+            }
+
+            this.tableColumn.push(colunm)
+            if(this.listsquery[i].value == 'realValue'&&res.data.displayKyLl=="1"){
+              this.tableColumn.push({ field: 'ableValue', title: '可用功率' })
+              this.tableColumn.push({ field: 'theoryValue', title: '理论功率' })
+              this.tableColumn.push({ field: 'referencePowerBySample', title: '参照功率(样板机)' })
+              this.tableColumn.push({ field: 'referencePowerByMeasuring', title: '参照功率(测风、测光)' })
+            }
+          }
+
+
+          this.drawData = {times:[],realValue:[],ableValue:[],referencePowerBySample:[],referencePowerByMeasuring:[],theoryValue:[],dq:[],cdq:[],directR:[],diffuseR:[],globalR:[],obliqueR:[],wsInst10:[],wsInst30:[],wsInst50:[],wsInst60:[],wsInst70:[],wsInst80:[],wsInst90:[],wsInst100:[],wsInst110:[],wsInst120:[],ws10:[],ws30:[],ws50:[],ws70:[],ws80:[],ws90:[],ws100:[],ws170:[],swr:[],directRadiation:[],diffuseRadiation:[],electricField:this.electricField,columns:this.columns}
+          const data = res.data.tableResult
+          const data1 = res.data.resultList
+          this.tableData=[]
+          // console.log(data)
+          //因为后台设置两个结果的长度肯定一样的所以放在一个for循环中
+          for(let i = 0;i<data.length;i++){
+
+            var object = {}
+            this.drawData.times.push(data[i].time)
+            object.times = data[i].time
+
+            if(data[i].realValue!=undefined){
+              this.drawData.realValue.push(data[i].realValue)
+              object.realValue = data[i].realValue;
+            }
+            if(data[i].ableValue!=undefined){
+              this.drawData.ableValue.push(data[i].ableValue)
+              object.ableValue = data[i].ableValue;
+            }
+            if(data[i].theoryValue!=undefined){
+              this.drawData.theoryValue.push(data[i].theoryValue)
+              object.theoryValue = data[i].theoryValue;
+            }
+            if(data[i].referencePowerBySample!=undefined){
+              this.drawData.referencePowerBySample.push(data[i].referencePowerBySample)
+              object.referencePowerBySample = data[i].referencePowerBySample;
+            }
+            if(data[i].referencePowerByMeasuring!=undefined){
+              this.drawData.referencePowerByMeasuring.push(data[i].referencePowerByMeasuring)
+              object.referencePowerByMeasuring = data[i].referencePowerByMeasuring;
+            }
+            if(data[i].dq!=undefined){
+              this.drawData.dq.push(data[i].dq)
+              object.dq = data[i].dq;
+            }
+            if(data[i].cdq!=undefined){
+              this.drawData.cdq.push(data[i].cdq)
+              object.cdq = data[i].cdq;
+            }
+
+
+          // }
+          // for(let i = 0;i<data1.length;i++){
+          if(data1[i].directR!=undefined){
+            this.drawData.directR.push(data1[i].directR)
+            object.directR = data1[i].directR;
+          }
+          if(data1[i].diffuseR!=undefined){
+            this.drawData.diffuseR.push(data1[i].diffuseR)
+            object.diffuseR = data1[i].diffuseR;
+          }
+          if(data1[i].globalR!=undefined){
+              this.drawData.globalR.push(data1[i].globalR)
+            object.globalR = data1[i].globalR;
+          }
+          if(data1[i].obliqueR!=undefined){
+              this.drawData.obliqueR.push(data1[i].obliqueR)
+            object.obliqueR = data1[i].obliqueR;
+          }
+          if(data1[i].wsInst10!=undefined){
+            this.drawData.wsInst10.push(data1[i].wsInst10)
+            object.wsInst10 = data1[i].wsInst10;
+          }
+          if(data1[i].wsInst30!=undefined){
+            this.drawData.wsInst30.push(data1[i].wsInst30)
+            object.wsInst30 = data1[i].wsInst30;
+          }
+          if(data1[i].wsInst50!=undefined){
+            this.drawData.wsInst50.push(data1[i].wsInst50)
+            object.wsInst50 = data1[i].wsInst50;
+          }
+            if(data1[i].wsInst60!=undefined){
+              this.drawData.wsInst60.push(data1[i].wsInst60)
+              object.wsInst60 = data1[i].wsInst60;
+            }
+          if(data1[i].wsInst70!=undefined){
+            this.drawData.wsInst70.push(data1[i].wsInst70)
+            object.wsInst70 = data1[i].wsInst70;
+          }
+          if(data1[i].wsInst80!=undefined){
+            this.drawData.wsInst80.push(data1[i].wsInst80)
+            object.wsInst80 = data1[i].wsInst80;
+          }
+          if(data1[i].wsInst90!=undefined){
+            this.drawData.wsInst90.push(data1[i].wsInst90)
+            object.wsInst90 = data1[i].wsInst90;
+          }
+          if(data1[i].wsInst100!=undefined){
+            this.drawData.wsInst100.push(data1[i].wsInst100)
+            object.wsInst100 = data1[i].wsInst100;
+          }
+          if(data1[i].wsInst110!=undefined){
+            this.drawData.wsInst110.push(data1[i].wsInst110)
+            object.wsInst110 = data1[i].wsInst110;
+          }
+            if(data1[i].wsInst120!=undefined){
+              this.drawData.wsInst120.push(data1[i].wsInst120)
+              object.wsInst120 = data1[i].wsInst120;
+            }
+          if(data1[i].ws10!=undefined){
+            this.drawData.ws10.push(data1[i].ws10)
+            object.ws10 = data1[i].ws10;
+          }
+          if(data1[i].ws30!=undefined){
+            this.drawData.ws30.push(data1[i].ws30)
+            object.ws30 = data1[i].ws30;
+          }
+          if(data1[i].ws50!=undefined){
+            this.drawData.ws50.push(data1[i].ws50)
+            object.ws50 = data1[i].ws50;
+          }
+          if(data1[i].ws70!=undefined){
+            this.drawData.ws70.push(data1[i].ws70)
+            object.ws70 = data1[i].ws70;
+          }
+          if(data1[i].ws80!=undefined){
+            this.drawData.ws80.push(data1[i].ws80)
+            object.ws80 = data1[i].ws80;
+          }
+          if(data1[i].ws90!=undefined){
+            this.drawData.ws90.push(data1[i].ws90)
+            object.ws90 = data1[i].ws90;
+          }
+          if(data1[i].ws100!=undefined){
+            this.drawData.ws100.push(data1[i].ws100)
+            object.ws100 = data1[i].ws100;
+          }
+          if(data1[i].ws170!=undefined){
+            this.drawData.ws170.push(data1[i].ws170)
+            object.ws170 = data1[i].ws170;
+          }
+          if(data1[i].swr!=undefined){
+            this.drawData.swr.push(data1[i].swr)
+            object.swr = data1[i].swr;
+          }
+          if(data1[i].diffuseRadiation!=undefined){
+            this.drawData.diffuseRadiation.push(data1[i].diffuseRadiation)
+            object.diffuseRadiation = data1[i].diffuseRadiation;
+          }
+          if(data1[i].directRadiation!=undefined){
+            this.drawData.directRadiation.push(data1[i].directRadiation)
+            object.directRadiation = data1[i].directRadiation;
+          }
+
+              this.tableData.push(object)
+
+
+          }
+          this.tableLoading = false
+          if(!this.drawLoading && !this.tableLoading){
+            this.loading = false
+          }
+          this.drawLoading = false
+          if(!this.drawLoading && !this.tableLoading){
+            this.loading = false
+          }
+
+        }).catch((error) => {
+          this.drawLoading = false
+          if(!this.drawLoading && !this.tableLoading){
+            this.loading = false
+          }
+          this.$message.error('查询对比数据出错' + error)
+        })
+
+      },
+      // getTable(){
+      //   this.tableLoading = true
+      //   this.$axios.get('/forecastPowerShortTerm/'+this.queryStartTime+'/'+this.queryEndTime+'/'+this.currentPage+'/'+this.pageSize+'?sortOrder='+this.sortOrder).then((res) => {
+      //     // this.tableData = res.data.content
+      //     // 表分页格数据总条数
+      //     this.total = res.data.count
+      //     this.tableLoading = false
+      //     if(!this.drawLoading && !this.tableLoading){
+      //       this.loading = false
+      //     }
+      //   }).catch((error) => {
+      //     this.tableLoading = false
+      //     if(!this.drawLoading && !this.tableLoading){
+      //       this.loading = false
+      //     }
+      //     this.$message.error('查询table出错' + error)
+      //   })
+      //
+      // },
+      handlePageChange ({ currentPage, pageSize }) {
+        this.currentPage = currentPage
+        if(this.pageSize!=pageSize){
+          this.changePageSize(pageSize)
+        }
+        this.pageSize = pageSize
+
+      },
+      dateFormat({ cellValue, row, column }) {
+        return this.$XEUtils.toDateString(cellValue, 'yyyy-MM-dd HH:mm:ss')
+      },
+      enumToWord({ cellValue, row, column }) {
+        if(cellValue == "E1"){
+          return "云端模型"
+        }
+        if(cellValue == 'E2'){
+          return "物理模型"
+        }
+        if(cellValue == 'E3'){
+          return "统计模型"
+        }
+        if(cellValue == 'E4'){
+          return "补录数据"
+        }
+        if(cellValue == 'E5'){
+          return "差值模型"
+        }
+      },
+      dateMoment({ cellValue, row, column }) {
+        return moment(cellValue).format('YYYY-MM-DD HH:mm:ss')
+      },
+      // sortChangeEvent ({ column, property, order }) {
+      //   if(order == null){
+      //     order = 'asc'
+      //   }
+      //   this.currentPage = 1
+      //   this.sortOrder = order
+      //   this.loading = true
+      //   this.getTable()
+      // },
+
+      checkColumnMethod ({ column }) {
+        if (column.property === 'preTime') {
+          return false
+        }
+        return true
+      },
+      dateQuery(){
+        this.loading = true
+        if(this.endTime<=this.startTime){
+          this.$message.error("开始时间不能大于结束时间")
+          this.startTime = this.queryStartTime
+          this.endTime = this.queryEndTime
+          this.loading = false
+          return
+        }
+        if(this.endTime-this.startTime> 60 * 60 * 24 * 1000*31){
+          this.startTime = this.queryStartTime
+          this.endTime = this.queryEndTime
+          this.$message.error("只能最多查询31天的数据哦")
+          this.loading = false
+          return
+        }
+        this.queryStartTime = this.startTime
+        this.queryEndTime = this.endTime
+        this.getDraw(this.queryStartTime,this.queryEndTime)
+        // this.getTable()
+      },
+      Byresize(tab){
+        if(tab.name =='first'){
+          this.resizeKey++
+          this.showToolBar = false
+        }else{
+          this.showToolBar = true
+        }
+
+      },
+      log: function(evt) {
+        /*window.console.log(evt);*/
+   /*     console.log(this.lists)
+        console.log(this.listh)*/
+
+     /*   this.changeDisplay()*/
+      },
+      // 初始页currentPage、初始每页数据数pagesize和数据data
+      handleSizeChange: function (size) {
+        this.pageSize = size;
+        // console.log(this.pageSize)  //每页下拉显示数据
+      },
+      handleCurrentChange: function(currentPage){
+        this.currentPage = currentPage;
+        // console.log(this.currentPage)  //点击第几页
+      }
+    }
+  }
+</script>
+
+<style scoped>
+  /*.chart-container{*/
+    /*position:relative;*/
+    /*width:100%;*/
+    /*height:calc(100vh - 50px);*/
+  /*}*/
+
+  /*.filter{*/
+    /*position:relative;*/
+    /*display:flex;*/
+    /*padding:20px 0 10px 15px;*/
+    /*font-size:12px;*/
+    /*line-height:11px;*/
+    /*color:white;*/
+  /*}*/
+
+  /*input{*/
+    /*background:transparent;*/
+    /*border:none;*/
+    /*color:white;*/
+  /*}*/
+
+  /*.timeText{*/
+    /*opacity:0.69;*/
+    /*padding-right:7px;*/
+    /*font-size:14px;*/
+  /*}*/
+
+  /*.startTime{*/
+    /*display:inline-block;*/
+  /*}*/
+
+  /*.endTime{*/
+    /*display:inline-block;*/
+    /*padding-left:42px;*/
+  /*}*/
+
+
+  /*.timeQuery{*/
+    /*background:transparent;*/
+  /*}*/
+
+  /*.el-button{*/
+    /*background:transparent;*/
+    /*color:white;*/
+  /*}*/
+  /*.filter{*/
+    /*width: 100%;background-color: transparent;height: 10%*/
+  /*}*/
+  /*.filter >>> input{*/
+    /*background:transparent;*/
+    /*border:none;*/
+    /*color:white;*/
+  /*}*/
+  /*.content{*/
+    /*width: 100%;*/
+    /*background-color: transparent;*/
+    /*height: 90%;*/
+    /*padding-left: 5px;*/
+    /*padding-right: 5px;*/
+  /*}*/
+  /*.content >>> .el-tabs__item{*/
+    /*color: white;*/
+  /*}*/
+  /*.content >>> .el-tabs__item.is-active {*/
+    /*color: #409EFF;*/
+  /*}*/
+
+
+  /*.tableContent{*/
+    /*width: 100%;*/
+    /*height:calc(80vh - 50px);*/
+  /*}*/
+  /*.tableContent >>> td{*/
+    /*border:1px solid #ffffff;*/
+  /*}*/
+
+  /*.rtPageturning >>> button,*/
+  /*.rtPageturning >>> span,*/
+  /*.rtPageturning >>> input,*/
+  /*.rtPageturning >>> .vxe-pager--btn-wrapper li{*/
+    /*background-color: transparent !important;*/
+    /*color: #ffffff !important;*/
+    /*border: 1px solid #ffffff;*/
+  /*}*/
+  /*.rtPageturning >>> span{*/
+    /*border:none*/
+  /*}*/
+  /*.rtPageturning >>> .vxe-pager--wrapper .vxe-pager--btn-wrapper li:not(.disabled).is--active {*/
+    /*background-color: #9f9fa0 !important;*/
+  /*}*/
+  /*.toolbar{*/
+    /*position:absolute;right:0px;*/
+  /*}*/
+  /*.toolbar >>> .vxe-button.type--button.is--circle {*/
+    /*padding: 0 .5em;*/
+    /*min-width: 34px;*/
+    /*border-radius: 10%;*/
+    /*border: none;*/
+    /*background: transparent;*/
+    /*color: white;*/
+  /*}*/
+  .drag-box-item {
+    /*margin:10px;*/
+    flex: 1;
+    height: 220px;
+    max-width: 100%;
+    min-width: 100%;
+    background-color: #eff1f5;
+    margin-right: 16px;
+    border-radius: 6px;
+    border: 1px #e1e4e8 solid;
+  }
+
+  .item-title {
+    padding: 8px 8px 8px 12px;
+    font-size: 14px;
+    line-height: 1.5;
+    color: #24292e;
+    font-weight: 600;
+  }
+
+  .item-ul {
+    padding: 0 8px 8px;
+    height: 200px;
+    overflow-y: scroll;
+  }
+
+  .item-ul::-webkit-scrollbar {
+    width: 0;
+  }
+
+  .drag-list {
+    width: 14%;
+    float: left;
+    border: 1px #e1e4e8 solid;
+    padding: 10px;
+    /*margin: 5px 0 10px;*/
+    list-style: none;
+    background-color: #fff;
+    border-radius: 6px;
+    cursor: pointer;
+    -webkit-transition: border .3s ease-in;
+    transition: border .3s ease-in;
+  }
+
+  .drag-list:hover {
+    border: 1px solid #20a0ff;
+  }
+
+  .inputNum {
+    height: 50px;
+    text-align: right;
+  }
+</style>
+

+ 17 - 3
ipfcst/ipfcst-reportquery/src/main/java/com/jiayue/ipfcst/service/ComprehensiveContrastService.java

@@ -32,6 +32,10 @@ public class ComprehensiveContrastService extends BaseService {
   private final PowerStationStatusDataRepository powerStationStatusDataRepository;
   private final PowerStationStatusDataRepository powerStationStatusDataRepository;
   private final ForecastPowerUltraShortTermHisService forecastPowerUltraShortTermHisService;
   private final ForecastPowerUltraShortTermHisService forecastPowerUltraShortTermHisService;
   private final ForecastPowerShortTermHisService forecastPowerShortTermHisService;
   private final ForecastPowerShortTermHisService forecastPowerShortTermHisService;
+
+  private final ForecastPowerUltraShortTermOneHisService forecastPowerUltraShortTermOneHisService;
+  private final ForecastPowerShortTermOneHisService forecastPowerShortTermOneHisService;
+
   private final PowerStationStatusDataService powerStationStatusDataService;
   private final PowerStationStatusDataService powerStationStatusDataService;
   private final WeatherStationStatusDataService weatherStationStatusDataService;
   private final WeatherStationStatusDataService weatherStationStatusDataService;
   private final WindTowerStatusDataService windTowerStatusDataService;
   private final WindTowerStatusDataService windTowerStatusDataService;
@@ -52,7 +56,7 @@ public class ComprehensiveContrastService extends BaseService {
                                       ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository,
                                       ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository,
                                       ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository,
                                       ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository,
                                       WeatherStationStatusDataRepository weatherStationStatusDataRepository,
                                       WeatherStationStatusDataRepository weatherStationStatusDataRepository,
-                                      WindTowerStatusDataRepository windTowerStatusDataRepository) {
+                                      WindTowerStatusDataRepository windTowerStatusDataRepository, ForecastPowerUltraShortTermOneHisService forecastPowerUltraShortTermOneHisService, ForecastPowerShortTermOneHisService forecastPowerShortTermOneHisService) {
     this.forecastPowerUltraShortTermHisService = forecastPowerUltraShortTermHisService;
     this.forecastPowerUltraShortTermHisService = forecastPowerUltraShortTermHisService;
     this.forecastPowerShortTermHisService = forecastPowerShortTermHisService;
     this.forecastPowerShortTermHisService = forecastPowerShortTermHisService;
     this.powerStationStatusDataService = powerStationStatusDataService;
     this.powerStationStatusDataService = powerStationStatusDataService;
@@ -67,6 +71,8 @@ public class ComprehensiveContrastService extends BaseService {
     this.weatherStationStatusDataRepository = weatherStationStatusDataRepository;
     this.weatherStationStatusDataRepository = weatherStationStatusDataRepository;
     this.windTowerStatusDataRepository = windTowerStatusDataRepository;
     this.windTowerStatusDataRepository = windTowerStatusDataRepository;
 
 
+    this.forecastPowerUltraShortTermOneHisService = forecastPowerUltraShortTermOneHisService;
+    this.forecastPowerShortTermOneHisService = forecastPowerShortTermOneHisService;
   }
   }
 
 
 
 
@@ -89,8 +95,16 @@ public class ComprehensiveContrastService extends BaseService {
     List<Map<String, Object>> tableResult = new ArrayList<>();
     List<Map<String, Object>> tableResult = new ArrayList<>();
 
 
     //预测数据
     //预测数据
-    dqMap = forecastPowerShortTermHisService.findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(startTime, endTime, dqAgo, jgTime);
-    cdqMap = forecastPowerUltraShortTermHisService.findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(startTime, endTime, cdqAgo, jgTime);
+    if (otherType.equals("E1")){
+      // 光伏
+      dqMap = forecastPowerShortTermHisService.findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(startTime, endTime, dqAgo, jgTime);
+      cdqMap = forecastPowerUltraShortTermHisService.findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(startTime, endTime, cdqAgo, jgTime);
+    }
+    else{
+      // 风电
+      dqMap = forecastPowerShortTermOneHisService.findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(startTime, endTime, dqAgo, jgTime);
+      cdqMap = forecastPowerUltraShortTermOneHisService.findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(startTime, endTime, cdqAgo, jgTime);
+    }
     List<Float> dqList = (List<Float>) dqMap.get("datas");
     List<Float> dqList = (List<Float>) dqMap.get("datas");
     List<Float> cdqList = (List<Float>) cdqMap.get("datas");
     List<Float> cdqList = (List<Float>) cdqMap.get("datas");
     List<NwpHis> nwpHisList = nwpHisService.findByPreTimeBetweenAndForecastHowLongAgo(startTime, endTime, nwpAgo, jgTime);
     List<NwpHis> nwpHisList = nwpHisService.findByPreTimeBetweenAndForecastHowLongAgo(startTime, endTime, nwpAgo, jgTime);

+ 276 - 0
ipfcst/ipfcst-reportquery/src/main/java/com/jiayue/ipfcst/service/ForecastPowerShortTermOneHisService.java

@@ -0,0 +1,276 @@
+package com.jiayue.ipfcst.service;
+
+import com.jiayue.ipfcst.common.data.entity.ForecastPowerShortTermOne;
+import com.jiayue.ipfcst.common.data.entity.ForecastPowerShortTermOneHis;
+import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
+import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermOneHisRepository;
+import com.jiayue.ipfcst.common.data.service.BaseService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.criteria.Predicate;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 历史预测短期业务层
+ *
+ * @author yh
+ * @version 1.0
+ * @since 2019/8/5 16:02
+ */
+@Service
+@Slf4j
+public class ForecastPowerShortTermOneHisService extends BaseService {
+  private final ForecastPowerShortTermOneHisRepository forecastPowerShortTermOneHisRepository;
+
+  @Autowired
+  public ForecastPowerShortTermOneHisService(ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, ForecastPowerShortTermOneHisRepository forecastPowerShortTermOneHisRepository) {
+    this.forecastPowerShortTermOneHisRepository = forecastPowerShortTermOneHisRepository;
+  }
+
+  /**
+   * 根据提前多久,开始结束时间查询历史超短期 yh
+   *
+   * @param startTime 开始时间
+   * @param endTime   结束时间
+   * @param ago       提前多久预测
+   * @return 结果集
+   */
+  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
+  public Map<String, Object> findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTime(Long startTime, Long endTime, Integer ago) {
+    Map<String, Object> map = new HashMap<>();
+    List<ForecastPowerShortTermOneHis> list = forecastPowerShortTermOneHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, ago);
+    list.sort(Comparator.comparing(ForecastPowerShortTermOneHis::getForecastTime));
+    long timeStep = 900000L;
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    List<String> times = new ArrayList<>();
+    List<Float> datas = new ArrayList<>();
+    if (startTime % timeStep != 0) {
+      startTime = startTime - (startTime % timeStep) + timeStep;
+    }
+    if (list != null && list.size() > 0) {
+      for (Long i = startTime; i < endTime; i = i + timeStep) {
+        long finalI = i;
+        List<ForecastPowerShortTermOneHis> filterList = list.stream().filter(t -> t.getForecastTime() == finalI).collect(Collectors.toList());
+        if (filterList != null && filterList.size() > 0) {
+          datas.add(filterList.get(0).getAbleValue().floatValue());
+        } else {
+          datas.add(null);
+        }
+
+        times.add(sdf.format(new Date(finalI)));
+      }
+    }
+    map.put("times", times);
+    map.put("datas", datas);
+
+    return map;
+  }
+
+  /**
+   * 导出短期上报日数据
+   * @param time 数据生成日期
+   */
+  public void exportForForecastPowerShortTerm(Long time,HttpServletResponse response) throws Exception {
+
+    BufferedOutputStream bos = null;
+
+    Map<String, Object> map = findByGenDateBetween(time, time + 86400000l - 1l, 900000l);
+    try {
+      StringBuilder templateContent = new StringBuilder();
+      response.setCharacterEncoding("UTF-8");
+      String header =  "\"预测时间\""  +  "," + "\"预测功率\"" +"\r\n";
+      List<String> times = (List<String>)map.get("times");
+      List<Float> datas = (List<Float>)map.get("datas");
+      templateContent.append(header);
+      for (int i = 0; i <times.size() ; i++) {
+        StringBuilder content = new StringBuilder();
+
+        content.append(times.get(i) + ",");
+
+        if(datas.get(i) == null){
+          content.append(",");
+        }else{
+          content.append(datas.get(i)  + ",");
+        }
+        content.append("\r\n");
+
+        templateContent.append(content.toString());
+      }
+      SimpleDateFormat format =  new SimpleDateFormat( "yyyy-MM-dd" );
+      String s = format.format(new Date(time));
+      response.setContentType("application/x-msdownload;charset=UTF-8");// 文件下载必须配置为application/x-msdownload
+      response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("短期上报日数据_"+s+".csv", "UTF-8"));// 中文文件名必须使用URLEncoder.encode进行转码
+      byte[] templateContentBytes = templateContent.toString().getBytes("UTF-8");
+      bos = new BufferedOutputStream(response.getOutputStream());// 向response中写入文件流
+      bos.write(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF});// 指定csv文件用UTF-8字符集打开
+      bos.write(templateContentBytes);
+      response.flushBuffer();
+      templateContent = null;
+
+    } catch (Exception e) {
+      log.error("系统错误:" + e.getMessage(), e);
+      throw new RuntimeException(e);
+    } finally {
+      if (bos != null){
+        try {
+          bos.close();
+        } catch (IOException e) {
+          log.error("系统错误:" + e.getMessage(), e);
+        }
+      }
+    }
+
+  }
+
+
+  /**
+   * 根据提前多久,开始结束时间查询历史超短期 yh
+   *
+   * @param startTime 开始时间
+   * @param endTime   结束时间
+   * @param ago       提前多久预测
+   * @return 结果集
+   */
+  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
+  public Map<String, Object> findByForecastTimeBetweenAndForecastHowLongAgoOrderByForecastTimeForDB(Long startTime, Long endTime, Integer ago, Long timeStep) {
+    Map<String, Object> map = new HashMap<>();
+    List<ForecastPowerShortTermOneHis> list = forecastPowerShortTermOneHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, ago);
+    list.sort(Comparator.comparing(ForecastPowerShortTermOneHis::getForecastTime));
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    List<String> times = new ArrayList<>();
+    List<Float> datas = new ArrayList<>();
+    if (startTime % timeStep != 0) {
+      startTime = startTime - (startTime % timeStep) + timeStep;
+    }
+    for (Long i = startTime; i < endTime; i = i + timeStep) {
+      if (list != null && list.size() > 0) {
+        long finalI = i;
+        List<ForecastPowerShortTermOneHis> filterList = list.stream().filter(t -> t.getForecastTime() == finalI).collect(Collectors.toList());
+        if (filterList != null && filterList.size() > 0) {
+          datas.add(filterList.get(0).getAbleValue().floatValue());
+        } else {
+          datas.add(null);
+        }
+      } else {
+        datas.add(null);
+      }
+      times.add(sdf.format(new Date(i)));
+
+    }
+
+    map.put("times", times);
+    map.put("datas", datas);
+
+    return map;
+  }
+
+
+  /**
+   * 根据提前多久,开始结束时间查询历史超短期 yh
+   *
+   * @param startTime 开始时间
+   * @param endTime   结束时间
+   * @return 结果集
+   */
+  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
+  public Map<String, Object> findByGenDateBetween(Long startTime, Long endTime, Long timeStep) {
+    Map<String, Object> map = new HashMap<>();
+    List<ForecastPowerShortTermOneHis> list = forecastPowerShortTermOneHisRepository.findByGenDateBetween(new Date(startTime), new Date(endTime));
+    list.sort(Comparator.comparing(ForecastPowerShortTermOneHis::getForecastTime));
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    List<String> times = new ArrayList<>();
+    List<Float> datas = new ArrayList<>();
+
+    if(list.size()>0){
+      for (Long i = list.get(0).getForecastTime(); i <= list.get(list.size()-1).getForecastTime(); i = i + timeStep) {
+        if (list != null && list.size() > 0) {
+          long finalI = i;
+          List<ForecastPowerShortTermOneHis> filterList = list.stream().filter(t -> t.getForecastTime() == finalI).collect(Collectors.toList());
+          if (filterList != null && filterList.size() > 0) {
+            datas.add(filterList.get(0).getAbleValue().floatValue());
+          } else {
+            datas.add(null);
+          }
+        } else {
+          datas.add(null);
+        }
+        times.add(sdf.format(new Date(i)));
+
+      }
+    }
+    map.put("times", times);
+    map.put("datas", datas);
+
+    return map;
+  }
+
+
+
+  /**
+   * 根据时间 分页查询 查询短期预测数据
+   *
+   * @param startTime 开始时间
+   * @param endTime   结束时间
+   * @param page      页码
+   * @param size      条数
+   * @param sortOrder 排序
+   * @return
+   */
+  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
+  public Map<String, Object> findByTimeBetweenAndNoForPaging(Long startTime, Long endTime,
+                                                             Integer page, Integer size,
+                                                             String sortOrder) {
+    Map<String, Object> map = new HashMap<>();
+    Sort sort = Sort.by(Sort.Direction.DESC, "forecastTime");
+    if (sortOrder.contains("asc")) {
+      sort = Sort.by(Sort.Direction.ASC, "forecastTime");
+    }
+    Specification<ForecastPowerShortTermOneHis> specification = this.specificationFindByTimeAndNo(new Date(startTime), new Date(endTime));
+    Pageable pageable = PageRequest.of(page - 1, size, sort);
+    Page forecastPowerShortTerms = forecastPowerShortTermOneHisRepository.findAll(specification, pageable);
+    List<ForecastPowerShortTermOne> data = forecastPowerShortTerms.getContent();
+    map.put("content", data);
+    map.put("count", forecastPowerShortTerms.getTotalElements());
+    return map;
+  }
+
+  /**
+   * 根据时间和编号 分页查询条件
+   *
+   * @param startTime 开始时间
+   * @param endTime   结束时间
+   * @return 过滤条件
+   */
+  Specification<ForecastPowerShortTermOneHis> specificationFindByTimeAndNo(final Date startTime, final Date endTime) {
+    return (Specification<ForecastPowerShortTermOneHis>) (root, criteriaQuery, cb) -> {
+      List<Predicate> predicates = new ArrayList<>();
+      if (startTime != null) {
+        //大于或等于传入时间
+        predicates.add(cb.greaterThanOrEqualTo(root.get("genDate").as(Date.class), startTime));
+      }
+      if (endTime != null) {
+        //小于传入时间
+        predicates.add(cb.lessThan(root.get("genDate").as(Date.class), endTime));
+      }
+
+      //添加排序的功能
+      return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+
+    };
+  }
+}