jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
@@ -20,9 +20,10 @@ WAITING((byte)10, "排队中"), RECALLED((byte)15, "已召回"), READY((byte)20, "候诊中"), ONSTAGE((byte)30, "就诊中"), RECEIVED((byte)40, "已领用"), FINISH((byte)50, "已就诊"); ONSTAGE((byte)30, "就诊中"), // 或 领用中 RECEIVED((byte)33, "已领用"), INSTALLING((byte)36, "安装中"), FINISH((byte)40, "已就诊"); public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(QueueStatusEnum::getStatus).toArray(); jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devrent/DevRentController.java
@@ -56,7 +56,6 @@ public CommonResult<Long> devReady(@Valid @RequestBody DevRentSaveReqVO createReqVO) { try { CommonResult<Long> result = devRentService.readyOperation(createReqVO); queueService.startHurryUpOneBed(createReqVO.getRoomId(), createReqVO.getBedNo()); return result; } catch ( RuntimeException runtimeException ) { String err = ExceptionUtils.formatException( runtimeException ); jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
@@ -126,7 +126,7 @@ } @GetMapping("/finish-next-patient") @Operation(summary = "完成、下一位患者") @Operation(summary = "常规叫号、下一位患者") @Parameter(name = "roomId", description = "诊室编号", required = true, example = "116") @Parameter(name = "bedNo", description = "工位编号", required = true, example = "B2") @PreAuthorize("@ss.hasPermission('ecg:doctor:task')") @@ -154,6 +154,64 @@ return success(BeanUtils.toBean(queueDOList, QueueRespVO.class)); } @GetMapping("/finish-receive-next-patient") @Operation(summary = "领用叫号、下一位患者") @Parameter(name = "roomId", description = "诊室编号", required = true, example = "116") @Parameter(name = "bedNo", description = "工位编号", required = true, example = "B2") @PreAuthorize("@ss.hasPermission('ecg:doctor:task')") public CommonResult<List<QueueRespVO>> finishReceiveNextPatient( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { queueService.finishReceiveNextPatient(roomId, bedNo); List<Byte> queueStatusList = new ArrayList<>(); queueStatusList.add(QueueStatusEnum.RECALLED.getStatus()); queueStatusList.add(QueueStatusEnum.READY.getStatus()); queueStatusList.add(QueueStatusEnum.ONSTAGE.getStatus()); queueStatusList.add(QueueStatusEnum.PASSED.getStatus()); List<QueueDO> queueDOList = queueService.getDoctorQueueByStatus(roomId, bedNo, queueStatusList); // 过滤出 就诊中的,准备叫号 QueueDO onStageItem = queueDOList.stream().filter(item -> Objects.equals(item.getStatus(), QueueStatusEnum.ONSTAGE.getStatus())).findFirst().orElse(null); if (null != onStageItem) { CallSaveReqVO callSaveReqVO = BeanUtils.toBean(onStageItem, CallSaveReqVO.class); callSaveReqVO.setId(null); callService.createCall(callSaveReqVO); } return success(BeanUtils.toBean(queueDOList, QueueRespVO.class)); } @GetMapping("/finish-install-next-patient") @Operation(summary = "装机叫号、下一位患者") @Parameter(name = "roomId", description = "诊室编号", required = true, example = "116") @Parameter(name = "bedNo", description = "工位编号", required = true, example = "B2") @PreAuthorize("@ss.hasPermission('ecg:doctor:task')") public CommonResult<List<QueueRespVO>> finishInstallNextPatient( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { queueService.finishInstallNextPatient(roomId, bedNo); List<Byte> queueStatusList = new ArrayList<>(); queueStatusList.add(QueueStatusEnum.RECALLED.getStatus()); queueStatusList.add(QueueStatusEnum.READY.getStatus()); queueStatusList.add(QueueStatusEnum.ONSTAGE.getStatus()); queueStatusList.add(QueueStatusEnum.PASSED.getStatus()); List<QueueDO> queueDOList = queueService.getDoctorQueueByStatus(roomId, bedNo, queueStatusList); // 过滤出 就诊中的,准备叫号 QueueDO onStageItem = queueDOList.stream().filter(item -> Objects.equals(item.getStatus(), QueueStatusEnum.ONSTAGE.getStatus())).findFirst().orElse(null); if (null != onStageItem) { CallSaveReqVO callSaveReqVO = BeanUtils.toBean(onStageItem, CallSaveReqVO.class); callSaveReqVO.setId(null); callService.createCall(callSaveReqVO); } return success(BeanUtils.toBean(queueDOList, QueueRespVO.class)); } @GetMapping("/pass-next-patient") @Operation(summary = "过号、下一位患者") @Parameter(name = "roomId", description = "诊室编号", required = true, example = "116") jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devrent/DevRentServiceImpl.java
@@ -120,10 +120,6 @@ } } // 患者排队状态 更新为 已领用 queueMapper.updatePatientQueueStatus( createReqVO.getPatId(), QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus()); return CommonResult.success(rent_id); } @@ -188,10 +184,6 @@ jobRecordDO.setUpdateTime(LocalDateTime.now()); jobRecordMapper.updateById(jobRecordDO); } // 患者排队状态 更新为 已就诊 queueMapper.updatePatientQueueStatus( createReqVO.getPatId(), QueueStatusEnum.RECEIVED.getStatus(), QueueStatusEnum.FINISH.getStatus()); return CommonResult.success(rent_id); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueService.java
@@ -90,11 +90,21 @@ void queue(QueueSaveReqVO queueSaveReqVO); /** * 医生叫下一位患者 * 常规检查 医生叫下一位患者 */ void finishNextPatient(Long roomId, String bedNo); /** * 领用 医生叫下一位患者 */ void finishReceiveNextPatient(Long roomId, String bedNo); /** * 装机 医生叫下一位患者 */ void finishInstallNextPatient(Long roomId, String bedNo); /** * 医生看完患者 */ void passNextPatient(Long roomId, String bedNo); jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java
@@ -306,6 +306,8 @@ startHurryUpOneCheckType( queue.getBookCheckType() ); } // 常规检查 叫号 @Override public void finishNextPatient(Long roomId, String bedNo) { // 从 DB 把 就诊中的人 设置为就诊完成 Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, @@ -314,6 +316,26 @@ startNextPatient(roomId, bedNo); } // 领用 叫号 @Override public void finishReceiveNextPatient(Long roomId, String bedNo) { // 从 DB 把 就诊中的人 设置为就诊完成 Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus()); startNextPatient(roomId, bedNo); } // 装机 叫号 @Override public void finishInstallNextPatient(Long roomId, String bedNo) { // 从 DB 把 就诊中的人 设置为就诊完成 Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); startNextPatient(roomId, bedNo); } public void passNextPatient(Long roomId, String bedNo) { // 从 DB 把 就诊中的人 设置为过号 Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java
@@ -250,7 +250,7 @@ BedQueueBO bo = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); bo.queueNum.getAndDecrement(); // 可能已经【并发的】在 hurry-up 中改变了值 removePriorityQueue(bo); refreshPriorityQueue(bo); return GlobalErrorCodeConstants.SUCCESS; }