Browse Source

考勤相关修改修正开始时间和结束时间

chenjun 1 year ago
parent
commit
a9edc56131

+ 16 - 7
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/attendance/AttendanceSheetServiceImpl.java

@@ -196,6 +196,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
      * @param month
      * @return
      */
+    @Override
     public  Map<String, List<AttendanceSheetRelationWorkDay>> statisticAttendanceData(Set<String> deptIdList, String userId, Short year, Short month) {
         //请假类型字典值
         List<DictDataRespDTO> wfLeaveTypeList = dictDataApi.getDictDataList(DictConstants.WF_LEAVE_TYPE).getData();
@@ -446,24 +447,32 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
         leaveTimeList.forEach(localDateTimes -> {
             LocalDateTime startTime = localDateTimes.getStartTime();
             LocalDateTime endTime = localDateTimes.getEndTime();
+            LocalTime startLocalTime = startTime.toLocalTime();
+            LocalTime endLocalTime = endTime.toLocalTime();
+            if(startLocalTime.compareTo(normalTimeAm)<0){
+                startLocalTime = normalTimeAm;
+            }
+            if(endLocalTime.compareTo(finishPmFlag)>0){
+                endLocalTime = finishPmFlag;
+            }
             //请假时间段在同一天
             if (LocalDateTimeUtil.isSameDay(startTime, endTime)) {
                 //请假开始时间在早上上下班之间,结束时间在早上上下班之间,请假状态修改当天早上考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimeAm, finishAmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimeAm, finishAmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimeAm, finishAmFlag) && localTimeIsIn(endLocalTime, normalTimeAm, finishAmFlag)) {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                 }
                 //请假开始时间在早上下班之前,结束时间在下午下班之前,请假状态修改当天早上、下午考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimeAm, finishAmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimeAm, finishAmFlag) && localTimeIsIn(endLocalTime, normalTimePm, finishPmFlag)) {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_PM);
                 }
                 //请假开始时间在下午下班之前,结束时间在下午下班之前,请假状态修改当天下午考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimePm, finishPmFlag) && localTimeIsIn(endLocalTime, normalTimePm, finishPmFlag)) {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_PM);
                 }
             } else {
                 //请假开始时间在早上下班之前,结束时间在早上下班之前,请假状态修改多天(1~n)全天考勤状态和结束日期当天早上考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimeAm, finishAmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimeAm, finishAmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimeAm, finishAmFlag) && localTimeIsIn(endLocalTime, normalTimeAm, finishAmFlag)) {
                     LocalDateTime flagTime = startTime;
                     while (!LocalDateTimeUtil.isSameDay(flagTime, endTime)) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
@@ -473,7 +482,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                 }
                 //请假开始时间在早上下班之前,结束时间在下午下班之前,请假状态修改多天(1~n)全天考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimeAm, finishAmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimeAm, finishAmFlag) && localTimeIsIn(endLocalTime, normalTimePm, finishPmFlag)) {
                     LocalDateTime flagTime = startTime;
                     while (!LocalDateTimeUtil.isSameDay(flagTime, endTime.plusDays(1))) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
@@ -482,7 +491,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                     }
                 }
                 //请假开始时间在下午下班之前,结束时间在下午下班之前,请假状态修改修改多天(1~n)全天考勤状态和起始日期当天下午考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimePm, finishPmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimePm, finishPmFlag) && localTimeIsIn(endLocalTime, normalTimePm, finishPmFlag)) {
                     LocalDateTime flagTime = startTime.plusDays(1);
                     while (!LocalDateTimeUtil.isSameDay(flagTime, endTime.plusDays(1))) {
                         updateSheet(userId, attendanceStatus, flagTime, ATTENDANCE_TYPE_AM);
@@ -492,7 +501,7 @@ public class AttendanceSheetServiceImpl implements AttendanceSheetService {
                     updateSheet(userId, attendanceStatus, startTime, ATTENDANCE_TYPE_PM);
                 }
                 //请假开始时间在下午下班之前,结束时间在早上下班之前,请假状态修改多天(0~n)全天考勤状态和结束日期当天早上考勤状态和起始日期当天下午考勤状态
-                if (localTimeIsIn(startTime.toLocalTime(), normalTimePm, finishPmFlag) && localTimeIsIn(endTime.toLocalTime(), normalTimeAm, finishAmFlag)) {
+                if (localTimeIsIn(startLocalTime, normalTimePm, finishPmFlag) && localTimeIsIn(endLocalTime, normalTimeAm, finishAmFlag)) {
                     updateSheet(userId, attendanceStatus, startTime, ATTENDANCE_TYPE_PM);
                     updateSheet(userId, attendanceStatus, endTime, ATTENDANCE_TYPE_AM);
                     LocalDateTime flagTime = startTime.plusDays(1);