| | |
| | | LocalDateTime endWeek = performanceShiftAddDto.getEndWeek();//结束日期 |
| | | |
| | | |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | String formattedDateTime = performanceShiftAddDto.getStartWeek().format(formatter); |
| | | String[] splitUserId = performanceShiftAddDto.getStaffOnJobId().split(","); |
| | | for (String userId : splitUserId) { |
| | | //判断是否跨月 |
| | | boolean isMonth = startWeek.getMonthValue() != endWeek.getMonthValue(); |
| | | if (isMonth){ |
| | | //如果跨月,则两个月都判断一下看数据库是哪个月份的数据没有 |
| | | LocalDateTime startMonthBegin = startWeek.toLocalDate().withDayOfMonth(1).atStartOfDay(); |
| | | LocalDateTime endMonthBegin = endWeek.toLocalDate().withDayOfMonth(1).atStartOfDay(); |
| | | boolean exists1 = baseMapper.exists(Wrappers.<PersonalShift>lambdaQuery() |
| | | .eq(PersonalShift::getWorkTime, startWeek) |
| | | .ge(PersonalShift::getWorkTime, startMonthBegin) |
| | | .lt(PersonalShift::getWorkTime, startMonthBegin.plusMonths(1)) |
| | | .eq(PersonalShift::getStaffOnJobId, userId)); |
| | | boolean exists2 = baseMapper.exists(Wrappers.<PersonalShift>lambdaQuery() |
| | | .eq(PersonalShift::getWorkTime, endWeek) |
| | | .ge(PersonalShift::getWorkTime, endMonthBegin) |
| | | .lt(PersonalShift::getWorkTime, endMonthBegin.plusMonths(1)) |
| | | .eq(PersonalShift::getStaffOnJobId, userId)); |
| | | if (!exists1 && !exists2){ |
| | | //两个月都不存在数据 |
| | |
| | | } |
| | | }else { |
| | | //不跨月 |
| | | LocalDateTime monthBegin = startWeek.toLocalDate().withDayOfMonth(1).atStartOfDay(); |
| | | boolean exists = baseMapper.exists(Wrappers.<PersonalShift>lambdaQuery() |
| | | .in(PersonalShift::getWorkTime, formattedDateTime) |
| | | .ge(PersonalShift::getWorkTime, monthBegin) |
| | | .lt(PersonalShift::getWorkTime, monthBegin.plusMonths(1)) |
| | | .eq(PersonalShift::getStaffOnJobId, userId)); |
| | | // 如果不存在添加数据 |
| | | if (!exists) { |
| | |
| | | // 再次更新 |
| | | List<LocalDateTime> datesBetween = getLocalDateTimesBetween(performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek()); |
| | | for (LocalDateTime date : datesBetween) { |
| | | LocalDateTime dayBegin = date.toLocalDate().atStartOfDay(); |
| | | for (String s : splitUserId) { |
| | | PersonalShift personalShift = new PersonalShift(); |
| | | personalShift.setPersonalAttendanceLocationConfigId(performanceShiftAddDto.getPersonalAttendanceLocationConfigId()); |
| | | personalShift.setStaffOnJobId(Long.valueOf(s)); |
| | | personalShift.setWorkTime(date); |
| | | String formatterDateTime = date.format(formatter); |
| | | baseMapper.update(new PersonalShift(), Wrappers.<PersonalShift>lambdaUpdate() |
| | | .set(PersonalShift::getPersonalAttendanceLocationConfigId, performanceShiftAddDto.getPersonalAttendanceLocationConfigId()) |
| | | .eq(PersonalShift::getStaffOnJobId, s) |
| | | .eq(PersonalShift::getWorkTime, formatterDateTime)); |
| | | .ge(PersonalShift::getWorkTime, dayBegin) |
| | | .lt(PersonalShift::getWorkTime, dayBegin.plusDays(1))); |
| | | } |
| | | } |
| | | return 0; |