Przeglądaj źródła

处理除数为零和double类型null值的情况

wangchangsheng 3 lat temu
rodzic
commit
be4560d4fd

+ 84 - 7
benchmarking-impala/src/main/java/com/gyee/benchmarkingimpala/service/BenchmarkingService.java

@@ -2335,7 +2335,33 @@ public class BenchmarkingService  {
             foreigntype = "风电";
         }
         QueryWrapper<Benchmark> qw = new QueryWrapper<>();
-        qw.select("foreignkeyid,avg(mark) mark,avg(capacity) capacity,avg(units) units,sum(theoreticalpower) theoreticalpower,sum(actualpower) actualpower,sum(daynhgzssdl) daynhgzssdl, sum(daynhwhssdl) daynhwhssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl, isnull(sum(actualpower)/nullif(sum(theoreticalpower),0),0)*100 windenergy, isnull(sum(daynhxdssdl)/nullif(sum(theoreticalpower),0),0)*100 powerlossrate, isnull(sum(daynhqfdl)/nullif(sum(theoreticalpower),0),0)*100 performancelossrate, avg(comprehensiverate) comprehensiverate,sum(actualpower)/avg(capacity) utilizationhours,avg(windpoweraccuracy) windpoweraccuracy,avg(agccurvefollowing) agccurvefollowing,avg(mtbf) mtbf,avg(mttr) mttr,avg(mttf) mttf,avg(availability) availability,avg(availabilityfactor) availabilityfactor, isnull(sum(daynhgzssdl)/nullif(sum(theoreticalpower),0),0)*100 failurelossrate, isnull(sum(daynhwhssdl)/nullif(sum(theoreticalpower),0),0)*100 mainlossrate,avg(hiddentimely) hiddentimely,avg(resettimelyrate) resettimelyrate,avg(statetransitionrate) statetransitionrate,avg(eliminationrate) eliminationrate,avg(speed) speed,avg(staticwindfrequency) staticwindfrequency,avg(effectivewindhourrate) effectivewindhourrate");if (foreigntype.equals("风电")){
+        qw.select("foreignkeyid,avg(mark) mark," +
+                "avg(capacity) capacity," +
+                "avg(units) units," +
+                "sum(theoreticalpower) theoreticalpower," +
+                "sum(actualpower) actualpower," +
+                "sum(daynhgzssdl) daynhgzssdl, " +
+                "sum(daynhwhssdl) daynhwhssdl," +
+                "sum(daynhxdssdl) daynhxdssdl," +
+                "sum(daynhqfdl) daynhqfdl," +
+                "sum(daynhcfdl) daynhcfdl, " +
+                "isnull(sum(actualpower)/nullif(sum(theoreticalpower),0),0)*100 windenergy, " +
+                "isnull(sum(daynhxdssdl)/nullif(sum(theoreticalpower),0),0)*100 powerlossrate, " +
+                "isnull(sum(daynhqfdl)/nullif(sum(theoreticalpower),0),0)*100 performancelossrate, " +
+                "isnull(sum(daynhgzssdl)/nullif(sum(theoreticalpower),0),0)*100 failurelossrate, " +
+                "isnull(sum(daynhwhssdl)/nullif(sum(theoreticalpower),0),0)*100 mainlossrate," +
+                "avg(comprehensiverate) comprehensiverate,sum(actualpower)/avg(capacity) utilizationhours," +
+                "avg(windpoweraccuracy) windpoweraccuracy," +
+                "avg(agccurvefollowing) agccurvefollowing," +
+                "avg(mtbf) mtbf,avg(mttr) mttr,avg(mttf) mttf," +
+                "avg(availability) availability,avg(availabilityfactor) availabilityfactor," +
+                "avg(hiddentimely) hiddentimely," +
+                "avg(resettimelyrate) resettimelyrate," +
+                "avg(statetransitionrate) statetransitionrate," +
+                "avg(eliminationrate) eliminationrate," +
+                "avg(speed) speed," +
+                "avg(staticwindfrequency) staticwindfrequency," +
+                "avg(effectivewindhourrate) effectivewindhourrate");if (foreigntype.equals("风电")){
             qw.like("foreignkeyid","_FDC");
         }else {
             qw.like("foreignkeyid","_GDC");
@@ -2360,7 +2386,25 @@ public class BenchmarkingService  {
     }
     public void getSj(String timetype, String foreigntype,List<Benchmark> resultList) throws Exception {
         QueryWrapper<Benchmark> qw = new QueryWrapper<>();
-        qw.select("max(foreignkeyid) foreignkeyid,sum(theoreticalpower) theoreticalpower,sum(actualpower) actualpower,sum(daynhgzssdl) daynhgzssdl,sum(daynhwhssdl) daynhwhssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl,sum(actualpower)/sum(theoreticalpower)*100 windenergy,sum(daynhxdssdl)/sum(theoreticalpower)*100 powerlossrate,sum(daynhqfdl)/sum(theoreticalpower)*100 performancelossrate,sum(daynhgzssdl)/sum(theoreticalpower)*100 failurelossrate,sum(daynhwhssdl)/sum(theoreticalpower)*100 mainlossrate,avg(resettimelyrate) resettimelyrate,avg(statetransitionrate) statetransitionrate,avg(eliminationrate) eliminationrate,avg(comprehensiverate) comprehensiverate,avg(windpoweraccuracy) windpoweraccuracy,avg(agccurvefollowing) agccurvefollowing");
+        qw.select("max(foreignkeyid) foreignkeyid," +
+                "sum(theoreticalpower) theoreticalpower," +
+                "sum(actualpower) actualpower," +
+                "sum(daynhgzssdl) daynhgzssdl," +
+                "sum(daynhwhssdl) daynhwhssdl," +
+                "sum(daynhxdssdl) daynhxdssdl," +
+                "sum(daynhqfdl) daynhqfdl," +
+                "sum(daynhcfdl) daynhcfdl," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( actualpower ) / SUM ( theoreticalpower ) * 100  END AS windenergy," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhxdssdl ) / SUM ( theoreticalpower ) * 100  END AS powerlossrate," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhqfdl ) / SUM ( theoreticalpower ) * 100  END AS performancelossrate," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhgzssdl ) / SUM ( theoreticalpower ) * 100  END AS failurelossrate," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhwhssdl ) / SUM ( theoreticalpower ) * 100  END AS mainlossrate," +
+                "avg(resettimelyrate) resettimelyrate," +
+                "avg(statetransitionrate) statetransitionrate," +
+                "avg(eliminationrate) eliminationrate," +
+                "avg(comprehensiverate) comprehensiverate," +
+                "avg(windpoweraccuracy) windpoweraccuracy," +
+                "avg(agccurvefollowing) agccurvefollowing");
         if (foreigntype.equals("风电")){
             qw.like("foreignkeyid","_FDC");
         }else {
@@ -2388,7 +2432,22 @@ public class BenchmarkingService  {
     }
     public void getHb(String timetype, String foreigntype,List<Benchmark> resultList) throws Exception {
         QueryWrapper<Benchmark> qw = new QueryWrapper<>();
-        qw.select("max(foreignkeyid) foreignkeyid,sum(theoreticalpower) theoreticalpower,sum(actualpower) actualpower,sum(daynhgzssdl) daynhgzssdl,sum(daynhwhssdl) daynhwhssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl,isnull(sum(actualpower)/nullif(sum(theoreticalpower),0),0)*100 windenergy,isnull(sum(daynhxdssdl)/nullif(sum(theoreticalpower),0),0)*100 powerlossrate,isnull(sum(daynhqfdl)/nullif(sum(theoreticalpower),0),0)*100 performancelossrate,isnull(sum(daynhgzssdl)/nullif(sum(theoreticalpower),0),0)*100 failurelossrate,isnull(sum(daynhwhssdl)/nullif(sum(theoreticalpower),0),0)*100 mainlossrate,avg(resettimelyrate) resettimelyrate,avg(statetransitionrate) statetransitionrate,avg(eliminationrate) eliminationrate,avg(comprehensiverate) comprehensiverate,avg(windpoweraccuracy) windpoweraccuracy,avg(agccurvefollowing) agccurvefollowing");
+        qw.select("max(foreignkeyid) foreignkeyid," +
+                "sum(theoreticalpower) theoreticalpower," +
+                "sum(actualpower) actualpower," +
+                "sum(daynhgzssdl) daynhgzssdl," +
+                "sum(daynhwhssdl) daynhwhssdl," +
+                "sum(daynhxdssdl) daynhxdssdl," +
+                "sum(daynhqfdl) daynhqfdl," +
+                "sum(daynhcfdl) daynhcfdl," +
+                "isnull(sum(actualpower)/nullif(sum(theoreticalpower),0),0)*100 windenergy," +
+                "isnull(sum(daynhxdssdl)/nullif(sum(theoreticalpower),0),0)*100 powerlossrate," +
+                "isnull(sum(daynhqfdl)/nullif(sum(theoreticalpower),0),0)*100 performancelossrate," +
+                "isnull(sum(daynhgzssdl)/nullif(sum(theoreticalpower),0),0)*100 failurelossrate," +
+                "isnull(sum(daynhwhssdl)/nullif(sum(theoreticalpower),0),0)*100 mainlossrate," +
+                "avg(resettimelyrate) resettimelyrate,avg(statetransitionrate) statetransitionrate," +
+                "avg(eliminationrate) eliminationrate,avg(comprehensiverate) comprehensiverate," +
+                "avg(windpoweraccuracy) windpoweraccuracy,avg(agccurvefollowing) agccurvefollowing");
         if (foreigntype.equals("风电")){
             qw.like("foreignkeyid","_FDC");
         }else {
@@ -2427,9 +2486,9 @@ public class BenchmarkingService  {
                 "sum(daynhxdssdl) daynhxdssdl," +
                 "sum(daynhqfdl) daynhqfdl," +
                 "sum(daynhcfdl) daynhcfdl," +
-                "CASE WHEN sum(theoreticalpower) = 1 THEN  0 ELSE sum(actualpower)/sum(theoreticalpower)*100 END AS windenergy," +
-                "CASE WHEN sum(theoreticalpower) = 1 THEN  0 ELSE sum(daynhxdssdl)/sum(theoreticalpower)*100 END AS  powerlossrate," +
-                "CASE WHEN sum(theoreticalpower) = 1 THEN  0 ELSE sum(daynhqfdl)/sum(theoreticalpower)*100 END AS performancelossrate," +
+                "CASE WHEN sum(theoreticalpower) = 0 THEN  0 ELSE sum(actualpower)/sum(theoreticalpower)*100 END AS windenergy," +
+                "CASE WHEN sum(theoreticalpower) = 0 THEN  0 ELSE sum(daynhxdssdl)/sum(theoreticalpower)*100 END AS  powerlossrate," +
+                "CASE WHEN sum(theoreticalpower) = 0 THEN  0 ELSE sum(daynhqfdl)/sum(theoreticalpower)*100 END AS performancelossrate," +
                 "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhgzssdl ) / SUM ( theoreticalpower ) * 100  END AS failurelossrate,"+
                 "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhwhssdl ) / SUM ( theoreticalpower ) * 100  END AS mainlossrate," +
                 "avg(resettimelyrate) resettimelyrate," +
@@ -2467,7 +2526,25 @@ public class BenchmarkingService  {
     }
     public void getJz(String timetype, String foreigntype,List<Benchmark> resultList) throws Exception {
         QueryWrapper<Benchmark> qw = new QueryWrapper<>();
-        qw.select("max(foreignkeyid) foreignkeyid,sum(theoreticalpower) theoreticalpower,sum(actualpower) actualpower,sum(daynhgzssdl) daynhgzssdl,sum(daynhwhssdl) daynhwhssdl,sum(daynhxdssdl) daynhxdssdl,sum(daynhqfdl) daynhqfdl,sum(daynhcfdl) daynhcfdl,sum(actualpower)/sum(theoreticalpower)*100 windenergy,sum(daynhxdssdl)/sum(theoreticalpower)*100 powerlossrate,sum(daynhqfdl)/sum(theoreticalpower)*100 performancelossrate,sum(daynhgzssdl)/sum(theoreticalpower)*100 failurelossrate,sum(daynhwhssdl)/sum(theoreticalpower)*100 mainlossrate,avg(resettimelyrate) resettimelyrate,avg(statetransitionrate) statetransitionrate,avg(eliminationrate) eliminationrate,avg(comprehensiverate) comprehensiverate,avg(windpoweraccuracy) windpoweraccuracy,avg(agccurvefollowing) agccurvefollowing");
+        qw.select("max(foreignkeyid) foreignkeyid," +
+                "sum(theoreticalpower) theoreticalpower," +
+                "sum(actualpower) actualpower," +
+                "sum(daynhgzssdl) daynhgzssdl," +
+                "sum(daynhwhssdl) daynhwhssdl," +
+                "sum(daynhxdssdl) daynhxdssdl," +
+                "sum(daynhqfdl) daynhqfdl," +
+                "sum(daynhcfdl) daynhcfdl," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( actualpower ) / SUM ( theoreticalpower ) * 100  END AS windenergy," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhxdssdl ) / SUM ( theoreticalpower ) * 100  END AS powerlossrate," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhqfdl ) / SUM ( theoreticalpower ) * 100  END AS performancelossrate," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhgzssdl ) / SUM ( theoreticalpower ) * 100  END AS failurelossrate," +
+                "CASE WHEN SUM ( theoreticalpower ) = 0 THEN 0 ELSE SUM ( daynhwhssdl ) / SUM ( theoreticalpower ) * 100  END AS mainlossrate," +
+                "avg(resettimelyrate) resettimelyrate," +
+                "avg(statetransitionrate) statetransitionrate," +
+                "avg(eliminationrate) eliminationrate," +
+                "avg(comprehensiverate) comprehensiverate," +
+                "avg(windpoweraccuracy) windpoweraccuracy," +
+                "avg(agccurvefollowing) agccurvefollowing");
         if (foreigntype.equals("风电")){
             qw.like("foreignkeyid","_FDC");
         }else {