1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package cn.lihu.jh.module.ecg.config;
 
import cn.lihu.jh.framework.common.exception.ServiceException;
import cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants;
import cn.lihu.jh.module.ecg.Utils;
import cn.lihu.jh.module.ecg.enums.ErrorCodeConstants;
import cn.lihu.jh.module.ecg.service.callingscreen.BigScreenConfig;
import cn.lihu.jh.module.ecg.service.callingscreen.CallingScreenService;
import cn.lihu.jh.module.ecg.service.config.EcgConfigService;
import cn.lihu.jh.module.ecg.service.queue.QueueService;
import cn.lihu.jh.module.infra.api.config.ConfigApi;
import cn.lihu.jh.module.system.api.dict.DictDataApi;
import cn.lihu.jh.module.system.api.dict.dto.DictDataRespDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
 
import javax.annotation.Resource;
import java.time.LocalTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import static cn.lihu.jh.module.ecg.Constants.*;
 
@Component
@Slf4j
public class MySpringEventListener {
 
    @Resource
    private ConfigApi configApi;
 
    @Resource
    private DictDataApi dictDataApi;
 
    @Resource
    private EcgConfigService ecgConfigService;
 
    @Resource
    QueueService queueService;
 
    @Resource
    CallingScreenService callingScreenService;
 
    @EventListener
    public void onApplicationEvent(ApplicationStartedEvent event) {
        log.info("应用启动完成,系统初始。。。");
 
        String strQueueReadyMax = configApi.getConfigValueByKey(ECG_QUEUE_READY_MAX_KEY);
        int[] queueReadyMax = Arrays.stream(strQueueReadyMax.split(","))
                .mapToInt(Integer::parseInt)
                .toArray();
        List<DictDataRespDTO> dictDataRespDTOList = dictDataApi.getDictDataList("ecg_check_type");
        if ( dictDataRespDTOList.size() != queueReadyMax.length) {
            log.error(ErrorCodeConstants.ECG_CONFIG_ERROR.getMsg());
        }
 
        Integer checkTypeNum = dictDataRespDTOList.size() < queueReadyMax.length ? dictDataRespDTOList.size() : queueReadyMax.length;
        Map max = new HashMap<Integer, Integer>();
        for (int i=0; i<checkTypeNum; i++) {
            max.put( Integer.valueOf(dictDataRespDTOList.get(i).getValue()), queueReadyMax[i]);
        }
        queueService.setCheckTypeReadyMax( max );
 
        BigScreenConfig bigScreenConfig = new BigScreenConfig();
        Integer waitingSize = Integer.valueOf(configApi.getConfigValueByKey(ECG_SCREEN_PANE_WAITING_KEY));
        Integer passedSize = Integer.valueOf(configApi.getConfigValueByKey(ECG_SCREEN_PANE_PASSED_KEY));
        bigScreenConfig.setWaitingSize( waitingSize);
        bigScreenConfig.setPassedSize( passedSize);
        callingScreenService.setBigScreenConfig(bigScreenConfig);
 
        String strOpenCloseTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
        List<LocalTime> list = Utils.parseOpeningTime(strOpenCloseTime);
        LocalTime openingTime = list.get(0);
        LocalTime closeTime = list.get(1);
 
        // 获取当前时间
        LocalTime currentTime = LocalTime.now();
 
        // 比较时间
        if (currentTime.isBefore(openingTime) || currentTime.isAfter(closeTime)) {
            queueService.closeBiz();
        } else {
            queueService.startBiz();
        }
 
        ecgConfigService.resetScheduler();
    }
}