Przeglądaj źródła

人员填报及时率修改(休假)

yurk 2 lat temu
rodzic
commit
307ec9adb1

+ 20 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

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

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -634,6 +634,6 @@
         left join `user` on `user`.id=report.creator_id
         where report.company_id=#{companyId}
         and report.create_date between #{startDate} and #{endDate}
-        group by `user`.id,report.create_date
+        group by user.id,report.create_date
     </select>
 </mapper>