소스 검색

修复按时间段填报工时时的时长计算Bug

seyason 2 년 전
부모
커밋
31961e2525

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

@@ -1102,20 +1102,20 @@ public class ReportController {
                 try {
                     report.setStartTime(startTime).setEndTime(endTime);
                     long time = sdf.parse(report.getEndTime()).getTime() - sdf.parse(report.getStartTime()).getTime();
-                    //是否要扣除休息时间,如果是加班,则不需要扣除
-                    if (report.getIsOvertime() == 0) {
-                        int excludeTime = 0;
-                        if (excludeTimeList.size() > 0) {
-                            for (TimeAutoExclude exclude : excludeTimeList) {
-                                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(endTime).getTime() - sdf.parse(startTime).getTime();
-                                }
+
+                    int excludeTime = 0;
+                    if (excludeTimeList.size() > 0) {
+                        for (TimeAutoExclude exclude : excludeTimeList) {
+                            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(endTime).getTime() - sdf.parse(startTime).getTime();
                             }
                         }
+                    }
+                    if (excludeTime > 0) {
                         time -= excludeTime;//去掉休息时间
                     }
 
@@ -1138,16 +1138,16 @@ public class ReportController {
                     WorktimeItem item = JSONObject.toJavaObject(jsonObject, WorktimeItem.class);
                     long time = sdf.parse(item.getEndTime()).getTime() - sdf.parse(item.getStartTime()).getTime();
                     //是否要扣除休息时间,如果是加班,则不需要扣除
-                    if (report.getIsOvertime() == 0) {
-                        int excludeTime = 0;
-                        if (excludeTimeList.size() > 0) {
-                            for (TimeAutoExclude exclude : excludeTimeList) {
-                                if (exclude.getStartTime().compareTo(item.getStartTime()) >= 0 && exclude.getEndTime().compareTo(item.getEndTime()) <= 0) {
-                                    //落在休息时间范围内,需要计算去掉的时间
-                                    excludeTime += sdf.parse(exclude.getEndTime()).getTime() - sdf.parse(exclude.getStartTime()).getTime();
-                                }
+                    int excludeTime = 0;
+                    if (excludeTimeList.size() > 0) {
+                        for (TimeAutoExclude exclude : excludeTimeList) {
+                            if (exclude.getStartTime().compareTo(item.getStartTime()) >= 0 && exclude.getEndTime().compareTo(item.getEndTime()) <= 0) {
+                                //落在休息时间范围内,需要计算去掉的时间
+                                excludeTime += sdf.parse(exclude.getEndTime()).getTime() - sdf.parse(exclude.getStartTime()).getTime();
                             }
                         }
+                    }
+                    if (excludeTime > 0) {
                         time -= excludeTime;
                     }