jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -1,11 +1,7 @@ package cn.lihu.jh.module.ecg.controller.admin.appointment; import cn.hutool.core.bean.BeanUtil; import cn.lihu.jh.framework.common.enums.CommonStatusEnum; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO; import cn.lihu.jh.module.ecg.feign.RemoteDataService; import cn.lihu.jh.module.ecg.feign.RestApiReqBodyVo; import cn.lihu.jh.module.ecg.feign.RestApiResult; @@ -13,8 +9,6 @@ import cn.lihu.jh.module.ecg.service.queue.QueueService; import cn.lihu.jh.module.ecg.service.room.RoomService; import cn.lihu.jh.module.system.api.dept.DeptApi; import cn.lihu.jh.module.system.api.dept.dto.DeptRespDTO; import com.alibaba.fastjson.JSONObject; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; @@ -23,13 +17,10 @@ import io.swagger.v3.oas.annotations.Operation; import java.time.LocalDateTime; import java.time.chrono.IsoChronology; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.format.ResolverStyle; import java.util.*; import java.io.IOException; import java.util.function.Supplier; import java.util.stream.Collectors; import cn.lihu.jh.framework.common.pojo.PageParam; jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
@@ -6,6 +6,7 @@ import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.util.object.BeanUtils; import cn.lihu.jh.framework.excel.core.util.ExcelUtils; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.PatientStatisticVO; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueuePageReqVO; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueRespVO; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO; @@ -93,4 +94,16 @@ return success(BeanUtils.toBean(queueDOList, QueueRespVO.class)); } @GetMapping("/get-patient-statistic") @Operation(summary = "忣è ç»è®¡") @Parameter(name = "roomId", description = "è¯å®¤ç¼å·", required = true, example = "116") @Parameter(name = "bedNo", description = "å·¥ä½ç¼å·", required = true, example = "B2") @PreAuthorize("@ss.hasPermission('ecg:doctor:patientstatistic')") public CommonResult<PatientStatisticVO> getPatientStatistic( @RequestParam("roomId") Long roomId, @RequestParam("bedNo") String bedNo) { PatientStatisticVO patientStatisticVO = queueService.getPatientStatistic(roomId, bedNo); return success(patientStatisticVO); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/PatientStatisticVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package cn.lihu.jh.module.ecg.controller.admin.queue.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Schema(description = "管çåå° - æ£è ç»è®¡ Response VO") @Data public class PatientStatisticVO { private Integer finishedNum; private Integer readyNum; private Integer passedNum; private Integer queuingNum; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/BedQueueStatisticDO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package cn.lihu.jh.module.ecg.dal.dataobject.queue; import lombok.Data; /** * æé DO * * @author èéæºç */ @Data public class BedQueueStatisticDO { private Byte status; private Integer totalInStatus; } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java
@@ -1,9 +1,5 @@ package cn.lihu.jh.module.ecg.dal.dataobject.queue; import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; /** @@ -13,10 +9,9 @@ */ @Data public class QueueStatisticDO { private Long roomId; private String bedNo; private Integer totalInStatus; } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
@@ -4,8 +4,8 @@ import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; import cn.lihu.jh.module.ecg.dal.dataobject.queue.BedQueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO; import org.apache.ibatis.annotations.Mapper; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.*; import org.apache.ibatis.annotations.Param; @@ -43,6 +43,14 @@ Integer getMaxSeqNum(); @Select("<script>" + "SELECT count(1) as total_in_status FROM lihu.queue where status in (" + " <foreach collection='statusList' separator=',' item='status'>" + " #{status} " + " </foreach> );" + "</script>") Integer statusStatistic(@Param("statusList")List<Byte> statusList); @Select("<script>" + "SELECT room_id, bed_no, count(1) as total_in_status FROM lihu.queue where status in (" + " <foreach collection='statusList' separator=',' item='status'>" + " #{status} " + @@ -52,6 +60,13 @@ List<QueueStatisticDO> queueStatistic(@Param("statusList")List<Byte> statusList); @Select("<script>" + "SELECT status, count(1) as total_in_status FROM lihu.queue where " + " room_id = #{roomId} and bed_no = #{bedNo} " + " group by status " + "</script>") List<BedQueueStatisticDO> bedQueueStatistic(@Param("roomId")Long roomId, @Param("bedNo")String bedNo); @Select("<script>" + "SELECT * FROM lihu.queue where status in (" + " <foreach collection='statusList' separator=',' item='status'>" + " #{status} " + @@ -59,8 +74,6 @@ " order by book_timeslot, create_time " + "</script>") List<QueueDO> getOrderedQueue(@Param("statusList")List<Byte> statusList); //@Update("update lihu.queue set status = #{newStatus} where pat_id = #{patId} ans status = #{curStatus} ") @Update("update lihu.queue set status = #{newStatus} where seq_num = \n" + "(select a.min_seq_num from \n" + jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -3,8 +3,6 @@ import cn.lihu.jh.module.ecg.controller.admin.queue.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO; import javax.validation.Valid; import java.util.List; @@ -54,8 +52,6 @@ */ PageResult<QueueDO> getqueuePage(QueuePageReqVO pageReqVO); List<QueueStatisticDO> queueStatistics(List<Byte> statusList); /** * æ£è æé * @param queueSaveReqVO @@ -88,4 +84,6 @@ void passNextPatient(Long roomId, String bedNo); List<QueueDO> getDoctorQueueByStatus(Long roomId, String bedNo, List<Byte> statusList); PatientStatisticVO getPatientStatistic(Long roomId, String bedNo); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -1,5 +1,6 @@ package cn.lihu.jh.module.ecg.service.queue; import cn.lihu.jh.module.ecg.dal.dataobject.queue.BedQueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueStatisticDO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper; @@ -32,7 +33,7 @@ @Validated public class QueueServiceImpl implements QueueService { final static Integer MAX_QUEUE_NUM = 2; final static Integer MAX_QUEUE_NUM = 3; AtomicInteger curSeqNum = new AtomicInteger(0); @@ -87,11 +88,6 @@ @Override public PageResult<QueueDO> getqueuePage(QueuePageReqVO pageReqVO) { return queueMapper.selectPage(pageReqVO); } @Override public List<QueueStatisticDO> queueStatistics(List<Byte> statusList) { return queueMapper.queueStatistic(statusList); } public void initQueue() { @@ -227,4 +223,25 @@ return queueDOList; } public PatientStatisticVO getPatientStatistic(Long roomId, String bedNo) { PatientStatisticVO patientStatisticVO = new PatientStatisticVO(); List<BedQueueStatisticDO> bedQueueStatisticDOList = queueMapper.bedQueueStatistic(roomId, bedNo); bedQueueStatisticDOList.forEach(item -> { if (QueueStatusEnum.READY.getStatus() == item.getStatus()) { patientStatisticVO.setReadyNum(item.getTotalInStatus()); } else if (QueueStatusEnum.FINISH.getStatus() == item.getStatus()) { patientStatisticVO.setFinishedNum(item.getTotalInStatus()); } else if (QueueStatusEnum.PASSED.getStatus() == item.getStatus()) { patientStatisticVO.setPassedNum(item.getTotalInStatus()); } }); List<Byte> statusList = new ArrayList<>(); statusList.add(QueueStatusEnum.WAITING.getStatus()); Integer num = queueMapper.statusStatistic(statusList); patientStatisticVO.setQueuingNum(num); return patientStatisticVO; } }