|
@@ -193,6 +193,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
WxCorpInfoMapper wxCorpInfoMapper;
|
|
|
@Resource
|
|
|
WxCorpInfoService wxCorpInfoService;
|
|
|
+ @Resource
|
|
|
+ private LeaveSheetService leaveSheetService;
|
|
|
|
|
|
@Resource
|
|
|
private HttpServletResponse response;
|
|
@@ -6094,30 +6096,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
map.put("deptName","未分配");
|
|
|
}
|
|
|
//计算请假时间
|
|
|
- Float leaveSum = 0F;
|
|
|
+ ArrayList<LeaveSheet> leaveSheets = new ArrayList<>();
|
|
|
for (LeaveSheet sheet : leaveSheet) {
|
|
|
if (sheet.getOwnerId().equals(map.get("userId"))){
|
|
|
-// System.err.println(sheet.getOwnerName());
|
|
|
-// System.err.println(sheet.getStartDate());
|
|
|
-// System.err.println(sheet.getEndDate());
|
|
|
- Float timeHours = sheet.getTimeHours();
|
|
|
- //若请假开始时间不在筛选时间内
|
|
|
- if (sheet.getStartDate().isBefore(localStartDate)) {
|
|
|
- long day = localStartDate.toEpochDay() - sheet.getStartDate().toEpochDay();
|
|
|
- timeHours -= day * allDay.getAllday();
|
|
|
-// System.err.println("请假开始时间不在筛选时间内,应减去" + day * allDay.getAllday()+"小时");
|
|
|
- }
|
|
|
- //若请假结束时间不在筛选时间内
|
|
|
- if (sheet.getEndDate().isAfter(localEndDate)) {
|
|
|
- long day = sheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
|
|
|
- timeHours -= day * allDay.getAllday();
|
|
|
-// System.err.println("请假结束时间不在筛选时间内,应减去"+day * allDay.getAllday()+"小时");
|
|
|
- }
|
|
|
-// System.err.println("计算完的时间为:" + timeHours);
|
|
|
- leaveSum += timeHours;
|
|
|
- }
|
|
|
- }
|
|
|
-// System.err.println("总时间为:"+leaveSum);
|
|
|
+ leaveSheets.add(sheet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int days = WorkDayCalculateUtils.getWorkDaysListInRange(startDate, endDate, 0).size();
|
|
|
+ Float allday = allDay.getAllday();
|
|
|
+ float standardHours = allday*days;
|
|
|
+ float leaveSum = leaveSheetService.leaveTimeSum(companyId,startDate,endDate,standardHours,allday,leaveSheet);
|
|
|
map.put("leaveSum",leaveSum + "h");
|
|
|
double workTimeDouble = Double.parseDouble(map.get("workingTime").toString()) + leaveSum;
|
|
|
BigDecimal workTimeBig = new BigDecimal(workTimeDouble);
|
|
@@ -7970,10 +7958,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
total=projectMapper.findCountWithEmpMonthHours(targetUser.getCompanyId(),startDate,endDate,null,null,userId,branchDepartment,deptIds);
|
|
|
}
|
|
|
if(resultList.size()!=0){
|
|
|
- DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
- float standardHours = Float.parseFloat(resultList.get(0).get("allday").toString())*days;
|
|
|
- LocalDate localStartDate = LocalDate.parse(startDate, dateTimeFormatter);
|
|
|
- LocalDate localEndDate = LocalDate.parse(endDate, dateTimeFormatter);
|
|
|
+ float allday = Float.parseFloat(resultList.get(0).get("allday").toString());
|
|
|
+ float standardHours = allday*days;
|
|
|
List<LeaveSheet> sumLeave = leaveSheetMapper.selectLeave(targetUser.getCompanyId(), startDate, endDate);
|
|
|
for (Map<String, Object> map : resultList) {
|
|
|
//计算算请假时间
|
|
@@ -7988,32 +7974,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
leaveSheets.add(leaveSheet);
|
|
|
}
|
|
|
}
|
|
|
- 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.getEndDate().toEpochDay() - leaveSheet.getStartDate().toEpochDay() + 1;
|
|
|
- Float timeHours = leaveSheet.getTimeHours();
|
|
|
- //请假时间首尾跨月
|
|
|
- if(leaveSheet.getStartDate().isBefore(localStartDate) && leaveSheet.getEndDate().isAfter(localEndDate)){
|
|
|
- leaveTime+= standardHours;
|
|
|
- }else {
|
|
|
- //当请假时间开始时间跨月
|
|
|
- if (leaveSheet.getStartDate().isBefore(localStartDate)){
|
|
|
- //平均计算
|
|
|
- float DifDay = localStartDate.toEpochDay() - leaveSheet.getStartDate().toEpochDay();
|
|
|
- leaveTime+= timeHours*(1 - DifDay/LeaveDay);
|
|
|
- }else {
|
|
|
- //当请假时间结束时间跨月
|
|
|
- float DifDay = leaveSheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
|
|
|
- leaveTime+= timeHours*(1 - DifDay/LeaveDay);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- leaveTime = new BigDecimal(leaveTime).setScale(1,BigDecimal.ROUND_HALF_UP).floatValue();
|
|
|
+ float leaveTime = leaveSheetService.leaveTimeSum(targetUser.getCompanyId(),startDate,endDate,standardHours,allday,leaveSheets);
|
|
|
map.put("leaveTime",leaveTime);
|
|
|
//是否满足工时
|
|
|
if (workingTime + leaveTime < standardHours){
|