创建工作日历

工作日历可以在 运行时 通过特定的视图创建,或在 设计时 使用带注解的 Java 接口创建。

运行时创建工作日历

组件安装完成后,可以从应用程序的主菜单打开 Business calendars 列表视图。

business calendar list

在页面中,点击 Create 按钮打开 Business calendar editor

business calendar editor

输入下列参数:

  • Name - 日历的可读描述。

  • Code - 日历的唯一标识符。

然后可以为日历定义工作日和工作时间了,同时还可以在不同的标签页中定义节假日或其他非工作日。

假日

Holidays(假日) 标签页,点击 Create 添加假日和周末。

business calendar holidays

该组件支持下列类型的假日:

  • Day of week(星期) - 允许指定每周的假日;例如,一般是星期六和星期日。

    business calendar day of week
  • Specific date holiday(特定日期假日) - 允许设置某一日期的特定假日,例如,每年不同的调休假。

    business calendar specific date holiday
  • Annual holiday(年固定假日) - 每年固定的假日,例如,1 月 1 日

    business calendar annual holiday
  • Cron-based holiday(基于 Cron 的假日) - 允许用 quartz CRON 格式指定特殊的假日。参阅 Cron 入门 了解更多信息。

    business calendar cron holiday

    可以用来指定一些重要的假期,例如,每个月的第三个星期五7月的第一个星期一 等。

工作日计划

Working schedule(工作日计划) 标签页,可以为一周的每天设置工作小时数。每天可以有多个工作时段,但是这些时段不能相互覆盖。

working schedule editor

额外工作日

还可以在 Additional business days(额外工作日) 标签页将某些假日定义为工作日。即便这样配置的某一天属于假日,也会按照工作日考虑。还支持设定不同的工作时间。

additional business day editor

设计时创建工作日历

设计时可以用带注解的 Java 接口创建工作日历,示例:

@BusinessCalendar(name = "Sample Business Calendar",
        code = "sample-business-calendar") (1)
public interface SampleBusinessCalendar {

    @CronHoliday(expression = "* * * 1-2 MAY ?") (2)
    @CronHoliday(expression = "* * * ? * 6#3")
    void cronHoliday();

    @WeeklyHoliday(DayOfWeek.SATURDAY)
    @WeeklyHoliday(value = DayOfWeek.SUNDAY,
            description = "Sunday is a day for family") (3)
    void weeklyHolidays();

    @FixedDayHoliday(fixedDate = "2024-05-08") (4)
    @FixedDayHoliday(fixedDate = "2024-05-09")
    void fixedHoliday();

    @FixedYearlyHoliday(month = Month.NOVEMBER, dayOfMonth = 4) (5)
    @FixedYearlyHoliday(month = Month.JUNE, dayOfMonth = 12)
    void fixedYearlyHoliday();

    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.MONDAY,
            startTime = "08:00", endTime = "17:00") (6)
    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.WEDNESDAY,
            startTime = "09:00", endTime = "17:00")
    @ScheduledBusinessDay(dayOfWeek = DayOfWeek.FRIDAY,
            startTime = "10:00", endTime = "15:00")
    void scheduledBD();

    @AdditionalBusinessDay(fixedDate = "2024-05-06",
            startTime = "10:00", endTime = "16:30") (7)
    @AdditionalBusinessDay(fixedDate = "2024-05-07",
            startTime = "10:00", endTime = "16:30")
    void additionalBD();
}
1 带注解的工作日历是一个使用 @BusinessCalendar 注解的接口。你需要为该注解指定下列参数:
  • name - 日历的可读描述。

  • code - 日历的唯一标识符。

2 指定假日 - 以 quartz CRON 格式
3 指定假日 - 每周固定假日。
4 指定假日 - 特定日期假日。
5 指定假日 - 每年一次的假日。
6 指定工作日 - 计划工作日。
7 指定工作日 - 额外工作日。

设计时创建的工作日历与其他日历一起在列表展示,但是只能查看,不能修改。

business calendars