问题描述
我正在设计一个简单的 covid 19 跟踪系统。每次客户(ArrayList 中的对象)访问 Shop(ArrayList 中的对象)时,系统都会创建存储在 ArrayList 中的 Visits 对象。
超类详细信息。
public class Details {
private String name;
private String phoneNumber;
private Status status;
// Customer
public Details(String name,String phoneNumber,Status status) {
this.name = name;
this.phoneNumber = phoneNumber;
this.status = status;
}
我正在使用 java.time 包来创建日期时间以及像这样的访问对象
public class Visit extends Details {
private String dateTimeFinal;
private String shopName;
public Visit(String name,String shopName,Status status) {
super(name,phoneNumber,status);
this.shopName = shopName;
LocalDateTime dateTime = LocalDateTime.Now();
DateTimeFormatter dateTimeFormatted = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
dateTimeFinal = dateTime.format(dateTimeFormatted);
}
我的客户类构造函数看起来像这样
public class Customer extends Details {
private String password;
public Customer (String name,String password,Status status){
super(name,status);
this.password = password;
}
我的商店类构造函数看起来像这样
public class Shop extends Details{
private String managerName;
public Shop(String name,Status status,String managerName){
super(name,status);
this.managerName = managerName;
}
public enum Status{
norMAL,CASE,CLOSE
}
我现在想要完成的是,如果一个被标记为 CASE 的客户访问了一家商店,那么在之前和之后的 1 小时时间范围内也访问该商店的所有客户都会自动被标记为密切接触者(关)。我还想知道如何创建不是 localdatetime.Now 的时间和日期,因为我需要生成访问来测试标记算法是否有效。
解决方法
使用 LocalDateTime.of()
方法之一(找到 here)创建特定时间。
为了跟踪可能的标志,一种解决方案是跟踪 Visit
的最后一个有风险的 Shop
,并且每次对该 Shop
进行新访问时检查它是否足够新,如果是,则更新 Status
、Visit
和 Shop
的 Customer
。使用 LocalDateTime.minusHours()
比较时间。