Browse Source

计算五损点

xieshengjie 2 years ago
parent
commit
b444e381f0

+ 11 - 3
common/src/main/java/com/gyee/common/contant/Contant.java

@@ -126,6 +126,12 @@ public class Contant {
     public static final String WTRWZSSDL = "RWZSSDL-ZS";//电网受累
     public static final String WTRTZSSDL = "RTZSSDL-ZS";//天气受累
 
+
+    public static final String GZSSDL ="GZSSDL";  //故障损失电量
+    public static final String WHSSDL ="WHSSDL"; //维护损失电量
+    public static final String XNSSDL = "XNSSDL"; //性能损失电量
+    public static final String XDSSDL = "XDSSDL";//限电损失电量
+    public static final String SLSSDL = "SLSSDL";//受累损失电量
     //风机月损失电量
     public static final String WTYDJSSDL ="YDJSSDL-ZS";  //待机损失电量
     public static final String WTYSTSSDL ="YSTSSDL-ZS"; //手动停机损失电量
@@ -208,9 +214,11 @@ public class Contant {
     public static final String R3QFZT = "R3QFZT";
     public static final String R4QFZT = "R4QFZT";
 
-
-
-
+    //节能减排
+    public static final String JPEYHL = "JPEYHL";   //减排二氧化硫
+    public static final String JPEYHT = "JPEYHT";   //减排二氧化碳
+    public static final String JYBM = "JYBM";   //节约标煤
+    public static final String JYS = "JYS";   //节约用水
 
 
 

+ 11 - 4
realtime/generation-service/src/main/java/com/gyee/generation/init/CacheContext.java

@@ -66,14 +66,24 @@ public class CacheContext implements CommandLineRunner {
     public static Map<String,Map<Double,Double>> zbzglMap = new HashMap<>();
     public static Map<String,Equipmentmodel> modelMap = new HashMap<>();
     public static Map<String,Map<Double,Double>> zzsglMap = new HashMap<>();
+    public static Map<String,Double> modelpower = new HashMap<>();
     @Override
     public void run(String... args) throws Exception {
         logger.info("缓存开始------------------------------------------------------------");
         List<String> runWpids = Arrays.asList(runWindpowerstation.split(","));
         logger.info(runWpids.get(0)+"------------------"+runWpids.size());
+
+        List<Equipmentmodel> equipmentmodels = equipmentmodelService.list();
+        equipmentmodels.stream().forEach(e->{
+            modelMap.put(e.getId(),e);
+        });
+
         wtls = windturbineService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationid())).collect(Collectors.toList());
         logger.info(wtls.size()+"");
         wtls.forEach(wt->{
+            Equipmentmodel equipmentmodel = modelMap.get(wt.getModelid());
+            modelpower.put(wt.getId(),equipmentmodel.getPowerproduction());
+
             String wtString = redisService.get(wt.getId());
             Map<String, Windturbinetestingpointnew> stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference<Map<String, Windturbinetestingpointnew>>() {
             });
@@ -138,10 +148,7 @@ public class CacheContext implements CommandLineRunner {
          statusMap = JSONObject.parseObject(sszzt, new TypeReference<Map<String,List<Windturbinestatusdi>>>() {
         });
 
-        List<Equipmentmodel> equipmentmodels = equipmentmodelService.list();
-        equipmentmodels.stream().forEach(e->{
-            modelMap.put(e.getId(),e);
-        });
+
 
         String zbzgl = redisService.get("ZBZGL");
         zbzglMap = JSONObject.parseObject(zbzgl, new TypeReference<Map<String,Map<Double,Double>>>() {

+ 58 - 1
realtime/generation-service/src/main/java/com/gyee/generation/service/AverageAndGeneratingService.java

@@ -79,6 +79,11 @@ public class AverageAndGeneratingService {
             Windpowerstationpointnew yfdlwppointnew = wppointnewmap.get(Contant.YFDL);
             Windpowerstationpointnew nfdlwppointnew = wppointnewmap.get(Contant.NFDL);
             Windpowerstationpointnew fnlylwppointnew = wppointnewmap.get(Contant.FNLYL);
+            Windpowerstationpointnew jpeyhlwppointnew = wppointnewmap.get(Contant.JPEYHL);
+            Windpowerstationpointnew jpeyhtwppointnew = wppointnewmap.get(Contant.JPEYHT);
+            Windpowerstationpointnew jybmwppointnew = wppointnewmap.get(Contant.JYBM);
+            Windpowerstationpointnew jyswppointnew = wppointnewmap.get(Contant.JYS);
+
             List<PointData> projectavespeedList = new ArrayList<>();
             List<PointData> yprojectavespeedList = new ArrayList<>();
             List<PointData> nprojectavespeedList = new ArrayList<>();
@@ -101,6 +106,12 @@ public class AverageAndGeneratingService {
                 Windpowerstationpointnew yfdlprojectpointnew = projectpointnewmap.get(Contant.YFDL);
                 Windpowerstationpointnew nfdlprojectpointnew = projectpointnewmap.get(Contant.NFDL);
                 Windpowerstationpointnew fnlylprojectpointnew = projectpointnewmap.get(Contant.FNLYL);
+
+                Windpowerstationpointnew jpeyhlprojectpointnew = projectpointnewmap.get(Contant.JPEYHL);
+                Windpowerstationpointnew jpeyhtprojectpointnew = projectpointnewmap.get(Contant.JPEYHT);
+                Windpowerstationpointnew jybmprojectpointnew = projectpointnewmap.get(Contant.JYBM);
+                Windpowerstationpointnew jysprojectpointnew = projectpointnewmap.get(Contant.JYS);
+
                 List<PointData> lineavespeedList = new ArrayList<>();
                 List<PointData> ylineavespeedList = new ArrayList<>();
                 List<PointData> nlineavespeedList = new ArrayList<>();
@@ -123,6 +134,12 @@ public class AverageAndGeneratingService {
                     Windpowerstationpointnew ylinefdlpointnew = linepointnewmap.get(Contant.YFDL);
                     Windpowerstationpointnew nlinefdlpointnew = linepointnewmap.get(Contant.NFDL);
                     Windpowerstationpointnew linefnlylpointnew = linepointnewmap.get(Contant.FNLYL);
+
+                    Windpowerstationpointnew jpeyhlpointnew = linepointnewmap.get(Contant.JPEYHL);
+                    Windpowerstationpointnew jpeyhtpointnew = linepointnewmap.get(Contant.JPEYHT);
+                    Windpowerstationpointnew jybmpointnew = linepointnewmap.get(Contant.JYBM);
+                    Windpowerstationpointnew jyspointnew = linepointnewmap.get(Contant.JYS);
+
                     List<PointData> wtavespeedList = new ArrayList<>();
                     List<PointData> ywtavespeedList = new ArrayList<>();
                     List<PointData> nwtavespeedList = new ArrayList<>();
@@ -260,8 +277,21 @@ public class AverageAndGeneratingService {
                     ylinefdlList.add(yfdlpoint);
                     nlinefdlList.add(nfdlpoint);
 
-                    //算风能利用率
+                    //算节能减排
+                    double jpeyhl = lineyfdl * 0.0059;
+                    double jpeyht = lineyfdl * 0.8568;
+                    double jybm = lineyfdl * 0.37;
+                    double jys = lineyfdl * 3.05;
+                    PointData jpeyhlpoint = createWpPointData(jpeyhlpointnew, jpeyhl);
+                    PointData jpeyhtpoint = createWpPointData(jpeyhtpointnew, jpeyht);
+                    PointData jybmpoint = createWpPointData(jybmpointnew, jybm);
+                    PointData jyspoint = createWpPointData(jyspointnew, jys);
+                    resultList.add(jpeyhlpoint);
+                    resultList.add(jpeyhtpoint);
+                    resultList.add(jybmpoint);
+                    resultList.add(jyspoint);
 
+                    //算风能利用率
                     List<String> pointList = new ArrayList<>();
                     double ssdl = 0;
                     Arrays.stream(monthbenchPoints.split(",")).forEach(code->{
@@ -324,6 +354,20 @@ public class AverageAndGeneratingService {
                 resultList.addAll(ylinefdlList);
                 resultList.addAll(nlinefdlList);
 
+                //算节能减排
+                double jpeyhl = proyfdl * 0.0059;
+                double jpeyht = proyfdl * 0.8568;
+                double jybm = proyfdl * 0.37;
+                double jys = proyfdl * 3.05;
+                PointData jpeyhlpoint = createWpPointData(jpeyhlprojectpointnew, jpeyhl);
+                PointData jpeyhtpoint = createWpPointData(jpeyhtprojectpointnew, jpeyht);
+                PointData jybmpoint = createWpPointData(jybmprojectpointnew, jybm);
+                PointData jyspoint = createWpPointData(jysprojectpointnew, jys);
+                resultList.add(jpeyhlpoint);
+                resultList.add(jpeyhtpoint);
+                resultList.add(jybmpoint);
+                resultList.add(jyspoint);
+
                 //算风能利用率
                 List<String> pointList = new ArrayList<>();
                 double ssdl = 0;
@@ -384,6 +428,19 @@ public class AverageAndGeneratingService {
             PointData yfdlpointData = createWpPointData(yfdlwppointnew, fcyfdl);
             resultList.add(yfdlpointData);
 
+            //算节能减排
+            double jpeyhl = fcyfdl * 0.0059;
+            double jpeyht = fcyfdl * 0.8568;
+            double jybm = fcyfdl * 0.37;
+            double jys = fcyfdl * 3.05;
+            PointData jpeyhlpoint = createWpPointData(jpeyhlwppointnew, jpeyhl);
+            PointData jpeyhtpoint = createWpPointData(jpeyhtwppointnew, jpeyht);
+            PointData jybmpoint = createWpPointData(jybmwppointnew, jybm);
+            PointData jyspoint = createWpPointData(jyswppointnew, jys);
+            resultList.add(jpeyhlpoint);
+            resultList.add(jpeyhtpoint);
+            resultList.add(jybmpoint);
+            resultList.add(jyspoint);
             //算风能利用率
             List<String> pointList = new ArrayList<>();
             double ssdl = 0;

+ 80 - 14
realtime/generation-service/src/main/java/com/gyee/generation/service/FiveLossesService.java

@@ -294,6 +294,9 @@ public class FiveLossesService {
                     projectdayfdjclloss.updateAndGet(v->new Double((double) (v + linedayfdjclloss.get())));
                     projectmonthfdjclloss.updateAndGet(v->new Double((double) (v + linemonthfdjclloss.get())));
                     projectyearfdjclloss.updateAndGet(v->new Double((double) (v + lineyearfdjclloss.get())));
+
+                    double xnss = linedaydjloss.get() + linedaysdtjloss.get() + linedayxnloss.get() + linedayfdjclloss.get();
+                    resultList.add(createWpPointData(linepointnewMap.get(Contant.XNSSDL),xnss));
                     //故障
                     addWpPoint(resultList, linepointnewMap.get(Contant.RGZZSDL), linedaygzloss);
                     addWpPoint(resultList, linepointnewMap.get(Contant.YGZZSDL), linemonthgzloss);
@@ -308,6 +311,10 @@ public class FiveLossesService {
                     projectdaygzslloss.updateAndGet(v->new Double((double) (v + linedaygzslloss.get())));
                     projectmonthgzslloss.updateAndGet(v->new Double((double) (v + linemonthgzslloss.get())));
                     projectyeargzslloss.updateAndGet(v->new Double((double) (v + lineyeargzslloss.get())));
+
+                    double gzss = linedaygzloss.get()+linedaygzslloss.get();
+                    resultList.add(createWpPointData(linepointnewMap.get(Contant.GZSSDL),gzss));
+
                     //维护
                     addWpPoint(resultList, linepointnewMap.get(Contant.RJXZSDL), linedaywhloss);
                     addWpPoint(resultList, linepointnewMap.get(Contant.YJXZSDL), linemonthwhloss);
@@ -322,6 +329,9 @@ public class FiveLossesService {
                     projectdaywhslloss.updateAndGet(v->new Double((double) (v + linedaywhslloss.get())));
                     projectmonthwhslloss.updateAndGet(v->new Double((double) (v + linemonthwhslloss.get())));
                     projectyearwhslloss.updateAndGet(v->new Double((double) (v + lineyearwhslloss.get())));
+
+                    double whss = linedaywhloss.get()+linedaywhslloss.get();
+                    resultList.add(createWpPointData(linepointnewMap.get(Contant.WHSSDL),whss));
                     //限电降出力
                     addWpPoint(resultList, linepointnewMap.get(Contant.RQFZSDL), linedayxdjclloss);
                     addWpPoint(resultList, linepointnewMap.get(Contant.YQFZSDL), linemonthxdjclloss);
@@ -336,6 +346,9 @@ public class FiveLossesService {
                     projectdayxdtjloss.updateAndGet(v->new Double((double) (v + linedayxdtjloss.get())));
                     projectmonthxdtjloss.updateAndGet(v->new Double((double) (v + linemonthxdtjloss.get())));
                     projectyearxdtjloss.updateAndGet(v->new Double((double) (v + lineyearxdtjloss.get())));
+
+                    double xdss = linedayxdjclloss.get()+linedayxdtjloss.get();
+                    resultList.add(createWpPointData(linepointnewMap.get(Contant.XDSSDL),xdss));
                     //电网受累
                     addWpPoint(resultList, linepointnewMap.get(Contant.RWZZSDL), linedaydwslloss);
                     addWpPoint(resultList, linepointnewMap.get(Contant.YWZZSDL), linemonthdwslloss);
@@ -350,6 +363,10 @@ public class FiveLossesService {
                     projectdayhjslloss.updateAndGet(v->new Double((double) (v + linedayhjslloss.get())));
                     projectmonthhjslloss.updateAndGet(v->new Double((double) (v + linemonthhjslloss.get())));
                     projectyearhjslloss.updateAndGet(v->new Double((double) (v + lineyearhjslloss.get())));
+
+                    double slss = linedayhjslloss.get()+linedaydwslloss.get();
+                    resultList.add(createWpPointData(linepointnewMap.get(Contant.SLSSDL),slss));
+
                     //欠发发电量
                     addWpPoint(resultList, linepointnewMap.get(Contant.R0QFZT), linedayqf0);
                     addWpPoint(resultList, linepointnewMap.get(Contant.R1QFZT), linedayqf1);
@@ -390,6 +407,10 @@ public class FiveLossesService {
                 wpdayfdjclloss.updateAndGet(v->new Double((double) (v + projectdayfdjclloss.get())));
                 wpmonthfdjclloss.updateAndGet(v->new Double((double) (v + projectmonthfdjclloss.get())));
                 wpyearfdjclloss.updateAndGet(v->new Double((double) (v + projectyearfdjclloss.get())));
+
+                double xnss = projectdaydjloss.get() + projectdaysdtjloss.get()+projectdayxnloss.get()+projectdayfdjclloss.get();
+                resultList.add(createWpPointData(projectpointnewMap.get(Contant.XNSSDL),xnss));
+
                 //故障
                 addWpPoint(resultList, projectpointnewMap.get(Contant.RGZZSDL), projectdaygzloss);
                 addWpPoint(resultList, projectpointnewMap.get(Contant.YGZZSDL), projectmonthgzloss);
@@ -404,6 +425,9 @@ public class FiveLossesService {
                 wpdaygzslloss.updateAndGet(v->new Double((double) (v + projectdaygzslloss.get())));
                 wpmonthgzslloss.updateAndGet(v->new Double((double) (v + projectmonthgzslloss.get())));
                 wpyeargzslloss.updateAndGet(v->new Double((double) (v + projectyeargzslloss.get())));
+
+                double gzss = projectdaygzloss.get() + projectdaygzslloss.get();
+                resultList.add(createWpPointData(projectpointnewMap.get(Contant.GZSSDL),gzss));
                 //维护
                 addWpPoint(resultList, projectpointnewMap.get(Contant.RJXZSDL), projectdaywhloss);
                 addWpPoint(resultList, projectpointnewMap.get(Contant.YJXZSDL), projectmonthwhloss);
@@ -418,6 +442,9 @@ public class FiveLossesService {
                 wpdaywhslloss.updateAndGet(v->new Double((double) (v + projectdaywhslloss.get())));
                 wpmonthwhslloss.updateAndGet(v->new Double((double) (v + projectmonthwhslloss.get())));
                 wpyearwhslloss.updateAndGet(v->new Double((double) (v + projectyearwhslloss.get())));
+
+                double whss = projectdaywhloss.get() + projectdaywhslloss.get();
+                resultList.add(createWpPointData(projectpointnewMap.get(Contant.WHSSDL),whss));
                 //限电降出力
                 addWpPoint(resultList, projectpointnewMap.get(Contant.RQFZSDL), projectdayxdjclloss);
                 addWpPoint(resultList, projectpointnewMap.get(Contant.YQFZSDL), projectmonthxdjclloss);
@@ -432,6 +459,9 @@ public class FiveLossesService {
                 wpdayxdtjloss.updateAndGet(v->new Double((double) (v + projectdayxdtjloss.get())));
                 wpmonthxdtjloss.updateAndGet(v->new Double((double) (v + projectmonthxdtjloss.get())));
                 wpyearxdtjloss.updateAndGet(v->new Double((double) (v + projectyearxdtjloss.get())));
+
+                double xdss = projectdayxdjclloss.get() + projectdayxdtjloss.get();
+                resultList.add(createWpPointData(projectpointnewMap.get(Contant.XDSSDL),xdss));
                 //电网受累
                 addWpPoint(resultList, projectpointnewMap.get(Contant.RWZZSDL), projectdaydwslloss);
                 addWpPoint(resultList, projectpointnewMap.get(Contant.YWZZSDL), projectmonthdwslloss);
@@ -446,6 +476,9 @@ public class FiveLossesService {
                 wpdayhjslloss.updateAndGet(v->new Double((double) (v + projectdayhjslloss.get())));
                 wpmonthhjslloss.updateAndGet(v->new Double((double) (v + projectmonthhjslloss.get())));
                 wpyearhjslloss.updateAndGet(v->new Double((double) (v + projectyearhjslloss.get())));
+
+                double slss = projectdaydwslloss.get() + projectdayhjslloss.get();
+                resultList.add(createWpPointData(projectpointnewMap.get(Contant.SLSSDL),slss));
                 //欠发发电量
                 addWpPoint(resultList, projectpointnewMap.get(Contant.R0QFZT), projectdayqf0);
                 addWpPoint(resultList, projectpointnewMap.get(Contant.R1QFZT), projectdayqf1);
@@ -466,7 +499,6 @@ public class FiveLossesService {
             addWpPoint(resultList, wppointnewMap.get(Contant.RSSTZSDL), wpdaysdtjloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YSSTZSDL), wpmonthsdtjloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NSSTZSDL), wpyearsdtjloss);
-
             //性能
             addWpPoint(resultList, wppointnewMap.get(Contant.RXNZSDL), wpdayxnloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YXNZSDL), wpmonthxnloss);
@@ -475,14 +507,21 @@ public class FiveLossesService {
             addWpPoint(resultList, wppointnewMap.get(Contant.RSQXZSDL), wpdayfdjclloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YSQXZSDL), wpmonthfdjclloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NSQXZSDL), wpyearfdjclloss);
+
+            double xnss = wpdaydjloss.get() + wpdaysdtjloss.get()+wpdayxnloss.get()+wpdayfdjclloss.get();
+            resultList.add(createWpPointData(wppointnewMap.get(Contant.XNSSDL),xnss));
              //故障
             addWpPoint(resultList, wppointnewMap.get(Contant.RGZZSDL), wpdaygzloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YGZZSDL), wpmonthgzloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NGZZSDL), wpyeargzloss);
-                //故障受累
+            //故障受累
             addWpPoint(resultList, wppointnewMap.get(Contant.RSZZSDL), wpdaygzslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YSZZSDL), wpmonthgzslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NSZZSDL), wpyeargzslloss);
+
+            double gzss = wpdaygzloss.get() + wpdaygzslloss.get();
+            resultList.add(createWpPointData(wppointnewMap.get(Contant.GZSSDL),gzss));
+
             //维护
             addWpPoint(resultList, wppointnewMap.get(Contant.RJXZSDL), wpdaywhloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YJXZSDL), wpmonthwhloss);
@@ -491,6 +530,9 @@ public class FiveLossesService {
             addWpPoint(resultList, wppointnewMap.get(Contant.RLZZSDL), wpdaywhslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YLZZSDL), wpmonthwhslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NLZZSDL), wpyearwhslloss);
+
+            double whss = wpdaywhloss.get() + wpdaywhslloss.get();
+            resultList.add(createWpPointData(wppointnewMap.get(Contant.WHSSDL),whss));
             //限电降出力
             addWpPoint(resultList, wppointnewMap.get(Contant.RQFZSDL), wpdayxdjclloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YQFZSDL), wpmonthxdjclloss);
@@ -499,6 +541,9 @@ public class FiveLossesService {
             addWpPoint(resultList, wppointnewMap.get(Contant.RXDZSDL), wpdayxdtjloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YXDZSDL), wpmonthxdtjloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NXDZSDL), wpyearxdtjloss);
+
+            double xdss = wpdayxdjclloss.get() + wpdayxdtjloss.get();
+            resultList.add(createWpPointData(wppointnewMap.get(Contant.XDSSDL),xdss));
             //电网受累
             addWpPoint(resultList, wppointnewMap.get(Contant.RWZZSDL), wpdaydwslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YWZZSDL), wpmonthdwslloss);
@@ -507,6 +552,10 @@ public class FiveLossesService {
             addWpPoint(resultList, wppointnewMap.get(Contant.RTZZSDL), wpdayhjslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.YTZZSDL), wpmonthhjslloss);
             addWpPoint(resultList, wppointnewMap.get(Contant.NTZZSDL), wpyearhjslloss);
+
+            double slss = wpdaydwslloss.get() + wpdayhjslloss.get();
+            resultList.add(createWpPointData(wppointnewMap.get(Contant.SLSSDL),slss));
+
             //欠发发电量
             addWpPoint(resultList, wppointnewMap.get(Contant.R0QFZT), wpdayqf0);
             addWpPoint(resultList, wppointnewMap.get(Contant.R1QFZT), wpdayqf1);
@@ -602,29 +651,46 @@ public class FiveLossesService {
             }
             if (ztmxDatasSnap.size() == powerDatasSnap.size()){
                 //待机损失
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 0.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRDJSSDL));
+                double djss = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 0.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRDJSSDL));
                 //手动停机
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 1.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRSTSSDL));
+                double sdtj = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 1.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRSTSSDL));
                 //并网损失电量
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 2.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRXNSSDL));
+                double bwss = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 2.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRXNSSDL));
                 //发电降出力
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 3.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRQXSSDL));
+                double fdjcl = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 3.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRQXSSDL));
+
+                double xnss = djss + sdtj + bwss + fdjcl;
+                resultList.add(createWtPointData(windturbinetestingpointnewMap.get(Contant.XNSSDL),xnss));
+
                 //限电降出力
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 4.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRQFSSDL));
+                double xdjcl = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 4.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRQFSSDL));
                 //限电停机
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 5.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRXDSSDL));
+                double xdtj = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 5.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRXDSSDL));
+
+                double xdss = xdjcl + xdtj;
+                resultList.add(createWtPointData(windturbinetestingpointnewMap.get(Contant.XDSSDL),xdss));
                 //故障
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 6.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRGZSSDL));
+                double gzss = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 6.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRGZSSDL));
                 //故障受累
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 7.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRSZSSDL));
+                double gzsl = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 7.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRSZSSDL));
+
+                double gzsss = gzss + gzsl;
+                resultList.add(createWtPointData(windturbinetestingpointnewMap.get(Contant.GZSSDL),gzsss));
                 //检修
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 8.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRJXSSDL));
+                double jxss = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 8.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRJXSSDL));
                 //检修受累
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 9.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRLZSSDL));
+                double jxsl = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 9.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRLZSSDL));
+
+                double whss = jxss + jxsl;
+                resultList.add(createWtPointData(windturbinetestingpointnewMap.get(Contant.WHSSDL),whss));
+
                 //电网受累
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 10.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRWZSSDL));
+                double dwsl = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 10.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRWZSSDL));
                 //环境受累
-                generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 11.0,resultList,windturbinetestingpointnewMap.get(Contant.WTRTZSSDL));
+                double hjsl = generalLoss(ztmxDatasSnap, bzglDatasSnap, zsglDatasSnap, powerDatasSnap, 11.0, resultList, windturbinetestingpointnewMap.get(Contant.WTRTZSSDL));
+
+                double slss = dwsl + hjsl;
+                resultList.add(createWtPointData(windturbinetestingpointnewMap.get(Contant.SLSSDL),slss));
 
                 //欠发状态
                 generalQfzt(powerDatasSnap, ztmxDatasSnap, zsglDatasSnap,qfztPoint,resultList);

+ 2 - 2
realtime/generation-service/src/main/java/com/gyee/generation/service/TheorypowerService.java

@@ -185,8 +185,8 @@ public class TheorypowerService {
                     vo.setY(powerpoints.get(x).getPointValueInDouble());
                     tempList.add(vo);
                 }
-                List<PointVo> collect = tempList.stream().filter(i -> i.getY() > 0 && i.getX() > 0).collect(Collectors.toList());
-                Collections.sort(collect, Comparator.comparing(PointVo::getX));
+                List<PointVo> collect = tempList.stream().filter(i -> i.getY() >= 0 && i.getY() <= (CacheContext.modelpower.get(wt.getId())*1.5) && i.getX()>=0 && i.getX()<=25).collect(Collectors.toList());
+                Collections.sort(collect, Comparator.comparing(PointVo::getY));
                 double[] speeds = collect.stream().map(i -> i.getX()).mapToDouble(Double::doubleValue).toArray();
                 double[] powers = collect.stream().map(i -> i.getY()).mapToDouble(Double::doubleValue).toArray();
                 pointVoList = LineBuild.buildLine(speeds, powers, speeds.length, 20, 0.01);

+ 2 - 2
realtime/generation-service/src/test/java/com/gyee/generation/GenerationTest.java

@@ -55,9 +55,9 @@ public class GenerationTest {
 //        theorypowerService.fittingPower();
 //        theorypowerService.theropower();
 //        averageAndGeneratingService.saveAvespeedAndAvepowerAndScada();
-//        fiveLossesService.lossesReal();
-//        safetyService.safetyReatimel();
         fiveLossesService.lossesReal();
+//        safetyService.safetyReatimel();
+//        fiveLossesService.lossesReal();
     }
 
 

+ 51 - 0
realtime/generationregion-service/src/main/java/com/gyee/regionrealtime/service/RegionRealtimeService.java

@@ -139,6 +139,7 @@ public class RegionRealtimeService {
             AtomicReference<Double> r2qfzt = new AtomicReference<>((double) 0);
             AtomicReference<Double> r3qfzt = new AtomicReference<>((double) 0);
             AtomicReference<Double> r4qfzt = new AtomicReference<>((double) 0);
+
             final Double[] aqts = {0.0};
             windpowerstations.stream().forEach(wp->{
                 Map<String, Windpowerstationpointnew> windpowerstationpointnewMap = wppointmap.get(wp.getId());
@@ -1072,6 +1073,32 @@ public class RegionRealtimeService {
             resultList.add(createWpPoint(r2qfzt,regionMap.get(Contant.R2QFZT)));
             resultList.add(createWpPoint(r3qfzt,regionMap.get(Contant.R3QFZT)));
             resultList.add(createWpPoint(r4qfzt,regionMap.get(Contant.R4QFZT)));
+
+            //算节能减排
+            double jpeyhl = yfdl.get() * 0.0059;
+            double jpeyht = yfdl.get() * 0.8568;
+            double jybm = yfdl.get() * 0.37;
+            double jys = yfdl.get() * 3.05;
+            resultList.add(createWpPoint(jpeyhl,regionMap.get(Contant.JPEYHL)));
+            resultList.add(createWpPoint(jpeyht,regionMap.get(Contant.JPEYHT)));
+            resultList.add(createWpPoint(jybm,regionMap.get(Contant.JYBM)));
+            resultList.add(createWpPoint(jys,regionMap.get(Contant.JYS)));
+            //算风能利用率
+            double yssdl = ysdjzsdl.get() + ysstzsdl.get() + yxnzsdl.get() + ysqxzsdl.get() + ygzzsdl.get() + yszzsdl.get() + yjxzsdl.get() + ylzzsdl.get() + yqfzsdl.get() + yxdzsdl.get() + ywzzsdl.get() + ytzzsdl.get();
+            double fnlyl = (yssdl + yfdl.get()) != 0? yfdl.get() /(yssdl+yfdl.get()) * 100 : 0.0;
+            resultList.add(createWpPoint(fnlyl,regionMap.get(Contant.FNLYL)));
+            //算五项损失新加点
+            double xnss = rsdjzsdl.get()+rsstzsdl.get()+rxnzsdl.get()+rsqxzsdl.get();
+            resultList.add(createWpPoint(xnss,regionMap.get(Contant.XNSSDL)));
+            double gzss = rgzzsdl.get()+rszzsdl.get();
+            resultList.add(createWpPoint(gzss,regionMap.get(Contant.GZSSDL)));
+            double whss = rjxzsdl.get()+rlzzsdl.get();
+            resultList.add(createWpPoint(whss,regionMap.get(Contant.WHSSDL)));
+            double xdss = rqfzsdl.get()+rxdzsdl.get();
+            resultList.add(createWpPoint(xdss,regionMap.get(Contant.XDSSDL)));
+            double slss = rwzzsdl.get()+rtzzsdl.get();
+            resultList.add(createWpPoint(slss,regionMap.get(Contant.SLSSDL)));
+
         });
         edosUtil.sendMultiPoint(resultList);
     }
@@ -2118,6 +2145,30 @@ public class RegionRealtimeService {
         resultList.add(createWpPoint(r3qfzt,regionMap.get(Contant.R3QFZT)));
         resultList.add(createWpPoint(r4qfzt,regionMap.get(Contant.R4QFZT)));
 
+        //算节能减排
+        double jpeyhl = yfdl.get() * 0.0059;
+        double jpeyht = yfdl.get() * 0.8568;
+        double jybm = yfdl.get() * 0.37;
+        double jys = yfdl.get() * 3.05;
+        resultList.add(createWpPoint(jpeyhl,regionMap.get(Contant.JPEYHL)));
+        resultList.add(createWpPoint(jpeyht,regionMap.get(Contant.JPEYHT)));
+        resultList.add(createWpPoint(jybm,regionMap.get(Contant.JYBM)));
+        resultList.add(createWpPoint(jys,regionMap.get(Contant.JYS)));
+        //算风能利用率
+        double yssdl = ysdjzsdl.get() + ysstzsdl.get() + yxnzsdl.get() + ysqxzsdl.get() + ygzzsdl.get() + yszzsdl.get() + yjxzsdl.get() + ylzzsdl.get() + yqfzsdl.get() + yxdzsdl.get() + ywzzsdl.get() + ytzzsdl.get();
+        double fnlyl = (yssdl + yfdl.get()) != 0? yfdl.get() /(yssdl+yfdl.get()) * 100 : 0.0;
+        resultList.add(createWpPoint(fnlyl,regionMap.get(Contant.FNLYL)));
+        //算五项损失新加点
+        double xnss = rsdjzsdl.get()+rsstzsdl.get()+rxnzsdl.get()+rsqxzsdl.get();
+        resultList.add(createWpPoint(xnss,regionMap.get(Contant.XNSSDL)));
+        double gzss = rgzzsdl.get()+rszzsdl.get();
+        resultList.add(createWpPoint(gzss,regionMap.get(Contant.GZSSDL)));
+        double whss = rjxzsdl.get()+rlzzsdl.get();
+        resultList.add(createWpPoint(whss,regionMap.get(Contant.WHSSDL)));
+        double xdss = rqfzsdl.get()+rxdzsdl.get();
+        resultList.add(createWpPoint(xdss,regionMap.get(Contant.XDSSDL)));
+        double slss = rwzzsdl.get()+rtzzsdl.get();
+        resultList.add(createWpPoint(slss,regionMap.get(Contant.SLSSDL)));
         edosUtil.sendMultiPoint(resultList);
     }
 

+ 3 - 3
realtime/generationregion-service/src/test/java/com/gyee/regionrealtime/RegionrealtimeTest.java

@@ -24,9 +24,9 @@ public class RegionrealtimeTest {
     private RegionRealtimeService regionRealtimeService;
     @Test
     public void test1() throws Exception {
-//        regionRealtimeService.regionRealtime("-1");
-//        regionRealtimeService.regionRealtime("-2");
-//        regionRealtimeService.regionRealtime("0");
+        regionRealtimeService.regionRealtime("-1");
+        regionRealtimeService.regionRealtime("-2");
+        regionRealtimeService.regionRealtime("0");
 
 
         regionRealtimeService.groupRealtime("-1");