Prechádzať zdrojové kódy

值机对标、性能对标接口,接口BUG修改

shilin 4 rokov pred
rodič
commit
4dcb28cacc
20 zmenil súbory, kde vykonal 3054 pridanie a 924 odobranie
  1. 6 1
      src/main/java/com/gyee/frame/common/spring/InitialRunner.java
  2. 1 1
      src/main/java/com/gyee/frame/controller/contrast/ContrastController.java
  3. 168 0
      src/main/java/com/gyee/frame/controller/leaderboard/LeaderboardController.java
  4. 97 0
      src/main/java/com/gyee/frame/mapper/auto/ModelpowerRdMapper.java
  5. 9 10
      src/main/java/com/gyee/frame/model/auto/ActivePowerData.java
  6. 178 0
      src/main/java/com/gyee/frame/model/auto/ModelpowerRd.java
  7. 622 0
      src/main/java/com/gyee/frame/model/auto/ModelpowerRdExample.java
  8. 207 208
      src/main/java/com/gyee/frame/model/auto/WindTurbineInfoDay.java
  9. 691 691
      src/main/java/com/gyee/frame/model/auto/WindTurbineInfoDayExample.java
  10. 70 0
      src/main/java/com/gyee/frame/model/custom/StatisticalAnalysisRnewTopVo.java
  11. 92 0
      src/main/java/com/gyee/frame/model/custom/StatisticalAnalysisTopVo.java
  12. 128 2
      src/main/java/com/gyee/frame/service/ActivePowerDataService.java
  13. 6 3
      src/main/java/com/gyee/frame/service/CurvefittingmonthmainService.java
  14. 126 0
      src/main/java/com/gyee/frame/service/ModelpowerRdService.java
  15. 26 0
      src/main/java/com/gyee/frame/service/WindturbinecurvefittingmonthService.java
  16. 71 3
      src/main/java/com/gyee/frame/service/WindturbineinfodayService.java
  17. 211 0
      src/main/java/com/gyee/frame/service/leaderboard/LeaderboardService.java
  18. 1 5
      src/main/resources/mybatis-generator.xml
  19. 271 0
      src/main/resources/mybatis/auto/ModelpowerRdMapper.xml
  20. 73 0
      src/test/java/test/LeaderboardTest.java

+ 6 - 1
src/main/java/com/gyee/frame/common/spring/InitialRunner.java

@@ -36,6 +36,9 @@ public class InitialRunner implements CommandLineRunner {
     private WindturbinepowercurvefittingService windturbinepowercurvefittingService;
     @Resource
     private WarningService warningService;
+    @Resource
+    private ModelpowerRdService modelpowerRdService;
+
     public static List<Windpowerstation> wpallls = new ArrayList<Windpowerstation>(); // 风电场LIST集合
     public static List<Windpowerstation> wpls = new ArrayList<Windpowerstation>(); // 风电场LIST集合
     public static List<Project> pjls = new ArrayList<Project>(); // 项目LIST集合
@@ -52,7 +55,7 @@ public class InitialRunner implements CommandLineRunner {
     public static Map<String, List<Windturbine>> ln_wtmap = new HashMap<String, List<Windturbine>>();
     public static Map<String, List<Project>> pjsmap = new HashMap<String, List<Project>>(); // 通过风场编号获得所属项目
     public static Map<String, List<Line>> lnsmap = new HashMap<String, List<Line>>(); // 通过项目编号获得所属线路
-
+    public static Map<String, Map<Double, ModelpowerRd>> mprdMap = new HashMap<String, Map<Double, ModelpowerRd>>();
     public static Map<String, Map<String, WindTurbineTestingPointAi2>> wtpAimap = new HashMap<String, Map<String, WindTurbineTestingPointAi2>>();// 风电机测点AI表
     public static Map<String, Map<String, WindPowerStationTestingPoint2>> stationPointmap = new HashMap<String, Map<String, WindPowerStationTestingPoint2>>();//场站测点
     public static Map<String, SysQuartzJob>  jobsmap = new HashMap<String, SysQuartzJob>();
@@ -143,6 +146,8 @@ public class InitialRunner implements CommandLineRunner {
             }
         }
 
+        mprdMap=modelpowerRdService.getModelpowerRdAllMap();
+
 //        WindturbinepowercurvefittingExample windturbinepowercurvefittingExample=new WindturbinepowercurvefittingExample();
 //        windturbinepowercurvefittingExample.setOrderByClause("WINDTURBINEID ASC,speed ASC");
 //        List<Windturbinepowercurvefitting> wpclist= windturbinepowercurvefittingService.selectByExample(windturbinepowercurvefittingExample);

+ 1 - 1
src/main/java/com/gyee/frame/controller/contrast/ContrastController.java

@@ -102,7 +102,7 @@ public class ContrastController {
         List<BenchMarkVo> vos =new ArrayList<>();
 
 
-            vos =contrastWtService.benchmarkWtList(wpId,wtId,beginDate, endDate);
+            vos =contrastWtService.benchmarkWpInWtList(wpId,wtId,beginDate, endDate);
 
         if (vos != null && !vos.isEmpty()) {
             BenchmarkUtil bu = new BenchmarkUtil();

+ 168 - 0
src/main/java/com/gyee/frame/controller/leaderboard/LeaderboardController.java

@@ -0,0 +1,168 @@
+package com.gyee.frame.controller.leaderboard;
+
+import com.gyee.frame.common.conf.AjaxStatus;
+import com.gyee.frame.common.domain.AjaxResult;
+import com.gyee.frame.model.custom.StatisticalAnalysisTopVo;
+import com.gyee.frame.model.custom.Tablepar;
+import com.gyee.frame.service.leaderboard.LeaderboardService;
+import com.gyee.frame.util.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.*;
+
+@Controller
+@RequestMapping("/leaderboard")
+public class LeaderboardController {
+    @Autowired
+    private LeaderboardService leaderboardService;
+
+    /**查询拟合优度列表**/
+    @GetMapping("/fittingtoplist")
+    @ResponseBody
+    public AjaxResult fittingtoplist(Tablepar tablepar, String wpIps, Date beginDate, Date endDate) {
+
+
+        List<StatisticalAnalysisTopVo> vos= leaderboardService.getRnewTopDate(wpIps, beginDate, endDate);
+
+        for (StatisticalAnalysisTopVo vo : vos) {
+            if (vo.getPower() > 1) {
+                vo.setPower(1.0);
+            }
+        }
+
+        if (tablepar.getOrderByColumn().equals("power")) {
+            if (tablepar.getIsAsc().equals("asc")) {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg0.getPower().compareTo(arg1.getPower());
+                    }
+
+                });
+
+            } else {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg1.getPower().compareTo(arg0.getPower());
+                    }
+
+                });
+            }
+        } else if (tablepar.getOrderByColumn().equals("speed")) {
+            if (tablepar.getIsAsc().equals("asc")) {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg0.getSpeed().compareTo(arg1.getSpeed());
+                    }
+
+                });
+
+            } else {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg1.getSpeed().compareTo(arg0.getSpeed());
+                    }
+
+                });
+            }
+        }
+
+        if (vos != null && !vos.isEmpty()) {
+            return AjaxResult.successData(AjaxStatus.success.code, vos);
+        } else {
+            return AjaxResult.successData(AjaxStatus.emptyresultset.code, vos);
+        }
+
+    }
+
+
+    /**查询拟合优度图表**/
+    @GetMapping("/fittingtopchart")
+    @ResponseBody
+    public AjaxResult fittingtopchart(String wtIds, Date beginDate, Date endDate) throws Exception {
+
+        Map<String, List> map =new HashMap<>();
+        if (StringUtils.notEmp(wtIds) && StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
+            map = leaderboardService.fittingtopchart(wtIds, beginDate, endDate);
+        }
+
+        if (map != null && !map.isEmpty()) {
+            return AjaxResult.successData(AjaxStatus.success.code, map);
+        } else {
+            return AjaxResult.successData(AjaxStatus.emptyresultset.code, map);
+        }
+    }
+
+    /**查询总发电量排行列表**/
+    @GetMapping("/totalPowerCapacityTopList")
+    @ResponseBody
+    public AjaxResult totalPowerCapacityTopList(Tablepar tablepar, String wpIps, Date beginDate, Date endDate) {
+
+
+        List<StatisticalAnalysisTopVo> vos= leaderboardService.getWindturbineinfo(wpIps, beginDate, endDate);
+
+
+        if (tablepar.getOrderByColumn().equals("power")) {
+            if (tablepar.getIsAsc().equals("asc")) {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg0.getPower().compareTo(arg1.getPower());
+                    }
+
+                });
+
+            } else {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg1.getPower().compareTo(arg0.getPower());
+                    }
+
+                });
+            }
+        } else if (tablepar.getOrderByColumn().equals("speed")) {
+            if (tablepar.getIsAsc().equals("asc")) {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg0.getSpeed().compareTo(arg1.getSpeed());
+                    }
+
+                });
+
+            } else {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg1.getSpeed().compareTo(arg0.getSpeed());
+                    }
+
+                });
+            }
+        } else if (tablepar.getOrderByColumn().equals("generatingcapacity")) {
+            if (tablepar.getIsAsc().equals("asc")) {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg0.getSpeed().compareTo(arg1.getSpeed());
+                    }
+
+                });
+
+            } else {
+                Collections.sort(vos, new Comparator<StatisticalAnalysisTopVo>() {
+                    public int compare(StatisticalAnalysisTopVo arg0, StatisticalAnalysisTopVo arg1) {
+                        return arg1.getSpeed().compareTo(arg0.getSpeed());
+                    }
+
+                });
+            }
+        }
+
+        if (vos != null && !vos.isEmpty()) {
+            return AjaxResult.successData(AjaxStatus.success.code, vos);
+        } else {
+            return AjaxResult.successData(AjaxStatus.emptyresultset.code, vos);
+        }
+
+    }
+}

+ 97 - 0
src/main/java/com/gyee/frame/mapper/auto/ModelpowerRdMapper.java

@@ -0,0 +1,97 @@
+package com.gyee.frame.mapper.auto;
+
+import com.gyee.frame.model.auto.ModelpowerRd;
+import com.gyee.frame.model.auto.ModelpowerRdExample;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ModelpowerRdMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    long countByExample(ModelpowerRdExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int deleteByExample(ModelpowerRdExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int deleteByPrimaryKey(String id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int insert(ModelpowerRd record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int insertSelective(ModelpowerRd record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    List<ModelpowerRd> selectByExample(ModelpowerRdExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    ModelpowerRd selectByPrimaryKey(String id);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int updateByExampleSelective(@Param("record") ModelpowerRd record, @Param("example") ModelpowerRdExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int updateByExample(@Param("record") ModelpowerRd record, @Param("example") ModelpowerRdExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int updateByPrimaryKeySelective(ModelpowerRd record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    int updateByPrimaryKey(ModelpowerRd record);
+}

+ 9 - 10
src/main/java/com/gyee/frame/model/auto/ActivePowerData.java

@@ -1,7 +1,6 @@
 package com.gyee.frame.model.auto;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.Date;
 
 public class ActivePowerData implements Serializable {
@@ -57,7 +56,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    private BigDecimal speed;
+    private Double speed;
 
     /**
      *
@@ -66,7 +65,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    private BigDecimal power;
+    private Double power;
 
     /**
      *
@@ -75,7 +74,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    private BigDecimal frequency;
+    private Double frequency;
 
     /**
      *
@@ -231,7 +230,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    public BigDecimal getSpeed() {
+    public Double getSpeed() {
         return speed;
     }
 
@@ -243,7 +242,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    public void setSpeed(BigDecimal speed) {
+    public void setSpeed(Double speed) {
         this.speed = speed;
     }
 
@@ -255,7 +254,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    public BigDecimal getPower() {
+    public Double getPower() {
         return power;
     }
 
@@ -267,7 +266,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    public void setPower(BigDecimal power) {
+    public void setPower(Double power) {
         this.power = power;
     }
 
@@ -279,7 +278,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    public BigDecimal getFrequency() {
+    public Double getFrequency() {
         return frequency;
     }
 
@@ -291,7 +290,7 @@ public class ActivePowerData implements Serializable {
      *
      * @mbg.generated
      */
-    public void setFrequency(BigDecimal frequency) {
+    public void setFrequency(Double frequency) {
         this.frequency = frequency;
     }
 

+ 178 - 0
src/main/java/com/gyee/frame/model/auto/ModelpowerRd.java

@@ -0,0 +1,178 @@
+package com.gyee.frame.model.auto;
+
+import java.io.Serializable;
+
+public class ModelpowerRd implements Serializable {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column modelpowerrd.id
+     *
+     * @mbg.generated
+     */
+    private String id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column modelpowerrd.modelid
+     *
+     * @mbg.generated
+     */
+    private String modelid;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column modelpowerrd.speed
+     *
+     * @mbg.generated
+     */
+    private Double speed;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column modelpowerrd.theorypower
+     *
+     * @mbg.generated
+     */
+    private Double theorypower;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column modelpowerrd.ensurepower
+     *
+     * @mbg.generated
+     */
+    private Double ensurepower;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column modelpowerrd.id
+     *
+     * @return the value of modelpowerrd.id
+     *
+     * @mbg.generated
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column modelpowerrd.id
+     *
+     * @param id the value for modelpowerrd.id
+     *
+     * @mbg.generated
+     */
+    public void setId(String id) {
+        this.id = id == null ? null : id.trim();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column modelpowerrd.modelid
+     *
+     * @return the value of modelpowerrd.modelid
+     *
+     * @mbg.generated
+     */
+    public String getModelid() {
+        return modelid;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column modelpowerrd.modelid
+     *
+     * @param modelid the value for modelpowerrd.modelid
+     *
+     * @mbg.generated
+     */
+    public void setModelid(String modelid) {
+        this.modelid = modelid == null ? null : modelid.trim();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column modelpowerrd.speed
+     *
+     * @return the value of modelpowerrd.speed
+     *
+     * @mbg.generated
+     */
+    public Double getSpeed() {
+        return speed;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column modelpowerrd.speed
+     *
+     * @param speed the value for modelpowerrd.speed
+     *
+     * @mbg.generated
+     */
+    public void setSpeed(Double speed) {
+        this.speed = speed;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column modelpowerrd.theorypower
+     *
+     * @return the value of modelpowerrd.theorypower
+     *
+     * @mbg.generated
+     */
+    public Double getTheorypower() {
+        return theorypower;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column modelpowerrd.theorypower
+     *
+     * @param theorypower the value for modelpowerrd.theorypower
+     *
+     * @mbg.generated
+     */
+    public void setTheorypower(Double theorypower) {
+        this.theorypower = theorypower;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column modelpowerrd.ensurepower
+     *
+     * @return the value of modelpowerrd.ensurepower
+     *
+     * @mbg.generated
+     */
+    public Double getEnsurepower() {
+        return ensurepower;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column modelpowerrd.ensurepower
+     *
+     * @param ensurepower the value for modelpowerrd.ensurepower
+     *
+     * @mbg.generated
+     */
+    public void setEnsurepower(Double ensurepower) {
+        this.ensurepower = ensurepower;
+    }
+}

+ 622 - 0
src/main/java/com/gyee/frame/model/auto/ModelpowerRdExample.java

@@ -0,0 +1,622 @@
+package com.gyee.frame.model.auto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ModelpowerRdExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public ModelpowerRdExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(String value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(String value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(String value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(String value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(String value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(String value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLike(String value) {
+            addCriterion("id like", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotLike(String value) {
+            addCriterion("id not like", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<String> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<String> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(String value1, String value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(String value1, String value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidIsNull() {
+            addCriterion("modelid is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidIsNotNull() {
+            addCriterion("modelid is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidEqualTo(String value) {
+            addCriterion("modelid =", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidNotEqualTo(String value) {
+            addCriterion("modelid <>", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidGreaterThan(String value) {
+            addCriterion("modelid >", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidGreaterThanOrEqualTo(String value) {
+            addCriterion("modelid >=", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidLessThan(String value) {
+            addCriterion("modelid <", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidLessThanOrEqualTo(String value) {
+            addCriterion("modelid <=", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidLike(String value) {
+            addCriterion("modelid like", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidNotLike(String value) {
+            addCriterion("modelid not like", value, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidIn(List<String> values) {
+            addCriterion("modelid in", values, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidNotIn(List<String> values) {
+            addCriterion("modelid not in", values, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidBetween(String value1, String value2) {
+            addCriterion("modelid between", value1, value2, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andModelidNotBetween(String value1, String value2) {
+            addCriterion("modelid not between", value1, value2, "modelid");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedIsNull() {
+            addCriterion("speed is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedIsNotNull() {
+            addCriterion("speed is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedEqualTo(Double value) {
+            addCriterion("speed =", value, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedNotEqualTo(Double value) {
+            addCriterion("speed <>", value, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedGreaterThan(Double value) {
+            addCriterion("speed >", value, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedGreaterThanOrEqualTo(Double value) {
+            addCriterion("speed >=", value, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedLessThan(Double value) {
+            addCriterion("speed <", value, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedLessThanOrEqualTo(Double value) {
+            addCriterion("speed <=", value, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedIn(List<Double> values) {
+            addCriterion("speed in", values, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedNotIn(List<Double> values) {
+            addCriterion("speed not in", values, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedBetween(Double value1, Double value2) {
+            addCriterion("speed between", value1, value2, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andSpeedNotBetween(Double value1, Double value2) {
+            addCriterion("speed not between", value1, value2, "speed");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerIsNull() {
+            addCriterion("theorypower is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerIsNotNull() {
+            addCriterion("theorypower is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerEqualTo(Double value) {
+            addCriterion("theorypower =", value, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerNotEqualTo(Double value) {
+            addCriterion("theorypower <>", value, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerGreaterThan(Double value) {
+            addCriterion("theorypower >", value, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerGreaterThanOrEqualTo(Double value) {
+            addCriterion("theorypower >=", value, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerLessThan(Double value) {
+            addCriterion("theorypower <", value, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerLessThanOrEqualTo(Double value) {
+            addCriterion("theorypower <=", value, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerIn(List<Double> values) {
+            addCriterion("theorypower in", values, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerNotIn(List<Double> values) {
+            addCriterion("theorypower not in", values, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerBetween(Double value1, Double value2) {
+            addCriterion("theorypower between", value1, value2, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andTheorypowerNotBetween(Double value1, Double value2) {
+            addCriterion("theorypower not between", value1, value2, "theorypower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerIsNull() {
+            addCriterion("ensurepower is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerIsNotNull() {
+            addCriterion("ensurepower is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerEqualTo(Double value) {
+            addCriterion("ensurepower =", value, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerNotEqualTo(Double value) {
+            addCriterion("ensurepower <>", value, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerGreaterThan(Double value) {
+            addCriterion("ensurepower >", value, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerGreaterThanOrEqualTo(Double value) {
+            addCriterion("ensurepower >=", value, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerLessThan(Double value) {
+            addCriterion("ensurepower <", value, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerLessThanOrEqualTo(Double value) {
+            addCriterion("ensurepower <=", value, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerIn(List<Double> values) {
+            addCriterion("ensurepower in", values, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerNotIn(List<Double> values) {
+            addCriterion("ensurepower not in", values, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerBetween(Double value1, Double value2) {
+            addCriterion("ensurepower between", value1, value2, "ensurepower");
+            return (Criteria) this;
+        }
+
+        public Criteria andEnsurepowerNotBetween(Double value1, Double value2) {
+            addCriterion("ensurepower not between", value1, value2, "ensurepower");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated do_not_delete_during_merge
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table modelpowerrd
+     *
+     * @mbg.generated
+     */
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 207 - 208
src/main/java/com/gyee/frame/model/auto/WindTurbineInfoDay.java


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 691 - 691
src/main/java/com/gyee/frame/model/auto/WindTurbineInfoDayExample.java


+ 70 - 0
src/main/java/com/gyee/frame/model/custom/StatisticalAnalysisRnewTopVo.java

@@ -0,0 +1,70 @@
+package com.gyee.frame.model.custom;
+
+public class StatisticalAnalysisRnewTopVo {
+	private Integer num;
+	private String windPowerStationId;
+	private String windTurbineId;
+	private String windTurbineCode;
+	private String modelId;
+	private String modelName;
+	private Double speed;
+	private Double avgpower;
+	private Integer frequency;
+	
+	
+	
+	public Integer getFrequency() {
+		return frequency;
+	}
+	public void setFrequency(Integer frequency) {
+		this.frequency = frequency;
+	}
+	public String getWindTurbineId() {
+		return windTurbineId;
+	}
+	public void setWindTurbineId(String windTurbineId) {
+		this.windTurbineId = windTurbineId;
+	}
+	public Integer getNum() {
+		return num;
+	}
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+	public String getWindPowerStationId() {
+		return windPowerStationId;
+	}
+	public void setWindPowerStationId(String windPowerStationId) {
+		this.windPowerStationId = windPowerStationId;
+	}
+	public String getWindTurbineCode() {
+		return windTurbineCode;
+	}
+	public void setWindTurbineCode(String windTurbineCode) {
+		this.windTurbineCode = windTurbineCode;
+	}
+	public String getModelId() {
+		return modelId;
+	}
+	public void setModelId(String modelId) {
+		this.modelId = modelId;
+	}
+	public String getModelName() {
+		return modelName;
+	}
+	public void setModelName(String modelName) {
+		this.modelName = modelName;
+	}
+	public Double getSpeed() {
+		return speed;
+	}
+	public void setSpeed(Double speed) {
+		this.speed = speed;
+	}
+	public Double getAvgpower() {
+		return avgpower;
+	}
+	public void setAvgpower(Double avgpower) {
+		this.avgpower = avgpower;
+	}
+}

+ 92 - 0
src/main/java/com/gyee/frame/model/custom/StatisticalAnalysisTopVo.java

@@ -0,0 +1,92 @@
+package com.gyee.frame.model.custom;
+
+import java.util.Date;
+
+public class StatisticalAnalysisTopVo {
+
+	private Integer num;
+	private String windfarm;
+	private String windturbine;
+	private Date beginDate;
+	private Date endDate;
+	private Double power;
+	private Double speed;
+	private Double generatingCapacity;
+	private String model;
+	private Integer frequency;
+	private String modelId;
+	
+	
+	
+	
+
+	public String getModelId() {
+    	return modelId;
+    }
+	public void setModelId(String modelId) {
+    	this.modelId = modelId;
+    }
+	public Integer getFrequency() {
+		return frequency;
+	}
+	public void setFrequency(Integer frequency) {
+		this.frequency = frequency;
+	}
+	public String getModel() {
+		return model;
+	}
+	public void setModel(String model) {
+		this.model = model;
+	}
+	public Integer getNum() {
+		return num;
+	}
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+	public String getWindfarm() {
+		return windfarm;
+	}
+	public void setWindfarm(String windfarm) {
+		this.windfarm = windfarm;
+	}
+	public String getWindturbine() {
+		return windturbine;
+	}
+	public void setWindturbine(String windturbine) {
+		this.windturbine = windturbine;
+	}
+	public Date getBeginDate() {
+		return beginDate;
+	}
+	public void setBeginDate(Date beginDate) {
+		this.beginDate = beginDate;
+	}
+	public Date getEndDate() {
+		return endDate;
+	}
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+	public Double getPower() {
+		return power;
+	}
+	public void setPower(Double power) {
+		this.power = power;
+	}
+	public Double getSpeed() {
+		return speed;
+	}
+	public void setSpeed(Double speed) {
+		this.speed = speed;
+	}
+	public Double getGeneratingCapacity() {
+		return generatingCapacity;
+	}
+	public void setGeneratingCapacity(Double generatingCapacity) {
+		this.generatingCapacity = generatingCapacity;
+	}
+	
+	
+	
+}

+ 128 - 2
src/main/java/com/gyee/frame/service/ActivePowerDataService.java

@@ -1,14 +1,18 @@
 package com.gyee.frame.service;
 
 import com.gyee.frame.common.base.BaseService;
+import com.gyee.frame.common.spring.InitialRunner;
 import com.gyee.frame.common.support.Convert;
 import com.gyee.frame.mapper.auto.ActivePowerDataMapper;
 import com.gyee.frame.model.auto.ActivePowerData;
 import com.gyee.frame.model.auto.ActivePowerDataExample;
+import com.gyee.frame.model.auto.Windturbine;
+import com.gyee.frame.model.custom.StatisticalAnalysisRnewTopVo;
+import com.gyee.frame.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.util.*;
 
 
 @Service
@@ -87,6 +91,128 @@ public class ActivePowerDataService implements BaseService<ActivePowerData, Acti
 		
 		return activePowerDataMapper.deleteByExample(example);
 	}
-	
+
+	public List<StatisticalAnalysisRnewTopVo> getStatisticalAnalysisRnewTopVoList(List<String> wpIds, Date beginDate, Date endDate)  {
+
+
+		List<StatisticalAnalysisRnewTopVo> list =new ArrayList<>();
+
+		ActivePowerDataExample example=new ActivePowerDataExample();
+		example.setOrderByClause("windturbineid ASC");
+
+
+		ActivePowerDataExample.Criteria criteria =example.createCriteria();
+
+		if(StringUtils.isNotEmpty(wpIds))
+		{
+			criteria.andWindpowerstationidIn(wpIds);
+		}
+
+
+		criteria.andRecorddateGreaterThanOrEqualTo(beginDate).andRecorddateLessThanOrEqualTo(endDate);
+
+		List<ActivePowerData> apls= activePowerDataMapper.selectByExample(example);
+
+		if(!apls.isEmpty())
+		{
+			int num=1;
+			for(ActivePowerData ap:apls)
+			{
+				StatisticalAnalysisRnewTopVo item = new StatisticalAnalysisRnewTopVo();
+				item.setNum(num);
+				item.setWindPowerStationId(ap.getWindpowerstationid());
+				item.setWindTurbineId(ap.getWindturbineid());
+				item.setWindTurbineCode(ap.getWindturbinecode());
+				item.setModelId(ap.getModelid());
+				item.setModelName(ap.getModelname());
+				item.setSpeed(ap.getSpeed());
+				item.setAvgpower(ap.getPower());
+
+
+				double spend=item.getSpeed();
+				int c = (int) spend;
+				if(c == spend)
+				{
+					list.add(item);
+				}
+
+				num++;
+			}
+		}
+		return list;
+
+	}
+
+
+	public Map<String, List>  getActivePowerDataChart(List<String> wtIds, Date beginDate, Date endDate)  {
+
+		Map<String, List> retValue = new HashMap<String, List>();
+		List<StatisticalAnalysisRnewTopVo> list =new ArrayList<>();
+
+		ActivePowerDataExample example=new ActivePowerDataExample();
+		example.setOrderByClause("windturbineid ASC");
+
+
+		ActivePowerDataExample.Criteria criteria =example.createCriteria();
+
+		criteria.andWindturbineidIn(wtIds);
+
+		criteria.andRecorddateGreaterThanOrEqualTo(beginDate).andRecorddateLessThanOrEqualTo(endDate);
+
+		List<ActivePowerData> apls= activePowerDataMapper.selectByExample(example);
+
+		Map<String, Map<String, Double>> listMap = new HashMap<String, Map<String, Double>>();
+		Map<String, Map<Double, List<Double>>> lsMap = new HashMap<String, Map<Double, List<Double>>>();
+		if(!apls.isEmpty())
+		{
+			for(ActivePowerData ap:apls)
+			{
+				Map<Double, List<Double>> items=null;
+				if (lsMap.containsKey(ap.getWindturbineid())) {
+					items = lsMap.get(ap.getWindturbineid());
+					if(items.containsKey(String.valueOf(ap.getSpeed())))
+					{
+						List<Double> doubleList=items.get(String.valueOf(ap.getSpeed()));
+									doubleList.add(ap.getPower());
+						items.put(ap.getSpeed(), doubleList);
+					}else
+					{
+						List<Double> doubleList=new ArrayList<>();
+						doubleList.add(ap.getPower());
+						items.put(ap.getSpeed(), doubleList);
+					}
+				} else {
+					items = new HashMap<Double, List<Double>>();
+					lsMap.put(ap.getWindturbineid(), items);
+				}
+
+			}
+			List<String> sers = new ArrayList<String>();
+
+			retValue.put("sers", sers);
+			for (String wtid : wtIds) {
+				Windturbine wt = InitialRunner.wtmap.get(wtid);
+
+				Map<Double,List<Double>> sjMap = lsMap.get(wtid);
+				List<Double> sj = new ArrayList<Double>();
+				for (Double i = 3.0; i <= 25; i += .5) {
+					if (sjMap != null && sjMap.containsKey(i)) {
+						List<Double> ls=sjMap.get(i);
+
+						double power=ls.stream().mapToDouble(Double::doubleValue).average().getAsDouble();//平均值
+						sj.add(StringUtils.round(power, 2));
+					}
+				}
+				retValue.put(String.format("%s(%s)实际功率", wt.getCode(), wt.getModelid()), sj);
+				sers.add(String.format("%s(%s)实际功率", wt.getCode(), wt.getModelid()));
+			}
+
+
+
+		}
+		return retValue;
+
+	}
+
 
 }

+ 6 - 3
src/main/java/com/gyee/frame/service/CurvefittingmonthmainService.java

@@ -3,12 +3,15 @@ package com.gyee.frame.service;
 import com.gyee.frame.common.base.BaseService;
 import com.gyee.frame.common.support.Convert;
 import com.gyee.frame.mapper.auto.CurvefittingmonthmainMapper;
-import com.gyee.frame.model.auto.Curvefittingmonthmain;
-import com.gyee.frame.model.auto.CurvefittingmonthmainExample;
+import com.gyee.frame.model.auto.*;
+import com.gyee.frame.model.custom.StatisticalAnalysisRnewTopVo;
 import com.gyee.frame.util.SnowflakeIdWorker;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 
@@ -90,6 +93,6 @@ public class CurvefittingmonthmainService implements BaseService<Curvefittingmon
 		
 		return curvefittingmonthmainMapper.deleteByExample(example);
 	}
-	
+
 
 }

+ 126 - 0
src/main/java/com/gyee/frame/service/ModelpowerRdService.java

@@ -0,0 +1,126 @@
+package com.gyee.frame.service;
+
+import com.gyee.frame.common.base.BaseService;
+import com.gyee.frame.common.support.Convert;
+import com.gyee.frame.mapper.auto.ModelpowerRdMapper;
+import com.gyee.frame.model.auto.ModelpowerRd;
+import com.gyee.frame.model.auto.ModelpowerRdExample;
+import com.gyee.frame.util.SnowflakeIdWorker;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+
+@Service
+public class ModelpowerRdService implements BaseService<ModelpowerRd, ModelpowerRdExample> {
+	@Autowired
+	private ModelpowerRdMapper modelpowerRdMapper;
+	
+
+	@Override
+	public int deleteByPrimaryKey(String ids) {
+				
+			List<String> lista=Convert.toListStrArray(ids);
+			ModelpowerRdExample example=new ModelpowerRdExample();
+			example.createCriteria().andIdIn(lista);
+			return modelpowerRdMapper.deleteByExample(example);
+			
+				
+	}
+	
+	
+	@Override
+	public ModelpowerRd selectByPrimaryKey(String id) {
+				
+			return modelpowerRdMapper.selectByPrimaryKey(id);
+				
+	}
+
+	
+	@Override
+	public int updateByPrimaryKeySelective(ModelpowerRd record) {
+		return modelpowerRdMapper.updateByPrimaryKeySelective(record);
+	}
+	
+	
+	/**
+	 * 添加
+	 */
+	@Override
+	public int insertSelective(ModelpowerRd record) {
+				
+		//添加雪花主键id
+		record.setId(SnowflakeIdWorker.getUUID());
+			
+				
+		return modelpowerRdMapper.insertSelective(record);
+	}
+	
+	
+	@Override
+	public int updateByExampleSelective(ModelpowerRd record, ModelpowerRdExample example) {
+		
+		return modelpowerRdMapper.updateByExampleSelective(record, example);
+	}
+
+	
+	@Override
+	public int updateByExample(ModelpowerRd record, ModelpowerRdExample example) {
+		
+		return modelpowerRdMapper.updateByExample(record, example);
+	}
+
+	@Override
+	public List<ModelpowerRd> selectByExample(ModelpowerRdExample example) {
+		
+		return modelpowerRdMapper.selectByExample(example);
+	}
+
+	
+	@Override
+	public long countByExample(ModelpowerRdExample example) {
+		
+		return modelpowerRdMapper.countByExample(example);
+	}
+
+	
+	@Override
+	public int deleteByExample(ModelpowerRdExample example) {
+		
+		return modelpowerRdMapper.deleteByExample(example);
+	}
+
+	public Map<String, Map<Double, ModelpowerRd>> getModelpowerRdAllMap()  {
+
+
+		List<ModelpowerRd> list =new ArrayList<>();
+
+		ModelpowerRdExample example=new ModelpowerRdExample();
+		example.setOrderByClause("modelid ASC");
+
+		ModelpowerRdExample.Criteria criteria =example.createCriteria();
+
+
+		list= modelpowerRdMapper.selectByExample(example);
+
+
+		Map<String, Map<Double, ModelpowerRd>> res = new HashMap<String, Map<Double,ModelpowerRd>>();
+		Map<Double, ModelpowerRd> map = null;
+
+		if(list != null && !list.isEmpty()){
+			for(ModelpowerRd mp : list){
+				if(res.containsKey(mp.getModelid())){
+					map = res.get(mp.getModelid());
+					map.put(mp.getSpeed(), mp);
+				}else{
+					map = new HashMap<Double, ModelpowerRd>();
+					map.put(mp.getSpeed(), mp);
+					res.put(mp.getModelid(), map);
+				}
+			}
+		}
+		return res;
+
+	}
+}

+ 26 - 0
src/main/java/com/gyee/frame/service/WindturbinecurvefittingmonthService.java

@@ -152,4 +152,30 @@ public class WindturbinecurvefittingmonthService implements BaseService<Windturb
 		return list;
 
 	}
+
+	public List<Windturbinecurvefittingmonth> getWindturbinecurvefittingmonthList(Date endDate)  {
+
+
+		List<Windturbinecurvefittingmonth> list =new ArrayList<>();
+
+		WindturbinecurvefittingmonthExample example=new WindturbinecurvefittingmonthExample();
+		example.setOrderByClause("windturbineid ASC");
+
+		WindturbinecurvefittingmonthExample.Criteria criteria =example.createCriteria();
+
+
+		Calendar c= Calendar.getInstance();
+		c.setTime(endDate);
+
+		int year=c.get(Calendar.YEAR);
+		int month=c.get(Calendar.MONTH)+1;
+		criteria.andYearEqualTo(String.valueOf(year));
+		criteria.andMonthEqualTo(String.valueOf(month));
+
+		list= windturbinecurvefittingmonthMapper.selectByExample(example);
+
+
+		return list;
+
+	}
 }

+ 71 - 3
src/main/java/com/gyee/frame/service/WindturbineinfodayService.java

@@ -3,18 +3,20 @@ package com.gyee.frame.service;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.gyee.frame.common.base.BaseService;
+import com.gyee.frame.common.spring.InitialRunner;
 import com.gyee.frame.common.support.Convert;
 import com.gyee.frame.mapper.auto.WindTurbineInfoDayMapper;
 import com.gyee.frame.model.auto.WindTurbineInfoDay;
 import com.gyee.frame.model.auto.WindTurbineInfoDayExample;
+import com.gyee.frame.model.auto.Windpowerstation;
+import com.gyee.frame.model.auto.Windturbine;
+import com.gyee.frame.model.custom.StatisticalAnalysisTopVo;
 import com.gyee.frame.model.custom.Tablepar;
 import com.gyee.frame.util.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 风机信息表 WindTurbineInfoDayService
@@ -150,6 +152,72 @@ public class WindturbineinfodayService implements BaseService<WindTurbineInfoDay
 	}
 
 
+	public List<StatisticalAnalysisTopVo> getWindturbineinfo(List<String> wpIds, Date beginDate, Date endDate)  {
 
+		List<StatisticalAnalysisTopVo> list =new ArrayList<>();
+
+		WindTurbineInfoDayExample example=new WindTurbineInfoDayExample();
+		example.setOrderByClause("windturbineid ASC");
+
+
+		WindTurbineInfoDayExample.Criteria criteria =example.createCriteria();
+
+		if(!wpIds.isEmpty())
+		{
+			criteria.andWindpowerstationidIn(wpIds);
+		}
+
+
+		criteria.andRecorddateGreaterThanOrEqualTo(beginDate).andRecorddateLessThanOrEqualTo(endDate);
+
+		List<WindTurbineInfoDay> wils=windTurbineInfoDayMapper.selectByExample(example);
+
+		Map<String, List<WindTurbineInfoDay>> lsMap = new HashMap<String, List<WindTurbineInfoDay>>();
+		if(!wils.isEmpty())
+		{
+			for(WindTurbineInfoDay ap:wils)
+			{
+				List<WindTurbineInfoDay> items=null;
+				if (lsMap.containsKey(ap.getWindturbineid())) {
+					items = lsMap.get(ap.getWindturbineid());
+					items.add(ap);
+					lsMap.put(ap.getWindturbineid(), items);
+				} else {
+					items = new ArrayList<>();
+					items.add(ap);
+					lsMap.put(ap.getWindturbineid(), items);
+				}
+
+			}
+
+
+			Set<Map.Entry<String, List<WindTurbineInfoDay>>> set = lsMap.entrySet();
+			for (Iterator<Map.Entry<String, List<WindTurbineInfoDay>>> it = set.iterator(); it.hasNext();) {
+				Map.Entry<String, List<WindTurbineInfoDay>> entry = (Map.Entry<String, List<WindTurbineInfoDay>>) it.next();
+				System.out.println(entry.getKey() + "--->" + entry.getValue());
+
+				List<WindTurbineInfoDay> ls=entry.getValue();
+
+				Windturbine wt= InitialRunner.wtmap.get(entry.getKey());
+				Windpowerstation wp=InitialRunner.wpmap.get(wt.getWindpowerstationid());
+				StatisticalAnalysisTopVo item = new StatisticalAnalysisTopVo();
+				item.setWindfarm(wp.getName());
+				item.setWindturbine(wt.getId());
+				item.setBeginDate(beginDate);
+				item.setEndDate(endDate);
+				double power=ls.stream().mapToDouble(WindTurbineInfoDay::getPower).average().getAsDouble();//平均值
+				double speed=ls.stream().mapToDouble(WindTurbineInfoDay::getSpeed).average().getAsDouble();//平均值
+				double generatingcapacity=ls.stream().mapToDouble(WindTurbineInfoDay::getGeneratingcapacity).sum();//合计
+				item.setGeneratingCapacity(generatingcapacity);
+				item.setSpeed(speed);
+				item.setPower(power);
+
+				list.add(item);
+			}
+
+		}
+		return list;
+
+	}
 
 }

+ 211 - 0
src/main/java/com/gyee/frame/service/leaderboard/LeaderboardService.java

@@ -1,7 +1,218 @@
 package com.gyee.frame.service.leaderboard;
 
+import com.gyee.frame.common.spring.InitialRunner;
+import com.gyee.frame.model.auto.ModelpowerRd;
+import com.gyee.frame.model.auto.Windpowerstation;
+import com.gyee.frame.model.auto.Windturbinecurvefittingmonth;
+import com.gyee.frame.model.custom.StatisticalAnalysisRnewTopVo;
+import com.gyee.frame.model.custom.StatisticalAnalysisTopVo;
+import com.gyee.frame.service.ActivePowerDataService;
+import com.gyee.frame.service.WindturbinecurvefittingmonthService;
+import com.gyee.frame.service.WindturbineinfodayService;
+import com.gyee.frame.util.StringUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
 @Service
 public class LeaderboardService {
+
+    @Resource
+    private ActivePowerDataService activePowerDataService;
+    @Resource
+    private WindturbinecurvefittingmonthService windturbinecurvefittingmonthService;
+    @Resource
+    private WindturbineinfodayService windturbineinfodayService;
+
+
+    public List<StatisticalAnalysisTopVo> getRnewTopDate(String wpIps, Date beginDate, Date endDate) {
+
+        List<String> wpls=new ArrayList<>();
+        if (StringUtils.empty(wpIps)) {
+
+            for (Windpowerstation wp : InitialRunner.wpls) {
+                if(wp.getId().endsWith("FDC"))
+                {
+                    wpls.add(wp.getId());
+                }
+
+            }
+
+        } else {
+            wpls.add(wpIps);
+        }
+        List<StatisticalAnalysisRnewTopVo> list =activePowerDataService.getStatisticalAnalysisRnewTopVoList(wpls,beginDate, endDate);
+
+        List<Windturbinecurvefittingmonth> windturbineList=windturbinecurvefittingmonthService.getWindturbinecurvefittingmonthList(endDate);
+
+        Map<String, Map<Double, Windturbinecurvefittingmonth>> res = new HashMap<String, Map<Double,Windturbinecurvefittingmonth>>();
+        Map<Double, Windturbinecurvefittingmonth> map = null;
+        if(windturbineList != null && !windturbineList.isEmpty()){
+            for(Windturbinecurvefittingmonth mp : windturbineList){
+                if(res.containsKey(mp.getWindturbineid())){
+                    map = res.get(mp.getWindturbineid());
+                    map.put(mp.getSpeed(), mp);
+                }else{
+                    map = new HashMap<Double, Windturbinecurvefittingmonth>();
+                    map.put(mp.getSpeed(), mp);
+                    res.put(mp.getWindturbineid(), map);
+                }
+            }
+        }
+
+
+
+        Map<String, StatisticalAnalysisTopVo> theMap = new HashMap<String, StatisticalAnalysisTopVo>();
+        List<StatisticalAnalysisTopVo> theList = new ArrayList<StatisticalAnalysisTopVo>();
+        for (StatisticalAnalysisRnewTopVo item : list) {
+
+            // 对非线性方程:
+            // (1)计算残差平方和Q=∑(y-y*)^2和∑y^2,其中,y代表的是实测值,y*代表的是预测值;
+            // (2)拟合度指标RNew=1-(Q/∑y^2)^(1/2)
+            // Rnew是最近才出现的用于判定非线性回归方程的拟合度的统计参数,现在我还没有看到它的中文名称。之所以用角标new就是为了和线性回归方程的判定系数R2、adjusted
+            // R2进行区别。在对方程拟合程度的解释上,Rnew和R2、adjusted R2是等价的,其意义也相同。
+            // 对线性方程:
+            // R^2==∑(y预测-y)^2/==∑(y实际-y)^2,y是平均数。如果R2=0.775,则说明变量y的变异中有77.5%是由变量X引起的。当R2=1时,表示所有的观测点全部落在回归直线上。当R2=0时,表示自变量与因变量无线性关系。
+
+            if (InitialRunner.mprdMap.containsKey(item.getModelId())) {
+
+                if (InitialRunner.mprdMap.get(item.getModelId())
+                        .containsKey(
+                                item.getSpeed())) {
+                    ModelpowerRd mp = InitialRunner.mprdMap.get(
+                            item.getModelId()).get(item.getSpeed());
+                    double value1 = item.getAvgpower() - mp.getEnsurepower();
+                    value1 *= value1;
+                    double value2 = item.getAvgpower();
+                    value2 *= value2;
+
+                    if (theMap.containsKey(item.getWindTurbineId())) {
+                        StatisticalAnalysisTopVo vo = theMap.get(item
+                                .getWindTurbineId());
+                        vo.setNum(vo.getNum() + 1);
+                        vo.setSpeed(vo.getSpeed() + item.getSpeed());
+                        vo.setGeneratingCapacity(vo.getGeneratingCapacity()
+                                + value2);
+                        vo.setPower(vo.getPower() + value1);
+
+                    } else {
+                        StatisticalAnalysisTopVo vo = new StatisticalAnalysisTopVo();
+                        vo.setNum(1);
+                        vo.setWindturbine(item.getWindTurbineId());
+                        vo.setWindfarm(InitialRunner.wpmap.get(
+                                item.getWindPowerStationId()).getName());
+                        vo.setBeginDate(beginDate);
+                        vo.setEndDate(endDate);
+                        vo.setGeneratingCapacity(value2);
+                        vo.setSpeed(item.getSpeed());
+                        vo.setPower(value1);
+                        vo.setModel(item.getModelName());
+                        theList.add(vo);
+                        theMap.put(item.getWindTurbineId(), vo);
+                    }
+                }
+            }
+            else
+            {
+                if (res.containsKey(item.getWindTurbineId())) {
+
+                    if (res.get(item.getWindTurbineId())
+                            .containsKey(
+                                    item.getSpeed())) {
+                        Windturbinecurvefittingmonth mp = res.get(
+                                item.getWindTurbineId()).get(item.getSpeed());
+
+
+                        double value1 = item.getAvgpower() - mp.getOptimalpower();
+                        value1 *= value1;
+                        double value2 = item.getAvgpower();
+                        value2 *= value2;
+
+                        if (theMap.containsKey(item.getWindTurbineId())) {
+                            StatisticalAnalysisTopVo vo = theMap.get(item
+                                    .getWindTurbineId());
+                            vo.setNum(vo.getNum() + 1);
+                            vo.setSpeed(vo.getSpeed() + item.getSpeed());
+                            vo.setGeneratingCapacity(vo.getGeneratingCapacity()
+                                    + value2);
+                            vo.setPower(vo.getPower() + value1);
+
+                        } else {
+                            StatisticalAnalysisTopVo vo = new StatisticalAnalysisTopVo();
+                            vo.setNum(1);
+                            vo.setWindturbine(item.getWindTurbineId());
+                            vo.setWindfarm(InitialRunner.wpmap.get(
+                                    item.getWindPowerStationId()).getName());
+                            vo.setBeginDate(beginDate);
+                            vo.setEndDate(endDate);
+                            vo.setGeneratingCapacity(value2);
+                            vo.setSpeed(item.getSpeed());
+                            vo.setPower(value1);
+                            vo.setModel(item.getModelName());
+                            theList.add(vo);
+                            theMap.put(item.getWindTurbineId(), vo);
+                        }
+                    }
+                }
+            }
+        }
+
+        for(StatisticalAnalysisTopVo item :theList)
+        {
+            double rnew=0;
+            if(item.getGeneratingCapacity()!=0)
+            {
+                BigDecimal b1=new BigDecimal(item.getPower());
+                BigDecimal b2=new BigDecimal(item.getGeneratingCapacity());
+                rnew=Math.sqrt(b1.divide(b2,2, RoundingMode.HALF_EVEN).doubleValue());
+            }
+            item.setPower(rnew);
+            double speed=0;
+            if(item.getNum()!=0)
+            {
+                BigDecimal b1=new BigDecimal(item.getSpeed());
+                BigDecimal b2=new BigDecimal(item.getNum());
+                speed=b1.divide(b2,2, RoundingMode.HALF_EVEN).doubleValue();
+            }
+            item.setSpeed(speed);
+        }
+        return theList;
+    }
+
+
+    public Map<String, List> fittingtopchart(String wtIds, Date beginDate, Date endDate) throws Exception {
+        Map<String, List> map=new HashMap<>();
+        if (StringUtils.notEmp(wtIds) && StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
+            String[] wtid = wtIds.split(",");
+            List<String> wtids=new ArrayList<>();
+           for(String w:wtid)
+           {
+               wtids.add(w);
+           }
+            map = activePowerDataService.getActivePowerDataChart(wtids, beginDate, endDate);
+
+        }
+
+        return map;
+    }
+
+    public List<StatisticalAnalysisTopVo> getWindturbineinfo(String wpIds, Date beginDate, Date endDate)  {
+        List<StatisticalAnalysisTopVo> ls=new ArrayList<>();
+        if (StringUtils.notEmp(wpIds) && StringUtils.notEmp(beginDate) && StringUtils.notEmp(endDate)) {
+            String[] wpid = wpIds.split(",");
+            List<String> wpids=new ArrayList<>();
+            for(String w:wpid)
+            {
+                wpids.add(w);
+            }
+            ls = windturbineinfodayService.getWindturbineinfo(wpids, beginDate, endDate);
+
+        }
+
+        return ls;
+    }
+
 }

+ 1 - 5
src/main/resources/mybatis-generator.xml

@@ -101,11 +101,7 @@
             <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
         </table>-->
 
-        <table tableName='ActivePowerData' domainObjectName='ActivePowerData'/>
-        <table tableName='Curvefittingmain' domainObjectName='Curvefittingmain'/>
-        <table tableName='Curvefittingmonthmain' domainObjectName='Curvefittingmonthmain'/>
-        <table tableName='WarningClassify' domainObjectName='WarningClassify'/>
-        <table tableName='WarningInfoDay' domainObjectName='WarningInfoDay'/>
+        <table tableName='ModelpowerRd' domainObjectName='ModelpowerRd'/>
 
     </context>
 </generatorConfiguration>

+ 271 - 0
src/main/resources/mybatis/auto/ModelpowerRdMapper.xml

@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gyee.frame.mapper.auto.ModelpowerRdMapper">
+  <resultMap id="BaseResultMap" type="com.gyee.frame.model.auto.ModelpowerRd">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="modelid" jdbcType="VARCHAR" property="modelid" />
+    <result column="speed" jdbcType="DOUBLE" property="speed" />
+    <result column="theorypower" jdbcType="DOUBLE" property="theorypower" />
+    <result column="ensurepower" jdbcType="DOUBLE" property="ensurepower" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    id, modelid, speed, theorypower, ensurepower
+  </sql>
+  <select id="selectByExample" parameterType="com.gyee.frame.model.auto.ModelpowerRdExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from modelpowerrd
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from modelpowerrd
+    where id = #{id,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    delete from modelpowerrd
+    where id = #{id,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.gyee.frame.model.auto.ModelpowerRdExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    delete from modelpowerrd
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.gyee.frame.model.auto.ModelpowerRd">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    insert into modelpowerrd (id, modelid, speed, 
+      theorypower, ensurepower)
+    values (#{id,jdbcType=VARCHAR}, #{modelid,jdbcType=VARCHAR}, #{speed,jdbcType=DOUBLE}, 
+      #{theorypower,jdbcType=DOUBLE}, #{ensurepower,jdbcType=DOUBLE})
+  </insert>
+  <insert id="insertSelective" parameterType="com.gyee.frame.model.auto.ModelpowerRd">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    insert into modelpowerrd
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="modelid != null">
+        modelid,
+      </if>
+      <if test="speed != null">
+        speed,
+      </if>
+      <if test="theorypower != null">
+        theorypower,
+      </if>
+      <if test="ensurepower != null">
+        ensurepower,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=VARCHAR},
+      </if>
+      <if test="modelid != null">
+        #{modelid,jdbcType=VARCHAR},
+      </if>
+      <if test="speed != null">
+        #{speed,jdbcType=DOUBLE},
+      </if>
+      <if test="theorypower != null">
+        #{theorypower,jdbcType=DOUBLE},
+      </if>
+      <if test="ensurepower != null">
+        #{ensurepower,jdbcType=DOUBLE},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.gyee.frame.model.auto.ModelpowerRdExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    select count(*) from modelpowerrd
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update modelpowerrd
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=VARCHAR},
+      </if>
+      <if test="record.modelid != null">
+        modelid = #{record.modelid,jdbcType=VARCHAR},
+      </if>
+      <if test="record.speed != null">
+        speed = #{record.speed,jdbcType=DOUBLE},
+      </if>
+      <if test="record.theorypower != null">
+        theorypower = #{record.theorypower,jdbcType=DOUBLE},
+      </if>
+      <if test="record.ensurepower != null">
+        ensurepower = #{record.ensurepower,jdbcType=DOUBLE},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update modelpowerrd
+    set id = #{record.id,jdbcType=VARCHAR},
+      modelid = #{record.modelid,jdbcType=VARCHAR},
+      speed = #{record.speed,jdbcType=DOUBLE},
+      theorypower = #{record.theorypower,jdbcType=DOUBLE},
+      ensurepower = #{record.ensurepower,jdbcType=DOUBLE}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.gyee.frame.model.auto.ModelpowerRd">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update modelpowerrd
+    <set>
+      <if test="modelid != null">
+        modelid = #{modelid,jdbcType=VARCHAR},
+      </if>
+      <if test="speed != null">
+        speed = #{speed,jdbcType=DOUBLE},
+      </if>
+      <if test="theorypower != null">
+        theorypower = #{theorypower,jdbcType=DOUBLE},
+      </if>
+      <if test="ensurepower != null">
+        ensurepower = #{ensurepower,jdbcType=DOUBLE},
+      </if>
+    </set>
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.gyee.frame.model.auto.ModelpowerRd">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+    -->
+    update modelpowerrd
+    set modelid = #{modelid,jdbcType=VARCHAR},
+      speed = #{speed,jdbcType=DOUBLE},
+      theorypower = #{theorypower,jdbcType=DOUBLE},
+      ensurepower = #{ensurepower,jdbcType=DOUBLE}
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 73 - 0
src/test/java/test/LeaderboardTest.java

@@ -0,0 +1,73 @@
+package test;
+
+import com.gyee.SpringbootStart;
+import com.gyee.frame.common.domain.AjaxResult;
+import com.gyee.frame.common.spring.SpringUtils;
+import com.gyee.frame.controller.leaderboard.LeaderboardController;
+import com.gyee.frame.model.custom.StatisticalAnalysisTopVo;
+import com.gyee.frame.model.custom.Tablepar;
+import lombok.SneakyThrows;
+import org.springframework.boot.SpringApplication;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+public class LeaderboardTest {
+
+    @SneakyThrows
+    public static void main(String[] args) {
+
+        SpringApplication.run(SpringbootStart.class, args);
+
+
+        Calendar c = Calendar.getInstance();
+
+        c.set(Calendar.HOUR_OF_DAY, 0);
+        c.set(Calendar.MINUTE, 0);
+        c.set(Calendar.SECOND, 0);
+
+        c.set(Calendar.DAY_OF_MONTH,2);
+        c.set(Calendar.MONTH,0);
+        c.set(Calendar.YEAR,2021);
+
+        Date beginDate = c.getTime();
+        c.add(Calendar.DAY_OF_MONTH,1);
+        Date endDate = c.getTime();
+
+        String wtid="MG01_01,MG01_02,MG01_03,MG01_04,MG01_05";
+
+        LeaderboardController leaderboardController= SpringUtils.getBean("leaderboardController");
+//
+//        AjaxResult ajaxResult = dayBenchmarkingController.gadaylist(wpid,"2021-01-01");
+//
+//        List<Windturbineinfodaytop3> test=(List<Windturbineinfodaytop3>)ajaxResult.get("data");
+
+        Tablepar tablepar=new Tablepar();
+        tablepar.setPageNum(1);
+        tablepar.setPageSize(10);
+        tablepar.setOrderByColumn("power");
+        tablepar.setIsAsc("asc");
+
+        AjaxResult ajaxResult =leaderboardController.fittingtoplist(tablepar,null,beginDate,endDate);
+
+        List<StatisticalAnalysisTopVo>   test=(List<StatisticalAnalysisTopVo>)ajaxResult.get("data");
+        for(StatisticalAnalysisTopVo wtd:test)
+        {
+            System.out.println(wtd.getFrequency()+"----------------"+wtd.getPower()+"----------------"+wtd.getSpeed());
+        }
+
+        ajaxResult =leaderboardController.fittingtopchart(wtid,beginDate,endDate);
+//
+//        Map<String, List> test2=(Map<String, List>)ajaxResult.get("data");
+//
+//       if(!test2.isEmpty())
+//       {
+//
+//       }
+    }
+
+
+
+
+}