eight
2024-08-15 c475f2545f477846e984c051f10a4b7ea6b64d02
update
已修改12个文件
126 ■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queuePageReqVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueRespVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/jh.sql 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -176,8 +176,8 @@
        queueSaveReqVO.setPassed((byte)0);
        queueSaveReqVO.setExpired((byte)0);
        queueSaveReqVO.setRoomNum("-");
        queueSaveReqVO.setBedNum("-");
        queueSaveReqVO.setRoomName("-");
        queueSaveReqVO.setBedNo("-");
        queueService.createqueue(queueSaveReqVO);
    }
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java
@@ -92,4 +92,12 @@
                        BeanUtils.toBean(list, QueueRespVO.class));
    }
    @GetMapping("/opening-setting")
    @Operation(summary = "开诊设置")
    @PreAuthorize("@ss.hasPermission('ecg:queue:setting')")
    public CommonResult<Integer> openingSetting() {
        queueService.initQueue();
        queueService.hurryup();
        return success(0);
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queuePageReqVO.java
@@ -42,10 +42,13 @@
    private Boolean expired;
    @Schema(description = "诊室编号")
    private String roomNum;
    private Long roomId;
    @Schema(description = "诊室名称")
    private String roomName;
    @Schema(description = "诊疗床编号")
    private String bedNum;
    private String bedNo;
    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueRespVO.java
@@ -53,11 +53,15 @@
    @Schema(description = "诊室编号")
    @ExcelProperty("诊室编号")
    private String roomNum;
    private Long roomId;
    @Schema(description = "诊室名称")
    @ExcelProperty("诊室名称")
    private String roomName;
    @Schema(description = "诊疗床编号")
    @ExcelProperty("诊疗床编号")
    private String bedNum;
    private String bedNo;
    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/vo/queueSaveReqVO.java
@@ -49,9 +49,12 @@
    private Byte expired;
    @Schema(description = "诊室编号")
    private String roomNum;
    private Long roomId;
    @Schema(description = "诊室名称")
    private String roomName;
    @Schema(description = "诊疗床编号")
    private String bedNum;
    private String bedNo;
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/QueueStatisticDO.java
@@ -14,7 +14,9 @@
@Data
public class QueueStatisticDO {
    private Byte status;
    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/dataobject/queue/queueDO.java
@@ -63,10 +63,14 @@
    /**
     * 诊室编号
     */
    private String roomNum;
    private Long roomId;
    /**
     * 诊室名称
     */
    private String roomName;
    /**
     * 诊疗床编号
     */
    private String bedNum;
    private String bedNo;
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
@@ -32,21 +32,21 @@
                .eqIfPresent(QueueDO::getStatus, reqVO.getStatus())
                .eqIfPresent(QueueDO::getPassed, reqVO.getPassed())
                .eqIfPresent(QueueDO::getExpired, reqVO.getExpired())
                .eqIfPresent(QueueDO::getRoomNum, reqVO.getRoomNum())
                .eqIfPresent(QueueDO::getBedNum, reqVO.getBedNum())
                .eqIfPresent(QueueDO::getRoomId, reqVO.getRoomId())
                .eqIfPresent(QueueDO::getBedNo, reqVO.getBedNo())
                .betweenIfPresent(QueueDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(QueueDO::getId));
    }
    @Select("SELECT max(seq_num) FROM lihu.queue")
    Integer getMaxSeqNum();
    @Select("<script>" +
            "SELECT status, count(1) as total_in_status FROM lihu.queue where status in (" +
            "SELECT room_id, bed_no, count(1) as total_in_status FROM lihu.queue where status in (" +
            " <foreach collection='statusList' separator=',' item='status'>" +
            " #{status} " +
            " </foreach> )" +
            " group by status; "
            " group by room_id, bed_no; "
            +"</script>")
    List<QueueStatisticDO> queueStatistic(@Param("statusList")List<Byte> statusList);
    @Select("SELECT max(seq_num) FROM lihu.queue")
    int getMaxSeqNum();
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedQueueBO.java
@@ -13,6 +13,6 @@
    @Override
    public int compareTo(@NotNull BedQueueBO o) {
        return Integer.compare(o.queueNum, this.queueNum);
        return Integer.compare(this.queueNum, o.queueNum);
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -61,4 +61,14 @@
     * @param queueSaveReqVO
     */
    void queue(QueueSaveReqVO queueSaveReqVO);
    /**
     *
     */
    void initQueue();
    /**
     *
     */
    void hurryup();
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -20,9 +20,7 @@
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.PriorityQueue;
import java.util.*;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
@@ -98,32 +96,57 @@
    @Override
    public void queue(QueueSaveReqVO queueSaveReqVO) {
        BedQueueBO bedQueueBO = priorityQueue.peek();
        if (null == bedQueueBO)
            return;
        if (bedQueueBO.queueNum == bedQueueBO.maxQueueNum) {
            queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //排队中
            QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
            queueMapper.insert(queue);  // queue.getId();
        } else if (bedQueueBO.queueNum < bedQueueBO.maxQueueNum) {
            queueSaveReqVO.setStatus(QueueStatusEnum.READY.getStatus()); //候诊准备中
            queueSaveReqVO.setRoomNum(bedQueueBO.getRoomName());
            queueSaveReqVO.setBedNum(bedQueueBO.getBedNo());
            queueSaveReqVO.setSeqNum(curSeqNum++);
            queueSaveReqVO.setRoomId(bedQueueBO.getRoomId());
            queueSaveReqVO.setRoomName(bedQueueBO.getRoomName());
            queueSaveReqVO.setBedNo(bedQueueBO.getBedNo());
            queueSaveReqVO.setSeqNum(curSeqNum);
            QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
            queueMapper.insert(queue);  // queue.getId();
            curSeqNum++;
            bedQueueBO.queueNum++;
            BedQueueBO bedQueueBO2 = priorityQueue.poll();
            priorityQueue.offer(bedQueueBO2);
        }
    }
    @PostConstruct
    private void initQueue() {
    public void initQueue() {
        priorityQueue.clear();
        List<RoomDO> roomDOList = roomMapper.simpleRoomList();
        List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList();
        List<Byte> queueStatusList = new ArrayList<>();
        queueStatusList.add(QueueStatusEnum.READY.getStatus());
        List<QueueStatisticDO> queueStatisticDOList = queueMapper.queueStatistic(queueStatusList);
        bedQueueBOList.forEach(item -> {
            item.maxQueueNum = MAX_QUEUE_NUM;
            item.queueNum = 0;
            priorityQueue.add(item);
            Optional<QueueStatisticDO> queueStatisticDOOptional = queueStatisticDOList.stream().filter(it->it.getRoomId()==item.roomId && it.getBedNo().equals(item.getBedNo())).findFirst();
            item.queueNum = queueStatisticDOOptional.isPresent() ? queueStatisticDOOptional.get().getTotalInStatus() : 0;
            priorityQueue.offer(item);
        });
        curSeqNum = queueMapper.getMaxSeqNum();
        curSeqNum = null == curSeqNum ? 1 : ++curSeqNum;
    }
    /**
     * TODO 新开队列时,需要把排队中的人 转到 就诊准备 状态
     * 等到取下一个 排队中人员 的逻辑完成后,再回来不错
     */
    public void hurryup() {
    }
}
sql/mysql/jh.sql
@@ -49,12 +49,13 @@
  `pat_gender` tinyint(1) DEFAULT NULL COMMENT '患者性别',
  `book_timeslot` int NOT NULL COMMENT '预约时间段',
  `book_check_type` tinyint(1) DEFAULT NULL COMMENT '预约检查类型',
  `seq_num` int NOT NULL COMMENT '排队序号',
  `seq_num` int DEFAULT NULL COMMENT '排队序号',
  `status` tinyint(1) NOT NULL COMMENT '10:排队中 20:候诊准备 30:就诊中 40:就诊完成 50:过号 60:过期',
  `passed` tinyint(1) NOT NULL COMMENT '过号标记',
  `expired` tinyint(1) NOT NULL COMMENT '预约过期标记',
  `room_num` varchar(10) DEFAULT NULL COMMENT '诊室编号',
  `bed_num` varchar(10) DEFAULT NULL COMMENT '诊疗床编号',
  `passed` tinyint(1) DEFAULT 0 COMMENT '过号标记',
  `expired` tinyint(1) DEFAULT 0 COMMENT '预约过期标记',
  `room_id` BIGINT DEFAULT 0 COMMENT '诊室编号',
  `room_name` varchar(10) DEFAULT "" COMMENT '诊室名称',
  `bed_no` varchar(10) DEFAULT "" COMMENT '诊疗床编号',
  `tenant_id` int NOT NULL COMMENT '租户编号',
  `creator` varchar(10) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL COMMENT '创建时间',