package thyyxxk.webserver.service.zhuyuanyisheng; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import thyyxxk.webserver.config.exception.ExceptionEnum; import thyyxxk.webserver.constants.Message; import thyyxxk.webserver.dao.his.zhuyuanyisheng.PatientCriticalValuesDao; import thyyxxk.webserver.entity.ResultVo; import thyyxxk.webserver.entity.inpatient.patient.Patient; import thyyxxk.webserver.entity.login.UserInfo; import thyyxxk.webserver.service.redislike.RedisLikeService; import thyyxxk.webserver.utils.ListUtil; import thyyxxk.webserver.utils.ResultVoUtil; import thyyxxk.webserver.utils.SocketMsg; import thyyxxk.webserver.utils.StringUtil; import thyyxxk.webserver.websocket.WebSocketServer; import java.util.List; @Service @Slf4j public class PatientCriticalValuesServer { private final PatientCriticalValuesDao dao; private final RedisLikeService redisLikeService; public PatientCriticalValuesServer(PatientCriticalValuesDao dao, RedisLikeService redisLikeService) { this.dao = dao; this.redisLikeService = redisLikeService; } public ResultVo acceptCriticalValues(String data) { JSONObject strToJson = JSONObject.parseObject(data); String message = strToJson.getString("Content"); if (StringUtil.isBlank(message)) { return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "消息体为空。"); } String patNo = message.substring(message.indexOf("住院号") + 4, message.indexOf(",姓名")); Patient p = dao.selectPatientInfoByPatNo(patNo); if (p == null) { return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "未查询到该住院患者信息。"); } dao.insertAMessage(patNo, p.getAdmissTimes(), message); List codeList = dao.selectDoctorByDept(p.getDeptCode()); JSONObject js = new JSONObject(); js.put("message", message); codeList.forEach(item -> { WebSocketServer.sendMessageByUserCode(item, SocketMsg.socketVo(Message.critical_value, js)); }); return ResultVoUtil.success(); } public ResultVo> getCriticalValuePatientList(String patNo) { QueryWrapper qw = new QueryWrapper<>(); UserInfo u = redisLikeService.getUserInfoByToken(); if (StringUtil.isBlank(patNo)) { qw.eq("b.zk_ward", u.getDeptCode()); } else { qw.eq("a.pat_no", patNo); } List patientList = dao.selectCriticalValuePatientList(qw); if (patientList == null) { return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST); } return ResultVoUtil.success(patientList); } }