Ver código fonte

光伏分析5

xushili 1 ano atrás
pai
commit
146375197b

+ 73 - 0
power-fitting-JN/src/main/java/com.gyee.power.fitting/controller/gf/PhotovoltaicAnalysisController.java

@@ -0,0 +1,73 @@
+package com.gyee.power.fitting.controller.gf;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.power.fitting.common.result.JsonResult;
+import com.gyee.power.fitting.common.result.ResultCode;
+import com.gyee.power.fitting.model.PhotovoltaicAnalysis;
+import com.gyee.power.fitting.model.ProBasicEquipment;
+import com.gyee.power.fitting.service.IPhotovoltaicAnalysisService;
+import com.gyee.power.fitting.service.ProBasicEquipmentService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 光伏分析 前端控制器
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-10-13
+ */
+@RestController
+@RequestMapping("/photovoltaic")
+public class PhotovoltaicAnalysisController {
+
+    @Resource
+    private IPhotovoltaicAnalysisService photovoltaicAnalysisService;
+    @Resource
+    private ProBasicEquipmentService proBasicEquipmentService;
+
+    @GetMapping("/analysis")
+    public JSONObject photovoltaicAnalysis(
+            @RequestParam("stationId") String stationId,
+            @RequestParam("time") String time,
+            @RequestParam("timeType") String timeType) {
+
+        Date date, startDate, endDate;
+        if ("year".equals(timeType)) {
+            date = DateUtil.parse(time, "yyyy");
+            startDate = DateUtil.beginOfYear(date);
+            endDate = DateUtil.endOfYear(date);
+        } else if ("month".equals(timeType)) {
+            date = DateUtil.parse(time, "yyyy-MM");
+            startDate = DateUtil.beginOfMonth(date);
+            endDate = DateUtil.endOfMonth(date);
+        } else {
+            date = DateUtil.parse(time);
+            startDate = DateUtil.beginOfDay(date);
+            endDate = DateUtil.endOfDay(date);
+        }
+
+        QueryWrapper<PhotovoltaicAnalysis> wrapper = new QueryWrapper<>();
+        wrapper.select("stationId,equipmentId,avg(scatter) scatter,(sum(average_theory_power)*100/sum(conversion_efficiency))" +
+                        " conversion_efficiency,sum(equivalent_generating_time) equivalent_generating_time," +
+                        "avg(device_availability) device_availability").between("data_date", startDate, endDate)
+                .groupBy("equipment_id").orderByAsc("equipment_id");
+        List<PhotovoltaicAnalysis> list = photovoltaicAnalysisService.list(wrapper);
+
+        List<ProBasicEquipment> in = proBasicEquipmentService.getStationMap("IN").get(stationId);
+        Map<String, String> collect = in.stream().collect(Collectors.toMap(ProBasicEquipment::getId, ProBasicEquipment::getAname));
+        list = list.stream().peek(pa -> pa.setEquipmentId(collect.get(pa.getEquipmentId()))).collect(Collectors.toList());
+        return JsonResult.successData(ResultCode.SUCCESS, list);
+    }
+}

+ 11 - 10
power-fitting-JN/src/main/java/com.gyee.power.fitting/model/PhotovoltaicAnalysis.java

@@ -1,5 +1,6 @@
 package com.gyee.power.fitting.model;
 
+import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -122,7 +123,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getConversionEfficiency() {
-        return conversionEfficiency;
+        return NumberUtil.round(conversionEfficiency, 2).doubleValue();
     }
 
     public void setConversionEfficiency(Double conversionEfficiency) {
@@ -170,7 +171,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getAveragePower() {
-        return averagePower;
+        return NumberUtil.round(averagePower, 2).doubleValue();
     }
 
     public void setAveragePower(Double averagePower) {
@@ -178,7 +179,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getScatter() {
-        return scatter;
+        return NumberUtil.round(scatter, 2).doubleValue();
     }
 
     public void setScatter(Double scatter) {
@@ -194,7 +195,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getGeneratingAmount() {
-        return generatingAmount;
+        return NumberUtil.round(generatingAmount, 2).doubleValue();
     }
 
     public void setGeneratingAmount(Double generatingAmount) {
@@ -202,7 +203,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getEquivalentGeneratingTime() {
-        return equivalentGeneratingTime;
+        return NumberUtil.round(equivalentGeneratingTime, 2).doubleValue();
     }
 
     public void setEquivalentGeneratingTime(Double equivalentGeneratingTime) {
@@ -210,7 +211,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getAverageEquivalentGeneratingT() {
-        return averageEquivalentGeneratingT;
+        return NumberUtil.round(averageEquivalentGeneratingT, 2).doubleValue();
     }
 
     public void setAverageEquivalentGeneratingT(Double averageEquivalentGeneratingT) {
@@ -218,7 +219,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getEquivalentGeneratingTimeStan() {
-        return equivalentGeneratingTimeStan;
+        return NumberUtil.round(equivalentGeneratingTimeStan, 3).doubleValue();
     }
 
     public void setEquivalentGeneratingTimeStan(Double equivalentGeneratingTimeStan) {
@@ -234,7 +235,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getAverageTheoryPower() {
-        return averageTheoryPower;
+        return NumberUtil.round(averageTheoryPower, 2).doubleValue();
     }
 
     public void setAverageTheoryPower(Double averageTheoryPower) {
@@ -250,7 +251,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getMalfunctionTime() {
-        return malfunctionTime;
+        return NumberUtil.round(malfunctionTime, 3).doubleValue();
     }
 
     public void setMalfunctionTime(Double malfunctionTime) {
@@ -258,7 +259,7 @@ public class PhotovoltaicAnalysis implements Serializable {
     }
 
     public Double getDeviceAvailability() {
-        return deviceAvailability;
+        return NumberUtil.round(deviceAvailability, 2).doubleValue();
     }
 
     public void setDeviceAvailability(Double deviceAvailability) {

+ 4 - 2
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/ProBasicEquipmentService.java

@@ -1,10 +1,10 @@
 package com.gyee.power.fitting.service;
 
-import com.gyee.power.fitting.model.ProBasicEquipment;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.gyee.power.fitting.model.Windturbine;
+import com.gyee.power.fitting.model.ProBasicEquipment;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -20,4 +20,6 @@ public interface ProBasicEquipmentService extends IService<ProBasicEquipment> {
     List<ProBasicEquipment> getlist();
 
     List<ProBasicEquipment> selectList(String station);
+
+    Map<String, List<ProBasicEquipment>> getStationMap(String type);
 }

+ 16 - 5
power-fitting-JN/src/main/java/com.gyee.power.fitting/service/impl/ProBasicEquipmentServiceImpl.java

@@ -1,15 +1,18 @@
 package com.gyee.power.fitting.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.power.fitting.common.base.ExcludeQueryWrapper;
-import com.gyee.power.fitting.model.ProBasicEquipment;
 import com.gyee.power.fitting.mapper.ProBasicEquipmentMapper;
-import com.gyee.power.fitting.model.Windturbine;
+import com.gyee.power.fitting.model.ProBasicEquipment;
 import com.gyee.power.fitting.service.ProBasicEquipmentService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -37,12 +40,20 @@ public class ProBasicEquipmentServiceImpl extends ServiceImpl<ProBasicEquipmentM
         ExcludeQueryWrapper wrapper = new ExcludeQueryWrapper();
         wrapper.eq("windpowerstation_id", station);
 
-        try{
+        try {
             list = baseMapper.selectList(wrapper);
-        }catch (Exception e){
+        } catch (Exception e) {
             log.error("WindturbineServiceImpl--selectList", e);
         }
 
         return list;
     }
+
+    @Cacheable
+    public Map<String, List<ProBasicEquipment>> getStationMap(String type) {
+        QueryWrapper<ProBasicEquipment> eWrapper = new QueryWrapper<>();
+        eWrapper.eq("spare1", type);
+        List<ProBasicEquipment> eList = baseMapper.selectList(eWrapper);
+        return eList.stream().collect(Collectors.groupingBy(ProBasicEquipment::getWindpowerstationId));
+    }
 }