From 1ec288a29f0d847e2263f5cfe09319757cb46a04 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期三, 21 八月 2024 18:32:13 +0800
Subject: [PATCH] update

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java           |   13 ++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/BedQueueStatisticDO.java           |   14 +++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java |    9 ----
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/PatientStatisticVO.java       |   17 ++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java                     |   29 +++++++++++---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java                        |   19 ++++++++-
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java              |    7 ---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java                         |    6 +--
 8 files changed, 86 insertions(+), 28 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
index 0376e30..8db650a 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
+++ b/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;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
index c444d26..006744d 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
+++ b/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);
+    }
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/PatientStatisticVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/PatientStatisticVO.java
new file mode 100644
index 0000000..df9b271
--- /dev/null
+++ b/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 = "绠$悊鍚庡彴 - 鎮h�呯粺璁� Response VO")
+@Data
+public class PatientStatisticVO {
+
+    private Integer finishedNum;
+
+    private Integer readyNum;
+
+    private Integer passedNum;
+
+    private Integer queuingNum;
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/BedQueueStatisticDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/BedQueueStatisticDO.java
new file mode 100644
index 0000000..4346337
--- /dev/null
+++ b/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;
+}
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java
index f2b51e6..955aa26 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java
+++ b/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;
-}
\ No newline at end of file
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
index e121bac..a07c7a7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
+++ b/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" +
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
index a4d4204..bbb31e8 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
+++ b/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);
-
     /**
      * 鎮h�呮帓闃�
      * @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);
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
index ceb0e55..f649486 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
+++ b/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;
+    }
+
 }

--
Gitblit v1.9.3