web-dev-qa-db-ja.com

作業指示を日付と優先度でキューに入れる方法は?

私の組織では、日付に基づいて注文に取り組んでいるため、最初の作業注文が最初になります。注文を「優先」とマークするオプションもあります。その場合、これらの注文は最初に行われますが、常にではありません。

上司にいくつか質問をしましたが、意味のある答えを得ることができませんでした...

  1. 1つの注文に今日の日付があり、別の注文に明日の日付があるが優先度がマークされている場合、最初にどの注文に取り組む必要がありますか?彼はその命令が「優先」と記されていると言った。

  2. 1つの注文に今日の日付があり、別の注文の日付が今日から14日で優先度がマークされている場合、最初にどの注文に取り組む必要がありますか?彼は今日の日付があるものを言った。

したがって、問題は注文を適切にキューに入れることですが、それは彼らが正確な公式を持っているものではありません。

2つのプロパティしかないクラスを作成する場合...

public class WorkOrder
{
    public DateTime dueDate;
    public bool isPriority;
}

それらをキューに入れる最も簡単な方法は何でしょうか?

1
Liger86

優先度マーカーは常にアイテムをキューの最前面に移動するとは限らないため、最初に優先度アイテムの「有効期限」が何日シフトするかを確認する必要があります(これは2の間のどこかにあると思います)および5日)。

その情報を取得したら、次の3つのプロパティを持つクラスを作成できます。

public class WorkOrder {
    public DateTime dueDate; // The real due date
    public bool isPriority;
    public DateTime effectiveDueData; // The due date adjusted for priority
}

このクラスは、 Priority Queue に格納できます。ここで、アイテムは最初にeffectiveDueDateと(同じ日の場合)isPriorityで注文されるため、優先アイテムは特定の発効期日が最初に処理されます。