xushili 1 vuosi sitten
vanhempi
commit
e3f73dd939

+ 44 - 0
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/controller/bmk/MyTest.java

@@ -0,0 +1,44 @@
+package com.gyee.runeconomy.controller.bmk;
+
+import com.gyee.common.util.DoubleUtils;
+import com.gyee.runeconomy.init.CacheContext;
+import com.gyee.runeconomy.model.auto.ProBasicOrganizeTree;
+import com.gyee.runeconomy.model.fitting.ProEconInPowerCurveFitting;
+import com.gyee.runeconomy.service.fitting.IProEconInPowerCurveFittingService;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+@Order(2)
+public class MyTest implements CommandLineRunner {
+
+    @Resource
+    private IProEconInPowerCurveFittingService inPowerCurveFittingService;
+
+    @Override
+    public void run(String... args) throws Exception {
+        int count = inPowerCurveFittingService.count();
+        if(count<10000) {
+            List<ProBasicOrganizeTree> collect = CacheContext.wtls.stream().filter(wtl -> wtl.getEleType() == "G").collect(Collectors.toList());
+
+            List<ProEconInPowerCurveFitting> list = new ArrayList<>();
+            for (int i = 0; i < 1001; i++) {
+                for (ProBasicOrganizeTree tree : collect) {
+                    ProEconInPowerCurveFitting econ = new ProEconInPowerCurveFitting();
+                    econ.setInverterId(tree.getId());
+                    econ.setIllumination((double) i);
+                    econ.setActualPower(DoubleUtils.keepPrecision(i / 60, 2));
+                    econ.setOptimalPower(DoubleUtils.keepPrecision(i / 55, 2));
+                    list.add(econ);
+                }
+            }
+            inPowerCurveFittingService.saveBatch(list);
+        }
+    }
+}

+ 8 - 0
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/init/CacheContext.java

@@ -6,14 +6,17 @@ import com.alibaba.fastjson.TypeReference;
 import com.gyee.common.model.StringUtils;
 import com.gyee.common.model.StringUtils;
 import com.gyee.runeconomy.model.auto.*;
 import com.gyee.runeconomy.model.auto.*;
 import com.gyee.runeconomy.model.fitting.ProBasicOrganizeEquipment;
 import com.gyee.runeconomy.model.fitting.ProBasicOrganizeEquipment;
+import com.gyee.runeconomy.model.fitting.ProEconInPowerCurveFitting;
 import com.gyee.runeconomy.service.auto.*;
 import com.gyee.runeconomy.service.auto.*;
 import com.gyee.runeconomy.service.fitting.IProBasicOrganizeEquipmentService;
 import com.gyee.runeconomy.service.fitting.IProBasicOrganizeEquipmentService;
+import com.gyee.runeconomy.service.fitting.IProEconInPowerCurveFittingService;
 import com.gyee.runeconomy.service.fitting.ProBasicOrganizeEquipmentServiceImpl;
 import com.gyee.runeconomy.service.fitting.ProBasicOrganizeEquipmentServiceImpl;
 import com.gyee.runeconomy.service.realtimelibrary.TheoreticalPowerService;
 import com.gyee.runeconomy.service.realtimelibrary.TheoreticalPowerService;
 import com.gyee.runeconomy.util.redis.RedisService;
 import com.gyee.runeconomy.util.redis.RedisService;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -28,6 +31,7 @@ import java.util.stream.Collectors;
  * @Description : 缓存
  * @Description : 缓存
  */
  */
 @Component
 @Component
+@Order(1)
 public class CacheContext implements CommandLineRunner {
 public class CacheContext implements CommandLineRunner {
     Logger logger = LoggerFactory.getLogger(CacheContext.class);
     Logger logger = LoggerFactory.getLogger(CacheContext.class);
 
 
@@ -88,6 +92,8 @@ public class CacheContext implements CommandLineRunner {
     private IProEconPowerstationInfoDay1Service proEconPowerstationInfoDay1Service;
     private IProEconPowerstationInfoDay1Service proEconPowerstationInfoDay1Service;
     @Resource
     @Resource
     private IProEconWtPowerCurveFittingService wtPowerCurveFittingService;
     private IProEconWtPowerCurveFittingService wtPowerCurveFittingService;
+    @Resource
+    private IProEconInPowerCurveFittingService inPowerCurveFittingService;
 
 
     public static List<ProBasicBranch> bnls = new ArrayList<>();
     public static List<ProBasicBranch> bnls = new ArrayList<>();
     //    public static List<ProBasicEquipment> wtls = new ArrayList<>();
     //    public static List<ProBasicEquipment> wtls = new ArrayList<>();
@@ -178,6 +184,7 @@ public class CacheContext implements CommandLineRunner {
     public static Map<String, ProBasicOrganizeTree> proBasicOrganizeTreesMap;
     public static Map<String, ProBasicOrganizeTree> proBasicOrganizeTreesMap;
     public static List<ProBasicOrganizeEquipment> organizeEquipmentList;//把树形展开的设备列表
     public static List<ProBasicOrganizeEquipment> organizeEquipmentList;//把树形展开的设备列表
     public static List<ProEconWtPowerCurveFitting> wtPowerCurveFittingList;
     public static List<ProEconWtPowerCurveFitting> wtPowerCurveFittingList;
+    public static List<ProEconInPowerCurveFitting> inPowerCurveFittingList;
 
 
     @Override
     @Override
     public void run(String... args) throws Exception {
     public void run(String... args) throws Exception {
@@ -188,6 +195,7 @@ public class CacheContext implements CommandLineRunner {
 
 
         organizeEquipmentList = proBasicOrganizeEquipmentService.list().stream().filter(pboe -> pboe.getIsAble() == 1).collect(Collectors.toList());
         organizeEquipmentList = proBasicOrganizeEquipmentService.list().stream().filter(pboe -> pboe.getIsAble() == 1).collect(Collectors.toList());
         wtPowerCurveFittingList = wtPowerCurveFittingService.list();
         wtPowerCurveFittingList = wtPowerCurveFittingService.list();
+        inPowerCurveFittingList = inPowerCurveFittingService.list();
 
 
         //List<String> pbotids = proBasicOrganizeTrees.stream().map(pbot -> pbot.getId()).collect(Collectors.toList());
         //List<String> pbotids = proBasicOrganizeTrees.stream().map(pbot -> pbot.getId()).collect(Collectors.toList());
         //Map<String, Object> pbotidMap = redisService.batchGetKeys(pbotids);
         //Map<String, Object> pbotidMap = redisService.batchGetKeys(pbotids);

+ 16 - 0
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/mapper/fitting/ProEconInPowerCurveFittingMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.runeconomy.mapper.fitting;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gyee.runeconomy.model.fitting.ProEconInPowerCurveFitting;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-06-20
+ */
+public interface ProEconInPowerCurveFittingMapper extends BaseMapper<ProEconInPowerCurveFitting> {
+
+}

+ 80 - 0
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/model/fitting/ProEconInPowerCurveFitting.java

@@ -0,0 +1,80 @@
+package com.gyee.runeconomy.model.fitting;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-06-20
+ */
+@TableName("pro_econ_in_power_curve_fitting")
+public class ProEconInPowerCurveFitting implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Integer id;
+
+    private String inverterId;
+
+    private Double illumination;
+
+    private Double actualPower;
+
+    private Double optimalPower;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getInverterId() {
+        return inverterId;
+    }
+
+    public void setInverterId(String inverterId) {
+        this.inverterId = inverterId;
+    }
+
+    public Double getIllumination() {
+        return illumination;
+    }
+
+    public void setIllumination(Double illumination) {
+        this.illumination = illumination;
+    }
+
+    public Double getActualPower() {
+        return actualPower;
+    }
+
+    public void setActualPower(Double actualPower) {
+        this.actualPower = actualPower;
+    }
+
+    public Double getOptimalPower() {
+        return optimalPower;
+    }
+
+    public void setOptimalPower(Double optimalPower) {
+        this.optimalPower = optimalPower;
+    }
+
+    @Override
+    public String toString() {
+        return "ProEconInPowerCurveFitting{" +
+            "id = " + id +
+            ", inverterId = " + inverterId +
+            ", illumination = " + illumination +
+            ", actualPower = " + actualPower +
+            ", optimalPower = " + optimalPower +
+        "}";
+    }
+}

+ 29 - 6
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/service/PerformanceCurvefittingService.java

@@ -8,10 +8,8 @@ import com.gyee.common.util.SortUtils;
 import com.gyee.common.vo.curve.CurveVo;
 import com.gyee.common.vo.curve.CurveVo;
 import com.gyee.runeconomy.dto.ZllglDTO;
 import com.gyee.runeconomy.dto.ZllglDTO;
 import com.gyee.runeconomy.init.CacheContext;
 import com.gyee.runeconomy.init.CacheContext;
-import com.gyee.runeconomy.model.auto.ProBasicOrganizeTree;
-import com.gyee.runeconomy.model.auto.ProEconWtCurveFitting;
-import com.gyee.runeconomy.model.auto.ProEconWtCurveFittingMonth;
-import com.gyee.runeconomy.model.auto.ProEconWtCurveFittingYear;
+import com.gyee.runeconomy.model.auto.*;
+import com.gyee.runeconomy.model.fitting.ProEconInPowerCurveFitting;
 import com.gyee.runeconomy.service.auto.IProEconWtCurveFittingMonthService;
 import com.gyee.runeconomy.service.auto.IProEconWtCurveFittingMonthService;
 import com.gyee.runeconomy.service.auto.IProEconWtCurveFittingService;
 import com.gyee.runeconomy.service.auto.IProEconWtCurveFittingService;
 import com.gyee.runeconomy.service.auto.IProEconWtCurveFittingYearService;
 import com.gyee.runeconomy.service.auto.IProEconWtCurveFittingYearService;
@@ -46,7 +44,7 @@ public class PerformanceCurvefittingService {
         Map<String, List<CurveVo>> resultMap = new HashMap<>();
         Map<String, List<CurveVo>> resultMap = new HashMap<>();
         Map<String, ProBasicOrganizeTree> wtmap = CacheContext.wtmap;
         Map<String, ProBasicOrganizeTree> wtmap = CacheContext.wtmap;
         if (type.equals("-1")) {
         if (type.equals("-1")) {
-            String zbzgl = redisService.get("ZLLGL");
+            /*String zbzgl = redisService.get("ZLLGL");
             Map<String, Map<Double, ZllglDTO>> zbzglMap = JSONObject.parseObject(zbzgl, new TypeReference<Map<String, Map<Double, ZllglDTO>>>() {
             Map<String, Map<Double, ZllglDTO>> zbzglMap = JSONObject.parseObject(zbzgl, new TypeReference<Map<String, Map<Double, ZllglDTO>>>() {
             });
             });
             Map<String, Map<Double, Double>> znhglMap = getWtCurveFitting(windturbineIds, dateType);
             Map<String, Map<Double, Double>> znhglMap = getWtCurveFitting(windturbineIds, dateType);
@@ -73,9 +71,34 @@ public class PerformanceCurvefittingService {
                     resultMap.put("list", tempList);
                     resultMap.put("list", tempList);
                     resultMap.put("chanrt", tempList.stream().filter(i ->  (i.getSpeed()%Double.valueOf(0.5))==0).collect(Collectors.toList()));
                     resultMap.put("chanrt", tempList.stream().filter(i ->  (i.getSpeed()%Double.valueOf(0.5))==0).collect(Collectors.toList()));
                 }
                 }
+            }*/
+            List<ProEconWtPowerCurveFitting> collect = CacheContext.wtPowerCurveFittingList.stream().filter(wpcf -> windturbineIds.contains(wpcf.getWindturbineId())).collect(Collectors.toList());
+            List<CurveVo> tempList = new ArrayList<>();
+            for (ProEconWtPowerCurveFitting fitting : collect) {
+                CurveVo vo = new CurveVo();
+                vo.setWtid(fitting.getWindturbineId());
+                vo.setNemCode(wtmap.get(fitting.getWindturbineId()).getAname());
+                vo.setSpeed(fitting.getSpeed());
+                vo.setTheorypower(DoubleUtils.keepPrecision(fitting.getOptimalPower(), 2));
+                vo.setEnsurepower(DoubleUtils.keepPrecision(fitting.getActualPower(), 2));
+                tempList.add(vo);
             }
             }
+            resultMap.put("list", tempList);
+            resultMap.put("chanrt", tempList.stream().filter(i ->  (i.getSpeed()%Double.valueOf(0.5))==0).collect(Collectors.toList()));
         }else {
         }else {
-
+            List<ProEconInPowerCurveFitting> collect = CacheContext.inPowerCurveFittingList.stream().filter(wpcf -> windturbineIds.contains(wpcf.getInverterId())).collect(Collectors.toList());
+            List<CurveVo> tempList = new ArrayList<>();
+            for (ProEconInPowerCurveFitting fitting : collect) {
+                CurveVo vo = new CurveVo();
+                vo.setWtid(fitting.getInverterId());
+                vo.setNemCode(wtmap.get(fitting.getInverterId()).getAname());
+                vo.setSpeed(fitting.getIllumination());
+                vo.setTheorypower(fitting.getActualPower());
+                vo.setEnsurepower(fitting.getActualPower());
+                tempList.add(vo);
+            }
+            resultMap.put("list", tempList);
+            resultMap.put("chanrt", tempList.stream().filter(i ->  (i.getSpeed()%Double.valueOf(2))==0).collect(Collectors.toList()));
         }
         }
 
 
         return resultMap;
         return resultMap;

+ 7 - 2
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/service/bmk/BenchmarkingService.java

@@ -889,7 +889,7 @@ public class BenchmarkingService {
     public List<WxsslVo> details(String id, String beginDate, String endDate, String target, String sort) {
     public List<WxsslVo> details(String id, String beginDate, String endDate, String target, String sort) {
         List<WxsslVo> resultList = new ArrayList<>();
         List<WxsslVo> resultList = new ArrayList<>();
         QueryWrapper<ProEconEquipmentInfoDay1> qw = new QueryWrapper<>();
         QueryWrapper<ProEconEquipmentInfoDay1> qw = new QueryWrapper<>();
-        qw.select("windturbine_id,sum(rfdl) rfdl,sum(rllfdl) rllfdl,avg(rpjfs) rpjfs,sum(rjxssdl) rjxssdl,sum(rcnsljxssdl) rcnsljxssdl,sum(rgzssdl) rgzssdl,sum(rcnslgzssdl) rcnslgzssdl,sum(rxdtjssdl) rxdtjssdl,sum(rxdjclssdl) rxdjclssdl,sum(rdjssdl) rdjssdl,sum(rqxjclssdl) rqxjclssdl,sum(rsdtjssdl) rsdtjssdl,sum(rxnssdl) rxnssdl,sum(rcwsldwssdl) rcwsldwssdl,sum(rcwsltqssdl) rcwsltqssdl");
+        String sql = "sum(rfdl) rfdl,sum(rllfdl) rllfdl,avg(rpjfs) rpjfs,sum(rjxssdl) rjxssdl,sum(rcnsljxssdl) rcnsljxssdl,sum(rgzssdl) rgzssdl,sum(rcnslgzssdl) rcnslgzssdl,sum(rxdtjssdl) rxdtjssdl,sum(rxdjclssdl) rxdjclssdl,sum(rdjssdl) rdjssdl,sum(rqxjclssdl) rqxjclssdl,sum(rsdtjssdl) rsdtjssdl,sum(rxnssdl) rxnssdl,sum(rcwsldwssdl) rcwsldwssdl,sum(rcwsltqssdl) rcwsltqssdl";
         qw.ge("record_date", DateUtils.parseDate(beginDate)).le("record_date", DateUtils.parseDate(endDate));
         qw.ge("record_date", DateUtils.parseDate(beginDate)).le("record_date", DateUtils.parseDate(endDate));
 
 
         if (id.endsWith("STA")) {
         if (id.endsWith("STA")) {
@@ -905,13 +905,18 @@ public class BenchmarkingService {
         } else if (id.endsWith("ZGS")) {
         } else if (id.endsWith("ZGS")) {
             qw.eq("company_id", id);
             qw.eq("company_id", id);
         }
         }
+
+        List<WxsslVo> wxsslVoList;
         if (id.endsWith("ZGS")) {
         if (id.endsWith("ZGS")) {
+            qw.select("windpowerstation_id,"+sql);
             qw.groupBy("windpowerstation_id");
             qw.groupBy("windpowerstation_id");
+            wxsslVoList = getWxsslSortVos(qw, resultList, TYPE_WIND);
         } else {
         } else {
+            qw.select("windturbine_id,"+sql);
             qw.groupBy("windturbine_id");
             qw.groupBy("windturbine_id");
+            wxsslVoList = getWxsslSortVos(qw, resultList, TYPE_WINDTURBINE);
         }
         }
 
 
-        List<WxsslVo> wxsslVoList = getWxsslSortVos(qw, resultList, TYPE_WINDTURBINE);
         if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)) {
         if (StringUtils.isNotEmpty(target) && StringUtils.isNotEmpty(sort)) {
             if (sort.equals("1")) {
             if (sort.equals("1")) {
                 SortUtils.sort(resultList, target, SortUtils.ASC);
                 SortUtils.sort(resultList, target, SortUtils.ASC);

+ 16 - 0
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/service/fitting/IProEconInPowerCurveFittingService.java

@@ -0,0 +1,16 @@
+package com.gyee.runeconomy.service.fitting;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.runeconomy.model.fitting.ProEconInPowerCurveFitting;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-06-20
+ */
+public interface IProEconInPowerCurveFittingService extends IService<ProEconInPowerCurveFitting> {
+
+}

+ 19 - 0
web/runeconomy-jjyx/src/main/java/com/gyee/runeconomy/service/fitting/ProEconInPowerCurveFittingServiceImpl.java

@@ -0,0 +1,19 @@
+package com.gyee.runeconomy.service.fitting;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.runeconomy.model.fitting.ProEconInPowerCurveFitting;
+import com.gyee.runeconomy.mapper.fitting.ProEconInPowerCurveFittingMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gfhd
+ * @since 2023-06-20
+ */
+@Service
+public class ProEconInPowerCurveFittingServiceImpl extends ServiceImpl<ProEconInPowerCurveFittingMapper, ProEconInPowerCurveFitting> implements IProEconInPowerCurveFittingService {
+
+}