CropDutyServiceDateService.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.cyksj.common.service;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.cyksj.model.dto.YhServiceDto;
  4. import java.time.DayOfWeek;
  5. import java.time.LocalDateTime;
  6. import java.time.format.DateTimeFormatter;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.Optional;
  10. /**
  11. * 项目名: netflix-job
  12. * 文件名: DateUtils
  13. * 创建者: JavaZou
  14. * 创建时间:2023/12/25 13:52
  15. */
  16. public class CropDutyServiceDateService {
  17. public static DayOfWeek getNextWorkDay(DayOfWeek currentDay) {
  18. // 如果当前是周五,下一个工作日是周一;否则,是当前星期的下一天
  19. if (currentDay == DayOfWeek.FRIDAY) {
  20. return DayOfWeek.SATURDAY;
  21. }
  22. if (currentDay == DayOfWeek.SATURDAY) {
  23. return DayOfWeek.SUNDAY;
  24. }
  25. return DayOfWeek.MONDAY;
  26. }
  27. /**
  28. * 返回明天星期几 用户获取对应周期工作客服
  29. */
  30. public static List<YhServiceDto> getDutyService(DayOfWeek nextWorkDay, List<YhServiceDto> workday, List<YhServiceDto> saturday, List<YhServiceDto> sunday, Map<String, List<YhServiceDto>> holidyDateMap, LocalDateTime now) {
  31. List<YhServiceDto> holidayServiceIfHoliday = getHolidayServiceIfHoliday(now, holidyDateMap);
  32. if (holidayServiceIfHoliday != null) {
  33. return holidayServiceIfHoliday;
  34. }
  35. if (nextWorkDay == DayOfWeek.SATURDAY) {
  36. return Optional.ofNullable(saturday).orElse(Optional.ofNullable(sunday).orElse(workday));
  37. }
  38. if (nextWorkDay == DayOfWeek.SUNDAY) {
  39. return Optional.ofNullable(sunday).orElse(workday);
  40. }
  41. return workday;
  42. }
  43. public static List<YhServiceDto> getHolidayServiceIfHoliday(LocalDateTime now, Map<String, List<YhServiceDto>> holidyDateMap) {
  44. if (holidyDateMap == null) {
  45. return null;
  46. }
  47. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d");
  48. String nowDate = now.format(formatter);
  49. List<YhServiceDto> holidayServices = holidyDateMap.get(nowDate);
  50. if (CollUtil.isNotEmpty(holidayServices)) {
  51. return holidayServices;
  52. }
  53. return null;
  54. }
  55. }