QueryNotifiedPatients.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package thyyxxk.webserver.scheduled;
  2. import com.alibaba.fastjson.JSON;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Value;
  6. import org.springframework.scheduling.annotation.Scheduled;
  7. import org.springframework.stereotype.Component;
  8. import thyyxxk.webserver.dao.his.triage.TriageDao;
  9. import thyyxxk.webserver.entity.triage.MessageForPush;
  10. import thyyxxk.webserver.entity.triage.MzfzPatientOrder;
  11. import thyyxxk.webserver.entity.triage.TriageNotifyRelation;
  12. import thyyxxk.webserver.utils.VoiceUtil;
  13. import thyyxxk.webserver.websocket.WebSocketServer;
  14. import java.util.List;
  15. @Slf4j
  16. @Component
  17. public class QueryNotifiedPatients {
  18. private final TriageDao dao;
  19. @Value("${execute-scheduled}")
  20. private Boolean executeScheduled;
  21. @Autowired
  22. public QueryNotifiedPatients(TriageDao dao) {
  23. this.dao = dao;
  24. }
  25. @Scheduled(fixedRate = 6000)
  26. public void query() {
  27. if (executeScheduled) {
  28. List<TriageNotifyRelation> unNotifiedList = dao.selectUnNotifiedList();
  29. if (null == unNotifiedList || unNotifiedList.isEmpty()) {
  30. return;
  31. }
  32. for (TriageNotifyRelation item : unNotifiedList) {
  33. MzfzPatientOrder patient = dao.getPatientTriageInfo(item.getSerialNo());
  34. MessageForPush param = new MessageForPush();
  35. param.setAction(1);
  36. param.setSerialNo(patient.getSerialNo());
  37. param.setFzNo(patient.getFzNo());
  38. param.setName(patient.getName());
  39. param.setDeptName(patient.getDeptName());
  40. param.setRoomNo(patient.getRoomNo());
  41. param.setRoomCode(patient.getRoomCode());
  42. final String msg = JSON.toJSONString(param);
  43. String text = String.format("请%s号%s,到%s%s号诊室就诊。", param.getFzNo(), param.getName(),
  44. param.getDeptName(), param.getRoomNo());
  45. VoiceUtil.textToSpeech(text, String.valueOf(param.getSerialNo()));
  46. WebSocketServer.sendFloorTriageMessage(item.getSocketSid(), msg);
  47. WebSocketServer.sendRoomTriageMessage(item.getRoomCode(), msg);
  48. dao.updateNotifyDatetime(param.getSerialNo());
  49. }
  50. }
  51. }
  52. }