|
@@ -41,6 +41,8 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
+import java.time.Period;
|
|
|
+import java.time.chrono.ChronoLocalDate;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -3434,8 +3436,22 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
userList = userMapper.selectList(queryWrapper);
|
|
|
}
|
|
|
Map<Object, List<Map<String, Object>>> listMap = reportList.stream().collect(Collectors.groupingBy(rp -> rp.get("userName")));
|
|
|
+ //获取请假数据
|
|
|
+ List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", targetUser.getCompanyId()));
|
|
|
List<TimelinessRateVO> resultList=new ArrayList<>();
|
|
|
for (User user : userList){
|
|
|
+ //请假的不参与及时率统计
|
|
|
+ List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(user.getId())
|
|
|
+ &&(ls.getStartDate().isAfter(ChronoLocalDate.from(sDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(sDate)))
|
|
|
+ &&(ls.getEndDate().isBefore(ChronoLocalDate.from(eDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(eDate)))).collect(Collectors.toList());
|
|
|
+ for (LeaveSheet leaveSheet : leaveSheets) {
|
|
|
+ Period next = Period.between(leaveSheet.getStartDate(),leaveSheet.getEndDate());
|
|
|
+ if(next.getDays()<1){
|
|
|
+ days-=1;
|
|
|
+ }else {
|
|
|
+ days-=next.getDays();
|
|
|
+ }
|
|
|
+ }
|
|
|
TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
|
|
|
timelinessRateVO.setUserName(user.getName());
|
|
|
timelinessRateVO.setTimelinessRate(String.valueOf(dft.format(0)));
|
|
@@ -3469,6 +3485,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
divide = bigDecimal.divide(BigDecimal.valueOf(days), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
}else if(days==0&&num!=0){
|
|
|
divide=new BigDecimal(1);
|
|
|
+ //查看当天有请假直接算100%
|
|
|
+ }else if (days==0&&num!=0&&leaveSheetList.size()>0){
|
|
|
+ divide=new BigDecimal(1);
|
|
|
}else{
|
|
|
divide=new BigDecimal(0);
|
|
|
}
|
|
@@ -3598,9 +3617,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
|
|
|
List<LocalDateTime> result = new ArrayList();
|
|
|
while (start.isBefore(end)) {
|
|
|
result.add(start);
|
|
|
- result.add(start.plusDays(1));
|
|
|
start=start.plusDays(1);
|
|
|
}
|
|
|
+ result.add(start);
|
|
|
return result;
|
|
|
}
|
|
|
|