Browse Source

计算休息时间

seyason 2 years ago
parent
commit
d7c0fd1ad6

+ 5 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -1107,9 +1107,12 @@ public class ReportController {
                         int excludeTime = 0;
                         if (excludeTimeList.size() > 0) {
                             for (TimeAutoExclude exclude : excludeTimeList) {
-                                if (exclude.getStartTime().compareTo(startTime) >= 0 && exclude.getEndTime().compareTo(endTime) <= 0) {
+                                if (!(exclude.getEndTime().compareTo(startTime) < 0 || exclude.getStartTime().compareTo(endTime) > 0)) {
+                                    //有交叉的情况,结束时间取较早的,开始时间取较晚的
+                                    endTime = exclude.getEndTime().compareTo(endTime) <0 ? exclude.getEndTime() : endTime;
+                                    startTime = exclude.getStartTime().compareTo(startTime) > 0 ? exclude.getStartTime() : startTime;
                                     //落在休息时间范围内,需要计算去掉的时间
-                                    excludeTime += sdf.parse(exclude.getEndTime()).getTime() - sdf.parse(exclude.getStartTime()).getTime();
+                                    excludeTime += sdf.parse(endTime).getTime() - sdf.parse(startTime).getTime();
                                 }
                             }
                         }