diff --git a/platform-common/src/main/java/com/lyms/platform/common/constants/ErrorCodeConstants.java b/platform-common/src/main/java/com/lyms/platform/common/constants/ErrorCodeConstants.java index d231573..98d5906 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/constants/ErrorCodeConstants.java +++ b/platform-common/src/main/java/com/lyms/platform/common/constants/ErrorCodeConstants.java @@ -62,4 +62,7 @@ public class ErrorCodeConstants { public static final int NO_POWER = 4021; //区域模式运行 public static final String RUN_MODE="1"; + + //数据已过期 + public static final int DATA_EXPIRE = 4108; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java index 1718a05..081d1f9 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientsQuery.java @@ -130,6 +130,9 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { //查询号 private String queryNo; + //查询手机就诊卡证件号 + private String pvc; + private String phoneOrCert; private String[] pc; private String[] pv; @@ -137,6 +140,14 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { private Integer buildDaysStart; private Integer buildDaysEnd; + public String getPvc() { + return pvc; + } + + public void setPvc(String pvc) { + this.pvc = pvc; + } + public String getNotoRiskFactor() { return notoRiskFactor; } @@ -1200,6 +1211,19 @@ public class PatientsQuery extends BaseQuery implements IConvertToNativeQuery { c1 = c.orCondition(new MongoCondition[]{con1, con2, con3, con4, con5}).getCriteria(); } } + + if (null != pvc) { + MongoCondition c = MongoCondition.newInstance(); + MongoCondition con1 = MongoCondition.newInstance("phone", pvc, MongoOper.IS); + MongoCondition con3 = MongoCondition.newInstance("cardNo", pvc, MongoOper.IS); + MongoCondition con5 = MongoCondition.newInstance("vcCardNo", pvc, MongoOper.IS); + if (c1 != null) { + c1 = c1.andOperator(c.orCondition(new MongoCondition[]{con1, con3, con5}).getCriteria()); + } else { + c1 = c.orCondition(new MongoCondition[]{con1, con3, con5}).getCriteria(); + } + } + if (null != phoneOrCert) { MongoCondition c = MongoCondition.newInstance(); MongoCondition con1 = MongoCondition.newInstance("phone", phoneOrCert, MongoOper.IS); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseController.java index 41843a9..9b64a64 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PatientCourseController.java @@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest; /** - * 孕妇预约和签到 + * 孕妇预约和签到课程 */ @Controller public class PatientCourseController extends BaseController { @@ -73,4 +73,58 @@ public class PatientCourseController extends BaseController { return patientCourseFacade.queryOrderPatient(queryNo, getUserId(request)); } + + + /** + * 搜索签到详情 + * @param queryNo + * @param request + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/querySignPatient") + @ResponseBody + @TokenRequired + public BaseResponse querySignPatient( + @RequestParam(required = true) String queryNo, + HttpServletRequest request) { + + return patientCourseFacade.querySignPatient(queryNo, getUserId(request)); + } + + + /** + * 孕妇预约课程 + * @param courseId + * @param patientId + * @param hospitalId + * @param orderType //预约类型 1 院内 2 小程序 + * @param request + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/orderCourse") + @ResponseBody + @TokenRequired + public BaseResponse orderCourse( + @RequestParam(required = true) String courseId, + @RequestParam(required = true) String patientId, + @RequestParam(required = true) String hospitalId, + @RequestParam(required = true) Integer orderType, + HttpServletRequest request) { + + return patientCourseFacade.orderCourse(courseId, patientId, hospitalId, orderType, getUserId(request)); + } + + + @RequestMapping(method = RequestMethod.GET, value = "/signCourse") + @ResponseBody + @TokenRequired + public BaseResponse signCourse( + @RequestParam(required = true) String courseId, + @RequestParam(required = true) String patientId, + @RequestParam(required = true) String hospitalId, + @RequestParam(required = true) Integer orderType, + HttpServletRequest request) { + + return patientCourseFacade.signCourse(courseId,patientId,hospitalId, orderType,getUserId(request)); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java index 74031e0..4d3dafe 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java @@ -1,12 +1,14 @@ package com.lyms.platform.operate.web.facade; +import com.lyms.platform.biz.service.CourseService; import com.lyms.platform.biz.service.CourseTypeService; 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; @@ -16,6 +18,7 @@ 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.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -48,6 +51,9 @@ public class PatientCourseFacade { @Autowired private PatientsService patientsService; + @Autowired + private CourseService courseService; + public BaseResponse getPatientCourseList(Integer status,String courseId, Integer page, Integer limit, Integer userId) { @@ -64,16 +70,38 @@ public class PatientCourseFacade { //状态 1预约,2签到 patientCourseQuery.setStatus(status); - List results = new ArrayList<>(); + List results = getPatientCourse(patientCourseQuery); + BaseListResponse objectResponse = new BaseListResponse(); + objectResponse.setData(results); + objectResponse.setPageInfo(patientCourseQuery.getPageInfo()); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } - List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); - if (CollectionUtils.isNotEmpty(patientCourseModels)) + public BaseResponse queryOrderPatient(String queryNo, Integer userId) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + + PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); + patientCourseQuery.setYn(YnEnums.YES.getId()); + + patientCourseQuery.setHospitalId(hospitalId); + patientCourseQuery.setQueryNo(queryNo); + //状态 1预约,2签到 + patientCourseQuery.setStatus(1); + + List results = getPatientCourse(patientCourseQuery); + if (CollectionUtils.isEmpty(results)) { - for (PatientCourseModel model : patientCourseModels) + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setPvc(queryNo); + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) { + Patients patients = patientses.get(0); PatientCourseResult result = new PatientCourseResult(); - Patients patients = patientsService.findOnePatientById(model.getPatientId()); if (patients != null) { result.setAge(DateUtil.getAge(patients.getBirth(),new Date())); @@ -81,7 +109,55 @@ public class PatientCourseFacade { 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.NO_DATA); + objectResponse.setErrormsg("该孕妇未预约此课程,是否现在预约?"); + return objectResponse; + } + else + { + BaseResponse objectResponse = new BaseResponse(); + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXIST); + objectResponse.setErrormsg("数据不存在"); + return objectResponse; + } + } + + BaseListResponse objectResponse = new BaseListResponse(); + objectResponse.setData(results); + objectResponse.setPageInfo(patientCourseQuery.getPageInfo()); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } + + + private List getPatientCourse(PatientCourseQuery patientCourseQuery) + { + List results = new ArrayList<>(); + List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); + if (CollectionUtils.isNotEmpty(patientCourseModels)) + { + for (PatientCourseModel model : patientCourseModels) + { + PatientCourseResult result = new PatientCourseResult(); +// Patients patients = patientsService.findOnePatientById(model.getPatientId()); +// if (patients != null) +// { +// 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.setAge(DateUtil.getAge(model.getBirthday(),new Date())); + result.setCardNo(model.getCardNo()); + result.setUserName(model.getUserName()); + result.setPhone(model.getPhone()); + result.setVcCardNo(model.getVcCardNo()); result.setOrderTime(model.getOrderTime() == null ? "" : DateUtil.gety_m_dhm(model.getOrderTime())); result.setSignTime(model.getSignTime() == null ? "" : DateUtil.gety_m_dhm(model.getSignTime())); //预约类型 1 院内 2 小程序 @@ -90,16 +166,54 @@ public class PatientCourseFacade { results.add(result); } } + return results; + } + + public BaseResponse orderCourse(String courseId, String patientId,String hospitalId,Integer orderType, Integer userId) { + + 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; + } + } + + Patients patients = patientsService.findOnePatientById(patientId); + if (patients == null) + { + PatientCourseModel model = new PatientCourseModel(); + 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.setOperUserId(String.valueOf(userId)); + model.setHospitalId(hospitalId); + model.setCourseId(courseId); + model.setCreated(new Date()); + model.setModified(new Date()); + model.setYn(YnEnums.YES.getId()); + patientCourseService.addPatientCourse(model); + } - BaseListResponse objectResponse = new BaseListResponse(); - objectResponse.setData(results); - objectResponse.setPageInfo(patientCourseQuery.getPageInfo()); objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); objectResponse.setErrormsg("成功"); return objectResponse; } - public BaseResponse queryOrderPatient(String queryNo, Integer userId) { + + public BaseResponse querySignPatient(String queryNo, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); @@ -108,12 +222,91 @@ public class PatientCourseFacade { patientCourseQuery.setHospitalId(hospitalId); patientCourseQuery.setQueryNo(queryNo); //状态 1预约,2签到 - patientCourseQuery.setStatus(1); + patientCourseQuery.setStatus(2); - List results = new ArrayList<>(); + List results = getPatientCourse(patientCourseQuery); + if (CollectionUtils.isEmpty(results)) + { + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setPvc(queryNo); + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) + { + Patients patients = patientses.get(0); + PatientCourseResult result = new PatientCourseResult(); + if (patients != null) + { + 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.NO_DATA); + objectResponse.setErrormsg("该孕妇未预约此课程,无法签到,是否现在预约?"); + return objectResponse; + } + else + { + BaseResponse objectResponse = new BaseResponse(); + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXIST); + objectResponse.setErrormsg("数据不存在"); + return objectResponse; + } + } + BaseListResponse objectResponse = new BaseListResponse(); + objectResponse.setData(results); + objectResponse.setPageInfo(patientCourseQuery.getPageInfo()); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } - List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); - return null; + public BaseResponse signCourse(String courseId, String patientId, String hospitalId, Integer orderType, Integer userId) { + + 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; + } + } + + Patients patients = patientsService.findOnePatientById(patientId); + if (patients == null) + { + PatientCourseModel model = new PatientCourseModel(); + 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.setOperUserId(String.valueOf(userId)); + model.setHospitalId(hospitalId); + model.setCourseId(courseId); + model.setCreated(new Date()); + model.setModified(new Date()); + model.setYn(YnEnums.YES.getId()); + patientCourseService.addPatientCourse(model); + } + + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientCourseResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientCourseResult.java index 33c91a1..b4a5997 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientCourseResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PatientCourseResult.java @@ -34,6 +34,16 @@ public class PatientCourseResult { //签到时间 private String signTime; + private String patientId; + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + public String getSignTime() { return signTime; }