gpt4 book ai didi

java - 实行预约系统

转载 作者:行者123 更新时间:2023-11-29 10:17:59 26 4
gpt4 key购买 nike

我正在开发一个用于移动应用程序的 Spring Boot MVC REST API,该系统是诊所的患者预约系统,我正在寻找显示医生可用时间问题的最佳解决方案。

问题定义:系统应允许用户从日历中选择诊所、医生和具体日期(年/月/日),系统应显示所选日期的可用时间,预约时长为 30分钟,上午 7 点至下午 6 点。

更多说明:该系统由许多诊所和属于这些诊所的医生组成,每个医生都有固定的时间供用户预约。这些时间分为每个半小时约会的日期。用户不能同时向同一医生预约。

示例:患者 Joey 于 2018 年 5 月 21 日 3:30 预约了 x 医生,另一位患者 Jack 打开了预约申请,他选择了医生 x 并选择了与 joey 相同的日期(2018 年 5 月 21 日),系统将显示上午 7 点至下午 6 点(7:00、7:30)的可用时间, 8:00 , 8:30 ......)不含3:30 。

尝试过的解决方案:1)在数据库中做一个工作,填充每年的可用时间,并用flag标记时间。2)当客户询问可用时间时,系统会迭代医生的所有预约并找到这些时间。3)制作一个包含时间和日期的静态列表,当用户询问可用时间时,迭代约会并从列表中删除属于约会的时间。4)制作数据库日历。5)让管理页面的用户从管理页面手动填写时间。我尝试了所有这些可能的解决方案,但我没有发现它们非常有效,我正在寻找更好的解决方案。

代码示例: Controller 部分:

 @RequestMapping(method = RequestMethod.GET , value = "/availabletimes")
public ResponseEntity<ResponseUtil> getAvailableTimes(@RequestParam String date){

try {
return new ResponseEntity<ResponseUtil> (new ResponseUtil(200, Constants.SUCCESS_STATUS, "Cancelled", service.getAvailableTimes(date)),HttpStatus.OK);
}catch (BackendException e) {
return new ResponseEntity<ResponseUtil> (new ResponseUtil(403, Constants.FAILED_STATUS, e.getMessage(), null),HttpStatus.FORBIDDEN);
}

}

服务实现:

@Override
public List<String> getAvailableTimes(String date) {
List<String> availableTimes = findAvailableTimes(date);

if(availableTimes == null || availableTimes.isEmpty())
throw new BackendException("No times available for the given date");

return availableTimes;
}

private List<String> findAvailableTimes(String date){

//TODO write the logic for findding the available times
return null;
}

存储库:

 public interface AppointmentRepo extends IRepository<Appointment, Long> {

List<Appointment> findByCustomer(Customer customer);

}

实体:

@Entity
public class Appointment extends BaseEntity {

/**
*
*/
private static final long serialVersionUID = 1L;

private Date appoitmentDate;

// Relations
@ManyToOne(fetch = FetchType.LAZY)
private Doctor doctor;
@ManyToOne(fetch = FetchType.LAZY)
private Clinic clinic;
@ManyToOne(fetch = FetchType.LAZY)
private Customer customer;
@ManyToOne(fetch = FetchType.LAZY)
private Follower follower;
@ManyToOne(fetch = FetchType.LAZY)
private AppointmentStatus appointmentStatus;
@OneToOne(fetch = FetchType.LAZY)
private Report report;

// Setters and Getters
public Doctor getDoctor() {
return doctor;
}

public void setDoctor(Doctor doctor) {
this.doctor = doctor;
}

public Clinic getClinic() {
return clinic;
}

public void setClinic(Clinic clinic) {
this.clinic = clinic;
}

public Customer getCustomer() {
return customer;
}

public void setCustomer(Customer customer) {
this.customer = customer;
}

public Follower getFollower() {
return follower;
}

public void setFollower(Follower follower) {
this.follower = follower;
}

public Date getAppoitmentDate() {
return appoitmentDate;
}

public void setAppoitmentDate(Date appoitmentDate) {
this.appoitmentDate = appoitmentDate;
}

public AppointmentStatus getAppointmentStatus() {
return appointmentStatus;
}

public void setAppointmentStatus(AppointmentStatus appointmentStatus) {
this.appointmentStatus = appointmentStatus;
}

public Report getReport() {
return report;
}

public void setReport(Report report) {
this.report = report;
}

}

最佳答案

我有一个开源调度实用程序库(适用于 Android),可以处理业务时间和调度项目。它有一个检查重复预订的设施,但到目前为止,它还没有返回预约空位的直接机制,但我将把它作为优先事项添加。您可以针对不同的诊所使用该库的数组。您可以通过使用库中的机制来间接获取空档,该机制用于在给定时间或之后获取下一个可用空档并循环访问每个约会。登陆页面在这里:https://bitbucket.org/warwick/schedule_utils_demo/src/master/它还附带一个演示应用程序及其源代码。您还可以从 Google Play 商店下载演示应用程序:https://play.google.com/store/apps/details?id=com.WarwickWestonWright.ScheduleUtilsDemo尽管它是一个 Android 库,但将其转换为标准 Java 库非常容易,因为我在构建它时就考虑到了这一点。添加获取可用插槽列表的机制后,我将更新这篇文章。

关于java - 实行预约系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49831003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com