|
@@ -7270,29 +7270,27 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
//计算算请假时间
|
|
|
map.put("standardHours",standardHours);
|
|
|
map.put("workingTime",map.get("workingTime")==null?0:map.get("workingTime"));
|
|
|
- float leaveTime = 0;
|
|
|
List<LeaveSheet> leaveSheets = leaveSheetMapper.selectLeave(map.get("userId").toString(),startDate,endDate);
|
|
|
+ float leaveTime = 0;
|
|
|
for (LeaveSheet leaveSheet : leaveSheets) {
|
|
|
//当请假时间在当前月内的
|
|
|
if ((leaveSheet.getStartDate().isEqual(localStartDate) || leaveSheet.getStartDate().isAfter(localStartDate)) && (leaveSheet.getEndDate().isEqual(localEndDate) || leaveSheet.getEndDate().isBefore(localEndDate))){
|
|
|
leaveTime+=leaveSheet.getTimeHours();
|
|
|
}else{
|
|
|
- float LeaveDay = leaveSheet.getStartDate().toEpochDay() - leaveSheet.getStartDate().toEpochDay();
|
|
|
+ float LeaveDay = leaveSheet.getEndDate().toEpochDay() - leaveSheet.getStartDate().toEpochDay() + 1;
|
|
|
Float timeHours = leaveSheet.getTimeHours();
|
|
|
//请假时间首尾跨月
|
|
|
if(leaveSheet.getStartDate().isBefore(localStartDate) && leaveSheet.getEndDate().isAfter(localEndDate)){
|
|
|
- float sDifDay = leaveSheet.getStartDate().toEpochDay() - localStartDate.toEpochDay();
|
|
|
- float eDifDay = localEndDate.toEpochDay() - leaveSheet.getEndDate().toEpochDay();
|
|
|
- leaveTime+= standardHours + timeHours*(sDifDay/LeaveDay) + timeHours*(eDifDay/LeaveDay);
|
|
|
+ leaveTime+= standardHours;
|
|
|
}else {
|
|
|
//当请假时间开始时间跨月
|
|
|
if (leaveSheet.getStartDate().isBefore(localStartDate)){
|
|
|
//平均计算
|
|
|
- float DifDay = leaveSheet.getStartDate().toEpochDay() - localStartDate.toEpochDay();
|
|
|
+ float DifDay = localStartDate.toEpochDay() - leaveSheet.getStartDate().toEpochDay();
|
|
|
leaveTime+= timeHours*(DifDay/LeaveDay);
|
|
|
}else {
|
|
|
//当请假时间结束时间跨月
|
|
|
- float DifDay = localEndDate.toEpochDay() - leaveSheet.getEndDate().toEpochDay();
|
|
|
+ float DifDay = leaveSheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
|
|
|
leaveTime+= timeHours*(DifDay/LeaveDay);
|
|
|
}
|
|
|
}
|