Explorar o código

修改填报及时率

yurk %!s(int64=2) %!d(string=hai) anos
pai
achega
f0b0a3e7f4

+ 36 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -5294,8 +5294,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<Map<String,Object>> dataList=new ArrayList<>();
             long days =dateTimeList.size();
             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());
+                    &&(ls.getStartDate().isBefore(ChronoLocalDate.from(sDate))||ls.getStartDate().isEqual(ChronoLocalDate.from(sDate)))
+                    &&(ls.getEndDate().isAfter(ChronoLocalDate.from(eDate))||ls.getEndDate().isEqual(ChronoLocalDate.from(eDate)))).collect(Collectors.toList());
             TimelinessRateVO timelinessRateVO=new TimelinessRateVO();
             timelinessRateVO.setUserName(user.getName());
             timelinessRateVO.setJobNumber(user.getJobNumber());
@@ -5315,15 +5315,20 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         days-=leaveSheet.getTimeDays();
                     }
                     for (LocalDateTime localDateTime : leaveDateList) {
+                        if(localDateTime.isBefore(sDate)||localDateTime.isAfter(eDate)){
+                            days++;
+                            continue;
+                        }
                         if(mapList!=null&&mapList.stream().anyMatch(ml->{
                             Object date = ml.get("createDate");
                             LocalDate createDate = LocalDate.parse(String.valueOf(date));
                             return createDate.isEqual(localDateTime.toLocalDate());
                         })){
+                            days++;
+                        }else{
                             Map<String,Object> map=new HashMap<>();
                             map.put(localDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),"请假");
                             dataList.add(map);
-                            days++;
                         }
                     }
                 }
@@ -5379,7 +5384,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     dataList.add(objectMap);
                 }
-                timelinessRateVO.setDataList(dataList);
                 BigDecimal bigDecimal=new BigDecimal(num);
                 BigDecimal divide;
                 if(days!=0){
@@ -5398,7 +5402,30 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }
                 String number = dft.format(divide);
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
+            }else {
+                int num=0;
+                BigDecimal bigDecimal=new BigDecimal(num);
+                BigDecimal divide;
+                if(days!=0){
+                    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 if(leaveSheets.size()>0){
+                    divide=new BigDecimal(1);
+                }else{
+                    divide=new BigDecimal(0);
+                }
+                if(divide.compareTo(new BigDecimal(1))==1){
+                    divide=new BigDecimal(1);
+                    log.error("填报及时率数据异常:==="+user.getName());
+                }
+                String number = dft.format(divide);
+                timelinessRateVO.setTimelinessRate(String.valueOf(number));
             }
+            timelinessRateVO.setDataList(dataList);
             resultList.add(timelinessRateVO);
         }
         HashMap map=new HashMap();
@@ -6524,9 +6551,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                     }
                     for (TaskGroup taskGroup : taskGroupList) {
                         taskGroup.setProjectId(project.getId());
-                        Optional<TaskGroup> first = groupList.stream().filter(gl -> gl.getTaskGroupCode() != null && gl.getTaskGroupCode().equals(taskGroup.getTaskGroupCode())).findFirst();
-                        if(first.isPresent()){
-                            taskGroup.setId(first.get().getId());
+                        if(groupList!=null){
+                            Optional<TaskGroup> first = groupList.stream().filter(gl -> gl.getTaskGroupCode() != null && gl.getTaskGroupCode().equals(taskGroup.getTaskGroupCode())).findFirst();
+                            if(first.isPresent()){
+                                taskGroup.setId(first.get().getId());
+                            }
                         }
                     }
                     taskGroupService.saveOrUpdateBatch(taskGroupList);