|  | @@ -1,5 +1,6 @@
 | 
	
		
			
				|  |  |  package thyyxxk.webserver.service.triage;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
	
		
			
				|  | @@ -16,6 +17,8 @@ import thyyxxk.webserver.entity.triage.*;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.ResultVoUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.StringUtil;
 | 
	
		
			
				|  |  |  import thyyxxk.webserver.utils.TokenUtil;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.utils.VoiceUtil;
 | 
	
		
			
				|  |  | +import thyyxxk.webserver.websocket.WebSocketServer;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -53,6 +56,11 @@ public class TriageService {
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(dao.getTriagedPatients(depts));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public ResultVo<List<MzfzPatientOrder>> getTreatedPatients() {
 | 
	
		
			
				|  |  | +        String[] depts = StringUtil.triageDeptString2Array(dao.selectChosenDepts(TokenUtil.getTokenUserId()));
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(dao.getTreatedPatients(depts));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      public ResultVo<List<FloorScreen>> getBigScreenData(Boolean fullName) {
 | 
	
		
			
				|  |  |          String[] depts = StringUtil.triageDeptString2Array(dao.selectChosenDepts(TokenUtil.getTokenUserId()));
 | 
	
		
			
				|  |  |          List<MzfzPatientOrder> list = dao.getBigScreenData(depts);
 | 
	
	
		
			
				|  | @@ -123,17 +131,18 @@ public class TriageService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          dao.updatePatientNum(room.getDeptCode(), room.getRoomCode(), patientNum);
 | 
	
		
			
				|  |  |          dao.fenZhen(room);
 | 
	
		
			
				|  |  | -        log.info("分诊:update mzfz_patient_order set status_flag=1, slow_flag=0, " +
 | 
	
		
			
				|  |  | -                        "dept_code={}, room_code={}, doctor_code={}, fz_no={} where serial_no={}",
 | 
	
		
			
				|  |  | +        log.info("分诊:update mzfz_patient_order set status_flag=1, slow_flag=0, dept_code={}, room_code={}, " +
 | 
	
		
			
				|  |  | +                        "doctor_code={}, fz_no={}, fz_flag={} where serial_no={}",
 | 
	
		
			
				|  |  |                  room.getDeptCode(), room.getRoomCode(), room.getDoctorCode(),
 | 
	
		
			
				|  |  | -                room.getPatientNum(), room.getSerialNo());
 | 
	
		
			
				|  |  | -        PatientSidContainer.getInstance().put(room.getSerialNo(), TokenUtil.getTokenUserId());
 | 
	
		
			
				|  |  | +                room.getPatientNum(), room.getFuzhenFlag(), room.getSerialNo());
 | 
	
		
			
				|  |  | +        dao.deleteNotifyRelation(room.getSerialNo());
 | 
	
		
			
				|  |  | +        dao.insertNotifyRelation(room.getSerialNo(), TokenUtil.getTokenUserId(), room.getRoomCode());
 | 
	
		
			
				|  |  |          return ResultVoUtil.success("分诊成功。");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public ResultVo<Boolean> notifyComplete(Integer serialNo) {
 | 
	
		
			
				|  |  | +    public void notifyComplete(Integer serialNo) {
 | 
	
		
			
				|  |  |          log.info("通知完毕>>> {}", serialNo);
 | 
	
		
			
				|  |  | -        return ResultVoUtil.success(PatientSidContainer.getInstance().delete(serialNo));
 | 
	
		
			
				|  |  | +        dao.updateNotifyDatetime(serialNo);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public ResultVo<Integer> fuZhen(Integer serialNo) {
 | 
	
	
		
			
				|  | @@ -142,7 +151,7 @@ public class TriageService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public ResultVo<Integer> cancelTriage(Integer serialNo) {
 | 
	
		
			
				|  |  |          Integer ret = dao.cancelTriage(serialNo);
 | 
	
		
			
				|  |  | -        PatientSidContainer.getInstance().delete(serialNo);
 | 
	
		
			
				|  |  | +        dao.deleteNotifyRelation(serialNo);
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(ret);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -179,26 +188,37 @@ public class TriageService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public ResultVo<String> notifyMessage(MessageForPush param) {
 | 
	
		
			
				|  |  | -        MessageForPush prm = dao.selectMessageForPush(param.getSerialNo());
 | 
	
		
			
				|  |  | -        if (null == prm) {
 | 
	
		
			
				|  |  | +        MessageForPush messageForPush = dao.selectMessageForPush(param.getSerialNo());
 | 
	
		
			
				|  |  | +        if (null == messageForPush) {
 | 
	
		
			
				|  |  |              return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有找到此患者的分诊信息!");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        prm.setAction(param.getAction());
 | 
	
		
			
				|  |  | -        log.info("消息推送>>> {}", prm);
 | 
	
		
			
				|  |  | -        RestTemplate template = new RestTemplate();
 | 
	
		
			
				|  |  | -        String result;
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -            result = template.postForObject(triageNotifyUrl, prm, String.class);
 | 
	
		
			
				|  |  | -        } catch (Exception e) {
 | 
	
		
			
				|  |  | -            return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (param.getAction() == 1) {
 | 
	
		
			
				|  |  | -            if (null != result && result.equals("0")) {
 | 
	
		
			
				|  |  | -                dao.updateStatus(param.getSerialNo());
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                log.error("消息推送失败,没有找到在线的分诊台连接。{}", prm);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return ResultVoUtil.success(result);
 | 
	
		
			
				|  |  | +        messageForPush.setAction(param.getAction());
 | 
	
		
			
				|  |  | +        String text = String.format("请%s号%s,到%s%s号诊室就诊。", messageForPush.getFzNo(), messageForPush.getName(),
 | 
	
		
			
				|  |  | +                messageForPush.getDeptName(), messageForPush.getRoomNo());
 | 
	
		
			
				|  |  | +        log.info("消息推送>>> {}\n{}", messageForPush, text);
 | 
	
		
			
				|  |  | +        // todo 下面这部分在完成迁移后启用
 | 
	
		
			
				|  |  | +        VoiceUtil.textToSpeech(text, String.valueOf(param.getSerialNo()));
 | 
	
		
			
				|  |  | +        final String msg = JSON.toJSONString(messageForPush);
 | 
	
		
			
				|  |  | +        TriageNotifyRelation notifyRelation = dao.selectTriageNotifyRelation(messageForPush.getSerialNo());
 | 
	
		
			
				|  |  | +        WebSocketServer.sendFloorTriageMessage(notifyRelation.getSocketSid(), msg);
 | 
	
		
			
				|  |  | +        WebSocketServer.sendRoomTriageMessage(notifyRelation.getRoomCode(), msg);
 | 
	
		
			
				|  |  | +        dao.updateNotifyDatetime(param.getSerialNo());
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success();
 | 
	
		
			
				|  |  | +        // todo 下面这一部分在完成迁移后删除
 | 
	
		
			
				|  |  | +//        RestTemplate template = new RestTemplate();
 | 
	
		
			
				|  |  | +//        String result;
 | 
	
		
			
				|  |  | +//        try {
 | 
	
		
			
				|  |  | +//            result = template.postForObject(triageNotifyUrl, messageForPush, String.class);
 | 
	
		
			
				|  |  | +//        } catch (Exception e) {
 | 
	
		
			
				|  |  | +//            return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR);
 | 
	
		
			
				|  |  | +//        }
 | 
	
		
			
				|  |  | +//        if (param.getAction() == 1) {
 | 
	
		
			
				|  |  | +//            if (null != result && result.equals("0")) {
 | 
	
		
			
				|  |  | +//                dao.updateStatus(param.getSerialNo());
 | 
	
		
			
				|  |  | +//            } else {
 | 
	
		
			
				|  |  | +//                log.error("消息推送失败,没有找到在线的分诊台连接。{}", messageForPush);
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  | +//        }
 | 
	
		
			
				|  |  | +//        return ResultVoUtil.success(result);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |