Procházet zdrojové kódy

历史数据查询列表展示

xusl před 6 měsíci
rodič
revize
6e63eea551

+ 1 - 10
cpp-admin/src/main/java/com/cpp/CppApplication.java

@@ -19,15 +19,6 @@ public class CppApplication
     {
         // System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(CppApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  集中预测启动成功   ლ(´ڡ`ლ)゙  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
+        System.out.println("(♥◠‿◠)ノ゙  集中预测启动成功   ლ(´ڡ`ლ)゙  \n");
     }
 }

+ 120 - 9
cpp-admin/src/main/java/com/cpp/web/service/station/impl/PowerStationStatusDataServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cpp.system.service.ISysConfigService;
+import com.cpp.web.domain.BaseCppEntity;
 import com.cpp.web.domain.cloud.ForecastPowerShortTermCloud;
 import com.cpp.web.domain.station.*;
 import com.cpp.web.mapper.station.PowerStationStatusDataMapper;
@@ -93,7 +94,7 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
 
     public Map<String, List> getCompositeData(String stationCode, Long startTime, Long endTime) {
         ElectricField electricField = electricFieldService.findByStationCode(stationCode);
-        String station = "";
+        String stationType = electricField.getElectricFieldTypeEnum();
 
         // 封装列表头信息
         List headList = new ArrayList();
@@ -105,40 +106,78 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         timeHeadMap.put("field", "time");
         timeHeadMap.put("label", "时间");
         headList.add(timeHeadMap);
+        Map<String,String> hjHeadMap = new HashMap<>();
+        hjHeadMap.put("field", "hj");
+
+        Map<Long, WeatherStationStatusData> qxzMap = new HashMap<>();
+        Map<Long, WindTowerStatusData> cftMap = new HashMap<>();
+        if ("E1".equals(stationType)){
+            // 光伏
+            hjHeadMap.put("label", "气象站总辐射(W/㎡)");
+            // 查询气象站数据
+            QueryWrapper<WeatherStationStatusData> wrapper = new QueryWrapper<>();
+            wrapper.eq("station_code", stationCode);
+            wrapper.between("time", new Date(startTime), new Date(endTime));
+            List<WeatherStationStatusData> list = weatherStationStatusDataService.list(wrapper);
+            for (WeatherStationStatusData weatherStationStatusData : list) {
+                qxzMap.put(weatherStationStatusData.getTime().getTime(), weatherStationStatusData);
+            }
+        }
+        else{
+            hjHeadMap.put("label", "测风塔轮毂风速(m/s)");
+            // 查询测风塔数据
+            QueryWrapper<WindTowerStatusData> wrapper = new QueryWrapper<>();
+            wrapper.eq("station_code", stationCode);
+            wrapper.between("time", new Date(startTime), new Date(endTime));
+            List<WindTowerStatusData> list = windTowerStatusDataService.list(wrapper);
+            for (WindTowerStatusData windTowerStatusData : list) {
+                cftMap.put(windTowerStatusData.getTime().getTime(), windTowerStatusData);
+            }
+        }
+        headList.add(hjHeadMap);
         Map<String,String> sjglHeadMap = new HashMap<>();
         sjglHeadMap.put("field", "sjgl");
-        sjglHeadMap.put("label", "实际功率");
+        sjglHeadMap.put("label", "实际功率(MW)");
         headList.add(sjglHeadMap);
         Map<String,String> kyglHeadMap = new HashMap<>();
         kyglHeadMap.put("field", "kygl");
-        kyglHeadMap.put("label", "可用功率");
+        kyglHeadMap.put("label", "可用功率(MW)");
         headList.add(kyglHeadMap);
         Map<String,String> llglHeadMap = new HashMap<>();
         llglHeadMap.put("field", "llgl");
-        llglHeadMap.put("label", "理论功率");
+        llglHeadMap.put("label", "理论功率(MW)");
         headList.add(llglHeadMap);
+        Map<String,String> cdqysHeadMap = new HashMap<>();
+        cdqysHeadMap.put("field", "cdqys");
+        cdqysHeadMap.put("label", "超短期(MW)");
+        headList.add(cdqysHeadMap);
         Map<String,String> dqysHeadMap = new HashMap<>();
         dqysHeadMap.put("field", "dqys");
-        dqysHeadMap.put("label", "短期原始曲线");
+        dqysHeadMap.put("label", "短期原始(MW)");
         headList.add(dqysHeadMap);
         Map<String,String> dqzxHeadMap = new HashMap<>();
         dqzxHeadMap.put("field", "dqzx");
-        dqzxHeadMap.put("label", "短期中心曲线");
+        dqzxHeadMap.put("label", "短期中心调控(MW)");
         headList.add(dqzxHeadMap);
         Map<String,String> dqsbHeadMap = new HashMap<>();
         dqsbHeadMap.put("field", "dqsb");
-        dqsbHeadMap.put("label", "短期上报曲线");
+        dqsbHeadMap.put("label", "短期上报(MW)");
         headList.add(dqsbHeadMap);
+        Map<String,String> czHeadMap = new HashMap<>();
+        czHeadMap.put("field", "cz");
+        czHeadMap.put("label", "下发与上报差值");
+        headList.add(czHeadMap);
 
         Map<String,List> tempCdqMap = new HashMap<>();
         Map<String,List> tableCdqMap = new HashMap<>();
 
 
-
         List<String> timeList = new ArrayList<>();
+        List<String> hjList = new ArrayList();
         List<String> sjList = new ArrayList();
         List<String> kyList = new ArrayList();
         List<String> llList = new ArrayList();
+        List<String> cdqysList = new ArrayList();
         List<String> dqysList = new ArrayList();
         List<String> dqzxList = new ArrayList();
         List<String> dqsbList = new ArrayList();
@@ -160,6 +199,17 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         for (ForecastPowerShortTermStation forecastPowerShortTermStation : forecastPowerShortTermStationList) {
             dqysMap.put(forecastPowerShortTermStation.getTime().getTime(), forecastPowerShortTermStation);
         }
+        // 获取超短期原始曲线
+        Map<Long, ForecastPowerUltraShortTermStation> cdqysMap = new HashMap<>();
+        String cdqHowLongAgo = configService.selectConfigByKey("cdqHowLongAgo");
+        QueryWrapper cdqysWrapper = new QueryWrapper<>();
+        cdqysWrapper.eq("forecast_how_long_ago",Integer.parseInt(dqHowLongAgo));
+        cdqysWrapper.eq("station_code",stationCode);
+        cdqysWrapper.between("time", new Date(startTime), new Date(endTime));
+        List<ForecastPowerUltraShortTermStation> forecastPowerUltraShortTermStationList =forecastPowerUltraShortTermStationService.list(dqysWrapper);
+        for (ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation : forecastPowerUltraShortTermStationList) {
+            cdqysMap.put(forecastPowerUltraShortTermStation.getTime().getTime(), forecastPowerUltraShortTermStation);
+        }
         // 获取短期上报曲线
         Map<Long, ForecastPowerShortTermRegulation> dqsbMap = new HashMap<>();
         QueryWrapper dqsbWrapper = new QueryWrapper<>();
@@ -190,6 +240,35 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
             Map<String,Object> map1 = new HashMap<>();
             map1.put("czmc", electricField.getName());
             map1.put("time", DateUtil.format(new Date(tempDateTime), "yyyy-MM-dd HH:mm"));
+            // 气象站或者测风塔数据
+            if ("E1".equals(stationType)){
+                if (qxzMap.get(tempDateTime) != null) {
+                    WeatherStationStatusData weatherStationStatusData = qxzMap.get(tempDateTime);
+                    if (weatherStationStatusData.getGlobalR().compareTo(new BigDecimal("-99"))==0) {
+                        map1.put("hj",null);
+                    }
+                    else{
+                        map1.put("hj",weatherStationStatusData.getGlobalR().toString());
+                    }
+                }
+                else {
+                    map1.put("hj",null);
+                }
+            }
+            else{
+                if (cftMap.get(tempDateTime) != null) {
+                    WindTowerStatusData windTowerStatusData = cftMap.get(tempDateTime);
+                    if (windTowerStatusData.getWsHubHeight().compareTo(new BigDecimal("-99"))==0) {
+                        map1.put("hj",null);
+                    }
+                    else{
+                        map1.put("hj",windTowerStatusData.getWsHubHeight().toString());
+                    }
+                }
+                else {
+                    map1.put("hj",null);
+                }
+            }
 
             // 封装实际功率list
             if (sjMap.get(tempDateTime) != null) {
@@ -220,10 +299,29 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
                     map1.put("llgl",powerStationStatusData.getTheoryValue().toString());
                 }
             } else {
+                map1.put("sjgl",null);
+                map1.put("kygl",null);
+                map1.put("llgl",null);
                 sjList.add(null);
                 kyList.add(null);
                 llList.add(null);
             }
+            // 封装超短期原始曲线list
+            if (cdqysMap.get(tempDateTime) !=null){
+                ForecastPowerUltraShortTermStation forecastPowerUltraShortTermStation = cdqysMap.get(tempDateTime);
+                if (forecastPowerUltraShortTermStation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
+                    cdqysList.add(null);
+                    map1.put("cdqys",null);
+                }
+                else{
+                    cdqysList.add(forecastPowerUltraShortTermStation.getFpValue().toString());
+                    map1.put("cdqys",forecastPowerUltraShortTermStation.getFpValue().toString());
+                }
+            }
+            else {
+                cdqysList.add(null);
+            }
+
             // 封装短期原始曲线list
             if (dqysMap.get(tempDateTime) !=null){
                 ForecastPowerShortTermStation forecastPowerShortTermStation = dqysMap.get(tempDateTime);
@@ -245,16 +343,29 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
                 if (forecastPowerShortTermRegulation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
                     dqsbList.add(null);
                     map1.put("dqsb",null);
+                    map1.put("cz",null);
                 }
                 else{
                     dqsbList.add(forecastPowerShortTermRegulation.getFpValue().toString());
                     map1.put("dqsb",forecastPowerShortTermRegulation.getFpValue().toString());
+                    // 站端上报了短期,再判断短期下发的值是否为空
+                    if (dqzxMap.get(tempDateTime) !=null){
+                        // 需要计算差值,下发减上报差值
+                        ForecastPowerShortTermSend forecastPowerShortTermSend = dqzxMap.get(tempDateTime);
+                        map1.put("cz",forecastPowerShortTermSend.getFpValue().subtract(forecastPowerShortTermRegulation.getFpValue()).toString());
+                    }
+                    else{
+                        // 中心没有调控下发,则差值字段正常就是空
+                        map1.put("cz",null);
+                    }
                 }
             }
             else {
                 dqsbList.add(null);
+                // 站端没有上报短期,差值字段为空
+                map1.put("cz","—");
             }
-            // 封装短期中心曲线list
+            // 封装短期中心调控下发曲线list
             if (dqzxMap.get(tempDateTime) !=null){
                 ForecastPowerShortTermSend forecastPowerShortTermSend = dqzxMap.get(tempDateTime);
                 if (forecastPowerShortTermSend.getFpValue().compareTo(new BigDecimal("-99"))==0) {

+ 36 - 3
cpp-ui/src/views/stationDataQuery/historyforecastdata/index.vue

@@ -27,10 +27,10 @@
         </el-button>
       </el-form-item>
     </el-form>
-
     <div style="padding-top: 10px">
       <el-tabs type="card" v-model="activeName" @tab-click="tabClick">
         <el-tab-pane label="列表" name="first">
+          <div>差值颜色说明:<span style="color: #FF0000">红色</span>为下发与上报的差值不相等,<span style="color: #FFFF00">黄色</span>为未接收到上报数据</div>
           <vxe-table
             align="center"
             :loading="loading"
@@ -40,8 +40,11 @@
             resizable
             highlight-current-row
             show-overflow
+            height="535"
             :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
+            :cell-class-name="cellClassName"
           >
+
             <vxe-table-column
               v-for="(item, index) in fromHead"
               :key="index"
@@ -50,6 +53,15 @@
               :field="item.field"
             ></vxe-table-column>
 
+<!--            <vxe-table-column field="czmc" title="场站名称"></vxe-table-column>-->
+<!--            <vxe-table-column field="time" title="时间"></vxe-table-column>-->
+<!--            <vxe-table-column field="sjgl" title="实际功率(MW)"></vxe-table-column>-->
+<!--            <vxe-table-column field="kygl" title="可用功率(MW)"></vxe-table-column>-->
+<!--            <vxe-table-column field="llgl" title="理论功率(MW)"></vxe-table-column>-->
+<!--            <vxe-table-column field="dqys" title="短期原始(MW)"></vxe-table-column>-->
+<!--            <vxe-table-column field="dqzx" title="短期中心调控(MW)"></vxe-table-column>-->
+<!--            <vxe-table-column field="dqsb" title="短期上报(MW)"></vxe-table-column>-->
+<!--            <vxe-table-column field="cz" title="下发减上报差值(MW)"></vxe-table-column>-->
           </vxe-table>
           <vxe-pager
             perfect
@@ -677,6 +689,17 @@ export default {
   },
   computed: {},
   methods: {
+    cellClassName({row, rowIndex, column, columnIndex}) {
+      if (columnIndex == 10){
+        if (row.cz === '—') {
+          return "class-style-yellow"
+        }
+        if (row.cz != '' && row.cz != undefined && row.cz != 0) {
+          return "class-style-red"
+        }
+      }
+
+    },
     tabClick(tab) {
       if (this.activeName == 'second') {
         this.$nextTick(function () {
@@ -728,7 +751,6 @@ export default {
     getQueryDays() {
         // 获取查询D+N天参数值
         this.$axios({url: '/powerstationstatusdata/queryDays', method: 'get'}).then(response => {
-          console.log(1)
           let queryDays = response.data
           this.dateTime = [new Date(new Date().toLocaleDateString()).getTime(), new Date(new Date().toLocaleDateString()).getTime() + (60 * 60 * 24 * 1000) + parseInt(queryDays) * 60 * 60 * 24 * 1000 - 1]
         })
@@ -736,7 +758,6 @@ export default {
     },
     getStationCode() {
       this.$axios({url: '/electricfield/all', method: 'get'}).then(response => {
-        console.log(2)
         this.stationList = response.data
         if (this.stationList.length > 0) {
           this.stationCode = this.stationList[0].value
@@ -994,3 +1015,15 @@ export default {
   },
 }
 </script>
+
+<style scoped>
+   /* //然后给对应的单元格样式 */
+ >>>.vxe-table .vxe-body--row .vxe-body--column.class-style-yellow{
+   background-color:  #FFFF00;
+ }
+   >>>.vxe-table .vxe-body--row .vxe-body--column.class-style-red{
+     background-color: #FF0000;
+     color: #ffffff;
+   }
+</style>
+<!--&gt;>>.vxe-table .vxe-body&#45;&#45;row .vxe-body&#45;&#45;column.class-style .vxe-cell .vxe-cell&#45;&#45;label{-->