From ddbf1296be2a1851ce6df89ff69f59dbbf716edb Mon Sep 17 00:00:00 2001 From: haorp <754760654@qq.com> Date: Wed, 28 May 2025 09:49:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=95=E5=A6=87=E5=AD=A6=E6=A0=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/PatientCourseWxController.java | 75 ++++++ .../operate/web/facade/PatientCourseWxFacade.java | 267 +++++++++++++++++++++ 2 files changed, 342 insertions(+) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseWxController.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseWxFacade.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseWxController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseWxController.java new file mode 100644 index 0000000..9662f31 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseWxController.java @@ -0,0 +1,75 @@ +package com.lyms.platform.operate.web.controller; + + +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.operate.web.facade.PatientCourseWxFacade; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + + +/** + * 孕妇预约和签到课程 + */ +@Controller +@RequestMapping("/patientCourseWx") +public class PatientCourseWxController extends BaseController { + + @Autowired + private PatientCourseWxFacade patientCourseWxFacade; + + + /** + * 搜索签到详情 + * @param queryNo + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/queryWxSignPatient") + @ResponseBody + public BaseResponse queryWxSignPatient( + @RequestParam(required = true) String queryNo, + @RequestParam(required = true) String courseId, + @RequestParam(required = true) String hospitalId) { + + return patientCourseWxFacade.querySignPatient(queryNo, courseId,hospitalId); + } + + + /** + * 院内系统和小程序孕妇预约课程 + * @param courseId 课程id + * @param hospitalId 医院id + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/orderWxCourse") + @ResponseBody + public BaseResponse orderCourse( + @RequestParam(required = true) String courseId, + @RequestParam(required = true) String patientId, + @RequestParam(required = true) String hospitalId, + @RequestParam(required = false) Integer type) { + // 目前接口进来都是小程序 直接写2 orderType 预约类型 1 院内 2 小程序 + return patientCourseWxFacade.orderCourse(courseId, patientId, hospitalId, 2,type); + } + + /** + * 孕妇签到 + * @param patientCourseId + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/signWxCourse") + @ResponseBody + public BaseResponse signCourse( + @RequestParam(required = true) String patientCourseId, + @RequestParam(required = true) String courseId, + @RequestParam(required = false) Integer type) { + + return patientCourseWxFacade.signCourse(patientCourseId, courseId,type); + } +} + + diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseWxFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseWxFacade.java new file mode 100644 index 0000000..6857793 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseWxFacade.java @@ -0,0 +1,267 @@ +package com.lyms.platform.operate.web.facade; + + +import com.lyms.platform.biz.service.CourseService; +import com.lyms.platform.biz.service.PatientCourseService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseListResponse; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.operate.web.result.PatientCourseResult; +import com.lyms.platform.pojo.CourseModel; +import com.lyms.platform.pojo.PatientCourseModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.query.CourseQuery; +import com.lyms.platform.query.PatientCourseQuery; +import com.lyms.platform.query.PatientsQuery; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; + + +/** + * + */ +@Component +public class PatientCourseWxFacade { + + @Autowired + private PatientCourseService patientCourseService; + + @Autowired + private PatientsService patientsService; + + @Autowired + private CourseService courseService; + + public BaseResponse orderCourse(String courseId, String patientId,String hospitalId,Integer orderType,Integer type) { + + BaseObjectResponse objectResponse = new BaseObjectResponse(); + CourseQuery query = new CourseQuery(); + query.setYn(YnEnums.YES.getId()); + query.setId(courseId); + // 先查课程表 + List courseModels = courseService.queryCourseList(query); + if (CollectionUtils.isNotEmpty(courseModels)) + { + CourseModel model = courseModels.get(0); + if (model != null && model.getCourseEndTime().getTime() < new Date().getTime()) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("该课程预约时间已截止,请刷新后重试"); + return objectResponse; + } + + if (model != null && model.getLimitNum() != null && model.getLimitNum() < (model.getEnrolmentNum() == null? 1 : model.getEnrolmentNum()+1)) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("该课程预约人数已达上限,不能预约该课程了!"); + return objectResponse; + } + } + else + { + objectResponse.setErrorcode(ErrorCodeConstants.NO_DATA); + objectResponse.setErrormsg("该课程不存在"); + return objectResponse; + } + + // 目前这个接口进来的都是小程序端的 + if (orderType == 2) + { + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setId(patientId); + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) { + + Patients patients = patientses.get(0); + patientsQuery.setId(null); + patientsQuery.setPid(patients.getPid()); + patientsQuery.setHospitalId(courseModels.get(0).getHospitalId()); + patientsQuery.setDesc("true"); + patientsQuery.setSort("created"); + patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) + { + patientId = patientses.get(0).getId(); + } + } + } + + PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); + patientCourseQuery.setCourseId(courseId); + patientCourseQuery.setYn(YnEnums.YES.getId()); + patientCourseQuery.setPatientId(patientId); + List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); + + if (CollectionUtils.isNotEmpty(patientCourseModels)) + { + PatientCourseModel model = patientCourseModels.get(0); + if (model.getStatus() != null && model.getStatus() == 1) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("您已经预约该课程了!"); + return objectResponse; + } + else if (model.getStatus() != null && model.getStatus() == 2) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("您已经签到该课程了!"); + return objectResponse; + } + } + + Patients patients = patientsService.findOnePatientById(patientId); + if (patients != null) + { + PatientCourseModel model = new PatientCourseModel(); + model.setPatientId(patients.getId()); + model.setBirthday(patients.getBirth()); + model.setCardNo(patients.getCardNo()); + model.setUserName(patients.getUsername()); + model.setPhone(patients.getPhone()); + model.setVcCardNo(patients.getVcCardNo()); + model.setOrderTime(new Date()); + model.setOrderType(orderType); + model.setHospitalId(hospitalId); + model.setCourseId(courseId); + model.setCreated(new Date()); + model.setModified(new Date()); + model.setYn(YnEnums.YES.getId()); + model.setStatus(1); + if (type!=null){ + model.setType(type); + } + + patientCourseService.addPatientCourse(model); + objectResponse.setData(model.getId()); + CourseModel courseModel = new CourseModel(); + courseModel.setId(courseId); + // 1是线上 2是线下 + if (null==type||type==1){ + courseModel.setEnrolmentNum(courseModels.get(0).getEnrolmentNum() == null ? 1 : courseModels.get(0).getEnrolmentNum()+1); + }else { + courseModel.setEnrolmentUnderNum(courseModels.get(0).getEnrolmentUnderNum() == null ? 1 : courseModels.get(0).getEnrolmentUnderNum()+1); + } + + courseService.updateCourse(courseModel); + + } + + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } + + + public BaseResponse querySignPatient(String queryNo,String courseId,String hospitalId) { + + PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); + patientCourseQuery.setCourseId(courseId); + patientCourseQuery.setYn(YnEnums.YES.getId()); + patientCourseQuery.setHospitalId(hospitalId); + patientCourseQuery.setQueryNo(queryNo); + //状态 1预约,2签到 +// patientCourseQuery.setStatus(2); + + List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); + if (CollectionUtils.isEmpty(patientCourseModels)) { + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setPvc(queryNo); + patientsQuery.setHospitalId(hospitalId); + patientsQuery.setDesc("true"); + patientsQuery.setSort("created"); + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) { + Patients patients = patientses.get(0); + PatientCourseResult result = new PatientCourseResult(); + result.setAge(DateUtil.getAge(patients.getBirth(), new Date())); + result.setCardNo(patients.getCardNo()); + result.setUserName(patients.getUsername()); + result.setPhone(patients.getPhone()); + result.setVcCardNo(patients.getVcCardNo()); + result.setPatientId(patients.getId()); + + BaseObjectResponse objectResponse = new BaseObjectResponse(); + objectResponse.setData(result); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } + } + BaseListResponse objectResponse = new BaseListResponse(); + objectResponse.setData(patientCourseModels); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } + + public BaseResponse signCourse(String patientCourseId,String courseId,Integer type) { + + BaseResponse objectResponse = new BaseResponse(); + CourseQuery query = new CourseQuery(); + query.setYn(YnEnums.YES.getId()); + query.setId(courseId); + List courseModels = courseService.queryCourseList(query); + if (CollectionUtils.isNotEmpty(courseModels)) + { + CourseModel model = courseModels.get(0); + if (model != null && model.getCourseEndTime().getTime() < new Date().getTime()) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("该课程签到时间已截止,请刷新后重试"); + return objectResponse; + } + } + PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); + patientCourseQuery.setYn(YnEnums.YES.getId()); + //状态 1预约,2签到 + patientCourseQuery.setStatus(1); + patientCourseQuery.setId(patientCourseId); + List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); + if (!CollectionUtils.isNotEmpty(patientCourseModels)) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("您签到的课程还没有预约,请预约后签到!"); + return objectResponse; + } + + if (patientCourseId != null) + { + PatientCourseModel model = new PatientCourseModel(); + model.setSignTime(new Date()); + model.setId(patientCourseId); + model.setModified(new Date()); + model.setYn(YnEnums.YES.getId()); + model.setStatus(2); + if (type!=null){ + model.setType(type); + } + patientCourseService.updatePatientCourse(model); + + + CourseModel courseModel = new CourseModel(); + courseModel.setId(courseId); + //1是线上 2是线下 + if (null==type||type==1){ + courseModel.setSignNum(courseModels.get(0).getSignNum() == null ? 1 : courseModels.get(0).getSignNum() + 1); + }else { + courseModel.setSignUnderNum(courseModels.get(0).getSignUnderNum() == null ? 1 : courseModels.get(0).getSignUnderNum() + 1); + + } + courseService.updateCourse(courseModel); + } + + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } +} \ No newline at end of file -- 1.8.3.1