Browse Source

填报及时率修改

yurk 2 years ago
parent
commit
8d86b44646

+ 33 - 14
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -3390,13 +3390,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         LocalDateTime sDate = LocalDate.parse(startDate).atTime(LocalTime.MIN);
         LocalDateTime sDate = LocalDate.parse(startDate).atTime(LocalTime.MIN);
         LocalDateTime eDate = LocalDate.parse(endDate).atTime(LocalTime.MIN);
         LocalDateTime eDate = LocalDate.parse(endDate).atTime(LocalTime.MIN);
         List<LocalDateTime> dateTimeList = getDays(sDate, eDate);
         List<LocalDateTime> dateTimeList = getDays(sDate, eDate);
-        //去掉非工作日
-        long days =dateTimeList.size();
-        for (LocalDateTime localDateTime : dateTimeList) {
-            if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
-                days-=1;
-            }
-        }
         User targetUser= userMapper.selectById(request.getHeader("token"));
         User targetUser= userMapper.selectById(request.getHeader("token"));
         TimeType timeType = timeTypeMapper.selectById(targetUser.getCompanyId());
         TimeType timeType = timeTypeMapper.selectById(targetUser.getCompanyId());
         Integer timeliness = timeType.getTimeliness();
         Integer timeliness = timeType.getTimeliness();
@@ -3441,16 +3434,19 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", targetUser.getCompanyId()));
         List<LeaveSheet> leaveSheetList = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("company_id", targetUser.getCompanyId()));
         List<TimelinessRateVO> resultList=new ArrayList<>();
         List<TimelinessRateVO> resultList=new ArrayList<>();
         for (User user : userList){
         for (User user : userList){
+            long days =dateTimeList.size();
             //请假的不参与及时率统计
             //请假的不参与及时率统计
             List<LeaveSheet> leaveSheets = leaveSheetList.stream().filter(ls -> ls.getOwnerId().equals(user.getId())
             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.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());
                     &&(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();
+            if(leaveSheets.size()>0){
+                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 timelinessRateVO=new TimelinessRateVO();
@@ -3461,6 +3457,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 timelinessRateVO.setDepartmentName(first.get().getDepartmentName());
                 timelinessRateVO.setDepartmentName(first.get().getDepartmentName());
             }
             }
             List<Map<String, Object>> mapList = listMap.get(user.getName());
             List<Map<String, Object>> mapList = listMap.get(user.getName());
+            //去填未填日报非工作日
+            for (LocalDateTime localDateTime : dateTimeList) {
+                if(mapList!=null){
+                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())&&!mapList.stream().anyMatch(ml->{
+                        Object date = ml.get("createDate");
+                        LocalDate createDate = LocalDate.parse(String.valueOf(date));
+                        return createDate.isEqual(localDateTime.toLocalDate());
+                    })){
+                        days-=1;
+                    }
+                }else {
+                    if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
+                        days-=1;
+                    }
+                }
+
+            }
             if(mapList!=null){
             if(mapList!=null){
                 int num=0;
                 int num=0;
                 for (Map<String, Object> map : mapList) {
                 for (Map<String, Object> map : mapList) {
@@ -3477,9 +3490,15 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         break;
                         break;
                     }
                     }
                     if(createTimeDate.isBefore(createDate)||createTimeDate.isEqual(createDate)){
                     if(createTimeDate.isBefore(createDate)||createTimeDate.isEqual(createDate)){
-                        num++;
+                        if(!leaveSheets.stream().anyMatch(ls->(createTimeDate.isAfter(ls.getStartDate())||createTimeDate.isEqual(ls.getStartDate()))&&
+                                (createTimeDate.isBefore(ls.getEndDate())||createTimeDate.isEqual(ls.getEndDate())))){
+                            num++;
+                        }
                     }
                     }
                 }
                 }
+                System.out.println(user.getName());
+                System.out.println(days);
+                System.out.println(num);
                 BigDecimal bigDecimal=new BigDecimal(num);
                 BigDecimal bigDecimal=new BigDecimal(num);
                 BigDecimal divide;
                 BigDecimal divide;
                 if(days!=0){
                 if(days!=0){