Ver código fonte

补充提交特殊节假日设置

Min 1 ano atrás
pai
commit
51796ce677

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

@@ -54,7 +54,6 @@ import java.sql.Timestamp;
 import java.text.*;
 import java.time.*;
 import java.time.chrono.ChronoLocalDate;
-import java.time.chrono.ChronoLocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -8177,11 +8176,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             //针对美莱德 去除2024-02-09
             //针对人员已经特殊节假日设置去除相对应的日期
             List<HolidaySetting> allUsersSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 0).collect(Collectors.toList());
+            List<HolidaySetting> targetUserOrDeptSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 1).collect(Collectors.toList());
             if(allUsersSetting.size()>0){
                 List<LocalDateTime> holidayDateList = allUsersSetting.stream().map(h->h.getHolidayDate().atTime(LocalTime.MIN)).collect(Collectors.toList());
                 dateTimeList.set(dateTimeList.get().stream().filter(d -> !holidayDateList.contains(d)).collect(Collectors.toList()));
             }
-            List<HolidaySetting> targetUserOrDeptSetting = holidaySettingList.stream().filter(h -> h.getRangeType() == 1).collect(Collectors.toList());
             if(targetUserOrDeptSetting.size()>0){
                 targetUserOrDeptSetting.forEach(t->{
                     LocalDateTime holidayDate = t.getHolidayDate().atTime(LocalTime.MIN);
@@ -8249,22 +8248,51 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             long daysWithLeave =days;
             if(leaveSheets.size()>0){
                 for (LeaveSheet leaveSheet : leaveSheets) {
-                    List<LocalDateTime> leaveDateList = getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN));
-                    //针对美莱德 去除2024-02-09
-                    if(user.getCompanyId()==876){
-                        leaveDateList=leaveDateList.stream().filter(d->!d.isEqual(LocalDate.parse("2024-02-09").atTime(LocalTime.MIN))).collect(Collectors.toList());
-                    }
-                    List<LocalDateTime> list = getDays(leaveSheet.getStartDate().atTime(LocalTime.now()), leaveSheet.getEndDate().atTime(LocalTime.now()));
-                    //针对美莱德 去除2024-02-09
-                    if(user.getCompanyId()==876){
-                        list=list.stream().filter(d->!d.isEqual(LocalDate.parse("2024-02-09").atTime(LocalTime.MIN))).collect(Collectors.toList());
+                    AtomicReference<List<LocalDateTime>> leaveDateList = new AtomicReference<>(getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN)));
+//                    //针对美莱德 去除2024-02-09
+//                    if(user.getCompanyId()==876){
+//                        leaveDateList=leaveDateList.stream().filter(d->!d.isEqual(LocalDate.parse("2024-02-09").atTime(LocalTime.MIN))).collect(Collectors.toList());
+//                    }
+                    AtomicReference<List<LocalDateTime>> list = new AtomicReference<>(getDays(leaveSheet.getStartDate().atTime(LocalTime.MIN), leaveSheet.getEndDate().atTime(LocalTime.MIN)));
+//                    //针对美莱德 去除2024-02-09
+//                    if(user.getCompanyId()==876){
+//                        list=list.stream().filter(d->!d.isEqual(LocalDate.parse("2024-02-09").atTime(LocalTime.MIN))).collect(Collectors.toList());
+//                    }
+                    if(allUsersSetting.size()>0){
+                        List<LocalDateTime> holidayDateList = allUsersSetting.stream().map(h->h.getHolidayDate().atTime(LocalTime.MIN)).collect(Collectors.toList());
+                        leaveDateList.set(leaveDateList.get().stream().filter(d -> !holidayDateList.contains(d)).collect(Collectors.toList()));
+                        list.set(list.get().stream().filter(d -> !holidayDateList.contains(d)).collect(Collectors.toList()));
+                    }
+                    if(targetUserOrDeptSetting.size()>0){
+                        targetUserOrDeptSetting.forEach(t->{
+                            LocalDateTime holidayDate = t.getHolidayDate().atTime(LocalTime.MIN);
+                            if(!StringUtils.isEmpty(t.getTargetUsers())){
+                                String[] userSplit = t.getTargetUsers().split(",");
+                                List<String> userAsList = Arrays.asList(userSplit);
+                                if(userAsList.contains(user.getId())){
+                                    leaveDateList.set(leaveDateList.get().stream().filter(d -> !d.isEqual(holidayDate)).collect(Collectors.toList()));
+                                    list.set(list.get().stream().filter(d -> !d.isEqual(holidayDate)).collect(Collectors.toList()));
+                                }
+                            }
+                            if(!StringUtils.isEmpty(t.getTargetDepts())){
+                                String[] deptSplit = t.getTargetUsers().split(",");
+                                List<String> deptAsList = Arrays.asList(deptSplit);
+                                for (String deptId : deptAsList) {
+                                    List<Integer> subDeptIds = getBranchDepartment(Integer.valueOf(deptId), departmentList);
+                                    if(deptId.equals(user.getDepartmentId())||subDeptIds.contains(user.getDepartmentId())){
+                                        leaveDateList.set(leaveDateList.get().stream().filter(d -> !d.isEqual(holidayDate)).collect(Collectors.toList()));
+                                        list.set(list.get().stream().filter(d -> !d.isEqual(holidayDate)).collect(Collectors.toList()));
+                                    }
+                                }
+                            }
+                        });
                     }
-                    if(list.size()>1){
-                        days-=list.size();
+                    if(list.get().size()>1){
+                        days-= list.get().size();
                     }else {
                         days-=1;
                     }
-                    for (LocalDateTime localDateTime : leaveDateList) {
+                    for (LocalDateTime localDateTime : leaveDateList.get()) {
                         //todo: 请假区间当中有非工作日在之前被当作 不需填报 所以要加上 保证基数正确
                         if(!WorkDayCalculateUtils.isWorkDay(localDateTime.toLocalDate())){
                             days+=1;

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue

@@ -882,7 +882,12 @@
         },
         watch: {
             filterText(val) {
-                this.$refs.whiteListTree.filter(val);
+                
+                if(this.specialHolidays != 0) {
+                    this.$refs.specialHolidaysTree.filter(val);
+                } else {
+                    this.$refs.whiteListTree.filter(val);
+                }
             }
         },
         created() {