eight
2024-08-27 3090ed6f6ff02c215360da580e2fbe8a453bcc0f
update
已添加1个文件
已修改7个文件
124 ■■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorResumeCallable.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-server/src/main/resources/application-local.yaml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java
@@ -15,7 +15,6 @@
@AllArgsConstructor
public enum BedStatusEnum implements IntArrayValuable {
    CLOSED(0, "已关闭"),
    CLOSING(1, "关闭中"),
    OPENING(10, "已开通"),
    DOCTOR_ON(20, "有医生"),
    PAUSE(30, "暂停");
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -16,4 +16,5 @@
    ErrorCode ROOM_INVALID_STATUS = new ErrorCode(1_010_002_001, "诊室和诊疗床状态异常");
    ErrorCode QUEUE_NOT_EXISTS = new ErrorCode(1_010_003_000, "排队不存在");
    ErrorCode QUEUE_BED_ABNORMAL = new ErrorCode(1_010_003_001, "工位队列不存在");
    ErrorCode QUEUE_HAVE_PATIENT = new ErrorCode(1_010_003_001, "患者队列中");
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
@@ -34,8 +34,15 @@
    @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" })
    List<RoomStatisticsDO> roomStatistic();
    @Select({ "SELECT id, room_id, room_name, bed_no, status, doc_id, doc_name FROM lihu.clinic_room where status >= 10;" })
    List<RoomDO> simpleRoomList();
    @Select("<script> " +
            "SELECT id, room_id, room_name, bed_no, status, doc_id, doc_name FROM lihu.clinic_room " +
            "where status in ( " +
                    " <foreach collection='curStatusList' separator=',' item='curStatus'>" +
                    "  #{curStatus.status} " +
                    " </foreach> );" +
            "</script>")
    List<RoomDO> simpleRoomList(@Param("curStatusList") List<BedStatusEnum> curStatusList);
    @Update("<script> " +
            "update lihu.clinic_room set status=#{newStatus.status} where room_id=#{roomId} and bed_no=#{bedNo} " +
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorResumeCallable.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package cn.lihu.jh.module.ecg.service.queue;
import cn.lihu.jh.framework.common.exception.ErrorCode;
import java.util.concurrent.Callable;
public class BedDoctorResumeCallable implements Callable<ErrorCode> {
    QueueService queueService;
    private Long roomId;
    private String bedNo;
    private Long docId;
    private String docName;
    public BedDoctorResumeCallable(QueueService queueService, Long roomId, String bedNo, Long docId, String docName)
    {
        super();
        this.queueService = queueService;
        this.roomId = roomId;
        this.bedNo = bedNo;
        this.docId = docId;
        this.docName = docName;
    }
    public ErrorCode call() throws Exception {
        return queueService.bedDoctorResume(roomId, bedNo, docId, docName);
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -48,12 +48,14 @@
    ErrorCode startBedOpen(Long roomId, String bedNo);
    ErrorCode startBedClose(Long roomId, String bedNo);
    ErrorCode startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode startBedDoctorResume(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode bedOpen(Long roomId, String bedNo);
    ErrorCode bedClose(Long roomId, String bedNo);
    ErrorCode bedDoctorPause(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode bedDoctorResume(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode bedDoctorOn(Long roomId, String bedNo, Long docId, String docName);
    ErrorCode bedDoctorOff(Long roomId, String bedNo, Long docId, String docName);
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -130,6 +130,24 @@
    }
    @Override
    public ErrorCode startBedDoctorResume(Long roomId, String bedNo, Long docId, String docName) {
        Future<ErrorCode> future = singleThreadExecutor.submit(
            new BedDoctorResumeCallable(this, roomId, bedNo, docId, docName)
        );
        try {
            ErrorCode ret = future.get();
            return ret;
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        return ECG_INNER_ERROR;
    }
    @Override
    public ErrorCode startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName) {
        Future<ErrorCode> future = singleThreadExecutor.submit(
            new BedDoctorOnCallable(this, roomId, bedNo, docId, docName)
@@ -177,7 +195,6 @@
        // DB update
        List statusList = new ArrayList<BedStatusEnum>();
        statusList.add(BedStatusEnum.CLOSED);
        statusList.add(BedStatusEnum.CLOSING);
        Integer updateNum = roomMapper.setBedStatus(roomId, bedNo,
                BedStatusEnum.OPENING, statusList);
        if ( null==updateNum || 0 == updateNum )
@@ -193,6 +210,7 @@
        bedQueueBO.setBedNo(bedNo);
        bedQueueBO.setMaxQueueNum(MAX_QUEUE_NUM);
        bedQueueBO.setQueueNum(new AtomicInteger(queueDOList.size()));
        bedQueueBO.setStatusEnum(BedStatusEnum.OPENING);
        priorityQueue.offer(bedQueueBO);
        mapBedVsQueue.put(String.format("%09d%s", roomId, bedNo), bedQueueBO);
        return SUCCESS;
@@ -204,13 +222,19 @@
        if (null == bedQueueBO)
            return QUEUE_BED_ABNORMAL;
        if (bedQueueBO.getQueueNum().get() >0)
            return QUEUE_HAVE_PATIENT;
        BedStatusEnum destStatusEnum = destStatusEnum = BedStatusEnum.CLOSED;
        mapBedVsQueue.remove(String.format("%09d%s", roomId, bedNo));
        priorityQueue.remove(bedQueueBO);
        // DB update
        List statusList = new ArrayList<BedStatusEnum>();
        statusList.add(BedStatusEnum.OPENING);
        statusList.add(BedStatusEnum.DOCTOR_ON);
        statusList.add(BedStatusEnum.PAUSE);
        Integer updateNum = roomMapper.setBedStatus(roomId, bedNo,
                BedStatusEnum.CLOSING, statusList);
        Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, destStatusEnum, statusList);
        if ( null==updateNum || 0 == updateNum )
            return ROOM_INVALID_STATUS;
@@ -222,6 +246,29 @@
        BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null == bedQueueBO)
            return QUEUE_BED_ABNORMAL;
        bedQueueBO.setStatusEnum(BedStatusEnum.PAUSE);
        priorityQueue.remove(bedQueueBO);
        // DB update
        List statusList = new ArrayList<BedStatusEnum>();
        statusList.add(BedStatusEnum.DOCTOR_ON);
        Integer updateNum = roomMapper.setBedDoctorPause(roomId, bedNo, docId, docName,
                BedStatusEnum.PAUSE, statusList);
        if ( null==updateNum || 0 == updateNum )
            return ROOM_INVALID_STATUS;
        return SUCCESS;
    }
    @Override
    public ErrorCode bedDoctorResume(Long roomId, String bedNo, Long docId, String docName) {
        BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null == bedQueueBO)
            return QUEUE_BED_ABNORMAL;
        bedQueueBO.setStatusEnum(BedStatusEnum.DOCTOR_ON);
        priorityQueue.offer(bedQueueBO);
        // DB update
        List statusList = new ArrayList<BedStatusEnum>();
@@ -248,6 +295,8 @@
        if ( null==updateNum || 0 == updateNum )
            return ROOM_INVALID_STATUS;
        bedQueueBO.setStatusEnum(BedStatusEnum.DOCTOR_ON);
        return SUCCESS;
    }
@@ -264,6 +313,8 @@
                BedStatusEnum.OPENING, statusList);
        if ( null==updateNum || 0 == updateNum )
            return ROOM_INVALID_STATUS;
        bedQueueBO.setStatusEnum(BedStatusEnum.OPENING);
        return SUCCESS;
    }
@@ -294,7 +345,11 @@
        mapBedVsQueue.clear();
        // ä»ŽDB èŽ·å– å·¥ä½åˆ—表
        List<RoomDO> roomDOList = roomMapper.simpleRoomList();
        List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>();
        bedStatusEnumList.add(BedStatusEnum.OPENING);
        bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON);
        bedStatusEnumList.add(BedStatusEnum.PAUSE);
        List<RoomDO> roomDOList = roomMapper.simpleRoomList(bedStatusEnumList);
        List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList();
        // ä»ŽDB èŽ·å– é˜Ÿåˆ—中 å°±è¯Šå‡†å¤‡ä¸­äººå‘˜ç»Ÿè®¡ åˆ—表
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
@@ -5,6 +5,7 @@
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO;
import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper;
import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@@ -81,6 +82,10 @@
    @Override
    public List<RoomDO> simpleRoomList() {
        return  roomMapper.simpleRoomList();
        List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>();
        bedStatusEnumList.add(BedStatusEnum.OPENING);
        bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON);
        bedStatusEnumList.add(BedStatusEnum.PAUSE);
        return  roomMapper.simpleRoomList(bedStatusEnumList);
    }
}
jh-server/src/main/resources/application-local.yaml
@@ -74,10 +74,14 @@
  # Redis é…ç½®ã€‚Redisson é»˜è®¤çš„配置足够使用,一般不需要进行调优
  redis:
    host: 116.62.18.175   #r-bp1zyjl0g07e1ry08rpd.redis.rds.aliyuncs.com # åœ°å€
    port: 6020            #端口 6379
#    host: 116.62.18.175   #r-bp1zyjl0g07e1ry08rpd.redis.rds.aliyuncs.com # åœ°å€
#    port: 6020            #端口 6379
#    database: 15 # æ•°æ®åº“索引
#    password: Smartor    #Root@yinyu # å¯†ç ï¼Œå»ºè®®ç”Ÿäº§çŽ¯å¢ƒå¼€å¯
    host: 127.0.0.1
    port: 6379
    database: 15 # æ•°æ®åº“索引
    password: Smartor    #Root@yinyu # å¯†ç ï¼Œå»ºè®®ç”Ÿäº§çŽ¯å¢ƒå¼€å¯
#    password: Root@yinyu # å¯†ç ï¼Œå»ºè®®ç”Ÿäº§çŽ¯å¢ƒå¼€å¯
--- #################### å®šæ—¶ä»»åŠ¡ç›¸å…³é…ç½® ####################