2

我的用例——我是一名医生。在给定的一天,我有几个小时有空,有一些时间没有空。我想创建一个对象 Period myWorkDay。当有人确定上午 8 点到 9 点的约会时(即 Period patient1Appointment),该时间段将从 myWorkDay 中“删除”。当新患者访问 myWorkDay 时,他只能看到 myWorkDay - patient1Appointment。如果患者 1 释放他的时间段,那么新患者会看到完整的 myWorkDay。

是否可以使用 JodaTime 做到这一点?

有一个不必要的额外要求。但是,如果你知道怎么做,那么请告诉我。

Extra - 在 myWorkDay 中为特定期间定义任务并执行它们。例如。8-9 期间(8-8:30 钻牙,8:30 - 8:45 磨牙,8:45-9:00 做一些文书工作,然后在 9 点欢迎另一位患者)

import org.joda.time.*;

public class PeriodManager {


    public static void main(String[]args){

        DateTime startTime = new DateTime(2013, 7, 1, 9, 0);//(int year, int monthOfYear, int dayOfMonth, int hourOfDay, int minuteOfHour) 
        DateTime endTime = new DateTime(2013, 7, 1, 17, 0);// 9 to 5 (or 17) job :)

        Period fullDay = new Period(startTime, endTime);
        System.out.println("full day - " + fullDay);

        startTime = new DateTime(2013, 7, 1, 9, 0);
        endTime = new DateTime(2013, 7, 1, 10, 0);
        Period patient1Appointment = new Period(startTime, endTime);//9-10

        fullDay.minus(patient1Appointment);
        System.out.println("full day - pat 1 " + fullDay);

        startTime = new DateTime(2013, 7, 1, 9, 0);
        endTime = new DateTime(2013, 7, 1, 10, 0);
        Period patient1CancelAppointment = new Period(startTime, endTime);

        fullDay.plus(patient1CancelAppointment);
        System.out.println("full day + pat 1 " + fullDay);

        startTime = new DateTime(2013, 7, 1, 9, 0);
        endTime = new DateTime(2013, 7, 1, 10, 0);
        Period patient2Appointment = new Period(startTime, endTime);

        fullDay.minus(patient2Appointment);
        System.out.println("full day - pat 2 " + fullDay);

    }   

}
4

1 回答 1

1

JODA 代表日期和时间,因此在回答您的问题时,是的,可以使用 JODA 在某种程度上对此进行建模。但是您需要对问题域进行建模,而不仅仅是 JODA。

您实际上是在做类似于 Outlook 日历的事情。日历已在 Java 中使用,因此您可以将其称为日记。一个简单的日记会知道你的工作日是哪几天,你的工作时间是什么(开始时间,结束时间)。

您可能希望将您的日记表示为日/周/月块。对于每一天,您现在可以确定它是否是工作日,以及工作时间是多少。

然后,您将需要代表预约。最简单的约会有日期,开始时间和结束时间,与会者。您可以添加其他内容,例如描述、状态(忙碌等)。

当有人创建新约会时,您可以检查它的开始/结束时间是否与现有约会冲突。

所以从这个领域驱动的设计开始,我们可以说你可能有以下数据/实体。

  1. 医生(可能是雇员)
  2. 医生拥有 1 份或多份日记
  3. 日记有工作日、工作时间;拥有约会
  4. 约会有开始时间、结束时间、日期、参加者

这将为您提供有关数据和对象模型以及主数据关系的线索。没有理由不能使用标准类或 JODA 来实现它。

于 2013-03-19T03:04:43.360 回答