| | |
| | | import Stomp from 'stompjs' |
| | | import os from 'os' |
| | | import { ipcRenderer } from 'electron' |
| | | var stompClient: Stomp.Client | null=null |
| | | let stompClient: Stomp.Client | null=null |
| | | |
| | | import { userInfoStore } from '@/stores/userInfo' |
| | | import { patientInfoStore } from '@/stores/patient' |
| | |
| | | const sound = require("sound-play"); |
| | | |
| | | |
| | | let sockteNum=0 |
| | | |
| | | |
| | | interface device{ |
| | |
| | | return de.deviceName===resultInfo.deviceNumber |
| | | }) |
| | | console.log(deviceInfo,'更具设备number查找到的设备') |
| | | console.log(resultInfo) |
| | | if(deviceInfo!==undefined){ |
| | | switch(deviceInfo.deviceType){ |
| | | case '读卡器': |
| | | sockteStore().setdkqSockte( |
| | | { |
| | | deviceName:resultInfo.deviceNumber, |
| | | type:"读卡器", |
| | | result:resultInfo.result, |
| | | resultTime:resultInfo.resultTime, |
| | | state:2 |
| | | } |
| | | ) |
| | | console.log('读卡器收到消息') |
| | | const res=JSON.parse(resultInfo.result) |
| | | if(res.clientCode!==null){ |
| | | sockteStore().setdkqSockte( |
| | | { |
| | | deviceName:resultInfo.deviceNumber, |
| | | type:"读卡器", |
| | | result:resultInfo.result, |
| | | resultTime:resultInfo.resultTime, |
| | | state:2 |
| | | } |
| | | ) |
| | | } |
| | | break |
| | | case "体重秤": |
| | | console.log(resultInfo,'体重秤') |
| | |
| | | { |
| | | deviceName:resultInfo.deviceNumber, |
| | | type:"体重秤", |
| | | result:resultInfo.result, |
| | | result:Number(resultInfo.result).toString(), |
| | | resultTime:resultInfo.resultTime, |
| | | state:2 |
| | | } |
| | |
| | | sockteStore().setweightState(resultInfo.status) |
| | | break |
| | | case "血压计": |
| | | sockteStore().setxyjSockte( |
| | | { |
| | | deviceName:resultInfo.deviceName, |
| | | type:"血压计", |
| | | result:resultInfo.result, |
| | | resultTime:resultInfo.resultTime, |
| | | state:0 |
| | | } |
| | | ) |
| | | sockteStore().setXtjState(resultInfo.status) |
| | | break |
| | | default: |
| | | console.log('有配置类型没有匹配') |
| | |
| | | |
| | | } |
| | | const writePatient=(resultInfo:any)=>{ |
| | | // 给一个时间变化 |
| | | const da=new Date().toTimeString() |
| | | console.log(da) |
| | | const info={ |
| | | id:resultInfo.patientInfo===null?0:resultInfo.patientInfo.id, |
| | | code:resultInfo.patientInfo===null?'':resultInfo.patientInfo.code, |
| | | name:resultInfo.patientInfo===null?0:resultInfo.patientInfo.patientName, |
| | | patientAvatarIcon:resultInfo.patientInfo===null?0:resultInfo.patientInfo.patientAvatarIcon, |
| | | name:resultInfo.patientInfo===null?'':resultInfo.patientInfo.patientName, |
| | | patientAvatarIcon:resultInfo.patientInfo===null?'':resultInfo.patientInfo.patientAvatarIcon, |
| | | deviceCode:resultInfo.deviceCode===null?"":resultInfo.deviceCode, |
| | | hemoCode:resultInfo.hemoCode===null?"":resultInfo.hemoCode, |
| | | pureWeight:resultInfo.pureWeight===null?"":resultInfo.pureWeight |
| | | pureWeight:resultInfo.pureWeight===null?"":resultInfo.pureWeight, |
| | | datetime:da |
| | | } |
| | | // 写入vuex里 |
| | | patientInfoStore().setpatientInfo(info) |
| | | console.log('播放声音') |
| | | // sound.play("https://dhcdn.leon056.com/hemo/autoselfsign/step2.mp3") |
| | | |
| | | |
| | | } |
| | | |
| | | // 订阅结果事件返回函数 |
| | | const callback = function(message:any) { |
| | | console.log('接收到数据-----',message.body) |
| | | if (message.body!==undefined) { |
| | | const data=JSON.parse(message.body) |
| | | writeResult(data) |
| | |
| | | |
| | | } |
| | | } |
| | | var isErrConnectBackCalled = false; |
| | | const connectCallback=function(){ |
| | | const pcName= os.hostname() |
| | | isErrConnectBackCalled = true |
| | | const pcName= sockteStore().pcName |
| | | console.log("链接成功",stompClient,pcName) |
| | | sockteStore().setsockteIsLink(true) |
| | | // 订阅患者信息服务 |
| | | if(stompClient!==null){ |
| | | // 订阅患者信息事件 |
| | | stompClient.subscribe(`/queue/patient/info/${pcName}`,PatientCallback) |
| | | // 订阅配置文件事件 |
| | | stompClient.subscribe(`/queue/workstation/config/set/${clientCode}/${pcName}`,configCallback) |
| | | // 发送配置文件到服务端 |
| | | stompClient.send(`/app/workstation/config/set/${clientCode}/${pcName}`,{},JSON.stringify({"clientCode":clientCode,"machineName":pcName})) |
| | | |
| | | } |
| | | console.log("链接成功",stompClient,pcName) |
| | | // 更新sockte链接状态 |
| | | sockteStore().setsockteIsLink(true) |
| | | console.log(sockteStore().isLink) |
| | | console.log(devices) |
| | | if(devices!==undefined&&devices.length>0){ |
| | | devices.forEach(de=>{ |
| | | if(stompClient!==null){ |
| | | stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/result`,callback) |
| | | // /queue/{clientCode}/{deviceName}/keepalive |
| | | // stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/keepalive`,callbackState) |
| | | stompClient.send(`/app/device/request/${clientCode}/${de.deviceName}`, {}, JSON.stringify({"deviceNumber":de.deviceName})); |
| | | |
| | | } |
| | | }) |
| | | } |
| | | // sockte订阅服务关闭完全有post 来代替 |
| | | // if(devices!==undefined &&devices!=null&&devices.length>0){ |
| | | // // 更新sockte链接状态 |
| | | // sockteStore().setsockteIsLink(true) |
| | | // console.log(sockteStore().isLink) |
| | | // console.log(devices) |
| | | // if(devices!==undefined&&devices!=null &&devices!=null &&devices.length>0){ |
| | | // devices.forEach(de=>{ |
| | | // if(stompClient!==null){ |
| | | // console.log() |
| | | // stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/result`,callback) |
| | | // stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/keepalive`,callbackState) |
| | | // stompClient.send(`/app/device/request/${clientCode}/${de.deviceName}`, {}, JSON.stringify({"deviceNumber":de.deviceName})); |
| | | // } |
| | | // }) |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | const error_callback=function(error:any){ |
| | | console.log('链接错误',error); |
| | | sockteStore().setsockteIsLink(false) |
| | | setTimeout(()=>{ |
| | | console.log('10秒之后重连') |
| | | console.log(devices,'设备列表') |
| | | console.log('60秒之后重连',sockteNum++) |
| | | const socket = new WebSocket('ws://hemobs.icoldchain.cn/broadcast') |
| | | stompClient = Stomp.over(socket) |
| | | stompClient.connect({}, connectCallback,error_callback) |
| | | |
| | | },10000) |
| | | stompClient?.disconnect(()=>{ |
| | | console.log("disconnected!"); |
| | | stompClient = Stomp.over(socket) |
| | | stompClient.connect({}, connectCallback,error_callback) |
| | | },{}) |
| | | },60000) |
| | | } |
| | | // 创建客户端链接 |
| | | const creatorClient=(devices2:any,clientCode2:any)=>{ |
| | | devices=devices2 |
| | | clientCode=clientCode2 |
| | | console.log(devices,'设备列表') |
| | | console.log(devices,'设备列表','chong') |
| | | const socket = new WebSocket('ws://hemobs.icoldchain.cn/broadcast') |
| | | stompClient = Stomp.over(socket) |
| | | stompClient.connect({}, connectCallback,error_callback) |
| | |
| | | * @param codeStr |
| | | */ |
| | | const sendPationCode=(codeStr:string)=>{ |
| | | const pcName= sockteStore().pcName |
| | | const mode={ |
| | | clientCode:clientCode, |
| | | queryCode:codeStr |
| | | } |
| | | if(stompClient!==null){ |
| | | stompClient.send(`/app/patient/info/get/${os.hostname()}`,{},JSON.stringify(mode)) |
| | | stompClient.send(`/app/patient/info/get/${pcName}`,{},JSON.stringify(mode)) |
| | | } |
| | | } |
| | | /** |
| | |
| | | stompClient.send(`/app/patient/info/set`,{},JSON.stringify(mode)) |
| | | } |
| | | } |
| | | export {creatorClient,sendPationCode,sendPationSet} |
| | | export {creatorClient,sendPationCode,sendPationSet,writeResult} |