好的,这是我之前提出的一个问题的延伸,但这是我不明确的下一步。其他一切都准备就绪,这部分让我发疯!一些成员提供了很大的帮助,我已经在这方面取得了进展,但这只是另一个障碍。
我正在创建一个具有开始日期和结束日期的预订对象(如建议的那样)。每个预订也会有一些与之相关的座位(我需要预订)。任何一天的总座位数46(因为大厅的总容量为46个座位)。
所以假设我在系统中预订,开始日期是1月1日,结束日期是10月1日。 问题是如何查看范围之间所有剩余座位,以查看是否可以托管所请求的号码?然后在第二次预订时,必须看到此范围内的天数已经少于46天,如果可能的话,可以进一步减少预订。
其中一位成员,我很欣赏他的努力,很乐意提供一种方法来比较此预订是在现有预订之后还是之前。提供的代码在这里:
public boolean overlapsWithExisting(Booking booking) {
final Date early = booking.getStart();
final Date late = booking.getEnd();
for(Booking existing : existingBookings) {
if(!(early.isAfter(existing.getEnd() || late.isBefore(existing.getStart()))
return true;
}
return false;
}
我只想知道如何将46与每天联系起来并记录按预订减少的天数。
谢谢,并且非常感谢:D
答案 0 :(得分:0)
我建议将Date对象包装在一种特定于您的应用程序的数据结构中:我相信您有一个特定类型的业务逻辑信息,可以在Map中表示。
因此,您可以创建一个TreeMap。
TreeMap<Date,Integer> myBookings = new TreeMap<Date,Integer>();
并将所有日期设为46:
for(Date d : allDates)
myBookings.put(d,46);
现在,当您在给定日期将人员添加到房间时,您只需编辑地图:
myBookings.put(date,myBookings.get(date)-1);
因此,地图数据结构包含范围内的所有日期并存储可用的座位数。
答案 1 :(得分:0)
在SQL中,我们会执行以下操作来查找阻止预订:
SELECT *
FROM bookings
WHERE startt < :end AND endt >= :start
LIMIT 0, 1
这也可以在java中完成;按日期排序的预订会有所帮助。