|
@@ -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);
|