diff --git a/src/main/java/cn/ai/springaigu/service/AppointmentService.java b/src/main/java/cn/ai/springaigu/service/AppointmentService.java index 910d782..8afa6a4 100644 --- a/src/main/java/cn/ai/springaigu/service/AppointmentService.java +++ b/src/main/java/cn/ai/springaigu/service/AppointmentService.java @@ -3,6 +3,10 @@ package cn.ai.springaigu.service; import cn.ai.springaigu.domain.Appointment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + public interface AppointmentService extends IService { Appointment getOne(Appointment appointment); + + List query(Appointment appointment); } diff --git a/src/main/java/cn/ai/springaigu/service/impl/AppointmentServiceImpl.java b/src/main/java/cn/ai/springaigu/service/impl/AppointmentServiceImpl.java index 36d1fe8..9eb0093 100644 --- a/src/main/java/cn/ai/springaigu/service/impl/AppointmentServiceImpl.java +++ b/src/main/java/cn/ai/springaigu/service/impl/AppointmentServiceImpl.java @@ -5,8 +5,11 @@ import cn.ai.springaigu.mapper.AppointmentMapper; import cn.ai.springaigu.service.AppointmentService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.tika.utils.StringUtils; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class AppointmentServiceImpl extends ServiceImpl implements AppointmentService { /** @@ -24,4 +27,27 @@ public class AppointmentServiceImpl extends ServiceImpl query(Appointment appointment) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (!StringUtils.isEmpty(appointment.getUsername())) { + queryWrapper.eq(Appointment::getUsername, appointment.getUsername()); + } + if (!StringUtils.isEmpty(appointment.getIdCard())) { + queryWrapper.eq(Appointment::getIdCard, appointment.getIdCard()); + } +// if (!StringUtils.isEmpty(appointment.getDepartment())) { +// queryWrapper.eq(Appointment::getDepartment, appointment.getDepartment()); +// } +// if (!StringUtils.isEmpty(appointment.getDate())) { +// queryWrapper.eq(Appointment::getDate, appointment.getDate()); +// } +// if (!StringUtils.isEmpty(appointment.getTime())) { +// queryWrapper.eq(Appointment::getTime, appointment.getTime()); +// } + return baseMapper.selectList(queryWrapper); + } + + } \ No newline at end of file diff --git a/src/main/java/cn/ai/springaigu/tools/AppointmentTools.java b/src/main/java/cn/ai/springaigu/tools/AppointmentTools.java index d08ff27..e9a8a16 100644 --- a/src/main/java/cn/ai/springaigu/tools/AppointmentTools.java +++ b/src/main/java/cn/ai/springaigu/tools/AppointmentTools.java @@ -4,9 +4,12 @@ import cn.ai.springaigu.domain.Appointment; import cn.ai.springaigu.service.AppointmentService; import dev.langchain4j.agent.tool.P; import dev.langchain4j.agent.tool.Tool; +import dev.langchain4j.internal.Json; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.List; + @Component public class AppointmentTools { @@ -14,7 +17,7 @@ public class AppointmentTools { private AppointmentService appointmentService; // @Tool(name = "预约挂号", value = "根据参数,先执行工具方法queryDepartment查询是否可预约,并直接给用户回答是否可预约,并让用户确认所有预约信息,用户确认后再进行预约。") - @Tool(name="预约挂号", value = "根据参数,先执行工具方法queryDepartment查询是否可预约,并直接给用户回答是否可预约,并让用户确认所有预约信息,用户确认后再进行预约。如果用户没有提供具体的医生姓名,请从向量存储中找到一位医生。") + @Tool(name = "预约挂号", value = "根据参数,先执行工具方法queryDepartment查询是否可预约,并直接给用户回答是否可预约,并让用户确认所有预约信息,用户确认后再进行预约。如果用户没有提供具体的医生姓名,请从向量存储中找到一位医生。") public String bookAppointment(Appointment appointment) { //查找数据库中是否包含对应的预约记录 Appointment appointmentDB = appointmentService.getOne(appointment); @@ -45,6 +48,16 @@ public class AppointmentTools { return "您没有预约记录,请核对预约科室和时间"; } + @Tool(name = "查询预约", value = "根据参数,查询预约数据集合") + public String queryAppointment(Appointment appointment) { + List query = appointmentService.query(appointment); + if (!query.isEmpty()) { + return "查询到预约数据:" + Json.toJson(query); + } + return "您没有预约记录"; + } + + @Tool(name = "查询是否有号源", value = "根据科室名称,日期,时间和医生查询是否有号源,并返回给用户") public boolean queryDepartment( @P(value = "科室名称") String name,