Browse Source

解决日统计回路健康等级计算问题

sl 7 months ago
parent
commit
11cc77b296

+ 11 - 9
jeecg-module-interlock/src/main/java/org/jeecg/modules/interlockjob/MonthStatisticsJob.java

@@ -243,7 +243,7 @@ public class MonthStatisticsJob implements Job {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
         LocalDate yesterDate = LocalDate.now().minusMonths(1);  // 当前 00:00:00 执行定时任务 减一天获取昨天的日期
         String lastmonth = yesterDate.atStartOfDay().format(formatter); // 上个月的月份
-        //String lastmonth = "2024-06"; // 测试模拟上个月的月份
+//        String lastmonth = "2024-09"; // 测试模拟上个月的月份
         String year = lastmonth.split("-")[0];
         int days = getDaysInMonth(lastmonth);//获取lastmonth这个月有多少天
 
@@ -289,20 +289,22 @@ public class MonthStatisticsJob implements Job {
             }
             String[] arr1 = {"A", "B", "C", "D"};
             int countLoopNumAvg = (countAnum+countBnum+countCnum+countDnum)/days;//上个月的平均联锁总数-取整数
-            BigDecimal countAAvg = new BigDecimal(countAnum/days).setScale(4, RoundingMode.HALF_UP);//保留四位小数
-            BigDecimal countBAvg = new BigDecimal(countBnum/days).setScale(4, RoundingMode.HALF_UP);//保留四位小数
-            BigDecimal countCAvg = new BigDecimal(countCnum/days).setScale(4, RoundingMode.HALF_UP);//保留四位小数
-            BigDecimal countDAvg = new BigDecimal(countDnum/days).setScale(4, RoundingMode.HALF_UP);//保留四位小数
+            BigDecimal daysBig = new BigDecimal(days);
+            BigDecimal countAAvg = new BigDecimal(countAnum).divide(daysBig, 4, RoundingMode.HALF_UP);//保留四位小数
+            BigDecimal countBAvg = new BigDecimal(countBnum).divide(daysBig, 4, RoundingMode.HALF_UP);//保留四位小数
+            BigDecimal countCAvg = new BigDecimal(countCnum).divide(daysBig, 4, RoundingMode.HALF_UP);//保留四位小数
+            BigDecimal countDAvg = new BigDecimal(countDnum).divide(daysBig, 4, RoundingMode.HALF_UP);//保留四位小数
 
             int countAInteger = countAAvg.setScale(0, RoundingMode.DOWN).intValue();//取整数
             int countBInteger = countBAvg.setScale(0, RoundingMode.DOWN).intValue();//取整数
             int countCInteger = countCAvg.setScale(0, RoundingMode.DOWN).intValue();//取整数
             int countDInteger = countDAvg.setScale(0, RoundingMode.DOWN).intValue();//取整数
 
-            int countADecimal = (countAAvg.subtract(countAAvg.setScale(0, RoundingMode.DOWN))).intValue();//取小数
-            int countBDecimal = (countBAvg.subtract(countBAvg.setScale(0, RoundingMode.DOWN))).intValue();//取小数
-            int countCDecimal = (countCAvg.subtract(countCAvg.setScale(0, RoundingMode.DOWN))).intValue();//取小数
-            int countDDecimal = (countDAvg.subtract(countDAvg.setScale(0, RoundingMode.DOWN))).intValue();//取小数
+            BigDecimal mulNum = new BigDecimal(10000);
+            int countADecimal = (countAAvg.subtract(countAAvg.setScale(0, RoundingMode.DOWN)).multiply(mulNum)).intValue();//取小数
+            int countBDecimal = (countBAvg.subtract(countBAvg.setScale(0, RoundingMode.DOWN)).multiply(mulNum)).intValue();//取小数
+            int countCDecimal = (countCAvg.subtract(countCAvg.setScale(0, RoundingMode.DOWN)).multiply(mulNum)).intValue();//取小数
+            int countDDecimal = (countDAvg.subtract(countDAvg.setScale(0, RoundingMode.DOWN)).multiply(mulNum)).intValue();//取小数
 
 
             //计算abcd平均值