eight
2024-08-22 2cb4f97e706193afbddf49e56fcf798e9dc8eb85
update
已修改7个文件
110 ■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/jh.sql 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
@@ -21,7 +21,8 @@
    READY((byte)20, "候诊准备"),
    ONSTAGE((byte)30, "就诊中"),
    FINISH((byte)40, "就诊完成"),
    PASSED((byte)50, "过号");
    PASSED((byte)50, "过号"),
    PASSED_RETURN((byte)60, "过号回来");
    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/doctor/DoctorController.java
@@ -106,4 +106,32 @@
        PatientStatisticVO patientStatisticVO = queueService.getPatientStatistic(roomId, bedNo);
        return success(patientStatisticVO);
    }
    @GetMapping("/passed-patient-return")
    @Operation(summary = "过期病人回来")
    @Parameter(name = "roomId", description = "诊室编号", required = true, example = "116")
    @Parameter(name = "bedNo", description = "工位编号", required = true, example = "B2")
    @Parameter(name = "patId", description = "患者编号", required = true, example = "B2")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:patient')")
    public CommonResult<String> passedPatientReturn(
            @RequestParam("roomId") Long roomId,
            @RequestParam("bedNo") String bedNo,
            @RequestParam("patId") String patId )
    {
        Integer result = queueService.passedPatientReturn(roomId, bedNo, patId);
        return success("success");
    }
    @GetMapping("/queuejump")
    @Operation(summary = "插队")
    @Parameter(name = "patId", description = "患者编号", required = true, example = "B2")
    @PreAuthorize("@ss.hasPermission('ecg:doctor:patient')")
    public CommonResult<String> queueJump(
            @RequestParam("patId") String patId,
            @RequestParam("jumpFlag") Byte jumpFlag)
    {
        Integer result = queueService.queueJump(patId, jumpFlag);
        return success("success");
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.annotation.*;
import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO;
import java.time.LocalDateTime;
/**
 * 排队 DO
 *
@@ -37,6 +39,10 @@
     */
    private Byte patGender;
    /**
     * 预约日期
     */
    private LocalDateTime bookDate;
    /**
     * 预约时间段
     */
    private Integer bookTimeslot;
@@ -61,6 +67,10 @@
     */
    private Byte expired;
    /**
     * 插队标记
     */
    private Byte jumpFlag;
    /**
     * 诊室编号
     */
    private Long roomId;
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
@@ -96,8 +96,24 @@
    @Update("update lihu.queue set status = #{newStatus}, room_id = #{roomId}, room_name = #{roomName}, \n" +
            " bed_no = #{bedNo}, seq_num = #{seqNum} where id = \n" +
            "  (select a.id from \n" +
            "    (select id from lihu.queue where status = #{curStatus} order by book_timeslot, create_time limit 1) a)")
            "    (select id from lihu.queue where status = #{curStatus} order by jump_flag desc, book_timeslot, create_time limit 1) a)")
    Integer preemptPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo,
                           @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus);
    @Update("update lihu.queue set status = #{newStatus}, seq_num = #{seqNum}, passed = 1 " +
            " where id = " +
            "  (select a.id from \n" +
            "    (select id from lihu.queue where status = #{curStatus} and room_id = #{roomId} and room_name = #{roomName} and bed_no = #{bedNo} order by seq_num limit 1) a)")
    Integer procPassedReturnPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo,
                           @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus);
    @Update("update lihu.queue set status = #{newStatus} " +
            " where pat_id = #{patId} amd status = #{curStatus} and room_id = #{roomId} and bed_no = #{bedNo}")
    Integer passedPatientReturn(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("patId")String patId,
                                @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus);
    @Update("update lihu.queue set jumped = #{jumped} " +
            " where pat_id = #{patId} amd status = #{curStatus}")
    Integer queueJump(@Param("patId")String patId, @Param("curStatus")Byte curStatus, @Param("jumped")Byte jumped );
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -88,4 +88,8 @@
    List<QueueDO> getDoctorQueueByStatus(Long roomId, String bedNo, List<Byte> statusList);
    PatientStatisticVO getPatientStatistic(Long roomId, String bedNo);
    Integer passedPatientReturn(Long roomId, String bedNo, String patId);
    Integer queueJump( String patId, Byte jumped );
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -160,17 +160,29 @@
            if (curQueueNum == bedQueueBO.maxQueueNum)
                return;
            Integer updateNum = queueMapper.preemptPatient(
            // 查看 当前工位 是否有过号-回来的患者
            Integer updateNum = queueMapper.procPassedReturnPatient(
                    bedQueueBO.getRoomId(),
                    bedQueueBO.getRoomName(),
                    bedQueueBO.getBedNo(),
                    curSeqNum.get() + 1,
                    QueueStatusEnum.WAITING.getStatus(),
                    QueueStatusEnum.PASSED_RETURN.getStatus(),
                    QueueStatusEnum.READY.getStatus());
            // 没有抢到排队患者
            if (null == updateNum || 0 == updateNum) {
                return;
                // 查看 是否有排队中的患者
                 updateNum = queueMapper.preemptPatient(
                                bedQueueBO.getRoomId(),
                                bedQueueBO.getRoomName(),
                                bedQueueBO.getBedNo(),
                                curSeqNum.get() + 1,
                                QueueStatusEnum.WAITING.getStatus(),
                                QueueStatusEnum.READY.getStatus());
                // 没有抢到排队患者
                if (null == updateNum || 0 == updateNum) {
                    return;
                }
            }
            curSeqNum.getAndIncrement();
@@ -270,4 +282,17 @@
        hurryup();
    }
    @Override
    public Integer passedPatientReturn(Long roomId, String bedNo, String patId) {
        Integer updateNum = queueMapper.passedPatientReturn(roomId, bedNo, patId,
                QueueStatusEnum.PASSED.getStatus(), QueueStatusEnum.PASSED_RETURN.getStatus());
        return updateNum;
    }
    @Override
    public Integer queueJump(String patId, Byte jumped) {
        Integer updateNum = queueMapper.queueJump(patId, QueueStatusEnum.WAITING.getStatus(), jumped);
        return null;
    }
}
sql/mysql/jh.sql
@@ -46,13 +46,15 @@
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
  `pat_id` varchar(30) NOT NULL COMMENT '患者编号',
  `pat_name` varchar(10) NOT NULL COMMENT '患者姓名',
  `pat_gender` tinyint(1) DEFAULT NULL COMMENT '患者性别',
  `pat_gender` tinyint DEFAULT NULL COMMENT '患者性别',
  `book_date` dateTime NOT NULL COMMENT '预约日期',
  `book_timeslot` int NOT NULL COMMENT '预约时间段',
  `book_check_type` tinyint(1) DEFAULT NULL COMMENT '预约检查类型',
  `book_check_type` tinyint DEFAULT NULL COMMENT '预约检查类型',
  `seq_num` int DEFAULT NULL COMMENT '排队序号',
  `status` tinyint(1) NOT NULL COMMENT '10:排队中 20:候诊准备 30:就诊中 40:就诊完成 50:过号 60:过期',
  `passed` tinyint(1) DEFAULT 0 COMMENT '过号标记',
  `expired` tinyint(1) DEFAULT 0 COMMENT '预约过期标记',
  `status` tinyint NOT NULL COMMENT '10:排队中 20:候诊准备 30:就诊中 40:就诊完成 50:过号 60:过期',
  `passed` tinyint DEFAULT 0 COMMENT '过号标记',
  `expired` tinyint DEFAULT 0 COMMENT '预约过期标记',
  `jump_flag` tinyint DEFAULT 0 COMMENT '插队标记',
  `room_id` BIGINT DEFAULT 0 COMMENT '诊室编号',
  `room_name` varchar(10) DEFAULT "" COMMENT '诊室名称',
  `bed_no` varchar(10) DEFAULT "" COMMENT '诊疗床编号',
@@ -61,7 +63,7 @@
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `updater` varchar(10) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `deleted` bit(1) DEFAULT 0 COMMENT '删除标记',
  `deleted` bit DEFAULT 0 COMMENT '删除标记',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='排队表';