我正在尝试创建日历和日程安排应用程序。我们有一个由短期交货预约组成的数据集。开始时间、持续时间、截止日期/时间等。我们的目的是创建一个应用程序,该应用程序将在给定工作块的开始和结束时间的情况下生成任务列表。
作业按以下顺序排列优先级:
- 今天在特定时间到期
- 今天到期,没有具体时间
- 在未来日期到期,按升序排序
- 没有截止日期
- 未来开始日期(不包括在报告中)
当应用程序运行时,输入工作班次的开始和结束时间。该时间段会自动按优先级顺序填充作业。
考虑:
Job01; Duration 10; Start 01/01; Due 01/02 1500;
Job02; Duration 60; Start 01/01; Due 01/02;
Job03; Duration 45; Start 01/08; Due 01/08 1500;
Job04; Duration 30; Start 01/09; Due 01/09 1500;
Job05; Duration 30; Start 12/31; ;
Job06; Duration 60; Start 12/28; ;
Job07; Duration 60; Start 01/04; ;
Job08; Duration 60; Start 01/04; ;
Job09; Duration 30; Start 01/01; Due 01/03 1200;
Job10; Duration 10; Start 01/01; Due 01/05 1700;
在 01/02,这十个工作将按以下顺序排列优先级:01-02-09-10-05-06
. 03-04-07-08
由于未来的开始日期,作业将被排除在外。
考虑:在 01/02,我进入办公室进行四小时轮班,1200-1600
然后将这些数据输入调度程序。
从那里开始,我需要以下魔法发生:
- 从我的开始时间开始,添加最优先的工作。
- 如果该作业是专门安排的作业,请保留该时间,以免其他作业覆盖它。
- 一旦具有特定时间的所有工作都在日历中,从第一个职位空缺开始填写约会,直到日历被填满,然后停止。
按照这个逻辑,以下是数据如何填写时间表。
Job01 - 1500-1510
Job02 - cannot fit in the 1510-1500 slot, so it populates 1200-1300
Job05 - 1300-1330
Job06 - 1330-1430
Job09 - 1430-1500
Job10 - 1510-1520
到目前为止,我的优先级逻辑工作得很好。我可以正确地将第一条记录捕获到时间表中。但是后来,我迷失在了alendaring 部分,尤其是如何保持某个时间段以便没有任何内容覆盖它,并且不超过开始和结束时间。我正在努力寻找一种有效的方法来构建填充日历的方法。我是否创建了一个 15 分钟的存储桶数组,并在遍历任务列表时用约会填充这些存储桶?每次我安排一个事件并通过调度程序传递另一个事件时,我是否会以某种方式传递 anewStartTime
并返回顶部?newEndTime
事件是在记忆中举行的吗?或在填充特定插槽时写入数据库?Java中是否有一个预定义的类已经做到了这一点而我错过了它?天哪……那会很尴尬……
我现在离这个太近了,并且无法想象一个好的策略。任何建议、观察和通用伪代码都会有所帮助。