Bladeren bron

解决考勤率计算错误问题

dzx 9 maanden geleden
bovenliggende
commit
7c8d2f8fae

+ 4 - 1
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -124,7 +124,10 @@ public class StatisticsController {
             statisticsVo.setAbsenteeismCount(statisticsVo.getAllCount() - statisticsVo.getLeaveCount() - statisticsVo.getActualCount());
 
             //计算出勤率
-            BigDecimal divide = BigDecimal.valueOf(statisticsVo.getActualCount()).divide(BigDecimal.valueOf(statisticsVo.getAllCount()), 4, RoundingMode.HALF_UP);
+            BigDecimal divide = BigDecimal.ZERO;
+            if(statisticsVo.getAllCount() != null && statisticsVo.getAllCount() != 0){
+                divide = BigDecimal.valueOf(statisticsVo.getActualCount()).divide(BigDecimal.valueOf(statisticsVo.getAllCount()), 4, RoundingMode.HALF_UP);
+            }
             statisticsVo.setAttendanceRate(divide.doubleValue());
         }
 

+ 8 - 2
src/main/java/com/xjrsoft/module/attendance/controller/StudentStatisticsController.java

@@ -135,7 +135,10 @@ public class StudentStatisticsController {
                 record.setAbsenteeismCount(record.getStudentCount() - record.getLeaveCount() - record.getActualCount());
 
                 //计算出勤率
-                BigDecimal divide = BigDecimal.valueOf(record.getActualCount()).divide(BigDecimal.valueOf(record.getStudentCount()), 4, RoundingMode.HALF_UP);
+                BigDecimal divide = BigDecimal.ZERO;
+                if(record.getStudentCount() != null && record.getStudentCount() != 0){
+                    divide = BigDecimal.valueOf(record.getActualCount()).divide(BigDecimal.valueOf(record.getStudentCount()), 4, RoundingMode.HALF_UP);
+                }
                 record.setAttendanceRate(divide.doubleValue());
             }
         }
@@ -274,7 +277,10 @@ public class StudentStatisticsController {
                 record.setAbsenteeismCount(record.getStudentCount() - record.getLeaveCount() - record.getActualCount());
 
                 //计算出勤率
-                BigDecimal divide = BigDecimal.valueOf(record.getActualCount()).divide(BigDecimal.valueOf(record.getStudentCount()), 4, RoundingMode.HALF_UP);
+                BigDecimal divide = BigDecimal.ZERO;
+                if(record.getStudentCount() != null && record.getStudentCount() != 0){
+                    divide = BigDecimal.valueOf(record.getActualCount()).divide(BigDecimal.valueOf(record.getStudentCount()), 4, RoundingMode.HALF_UP);
+                }
                 record.setAttendanceRate(divide.doubleValue());
             }
         }