浏览代码

小数位修改

王波 5 月之前
父节点
当前提交
e253c9833d

+ 119 - 119
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/EarlyWarning/NewGetWindReportService.java

@@ -124,21 +124,21 @@ public class NewGetWindReportService {
         setTurbineIdFromNemCode(wtls, ssdlbottom3list);
 
         //周期数据
-        double zqpjfs = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getPjfs(), 2) : 0.0;
-        double zqklyl = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getKlyl(), 2) : 0.0;
-        double zqfdl = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getRfdl() / bl, 2) : 0.0;
-        double zqxdss = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getXdss() / bl, 2) : 0.0;
-        double zqjxss = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getJhjxss() / bl, 2) : 0.0;
-        double zqfjhjxss = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getFjhjxss() / bl, 2) : 0.0;
-        double zdxnss = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getXnss() / bl, 2) : 0.0;
-        double zqslss = monthList.size() > 0 ? StringUtils.round(monthList.get(0).getSlss() / bl, 2) : 0.0;
-        double zssdl = StringUtils.round(zqxdss + zqjxss + zqfjhjxss + zdxnss + zqslss, 2);
+        double zqpjfs = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getPjfs(), 2) : 0.0;
+        double zqklyl = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getKlyl(), 2) : 0.0;
+        double zqfdl = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getRfdl() / bl, 2) : 0.0;
+        double zqxdss = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getXdss() / bl, 2) : 0.0;
+        double zqjxss = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getJhjxss() / bl, 2) : 0.0;
+        double zqfjhjxss = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getFjhjxss() / bl, 2) : 0.0;
+        double zdxnss = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getXnss() / bl, 2) : 0.0;
+        double zqslss = monthList.size() > 0 ? StringUtils.roundDivide(monthList.get(0).getSlss() / bl, 2) : 0.0;
+        double zssdl = StringUtils.roundDivide(zqxdss + zqjxss + zqfjhjxss + zdxnss + zqslss, 2);
 
         information mation = new information();
         mation.setCategory("周期内核心数据");
         mation.setContent("平均风速:" + zqpjfs + "m/s;场站总发电量:" + zqfdl + "万kWh\n" +
                 "50台风机平均可利用率:" + zqklyl + "%;总损失电量:" + zssdl + "万kWh\n" +
-                "单台平均发电量:" + StringUtils.round(zqfdl / 50, 2) + "万kWh");
+                "单台平均发电量:" + StringUtils.roundDivide(zqfdl / 50, 2) + "万kWh");
 
         // 平均值变量
         double fdlavgtop3 = 0.0;
@@ -180,16 +180,16 @@ public class NewGetWindReportService {
                 lnxdssdl[i] = item.getXdss() / bl;
             }
         }
-        double p1fdl = StringUtils.round(lnfdl[0] + lnfdl[1], 2);
-        double p2fdl = StringUtils.round(lnfdl[2] + lnfdl[3], 2);
-        double p1llfdl = StringUtils.round(lnllfdl[0] + lnllfdl[1], 2);
-        double p2llfdl = StringUtils.round(lnllfdl[2] + lnllfdl[3], 2);
-        double p1ssdl = StringUtils.round(lnzssdl[0] + lnzssdl[1], 2);
-        double p2ssdl = StringUtils.round(lnzssdl[2] + lnzssdl[3], 2);
-        double p1fnlyl = StringUtils.round((p1fdl / p1llfdl) * 100, 2);
-        double p2fnlyl = StringUtils.round((p2fdl / p2llfdl) * 100, 2);
-        double p1qfl = StringUtils.round((lnxdssdl[0] + lnxdssdl[1]) / p1llfdl, 2);
-        double p2qfl = StringUtils.round((lnxdssdl[2] + lnxdssdl[3]) / p2llfdl, 2);
+        double p1fdl = StringUtils.roundDivide(lnfdl[0] + lnfdl[1], 2);
+        double p2fdl = StringUtils.roundDivide(lnfdl[2] + lnfdl[3], 2);
+        double p1llfdl = StringUtils.roundDivide(lnllfdl[0] + lnllfdl[1], 2);
+        double p2llfdl = StringUtils.roundDivide(lnllfdl[2] + lnllfdl[3], 2);
+        double p1ssdl = StringUtils.roundDivide(lnzssdl[0] + lnzssdl[1], 2);
+        double p2ssdl = StringUtils.roundDivide(lnzssdl[2] + lnzssdl[3], 2);
+        double p1fnlyl = StringUtils.roundDivide((p1fdl / p1llfdl) * 100, 2);
+        double p2fnlyl = StringUtils.roundDivide((p2fdl / p2llfdl) * 100, 2);
+        double p1qfl = StringUtils.roundDivide((lnxdssdl[0] + lnxdssdl[1]) / p1llfdl, 2);
+        double p2qfl = StringUtils.roundDivide((lnxdssdl[2] + lnxdssdl[3]) / p2llfdl, 2);
 
         // 处理top3list数据
         if (top3list.size() > 0) {
@@ -202,14 +202,14 @@ public class NewGetWindReportService {
                 topIds[i] = item.getStationId() != null ? item.getStationId() : "";
 
                 // 计算各项值并赋值
-                topFdl[i] = StringUtils.round(item.getRfdl() / bl, 2);
-                topLlfdl[i] = StringUtils.round(item.getLlfdl() / bl, 2);
-                topGzssdl[i] = StringUtils.round(item.getFjhjxss() / bl, 2);
-                topJxssdl[i] = StringUtils.round(item.getJhjxss() / bl, 2);
-                topXnssdl[i] = StringUtils.round(item.getXnss() / bl, 2);
-                topXdssdl[i] = StringUtils.round(item.getXdss() / bl, 2);
-                topSlssdl[i] = StringUtils.round(item.getSlss() / bl, 2);
-                topFnlyl[i] = StringUtils.round(item.getFnlyl(), 2);
+                topFdl[i] = StringUtils.roundDivide(item.getRfdl() / bl, 2);
+                topLlfdl[i] = StringUtils.roundDivide(item.getLlfdl() / bl, 2);
+                topGzssdl[i] = StringUtils.roundDivide(item.getFjhjxss() / bl, 2);
+                topJxssdl[i] = StringUtils.roundDivide(item.getJhjxss() / bl, 2);
+                topXnssdl[i] = StringUtils.roundDivide(item.getXnss() / bl, 2);
+                topXdssdl[i] = StringUtils.roundDivide(item.getXdss() / bl, 2);
+                topSlssdl[i] = StringUtils.roundDivide(item.getSlss() / bl, 2);
+                topFnlyl[i] = StringUtils.roundDivide(item.getFnlyl(), 2);
 
                 // 累加计算平均值
                 totalRfdl += item.getRfdl();
@@ -218,12 +218,12 @@ public class NewGetWindReportService {
 
 
             // 计算最终平均值
-            fdlavgtop3 = StringUtils.round((totalRfdl / bl) / 3, 2);
-            avgklyltop3 = StringUtils.round(totalKlyl / 3, 2);
+            fdlavgtop3 = StringUtils.roundDivide((totalRfdl / bl) / 3, 2);
+            avgklyltop3 = StringUtils.roundDivide(totalKlyl / 3, 2);
         }
-        double top1ssdl = StringUtils.round(topXdssdl[0] + topJxssdl[0] + topGzssdl[0] + topXnssdl[0] + topSlssdl[0], 2);
-        double top2ssdl = StringUtils.round(topXdssdl[1] + topJxssdl[1] + topGzssdl[1] + topXnssdl[1] + topSlssdl[1], 2);
-        double top3ssdl = StringUtils.round(topXdssdl[2] + topJxssdl[2] + topGzssdl[2] + topXnssdl[2] + topSlssdl[2], 2);
+        double top1ssdl = StringUtils.roundDivide(topXdssdl[0] + topJxssdl[0] + topGzssdl[0] + topXnssdl[0] + topSlssdl[0], 2);
+        double top2ssdl = StringUtils.roundDivide(topXdssdl[1] + topJxssdl[1] + topGzssdl[1] + topXnssdl[1] + topSlssdl[1], 2);
+        double top3ssdl = StringUtils.roundDivide(topXdssdl[2] + topJxssdl[2] + topGzssdl[2] + topXnssdl[2] + topSlssdl[2], 2);
         // 处理bottom3list数据
         if (bottom3list.size() > 0) {
             double totalRfdl = 0.0;
@@ -233,14 +233,14 @@ public class NewGetWindReportService {
             for (int i = 0; i < bottom3list.size(); i++) {
                 var item = bottom3list.get(i);
                 bottomIds[i] = item.getStationId() != null ? item.getStationId() : "";
-                bottomFdl[i] = StringUtils.round(item.getRfdl() / bl, 2);
+                bottomFdl[i] = StringUtils.roundDivide(item.getRfdl() / bl, 2);
 
                 totalRfdl += item.getRfdl();
                 totalKlyl += item.getKlyl();
             }
 
-            fdlavgbottom3 = StringUtils.round((totalRfdl / bl) / 3, 2);
-            avgknlylbottom3 = StringUtils.round(totalKlyl / 3, 2);
+            fdlavgbottom3 = StringUtils.roundDivide((totalRfdl / bl) / 3, 2);
+            avgknlylbottom3 = StringUtils.roundDivide(totalKlyl / 3, 2);
         }
 
 
@@ -264,7 +264,7 @@ public class NewGetWindReportService {
             double total = jhjxss + fjhjxss + xdss + slss + xnss;
 
             // 计算最大值在总和中的占比(百分比)
-            percentage = total > 0 ? StringUtils.round((maxValue / total) * 100, 2) : 0.0;
+            percentage = total > 0 ? StringUtils.roundDivide((maxValue / total) * 100, 2) : 0.0;
 
             // 确定最大值对应的中文名称
             zyss =
@@ -300,24 +300,24 @@ public class NewGetWindReportService {
 
         performance performance2 = new performance();
         performance2.setDbwd("月度风能利用率");
-        performance2.setTop("1." + fntop3list.get(0).getStationId() + "号:" + StringUtils.round(fntop3list.get(0).getFnlyl(), 2) + "%;" +
-                "2." + fntop3list.get(1).getStationId() + "号:" + StringUtils.round(fntop3list.get(1).getFnlyl(), 2) + "%;" +
-                "3." + fntop3list.get(2).getStationId() + "号:" + StringUtils.round(fntop3list.get(2).getFnlyl(), 2) + "%;");
+        performance2.setTop("1." + fntop3list.get(0).getStationId() + "号:" + StringUtils.roundDivide(fntop3list.get(0).getFnlyl(), 2) + "%;" +
+                "2." + fntop3list.get(1).getStationId() + "号:" + StringUtils.roundDivide(fntop3list.get(1).getFnlyl(), 2) + "%;" +
+                "3." + fntop3list.get(2).getStationId() + "号:" + StringUtils.roundDivide(fntop3list.get(2).getFnlyl(), 2) + "%;");
 
-        performance2.setBottom("1." + fnbottom3list.get(0).getStationId() + "号:" + StringUtils.round(fnbottom3list.get(0).getFnlyl(), 2) + "%;" +
-                "2." + fnbottom3list.get(1).getStationId() + "号:" + StringUtils.round(fnbottom3list.get(1).getFnlyl(), 2) + "%;" +
-                "3." + fnbottom3list.get(2).getStationId() + "号:" + StringUtils.round(fnbottom3list.get(2).getFnlyl(), 2) + "%;");
+        performance2.setBottom("1." + fnbottom3list.get(0).getStationId() + "号:" + StringUtils.roundDivide(fnbottom3list.get(0).getFnlyl(), 2) + "%;" +
+                "2." + fnbottom3list.get(1).getStationId() + "号:" + StringUtils.roundDivide(fnbottom3list.get(1).getFnlyl(), 2) + "%;" +
+                "3." + fnbottom3list.get(2).getStationId() + "号:" + StringUtils.roundDivide(fnbottom3list.get(2).getFnlyl(), 2) + "%;");
 
         performancesls.add(performance2);
 
         performance performance3 = new performance();
         performance3.setDbwd("月度损失电量");
-        performance3.setTop("1." + ssdltop3list.get(0).getStationId() + "号:" + StringUtils.round(ssdltop3list.get(0).getGzss() / bl, 2) + "万kWh;" +
-                "2." + ssdltop3list.get(1).getStationId() + "号:" + StringUtils.round(ssdltop3list.get(1).getGzss() / bl, 2) + "万kWh;" +
-                "3." + ssdltop3list.get(2).getStationId() + "号:" + StringUtils.round(ssdltop3list.get(2).getGzss() / bl, 2) + "万kWh;");
-        performance3.setBottom("1." + ssdlbottom3list.get(0).getStationId() + "号:" + StringUtils.round(ssdlbottom3list.get(0).getGzss() / bl, 2) + "万kWh;" +
-                "2." + ssdlbottom3list.get(1).getStationId() + "号:" + StringUtils.round(ssdlbottom3list.get(1).getGzss() / bl, 2) + "万kWh;" +
-                "3." + ssdlbottom3list.get(2).getStationId() + "号:" + StringUtils.round(ssdlbottom3list.get(2).getGzss() / bl, 2) + "万kWh;");
+        performance3.setTop("1." + ssdltop3list.get(0).getStationId() + "号:" + StringUtils.roundDivide(ssdltop3list.get(0).getGzss() / bl, 2) + "万kWh;" +
+                "2." + ssdltop3list.get(1).getStationId() + "号:" + StringUtils.roundDivide(ssdltop3list.get(1).getGzss() / bl, 2) + "万kWh;" +
+                "3." + ssdltop3list.get(2).getStationId() + "号:" + StringUtils.roundDivide(ssdltop3list.get(2).getGzss() / bl, 2) + "万kWh;");
+        performance3.setBottom("1." + ssdlbottom3list.get(0).getStationId() + "号:" + StringUtils.roundDivide(ssdlbottom3list.get(0).getGzss() / bl, 2) + "万kWh;" +
+                "2." + ssdlbottom3list.get(1).getStationId() + "号:" + StringUtils.roundDivide(ssdlbottom3list.get(1).getGzss() / bl, 2) + "万kWh;" +
+                "3." + ssdlbottom3list.get(2).getStationId() + "号:" + StringUtils.roundDivide(ssdlbottom3list.get(2).getGzss() / bl, 2) + "万kWh;");
 
         performancesls.add(performance3);
         map.put("performances", performancesls);
@@ -348,9 +348,9 @@ public class NewGetWindReportService {
             indicatorData.setWindEnergyUtilizationRate(topFnlyl[i]);
 
             // 计算出的指标
-            indicatorData.setFaultLossRate(StringUtils.round(topGzssdl[i] / topLlfdl[i] * 100, 2));
-            indicatorData.setMaintenanceLossRate(StringUtils.round(topJxssdl[i] / topLlfdl[i] * 100, 2));
-            indicatorData.setCurtailmentRate(StringUtils.round(topXdssdl[i] / topLlfdl[i] * 100, 2));
+            indicatorData.setFaultLossRate(StringUtils.roundDivide(topGzssdl[i] / topLlfdl[i] * 100, 2));
+            indicatorData.setMaintenanceLossRate(StringUtils.roundDivide(topJxssdl[i] / topLlfdl[i] * 100, 2));
+            indicatorData.setCurtailmentRate(StringUtils.roundDivide(topXdssdl[i] / topLlfdl[i] * 100, 2));
 
             fanIndicators.add(indicatorData);
         }
@@ -430,7 +430,7 @@ public class NewGetWindReportService {
 
         // 2.3 设置结论
         projectBenchmark.setConclusion(
-                pfdlmax + "在发电量指标上优于" + pfdlmin + ",惠安一期项目与惠安二期项目损失电量差距为" + StringUtils.round(p1ssdl - p2ssdl, 2) + "万kWh"
+                pfdlmax + "在发电量指标上优于" + pfdlmin + ",惠安一期项目与惠安二期项目损失电量差距为" + StringUtils.roundDivide(p1ssdl - p2ssdl, 2) + "万kWh"
         );
 
         // 放入最终的 map
@@ -464,17 +464,17 @@ public class NewGetWindReportService {
         for (int i = 0; i < lineNames.length; i++) {
             LineIndicatorData indicatorData = new LineIndicatorData();
             indicatorData.setLineName(lineNames[i]);
-            indicatorData.setTotalGeneration(StringUtils.round(lnfdl[i], 2));
-            indicatorData.setTotalLoss(StringUtils.round(lnzssdl[i], 2));
-            indicatorData.setWindEnergyUtilizationRate(StringUtils.round(lnfnlyl[i], 2));
-            indicatorData.setCurtailmentRate(StringUtils.round(lnxdssdl[i] / lnllfdl[i] * 100, 2));
+            indicatorData.setTotalGeneration(StringUtils.roundDivide(lnfdl[i], 2));
+            indicatorData.setTotalLoss(StringUtils.roundDivide(lnzssdl[i], 2));
+            indicatorData.setWindEnergyUtilizationRate(StringUtils.roundDivide(lnfnlyl[i], 2));
+            indicatorData.setCurtailmentRate(StringUtils.roundDivide(lnxdssdl[i] / lnllfdl[i] * 100, 2));
             lineIndicators.add(indicatorData);
         }
         lineBenchmark.setIndicators(lineIndicators);
 
         // 3.3 设置结论
         lineBenchmark.setConclusion(
-                lnfdlmax + "在发电量指标上优于" + lnfdlmin + ",损失电量差距为" + StringUtils.round(ssdlmaxValue - ssdlminValue , 2) + "万kWh"
+                lnfdlmax + "在发电量指标上优于" + lnfdlmin + ",损失电量差距为" + StringUtils.roundDivide(ssdlmaxValue - ssdlminValue , 2) + "万kWh"
         );
 
         map.put("xldb", lineBenchmark);
@@ -545,15 +545,15 @@ public class NewGetWindReportService {
                     ? qndyxqjsllist.get(0).getXqjsl()
                     : 0.0;
 
-            monthllfdl = StringUtils.round(qnllfdl > 1 ? (llfdl - qnllfdl) / qnllfdl * 100 : 0, 2);
-            monthfdl = StringUtils.round(qnfdl > 1 ? (fdl - qnfdl) / qnfdl * 100 : 0, 2);
-            monthfnlyl = StringUtils.round(qnmonthfnlyl > 1 ? (yfnlyl - qnmonthfnlyl) / qnmonthfnlyl * 100 : 0, 2); //当月风能利用率差
-            monthgzssl = StringUtils.round(qngzss > 1 ? (gzss - qngzss) / qngzss * 100 : 0, 2);
-            monthxdssl = StringUtils.round(qnxdss > 1 ? (xdss - qnxdss) / qnxdss * 100 : 0, 2);
-            monthmtbf = StringUtils.round(qnmonthmtbf > 1 ? (ymtbf - qnmonthmtbf) / qnmonthmtbf * 100 : 0, 2);
-            monthmttr = StringUtils.round(qnmonthmttr > 1 ? (ymttr - qnmonthmttr) / qnmonthmttr * 100 : 0, 2);
-            monthyfwjsl = StringUtils.round(qnmonthyfwjsl > 1 ? (yfwjsl - qnmonthyfwjsl) / qnmonthyfwjsl * 100 : 0, 2);
-            monthxqjsl = StringUtils.round(qnxqjsl > 1 ? (xqjsl - qnxqjsl) / qnxqjsl * 100 : 0, 2);
+            monthllfdl = StringUtils.roundDivide(qnllfdl > 1 ? (llfdl - qnllfdl) / qnllfdl * 100 : 0, 2);
+            monthfdl = StringUtils.roundDivide(qnfdl > 1 ? (fdl - qnfdl) / qnfdl * 100 : 0, 2);
+            monthfnlyl = StringUtils.roundDivide(qnmonthfnlyl > 1 ? (yfnlyl - qnmonthfnlyl) / qnmonthfnlyl * 100 : 0, 2); //当月风能利用率差
+            monthgzssl = StringUtils.roundDivide(qngzss > 1 ? (gzss - qngzss) / qngzss * 100 : 0, 2);
+            monthxdssl = StringUtils.roundDivide(qnxdss > 1 ? (xdss - qnxdss) / qnxdss * 100 : 0, 2);
+            monthmtbf = StringUtils.roundDivide(qnmonthmtbf > 1 ? (ymtbf - qnmonthmtbf) / qnmonthmtbf * 100 : 0, 2);
+            monthmttr = StringUtils.roundDivide(qnmonthmttr > 1 ? (ymttr - qnmonthmttr) / qnmonthmttr * 100 : 0, 2);
+            monthyfwjsl = StringUtils.roundDivide(qnmonthyfwjsl > 1 ? (yfwjsl - qnmonthyfwjsl) / qnmonthyfwjsl * 100 : 0, 2);
+            monthxqjsl = StringUtils.roundDivide(qnxqjsl > 1 ? (xqjsl - qnxqjsl) / qnxqjsl * 100 : 0, 2);
 
             yfnlyltrend = yfnlyl > qnmonthfnlyl ? "red" : "green";//月度风能利用率趋势
             yfdltrend = fdl > qnfdl ? "red" : "green";
@@ -608,28 +608,28 @@ public class NewGetWindReportService {
 
 
             if (qnyearllfdl != 0 && qnyearllfdl != 1 || qnyearfdl != 1 || qnyeargzss != 1 || qnyearxdss != 1) {
-                yearllfdl = StringUtils.round((nllfdl - qnyearllfdl) / qnyearllfdl * 100, 2);
-                yearfdl = StringUtils.round((nfdl - qnyearfdl) / qnyearfdl * 100, 2);
-                yearfnlyl = StringUtils.round(((nfnlyl - qnfnlyl) / qnfnlyl * 100), 2);
-                yeargzssl = StringUtils.round((ngzss - qnyeargzss) / qnyeargzss * 100, 2);
-                yearxdssl = StringUtils.round((nxdss - qnyearxdss) / qnyearxdss * 100, 2);
-                yearmtbf = StringUtils.round((nmtbf - qnmtbf) / qnmtbf * 100, 2);
-                yearmttr = StringUtils.round((nmttr - qnmttr) / qnmttr * 100, 2);
-                yearyfwjsl = StringUtils.round((nyfwjsl - qnyfwjsl) / qnyfwjsl * 100, 2);
-                yearxqjsl = StringUtils.round((nxqjsl - qnyearxqjsl) / qnyearxqjsl * 100, 2);
+                yearllfdl = StringUtils.roundDivide((nllfdl - qnyearllfdl) / qnyearllfdl * 100, 2);
+                yearfdl = StringUtils.roundDivide((nfdl - qnyearfdl) / qnyearfdl * 100, 2);
+                yearfnlyl = StringUtils.roundDivide(((nfnlyl - qnfnlyl) / qnfnlyl * 100), 2);
+                yeargzssl = StringUtils.roundDivide((ngzss - qnyeargzss) / qnyeargzss * 100, 2);
+                yearxdssl = StringUtils.roundDivide((nxdss - qnyearxdss) / qnyearxdss * 100, 2);
+                yearmtbf = StringUtils.roundDivide((nmtbf - qnmtbf) / qnmtbf * 100, 2);
+                yearmttr = StringUtils.roundDivide((nmttr - qnmttr) / qnmttr * 100, 2);
+                yearyfwjsl = StringUtils.roundDivide((nyfwjsl - qnyfwjsl) / qnyfwjsl * 100, 2);
+                yearxqjsl = StringUtils.roundDivide((nxqjsl - qnyearxqjsl) / qnyearxqjsl * 100, 2);
             }
         }
 
         List<comprehensive> comprehensiveList = Arrays.asList(
-                createComprehensive("理论发电量",StringUtils.round(llfdl / bl,2), monthllfdl, yearllfdl, yllfdltrend),
-                createComprehensive("发电量",StringUtils.round(fdl/ bl,2),monthfdl, yearfdl, yfdltrend),
-                createComprehensive("风能利用率", StringUtils.round(yfnlyl,2),monthfnlyl, yearfnlyl, yfnlyltrend),
-                createComprehensive("故障损失", StringUtils.round(gzss / bl,2),monthgzssl, yeargzssl, ygzsssltrend),
-                createComprehensive("限电损失", StringUtils.round(xdss / bl,2),monthxdssl, yearxdssl, yxdsssltrend),
-                createComprehensive("MTBF", StringUtils.round(ymtbf,2),monthmtbf, yearmtbf, ymtbftrend),
-                createComprehensive("MTTR", StringUtils.round(ymttr,2),monthmttr, yearmttr, ymttrtrend),
-                createComprehensive("复位及时率", StringUtils.round(yfwjsl,2),monthyfwjsl, yearyfwjsl, yfwjsltrend),
-                createComprehensive("消缺及时率", StringUtils.round(xqjsl,2),monthxqjsl, yearxqjsl, yxqjsltrend)
+                createComprehensive("理论发电量",StringUtils.roundDivide(llfdl / bl,2), monthllfdl, yearllfdl, yllfdltrend),
+                createComprehensive("发电量",StringUtils.roundDivide(fdl/ bl,2),monthfdl, yearfdl, yfdltrend),
+                createComprehensive("风能利用率", StringUtils.roundDivide(yfnlyl,2),monthfnlyl, yearfnlyl, yfnlyltrend),
+                createComprehensive("故障损失", StringUtils.roundDivide(gzss / bl,2),monthgzssl, yeargzssl, ygzsssltrend),
+                createComprehensive("限电损失", StringUtils.roundDivide(xdss / bl,2),monthxdssl, yearxdssl, yxdsssltrend),
+                createComprehensive("MTBF", StringUtils.roundDivide(ymtbf,2),monthmtbf, yearmtbf, ymtbftrend),
+                createComprehensive("MTTR", StringUtils.roundDivide(ymttr,2),monthmttr, yearmttr, ymttrtrend),
+                createComprehensive("复位及时率", StringUtils.roundDivide(yfwjsl,2),monthyfwjsl, yearyfwjsl, yfwjsltrend),
+                createComprehensive("消缺及时率", StringUtils.roundDivide(xqjsl,2),monthxqjsl, yearxqjsl, yxqjsltrend)
         );
         map.put("comprehensiveList", comprehensiveList);
 
@@ -638,57 +638,57 @@ public class NewGetWindReportService {
         double ndfnlyl = yearList.size() > 0 ? yearList.get(0).getFnlyl() : 0;
 
 
-        map.put("风能利用率", "场站整体风能利用率:月度" + StringUtils.round(ydfnlyl, 2) + "%,年度" + StringUtils.round(ndfnlyl, 2) + "%");
-        map.put("风能利用率Top3风机","风能利用率Top3风机:" + fntop3list.get(0).getStationId() + "号风机" + StringUtils.round(fntop3list.get(0).getFnlyl(), 2) + "%、"
-                + fntop3list.get(1).getStationId() + "号风机" + StringUtils.round(fntop3list.get(1).getFnlyl(), 2) + "%、" +
-                "" + fntop3list.get(1).getStationId() + "号风机" + StringUtils.round(fntop3list.get(2).getFnlyl(), 2) + "%");
+        map.put("风能利用率", "场站整体风能利用率:月度" + StringUtils.roundDivide(ydfnlyl, 2) + "%,年度" + StringUtils.roundDivide(ndfnlyl, 2) + "%");
+        map.put("风能利用率Top3风机","风能利用率Top3风机:" + fntop3list.get(0).getStationId() + "号风机" + StringUtils.roundDivide(fntop3list.get(0).getFnlyl(), 2) + "%、"
+                + fntop3list.get(1).getStationId() + "号风机" + StringUtils.roundDivide(fntop3list.get(1).getFnlyl(), 2) + "%、" +
+                "" + fntop3list.get(1).getStationId() + "号风机" + StringUtils.roundDivide(fntop3list.get(2).getFnlyl(), 2) + "%");
 
-        map.put("风能利用率末3风机","风能利用率末3风机:" + fnbottom3list.get(0).getStationId() + "号风机" + StringUtils.round(fnbottom3list.get(0).getFnlyl(), 2) + "%、" +
-                "" + fnbottom3list.get(1).getStationId() + "号风机" + StringUtils.round(fnbottom3list.get(1).getFnlyl(), 2) + "%、" +
-                "" + fnbottom3list.get(2).getStationId() + "号风机" + StringUtils.round(fnbottom3list.get(2).getFnlyl(), 2) + "%");
+        map.put("风能利用率末3风机","风能利用率末3风机:" + fnbottom3list.get(0).getStationId() + "号风机" + StringUtils.roundDivide(fnbottom3list.get(0).getFnlyl(), 2) + "%、" +
+                "" + fnbottom3list.get(1).getStationId() + "号风机" + StringUtils.roundDivide(fnbottom3list.get(1).getFnlyl(), 2) + "%、" +
+                "" + fnbottom3list.get(2).getStationId() + "号风机" + StringUtils.roundDivide(fnbottom3list.get(2).getFnlyl(), 2) + "%");
 
-        double byllfdl = StringUtils.round(monthList.size() > 0 ? monthList.get(0).getLlfdl() / bl : 0, 2);
+        double byllfdl = StringUtils.roundDivide(monthList.size() > 0 ? monthList.get(0).getLlfdl() / bl : 0, 2);
 
-        double bygzss = StringUtils.round(monthList.size() > 0 ? monthList.get(0).getGzss() / bl : 0, 2);
-        double bygzssl = StringUtils.round(bygzss / byllfdl * 100, 2);
+        double bygzss = StringUtils.roundDivide(monthList.size() > 0 ? monthList.get(0).getGzss() / bl : 0, 2);
+        double bygzssl = StringUtils.roundDivide(bygzss / byllfdl * 100, 2);
 
-        double bywhss = StringUtils.round(monthList.size() > 0 ? (monthList.get(0).getJhjxss() / bl) : 0 + monthList.size() > 0 ? (monthList.get(0).getFjhjxss() / bl) : 0, 2);
-        double bywhssl = StringUtils.round(bywhss / byllfdl * 100, 2);//本月维护损失率
+        double bywhss = StringUtils.roundDivide(monthList.size() > 0 ? (monthList.get(0).getJhjxss() / bl) : 0 + monthList.size() > 0 ? (monthList.get(0).getFjhjxss() / bl) : 0, 2);
+        double bywhssl = StringUtils.roundDivide(bywhss / byllfdl * 100, 2);//本月维护损失率
 
-        double byslss = StringUtils.round(monthList.size() > 0 ? monthList.get(0).getSlss() / bl : 0, 2);
-        double byslssl = StringUtils.round(byslss / byllfdl * 100, 2);
+        double byslss = StringUtils.roundDivide(monthList.size() > 0 ? monthList.get(0).getSlss() / bl : 0, 2);
+        double byslssl = StringUtils.roundDivide(byslss / byllfdl * 100, 2);
 
-        double byxnss = StringUtils.round(monthList.size() > 0 ? monthList.get(0).getXnss() / bl : 0, 2);
-        double byxnssl = StringUtils.round(byxnss / byllfdl * 100, 2);
+        double byxnss = StringUtils.roundDivide(monthList.size() > 0 ? monthList.get(0).getXnss() / bl : 0, 2);
+        double byxnssl = StringUtils.roundDivide(byxnss / byllfdl * 100, 2);
 
-        double byxdss = StringUtils.round(monthList.size() > 0 ? monthList.get(0).getXdss() / bl : 0, 2);
-        double byxdssl = StringUtils.round(byxdss / byllfdl * 100, 2);
+        double byxdss = StringUtils.roundDivide(monthList.size() > 0 ? monthList.get(0).getXdss() / bl : 0, 2);
+        double byxdssl = StringUtils.roundDivide(byxdss / byllfdl * 100, 2);
 
 
-        double ytbllfdl = StringUtils.round(qnmonthList.size() > 0 ? qnmonthList.get(0).getLlfdl() / bl : 1, 2);
+        double ytbllfdl = StringUtils.roundDivide(qnmonthList.size() > 0 ? qnmonthList.get(0).getLlfdl() / bl : 1, 2);
 
-        double ytbgzss = StringUtils.round(qnmonthList.size() > 0 ? qnmonthList.get(0).getGzss() / bl : 0, 2);
-        double ytbgzssl = StringUtils.round(ytbgzss / ytbllfdl * 100, 2);
+        double ytbgzss = StringUtils.roundDivide(qnmonthList.size() > 0 ? qnmonthList.get(0).getGzss() / bl : 0, 2);
+        double ytbgzssl = StringUtils.roundDivide(ytbgzss / ytbllfdl * 100, 2);
 
-        double ytbwhss = StringUtils.round(qnmonthList.size() > 0 ? (qnmonthList.get(0).getJhjxss() / bl) : 0 + qnmonthList.size() > 0 ? (qnmonthList.get(0).getFjhjxss() / bl) : 0, 2);
-        double ytbwhssl = StringUtils.round(ytbwhss / ytbllfdl * 100, 2);
+        double ytbwhss = StringUtils.roundDivide(qnmonthList.size() > 0 ? (qnmonthList.get(0).getJhjxss() / bl) : 0 + qnmonthList.size() > 0 ? (qnmonthList.get(0).getFjhjxss() / bl) : 0, 2);
+        double ytbwhssl = StringUtils.roundDivide(ytbwhss / ytbllfdl * 100, 2);
 
-        double ytbslss = StringUtils.round(qnmonthList.size() > 0 ? qnmonthList.get(0).getSlss() / bl : 0, 2);
-        double ytbslssl = StringUtils.round(ytbslss / ytbllfdl * 100, 2);
+        double ytbslss = StringUtils.roundDivide(qnmonthList.size() > 0 ? qnmonthList.get(0).getSlss() / bl : 0, 2);
+        double ytbslssl = StringUtils.roundDivide(ytbslss / ytbllfdl * 100, 2);
 
-        double ytbxnss = StringUtils.round(qnmonthList.size() > 0 ? qnmonthList.get(0).getXnss() / bl : 0, 2);
-        double ytbxnssl = StringUtils.round(ytbxnss / ytbllfdl * 100, 2);
+        double ytbxnss = StringUtils.roundDivide(qnmonthList.size() > 0 ? qnmonthList.get(0).getXnss() / bl : 0, 2);
+        double ytbxnssl = StringUtils.roundDivide(ytbxnss / ytbllfdl * 100, 2);
 
-        double ytbxdss = StringUtils.round(qnmonthList.size() > 0 ? qnmonthList.get(0).getXdss() / bl : 0, 2);
-        double ytbxdssl = StringUtils.round(ytbxdss / ytbllfdl * 100, 2);
+        double ytbxdss = StringUtils.roundDivide(qnmonthList.size() > 0 ? qnmonthList.get(0).getXdss() / bl : 0, 2);
+        double ytbxdssl = StringUtils.roundDivide(ytbxdss / ytbllfdl * 100, 2);
 
 
         List<LossRates> lossList = Arrays.asList(
-                LossRatessive("维护损失", bywhss, bywhssl, StringUtils.round(bywhss / 50, 2), StringUtils.round(bywhssl - ytbwhssl, 2)),
-                LossRatessive("故障损失", bygzss, bygzssl, StringUtils.round(bygzss / 50, 2), StringUtils.round(bygzssl - ytbgzssl, 2)),
-                LossRatessive("限电损失", byxdss, byxdssl, StringUtils.round(byxdss / 50, 2), StringUtils.round(byxdssl - ytbxdssl, 2)),
-                LossRatessive("性能损失", byxnss, byxnssl, StringUtils.round(byxnss / 50, 2), StringUtils.round(byxnssl - ytbxnssl, 2)),
-                LossRatessive("受累损失", byslss, byslssl, StringUtils.round(byslss / 50, 2), StringUtils.round(byslssl - ytbslssl, 2))
+                LossRatessive("维护损失", bywhss, bywhssl, StringUtils.roundDivide(bywhss / 50, 2), StringUtils.roundDivide(bywhssl - ytbwhssl, 2)),
+                LossRatessive("故障损失", bygzss, bygzssl, StringUtils.roundDivide(bygzss / 50, 2), StringUtils.roundDivide(bygzssl - ytbgzssl, 2)),
+                LossRatessive("限电损失", byxdss, byxdssl, StringUtils.roundDivide(byxdss / 50, 2), StringUtils.roundDivide(byxdssl - ytbxdssl, 2)),
+                LossRatessive("性能损失", byxnss, byxnssl, StringUtils.roundDivide(byxnss / 50, 2), StringUtils.roundDivide(byxnssl - ytbxnssl, 2)),
+                LossRatessive("受累损失", byslss, byslssl, StringUtils.roundDivide(byslss / 50, 2), StringUtils.roundDivide(byslssl - ytbslssl, 2))
         );
         map.put("LossRatesList", lossList);
 

+ 77 - 77
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/EarlyWarning/NewWindReportService.java

@@ -158,40 +158,40 @@ public class NewWindReportService {
 
         int bl = 1000;
 
-        double monthdmtbf = !monthslist.isEmpty() ? StringUtils.round(monthslist.get(0).getMtbf(), 2) : 0.0;
-        double qnmonthmtbf = !qndylist.isEmpty() ? StringUtils.round(qndylist.get(0).getMtbf(), 2) : 1.0;
+        double monthdmtbf = !monthslist.isEmpty() ? StringUtils.roundDivide(monthslist.get(0).getMtbf(), 2) : 0.0;
+        double qnmonthmtbf = !qndylist.isEmpty() ? StringUtils.roundDivide(qndylist.get(0).getMtbf(), 2) : 1.0;
 
-        double monthdmttr = !monthslist.isEmpty() ? StringUtils.round(monthslist.get(0).getMttr(), 2) : 0.0;
-        double qnmonthmttr = !qndylist.isEmpty() ? StringUtils.round(qndylist.get(0).getMttr(), 2) : 1.0;
+        double monthdmttr = !monthslist.isEmpty() ? StringUtils.roundDivide(monthslist.get(0).getMttr(), 2) : 0.0;
+        double qnmonthmttr = !qndylist.isEmpty() ? StringUtils.roundDivide(qndylist.get(0).getMttr(), 2) : 1.0;
 
-        double monthkyly = !monthdllist.isEmpty() ? StringUtils.round(monthdllist.get(0).getKlyl(), 2) : 0.0;
-        double yearklyly = !yeardllist.isEmpty() ? StringUtils.round(yeardllist.get(0).getKlyl(), 2) : 0.0;
+        double monthkyly = !monthdllist.isEmpty() ? StringUtils.roundDivide(monthdllist.get(0).getKlyl(), 2) : 0.0;
+        double yearklyly = !yeardllist.isEmpty() ? StringUtils.roundDivide(yeardllist.get(0).getKlyl(), 2) : 0.0;
 
         String klyltop1id = !klyltopList.isEmpty() ? klyltopList.get(0).getStationId() : "";
-        double klyltop1value = !klyltopList.isEmpty() ? StringUtils.round(klyltopList.get(0).getKlyl(), 2) : 0.0;
+        double klyltop1value = !klyltopList.isEmpty() ? StringUtils.roundDivide(klyltopList.get(0).getKlyl(), 2) : 0.0;
 
         String klyltop2id = !klyltopList.isEmpty() ? klyltopList.get(1).getStationId() : "";
-        double klyltop2value = !klyltopList.isEmpty() ? StringUtils.round(klyltopList.get(1).getKlyl(), 2) : 0.0;
+        double klyltop2value = !klyltopList.isEmpty() ? StringUtils.roundDivide(klyltopList.get(1).getKlyl(), 2) : 0.0;
 
         String klyltop3id = !klyltopList.isEmpty() ? klyltopList.get(2).getStationId() : "";
-        double klyltop3value = !klyltopList.isEmpty() ? StringUtils.round(klyltopList.get(2).getKlyl(), 2) : 0.0;
+        double klyltop3value = !klyltopList.isEmpty() ? StringUtils.roundDivide(klyltopList.get(2).getKlyl(), 2) : 0.0;
 
         String klylbottom1id = !klylbottomList.isEmpty() ? klylbottomList.get(0).getStationId() : "";
-        double klylbottom1value = !klylbottomList.isEmpty() ? StringUtils.round(klylbottomList.get(0).getKlyl(), 2) : 0.0;
+        double klylbottom1value = !klylbottomList.isEmpty() ? StringUtils.roundDivide(klylbottomList.get(0).getKlyl(), 2) : 0.0;
 
         String klylbottom2id = !klylbottomList.isEmpty() ? klylbottomList.get(1).getStationId() : "";
-        double klylbottom2value = !klylbottomList.isEmpty() ? StringUtils.round(klylbottomList.get(1).getKlyl(), 2) : 0.0;
+        double klylbottom2value = !klylbottomList.isEmpty() ? StringUtils.roundDivide(klylbottomList.get(1).getKlyl(), 2) : 0.0;
 
         String klylbottom3id = !klylbottomList.isEmpty() ? klylbottomList.get(2).getStationId() : "";
-        double klylbottom3value = !klylbottomList.isEmpty() ? StringUtils.round(klylbottomList.get(2).getKlyl(), 2) : 0.0;
+        double klylbottom3value = !klylbottomList.isEmpty() ? StringUtils.roundDivide(klylbottomList.get(2).getKlyl(), 2) : 0.0;
 
         double mtbftq = 0.0;
         double mttrtq = 0.0;
         if (qnmonthmtbf > 1) {
-            mtbftq = StringUtils.round((monthdmtbf - qnmonthmtbf) / qnmonthmtbf * 100, 2);
+            mtbftq = StringUtils.roundDivide((monthdmtbf - qnmonthmtbf) / qnmonthmtbf * 100, 2);
         }
         if (qnmonthmttr > 1) {
-            mttrtq = StringUtils.round((monthdmttr - qnmonthmttr) / qnmonthmttr * 100, 2);
+            mttrtq = StringUtils.roundDivide((monthdmttr - qnmonthmttr) / qnmonthmttr * 100, 2);
         }
 
         map.put("MTBF", "MTBF(场站平均无故障时间):月度" + monthdmtbf + "h,与上年同期对比±" + mtbftq + "%");
@@ -238,32 +238,32 @@ public class NewWindReportService {
 
         map.put("faultStatistics", faultStatistics);//故障统计
 
-        double monthfdl = !monthdllist.isEmpty() ? StringUtils.round(monthdllist.get(0).getRfdl() / bl, 2) : 0.0;
-        double monthllfdl = !monthdllist.isEmpty() ? StringUtils.round(monthdllist.get(0).getLlfdl() / bl, 2) : 0.0;
-        double qnmonthfdl = !qnmonthlist.isEmpty() ? StringUtils.round(qnmonthlist.get(0).getRfdl() / bl, 2) : 1.0;
-        double hbmothfdl = !hbmonthList.isEmpty() ? StringUtils.round(hbmonthList.get(0).getRfdl() / bl, 2) : 1.0;
+        double monthfdl = !monthdllist.isEmpty() ? StringUtils.roundDivide(monthdllist.get(0).getRfdl() / bl, 2) : 0.0;
+        double monthllfdl = !monthdllist.isEmpty() ? StringUtils.roundDivide(monthdllist.get(0).getLlfdl() / bl, 2) : 0.0;
+        double qnmonthfdl = !qnmonthlist.isEmpty() ? StringUtils.roundDivide(qnmonthlist.get(0).getRfdl() / bl, 2) : 1.0;
+        double hbmothfdl = !hbmonthList.isEmpty() ? StringUtils.roundDivide(hbmonthList.get(0).getRfdl() / bl, 2) : 1.0;
 
-        double yearfdl = !yeardllist.isEmpty() ? StringUtils.round(yeardllist.get(0).getRfdl() / bl, 2) : 0.0;
-        double yearllfdl = !yeardllist.isEmpty() ? StringUtils.round(yeardllist.get(0).getLlfdl() / bl, 2) : 0.0;
+        double yearfdl = !yeardllist.isEmpty() ? StringUtils.roundDivide(yeardllist.get(0).getRfdl() / bl, 2) : 0.0;
+        double yearllfdl = !yeardllist.isEmpty() ? StringUtils.roundDivide(yeardllist.get(0).getLlfdl() / bl, 2) : 0.0;
 
         String[] dltopId = new String[3];
         Arrays.fill(dltopId, "");
         double[] dltopFdl = new double[3];
-        double month_dtpjFdl = StringUtils.round(monthfdl / 50, 2);
-        double year_dtpjFdl = StringUtils.round(yearfdl / 50, 2);
+        double month_dtpjFdl = StringUtils.roundDivide(monthfdl / 50, 2);
+        double year_dtpjFdl = StringUtils.roundDivide(yearfdl / 50, 2);
         double monthfdltb = 0;
         double monthfdlhb = 0;
         if (qnmonthfdl != 1) {
-            monthfdltb = StringUtils.round((monthfdl - qnmonthfdl) / qnmonthfdl * 100, 2);
+            monthfdltb = StringUtils.roundDivide((monthfdl - qnmonthfdl) / qnmonthfdl * 100, 2);
         }
 
         if (hbmothfdl != 1) {
-            monthfdlhb = StringUtils.round((monthfdl - hbmothfdl) / hbmothfdl * 100, 2);
+            monthfdlhb = StringUtils.roundDivide((monthfdl - hbmothfdl) / hbmothfdl * 100, 2);
         }
 
 
         for (int i = 0; i < dltoplist.size(); i++) {
-            dltopFdl[i] = StringUtils.round(dltoplist.get(i).getRfdl() / bl, 2);
+            dltopFdl[i] = StringUtils.roundDivide(dltoplist.get(i).getRfdl() / bl, 2);
             dltopId[i] = dltoplist.get(i).getStationId() != null ? dltoplist.get(i).getStationId() : "";
         }
 
@@ -271,7 +271,7 @@ public class NewWindReportService {
         Arrays.fill(bottomId, "");
         double[] bottomFdl = new double[3];
         for (int i = 0; i < dlbottomlist.size(); i++) {
-            bottomFdl[i] = StringUtils.round(dlbottomlist.get(i).getRfdl() / bl, 2);
+            bottomFdl[i] = StringUtils.roundDivide(dlbottomlist.get(i).getRfdl() / bl, 2);
             bottomId[i] = dlbottomlist.get(i).getStationId() != null ? dlbottomlist.get(i).getStationId() : "";
         }
 
@@ -284,30 +284,30 @@ public class NewWindReportService {
         map.put("发电量分析-同比分析","同比/环比分析:月度发电量同比" + monthfdltb + "%(±),环比" + monthfdlhb + "%(±)");
 
         //月场用电量
-        double monthcydl = !zhcymonthlist.isEmpty() ? StringUtils.round((double) zhcymonthlist.get(0).getZhcydl() / bl, 2) : 0.0;
+        double monthcydl = !zhcymonthlist.isEmpty() ? StringUtils.roundDivide((double) zhcymonthlist.get(0).getZhcydl() / bl, 2) : 0.0;
         //月发电量
-        double monthrfdl = !zhcymonthlist.isEmpty() ? StringUtils.round((double) zhcymonthlist.get(0).getRfdl() / bl, 2) : 0.0;
+        double monthrfdl = !zhcymonthlist.isEmpty() ? StringUtils.roundDivide((double) zhcymonthlist.get(0).getRfdl() / bl, 2) : 0.0;
         //去年月场用电量
-        double qnmonthcydl = !qnzhcymonthlist.isEmpty() ? StringUtils.round((double) qnzhcymonthlist.get(0).getZhcydl() / bl, 2) : 1.0;
+        double qnmonthcydl = !qnzhcymonthlist.isEmpty() ? StringUtils.roundDivide((double) qnzhcymonthlist.get(0).getZhcydl() / bl, 2) : 1.0;
         //去年月发电量
-        double qnmonthrfdl = !qnzhcymonthlist.isEmpty() ? StringUtils.round((double) qnzhcymonthlist.get(0).getRfdl() / bl, 2) : 1.0;
+        double qnmonthrfdl = !qnzhcymonthlist.isEmpty() ? StringUtils.roundDivide((double) qnzhcymonthlist.get(0).getRfdl() / bl, 2) : 1.0;
         //年场用电量
-        double yearcydl = !zhcyyearlist.isEmpty() ? StringUtils.round((double) zhcyyearlist.get(0).getZhcydl() / bl, 2) : 0.0;
+        double yearcydl = !zhcyyearlist.isEmpty() ? StringUtils.roundDivide((double) zhcyyearlist.get(0).getZhcydl() / bl, 2) : 0.0;
         //年发电量
-        double yearrfdl = !zhcyyearlist.isEmpty() ? StringUtils.round((double) zhcyyearlist.get(0).getRfdl() / bl, 2) : 0.0;
+        double yearrfdl = !zhcyyearlist.isEmpty() ? StringUtils.roundDivide((double) zhcyyearlist.get(0).getRfdl() / bl, 2) : 0.0;
 
         //月场用电率
-        double monthcydll = monthrfdl > 1 ? StringUtils.round(monthcydl / monthrfdl * 100, 2) : 0.0;
+        double monthcydll = monthrfdl > 1 ? StringUtils.roundDivide(monthcydl / monthrfdl * 100, 2) : 0.0;
         //年场用电率
-        double yearcydll = yearrfdl > 1 ? StringUtils.round(yearcydl / yearrfdl * 100, 2) : 0.0;
+        double yearcydll = yearrfdl > 1 ? StringUtils.roundDivide(yearcydl / yearrfdl * 100, 2) : 0.0;
         //去年场用电率
-        double qnmonthcydll = qnmonthrfdl > 1 ? StringUtils.round(qnmonthcydl / qnmonthrfdl * 100, 2) : 0.0;
+        double qnmonthcydll = qnmonthrfdl > 1 ? StringUtils.roundDivide(qnmonthcydl / qnmonthrfdl * 100, 2) : 0.0;
 
         //月场用电量同比
-        double monthcydltb = qnmonthcydl > 1 ? StringUtils.round((monthcydl - qnmonthcydl) / qnmonthcydl * 100, 2) : 0.0;
+        double monthcydltb = qnmonthcydl > 1 ? StringUtils.roundDivide((monthcydl - qnmonthcydl) / qnmonthcydl * 100, 2) : 0.0;
 
         //场用电率同比
-        double monthcydlltb = qnmonthcydll > 1 ? StringUtils.round((monthcydll - qnmonthcydll) / qnmonthcydll * 100, 2) : 0.0;
+        double monthcydlltb = qnmonthcydll > 1 ? StringUtils.roundDivide((monthcydll - qnmonthcydll) / qnmonthcydll * 100, 2) : 0.0;
 
 
         map.put("综合场用电量分析-月度场用电量","月度场用电量:" + monthcydl + "万kWh");
@@ -320,7 +320,7 @@ public class NewWindReportService {
                 .map(list -> list.get(0))
                 .map(StationInfoDay::getCftfs)
                 .map(BigDecimal::doubleValue)
-                .map(value -> StringUtils.round(value, 2))
+                .map(value -> StringUtils.roundDivide(value, 2))
                 .orElse(0.0);
 
         double qnavgfs = Optional.ofNullable(qnzhcymonthlist)
@@ -328,31 +328,31 @@ public class NewWindReportService {
                 .map(list -> list.get(0))
                 .map(StationInfoDay::getCftfs)
                 .map(BigDecimal::doubleValue)
-                .map(value -> StringUtils.round(value, 2))
+                .map(value -> StringUtils.roundDivide(value, 2))
                 .orElse(0.0);
 
-        double tqb_avgfs = qnavgfs > 1 ? StringUtils.round((avgfs - qnavgfs) / qnavgfs * 100, 2) : 0.0;
+        double tqb_avgfs = qnavgfs > 1 ? StringUtils.roundDivide((avgfs - qnavgfs) / qnavgfs * 100, 2) : 0.0;
         double avgfx = Optional.ofNullable(zhcymonthlist)
                 .filter(list -> !list.isEmpty())
                 .map(list -> list.get(0))
                 .map(StationInfoDay::getCftfx)
                 .map(BigDecimal::doubleValue)    // 将BigDecimal转换为double
-                .map(value -> StringUtils.round(value, 2))
+                .map(value -> StringUtils.roundDivide(value, 2))
                 .orElse(0.0);
 
         double avgjfpl = Optional.ofNullable(monthdllist)
                 .filter(list -> !list.isEmpty())
                 .map(list -> list.get(0))
                 .map(TurbineInfoDay::getJfpl)
-                .map(value -> StringUtils.round(value, 2))
+                .map(value -> StringUtils.roundDivide(value, 2))
                 .orElse(0.0);
         double qnavgjfpl = Optional.ofNullable(qnmonthlist)
                 .filter(list -> !list.isEmpty())
                 .map(list -> list.get(0))
                 .map(TurbineInfoDay::getJfpl)
-                .map(value -> StringUtils.round(value, 2))
+                .map(value -> StringUtils.roundDivide(value, 2))
                 .orElse(0.0);
-        double tqb_jfpl = qnavgjfpl > 1 ? StringUtils.round((avgjfpl - qnavgjfpl) / qnavgjfpl * 100, 2) : 0.0;
+        double tqb_jfpl = qnavgjfpl > 1 ? StringUtils.roundDivide((avgjfpl - qnavgjfpl) / qnavgjfpl * 100, 2) : 0.0;
 
 
         // =============================================================
@@ -413,21 +413,21 @@ public class NewWindReportService {
 
         IntervalData stat1 = new IntervalData();
         stat1.setIntervalRange("3-5m/s");
-        stat1.setAverageRate(StringUtils.round(avgR35mqxpcl, 2));
+        stat1.setAverageRate(StringUtils.roundDivide(avgR35mqxpcl, 2));
         stat1.setMaxRateFanId(max_35Id);
         stat1.setMinRateFanId(min_35Id);
         statsList.add(stat1);
 
         IntervalData stat2 = new IntervalData();
         stat2.setIntervalRange("5-11m/s");
-        stat2.setAverageRate(StringUtils.round(avgR511mqxpcl, 2));
+        stat2.setAverageRate(StringUtils.roundDivide(avgR511mqxpcl, 2));
         stat2.setMaxRateFanId(max_511Id);
         stat2.setMinRateFanId(min_511Id);
         statsList.add(stat2);
 
         IntervalData stat3 = new IntervalData();
         stat3.setIntervalRange("11-25m/s");
-        stat3.setAverageRate(StringUtils.round(avgR11mycqxpcl, 2));
+        stat3.setAverageRate(StringUtils.roundDivide(avgR11mycqxpcl, 2));
         stat3.setMaxRateFanId(max_1125Id);
         stat3.setMinRateFanId(min_1125Id);
         statsList.add(stat3);
@@ -443,8 +443,8 @@ public class NewWindReportService {
         for (int i = 0; i < outSpeedtopTotals.size(); i++) {
             var item = outSpeedtopTotals.get(i);
             yqrtopid[i] = item.getWindturbineId() != null ? item.getWindturbineId() : "";
-            yqrfs[i] = StringUtils.round(item.getMonthInputSmall(), 2);
-            yqcfs[i] = StringUtils.round(item.getMonthOutputSmall(), 2);
+            yqrfs[i] = StringUtils.roundDivide(item.getMonthInputSmall(), 2);
+            yqcfs[i] = StringUtils.roundDivide(item.getMonthOutputSmall(), 2);
         }
 
 
@@ -487,7 +487,7 @@ public class NewWindReportService {
         // =============================================================
 
         QualificationRateStatsDto rateStats = new QualificationRateStatsDto();
-        rateStats.setAverageRate(StringUtils.round(average, 2));
+        rateStats.setAverageRate(StringUtils.roundDivide(average, 2));
 
         RateGroup perfectGroup = new RateGroup();
         perfectGroup.setCount(out_100.size());
@@ -520,19 +520,19 @@ public class NewWindReportService {
         for (int i = 0; i < getnhtop.size(); i++) {
             var item = getnhtop.get(i);
             topnhyd_id[i] = item.getStationId() != null ? item.getStationId() : "";
-            top_ynhyd[i] = StringUtils.round(item.getNhyd(), 2);
+            top_ynhyd[i] = StringUtils.roundDivide(item.getNhyd(), 2);
 
             var item_bot = getnhbottom.get(i);
             bottomnhyd_id[i] = item_bot.getStationId() != null ? item_bot.getStationId() : "";
-            bottom_ynhyd[i] = StringUtils.round(item_bot.getNhyd(), 2);
+            bottom_ynhyd[i] = StringUtils.roundDivide(item_bot.getNhyd(), 2);
 
             var qnitem = getsy_nhtop.get(i);
             sytopnhyd_id[i] = qnitem.getStationId() != null ? qnitem.getStationId() : "";
-            sytop_ynhyd[i] = StringUtils.round(qnitem.getNhyd(), 2);
+            sytop_ynhyd[i] = StringUtils.roundDivide(qnitem.getNhyd(), 2);
 
             var qnitem_bot = getsy_nhbottom.get(i);
             sybottomnhyd_id[i] = qnitem_bot.getStationId() != null ? qnitem_bot.getStationId() : "";
-            sybottom_ynhyd[i] = StringUtils.round(qnitem_bot.getNhyd(), 2);
+            sybottom_ynhyd[i] = StringUtils.roundDivide(qnitem_bot.getNhyd(), 2);
         }
 
 
@@ -589,24 +589,24 @@ public class NewWindReportService {
         for (int i = 0; i < glyztopList.size(); i++) {
             var item_top = glyztopList.get(i);
             glyz_topid[i] = item_top.getStationId() != null ? item_top.getStationId() : "";
-            glyz_top[i] = StringUtils.round(item_top.getGlyzxxs(), 2);
-            lyxs_top[i] = StringUtils.round(item_top.getLyxs(), 2);
+            glyz_top[i] = StringUtils.roundDivide(item_top.getGlyzxxs(), 2);
+            lyxs_top[i] = StringUtils.roundDivide(item_top.getLyxs(), 2);
 
             var syitem_top = syglyztopList.get(i);
             syglyz_topid[i] = syitem_top.getStationId() != null ?syitem_top.getStationId() : "";
-            syglyz_top[i] = StringUtils.round(syitem_top.getGlyzxxs(), 2);
-            sylyxs_top[i] = StringUtils.round(syitem_top.getLyxs(), 2);
+            syglyz_top[i] = StringUtils.roundDivide(syitem_top.getGlyzxxs(), 2);
+            sylyxs_top[i] = StringUtils.roundDivide(syitem_top.getLyxs(), 2);
 
 
             var item_bot = glyzbottomList.get(i);
             glyz_botid[i] = item_bot.getStationId() != null ? item_bot.getStationId() : "";
-            glyz_bot[i] = StringUtils.round(item_bot.getGlyzxxs(), 2);
-            lyxs_bot[i] = StringUtils.round(item_bot.getLyxs(), 2);
+            glyz_bot[i] = StringUtils.roundDivide(item_bot.getGlyzxxs(), 2);
+            lyxs_bot[i] = StringUtils.roundDivide(item_bot.getLyxs(), 2);
 
             var syitem_bot = syglyzbottomList.get(i);
             syglyz_botid[i] = syitem_bot.getStationId() != null ?syitem_bot.getStationId() : "";
-            syglyz_bot[i] = StringUtils.round(syitem_bot.getGlyzxxs(), 2);
-            sylyxs_bot[i] = StringUtils.round(syitem_bot.getLyxs(), 2);
+            syglyz_bot[i] = StringUtils.roundDivide(syitem_bot.getGlyzxxs(), 2);
+            sylyxs_bot[i] = StringUtils.roundDivide(syitem_bot.getLyxs(), 2);
 
         }
 
@@ -706,18 +706,18 @@ public class NewWindReportService {
 
         List<FwjslDTO> fwjslDTOList = fwjsllist.stream().filter(fw -> fw.getWpid().equals("合计")).collect(Collectors.toList());
         List<FwjslDTO> syfwjslDTOList = syfwjsllist.stream().filter(fw -> fw.getWpid().equals("合计")).collect(Collectors.toList());
-        double wfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getWfz(),2) : 0.0;
-        double sfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getSfz(),2) : 0.0;
-        double swfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getSwfz(),2) : 0.0;
-        double esfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getEsfz(),2) : 0.0;
+        double wfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getWfz(),2) : 0.0;
+        double sfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getSfz(),2) : 0.0;
+        double swfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getSwfz(),2) : 0.0;
+        double esfzfwcs = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getEsfz(),2) : 0.0;
 
-        double wfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getWfzfwl(),2) : 0.0;
-        double sfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getSfzfwl(),2) : 0.0;
-        double swfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getSwfzfwl(),2) : 0.0;
-        double esfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.round(fwjslDTOList.get(0).getEsfzfwl(),2) : 0.0;
+        double wfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getWfzfwl(),2) : 0.0;
+        double sfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getSfzfwl(),2) : 0.0;
+        double swfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getSwfzfwl(),2) : 0.0;
+        double esfzfwl = !fwjslDTOList.isEmpty() ? StringUtils.roundDivide(fwjslDTOList.get(0).getEsfzfwl(),2) : 0.0;
 
 
-        double sywfzfwl = !syfwjslDTOList.isEmpty() ?StringUtils.round(syfwjslDTOList.get(0).getWfzfwl(), 2) : 0.0;
+        double sywfzfwl = !syfwjslDTOList.isEmpty() ?StringUtils.roundDivide(syfwjslDTOList.get(0).getWfzfwl(), 2) : 0.0;
 
         String[] wfzfwcsbot_id = new String[3];
         double[] wfzfwcsbot = new double[3];
@@ -727,7 +727,7 @@ public class NewWindReportService {
             wfzfwcsbot_id[i] = item.getWpid() != null ? item.getWpid() : "";
             wfzfwcsbot[i] = item.getWfz();
         }
-        double fwltb = sywfzfwl>1 ? StringUtils.round((wfzfwl - sywfzfwl) / sywfzfwl * 100,2) : 0.0;
+        double fwltb = sywfzfwl>1 ? StringUtils.roundDivide((wfzfwl - sywfzfwl) / sywfzfwl * 100,2) : 0.0;
 
         // =============================================================
         // 14. 填充 "复位及时率" (resetTimeliness)
@@ -787,12 +787,12 @@ public class NewWindReportService {
 
             double ydgzcs = !qxjslDTOS.isEmpty() ? xqjsllist.get(0).getGzCount() : 0.0;
             double ydxqcs = !qxjslDTOS.isEmpty() ? xqjsllist.get(0).getXqCount() : 0.0;
-            double ydxqjsl = !qxjslDTOS.isEmpty() ? StringUtils.round(xqjsllist.get(0).getXqjsl(), 2) : 0.0;
+            double ydxqjsl = !qxjslDTOS.isEmpty() ? StringUtils.roundDivide(xqjsllist.get(0).getXqjsl(), 2) : 0.0;
 
-        double nxqjsl = yearxqjsllist.size() > 0 ? StringUtils.round(yearxqjsllist.get(0).getXqjsl(), 2) : 0.0;
-        double syxqjsl = syqxjslDTOS.size() > 0 ? StringUtils.round(syxqjsllist.get(0).getXqjsl(), 2) : 0.0;
+        double nxqjsl = yearxqjsllist.size() > 0 ? StringUtils.roundDivide(yearxqjsllist.get(0).getXqjsl(), 2) : 0.0;
+        double syxqjsl = syqxjslDTOS.size() > 0 ? StringUtils.roundDivide(syxqjsllist.get(0).getXqjsl(), 2) : 0.0;
 
-        double xqjsl_hb = syxqjsl>1 ? StringUtils.round((ydxqjsl -syxqjsl) /syxqjsl * 100,2) : 0.0;
+        double xqjsl_hb = syxqjsl>1 ? StringUtils.roundDivide((ydxqjsl -syxqjsl) /syxqjsl * 100,2) : 0.0;
 
         // =============================================================
         // 15. 填充 "消缺及时率" (defectResolutionRate)
@@ -880,7 +880,7 @@ public class NewWindReportService {
                     .sum();
         }
 
-        double ztzhl_hb = StringUtils.round((wfzzhl-sy_ztzhl) / sy_ztzhl * 100,2);
+        double ztzhl_hb = StringUtils.roundDivide((wfzzhl-sy_ztzhl) / sy_ztzhl * 100,2);
 
 
         // =============================================================

+ 8 - 0
runeconomy-xk/src/main/java/com/gyee/runeconomy/util/StringUtils.java

@@ -445,6 +445,14 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
         return new BigDecimal(num).setScale(digit, RoundingMode.HALF_UP).doubleValue();
     }
 
+    public static double roundDivide(double num, int digit) {
+        if (Double.isNaN(num) || Double.isInfinite(num)) {
+            return num; // 或抛异常,根据需求
+        }
+        return new BigDecimal(Double.toString(num))
+                .setScale(digit, RoundingMode.HALF_UP)
+                .doubleValue();
+    }
     /**
      * 将字符串解析为Date类型
      *