123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package thyyxxk.webserver.scheduled;
- import com.alibaba.fastjson.JSON;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import thyyxxk.webserver.dao.his.triage.TriageDao;
- import thyyxxk.webserver.entity.dictionary.PureCodeName;
- import thyyxxk.webserver.entity.triage.MessageForPush;
- import thyyxxk.webserver.entity.triage.MzfzPatientOrder;
- import thyyxxk.webserver.service.triage.PatientSidContainer;
- import thyyxxk.webserver.utils.VoiceUtil;
- import thyyxxk.webserver.websocket.WebSocketServer;
- import java.util.List;
- import java.util.concurrent.ConcurrentMap;
- @Slf4j
- @Component
- public class QueryNotifiedPatients {
- private final TriageDao dao;
- @Value("${execute-scheduled}")
- private Boolean executeScheduled;
- @Autowired
- public QueryNotifiedPatients(TriageDao dao) {
- this.dao = dao;
- }
- @Scheduled(fixedRate = 6000)
- public void query() {
- if (executeScheduled) {
- ConcurrentMap<Integer, String> map = PatientSidContainer.getInstance().getSidPatientsMap();
- if (map.isEmpty()) return;
- List<PureCodeName> list = dao.getNotifiedSerialNos(map);
- if (list == null || list.isEmpty()) return;
- for (PureCodeName item : list) {
- MzfzPatientOrder patient = dao.getPatientTriageInfo(Integer.parseInt(item.getCode()));
- MessageForPush param = new MessageForPush();
- param.setAction(1);
- param.setSerialNo(patient.getSerialNo());
- param.setFzNo(patient.getFzNo());
- param.setName(patient.getName());
- param.setDeptName(patient.getDeptName());
- param.setRoomNo(patient.getRoomNo());
- param.setRoomCode(patient.getRoomCode());
- final String msg = JSON.toJSONString(param);
- String text = String.format("请%s号%s,到%s%s号诊室就诊。", param.getFzNo(), param.getName(),
- param.getDeptName(), param.getRoomNo());
- VoiceUtil.textToSpeech(text, String.valueOf(param.getSerialNo()));
- String userCode = map.get(Integer.parseInt(item.getCode()));
- int code1 = WebSocketServer.sendFloorTriageMessage(userCode, msg);
- int code2 = WebSocketServer.sendRoomTriageMessage(item.getName(), msg);
- if (code1 != 200 || code2 != 200) {
- PatientSidContainer.getInstance().delete(param.getSerialNo());
- }
- }
- }
- }
- }
|