eight
2024-08-28 d14e741e49fb8f5fe2b825cb7dc1577c37cb6a66
update
已修改5个文件
42 ■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedOpenCallable.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Constants.java
@@ -2,4 +2,6 @@
public interface Constants {
    static final String ECG_OPENING_TIME_KEY = "ecg.openingtime";
    static final String ECG_QUEUE_READY_MAX_KEY = "ecg.queue.ready.max";
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
@@ -12,6 +12,7 @@
import java.util.List;
import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
import static cn.lihu.jh.module.ecg.Constants.ECG_QUEUE_READY_MAX_KEY;
@Component
public class MySpringEventListener {
@@ -26,8 +27,10 @@
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("应用启动完成,系统初始。。。");
        Integer queueReadyMax = Integer.valueOf(configApi.getConfigValueByKey(ECG_QUEUE_READY_MAX_KEY));
        queueService.setQueueReadyMax( queueReadyMax );
        String strOpenCloseTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
        strOpenCloseTime = "0:00~23:59";
        List<LocalTime> list = Utils.parseOpeningTime(strOpenCloseTime);
        LocalTime openingTime = list.get(0);
        LocalTime closeTime = list.get(1);
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedOpenCallable.java
@@ -1,20 +1,7 @@
package cn.lihu.jh.module.ecg.service.queue;
import cn.lihu.jh.framework.common.exception.ErrorCode;
import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper;
import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper;
import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
import cn.lihu.jh.module.ecg.enums.QueueStatusEnum;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.atomic.AtomicInteger;
import static cn.lihu.jh.module.ecg.service.queue.QueueService.MAX_QUEUE_NUM;
public class BedOpenCallable implements Callable<ErrorCode> {
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -15,8 +15,7 @@
 */
public interface QueueService {
    final static Integer MAX_QUEUE_NUM = 3;
    void setQueueReadyMax(Integer max);
    void startBiz();
    void closeBiz();
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -8,6 +8,7 @@
import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
import cn.lihu.jh.module.ecg.enums.ErrorCodeConstants;
import cn.lihu.jh.module.ecg.enums.QueueStatusEnum;
import cn.lihu.jh.module.infra.api.config.ConfigApi;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -26,6 +27,8 @@
import static cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
import static cn.lihu.jh.module.ecg.Constants.ECG_QUEUE_READY_MAX_KEY;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
/**
@@ -38,13 +41,15 @@
public class QueueServiceImpl implements QueueService {
    @Resource
    private ConfigApi configApi;
    @Resource
    private queueMapper queueMapper;
    @Resource
    private RoomMapper roomMapper;
    AtomicInteger openingFlag = new AtomicInteger(0);
    AtomicInteger curSeqNum = new AtomicInteger(0);
    PriorityBlockingQueue<BedQueueBO> priorityQueue = new PriorityBlockingQueue<>();
@@ -52,6 +57,7 @@
    ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
    Integer queueReadyMax = 0;
    @Override
    public Integer createqueue(QueueSaveReqVO createReqVO) {
@@ -208,7 +214,7 @@
        BedQueueBO bedQueueBO = new BedQueueBO();
        bedQueueBO.setRoomId(roomId);
        bedQueueBO.setBedNo(bedNo);
        bedQueueBO.setMaxQueueNum(MAX_QUEUE_NUM);
        bedQueueBO.setMaxQueueNum(queueReadyMax);
        bedQueueBO.setQueueNum(new AtomicInteger(queueDOList.size()));
        bedQueueBO.setStatusEnum(BedStatusEnum.OPENING);
        priorityQueue.offer(bedQueueBO);
@@ -358,10 +364,10 @@
        List<QueueStatisticDO> queueStatisticDOList = queueMapper.queueStatistic(queueStatusList);
        bedQueueBOList.forEach(item -> {
            item.maxQueueNum = MAX_QUEUE_NUM;
            item.maxQueueNum = queueReadyMax;
            Optional<QueueStatisticDO> queueStatisticDOOptional = queueStatisticDOList.stream().filter(it->it.getRoomId()==item.roomId && it.getBedNo().equals(item.getBedNo())).findFirst();
            int queueNum = queueStatisticDOOptional.isPresent() ? queueStatisticDOOptional.get().getTotalInStatus() : 0;
            if ( MAX_QUEUE_NUM < queueNum )
            if ( queueReadyMax < queueNum )
                throw new RuntimeException("init: exceed max queue number!");
            item.queueNum.set( queueNum );
@@ -521,6 +527,11 @@
        return patientStatisticVO;
    }
    @Override
    public void setQueueReadyMax(Integer max) {
        queueReadyMax = max;
    }
    public void startBiz() {
        if (1 == openingFlag.get())
            return;