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