2

私のユースケース - 私は医者です。ある日、私は何時間か、UN は何時間か利用できます。オブジェクト期間 myWorkDay を作成したいです。誰かが午前 8 時から午前 9 時までの予定 (つまり、期間の患者 1 の予定) を確定すると、その期間は 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 の予定表のようなことを行っています。Calendar は Java で既に使用されているため、日記と呼ぶことができます。簡単な日記は、あなたの勤務日と勤務時間 (開始時間、終了時間) を知ることができます。

日記を日/週/月のブロックとして表現したい場合があります。日ごとに、稼働日かどうか、および稼働時間を判断できるようになりました。

次に、予定を表します。最も単純な予定には、日付、開始時刻、終了時刻、出席者が含まれます。説明、ステータス (ビジーなど) などを追加できます。

誰かが新しい予定を作成すると、開始/終了時間が既存の予定と衝突するかどうかを確認できます。

したがって、このドメイン駆動設計から始めると、おそらく次のデータ/エンティティがあると言えます。

  1. 医者(おそらく従業員)
  2. 医師が 1 つ以上の日記を所有している
  3. 日記には就業日、就業時間があります。所有者
  4. 予定には開始時刻、終了時刻、日付、出席者があります

これにより、マスター データの関係とともに、データとオブジェクト モデルの手がかりが得られます。これを標準クラスまたは JODA で実装できない理由はありません。

于 2013-03-19T03:04:43.360 に答える