|
@ -1,6 +1,8 @@
|
|
|
package com.yihu.jw.care.util;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.yihu.jw.care.dao.device.PatientDeviceDao;
|
|
|
import com.yihu.jw.care.dao.pushLog.BasePushRecordLogDao;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
@ -8,13 +10,17 @@ import com.yihu.jw.entity.care.device.DevicePatientDevice;
|
|
|
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
|
|
|
import com.yihu.jw.entity.log.BasePushRecordLogEntity;
|
|
|
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
|
|
|
import com.yihu.jw.im.util.ImUtil;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
@ -41,6 +47,11 @@ public class DeviceLostMessageUtil {
|
|
|
private String wxId;
|
|
|
@Autowired
|
|
|
BasePushRecordLogDao basePushRecordLogDao;
|
|
|
@Autowired
|
|
|
private ImUtil imUtil;
|
|
|
|
|
|
@Autowired
|
|
|
private RestTemplate restTemplate;
|
|
|
|
|
|
|
|
|
/**
|
|
@ -150,6 +161,7 @@ public class DeviceLostMessageUtil {
|
|
|
* 设备离通知-用户自己
|
|
|
* @param devices
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void deviceLostMessagePatient(List<String> devices){
|
|
|
List<SystemMessageDO> messageDOS = new ArrayList<>();
|
|
|
String content = "{name}{sex}您好,您的{device}设备已离线,请保持设备连接通畅。";
|
|
@ -162,10 +174,12 @@ public class DeviceLostMessageUtil {
|
|
|
|
|
|
|
|
|
List<Map<String,Object>> patientList = jdbcTemplate.queryForList(sql);
|
|
|
System.out.println(devices);
|
|
|
//所有居民的设备
|
|
|
for (Map<String, Object> patient : patientList) {
|
|
|
String deviceSns = patient.get("deviceSn").toString();
|
|
|
String[] deviceSplit = deviceSns.split(",");
|
|
|
System.out.println(patient.get("id"));
|
|
|
String deivceName = "";
|
|
|
for (String deviceSn : deviceSplit) {
|
|
|
//离线的设备 offLineDevice
|
|
@ -176,12 +190,14 @@ public class DeviceLostMessageUtil {
|
|
|
systemMessageDao.delete(sendMessageBefore);
|
|
|
}
|
|
|
String deviceInfoSql = "SELECT device_sn,device_name,category_code FROM wlyy_patient_device WHERE device_sn = '"+offLineDeviceSn+"'";
|
|
|
DevicePatientDevice devicePatientDevice = jdbcTemplate.queryForObject(deviceInfoSql, new BeanPropertyRowMapper<>(DevicePatientDevice.class));
|
|
|
System.out.println("SN吗 "+offLineDeviceSn);
|
|
|
List<DevicePatientDevice> query = jdbcTemplate.query(deviceInfoSql, new BeanPropertyRowMapper<>(DevicePatientDevice.class));
|
|
|
if (StringUtils.isNotBlank(deivceName)){
|
|
|
deivceName+=devicePatientDevice.getDeviceName();
|
|
|
deivceName+=","+query.get(0).getDeviceName();
|
|
|
}else {
|
|
|
deivceName+=","+devicePatientDevice.getAgentName();
|
|
|
deivceName+= query.get(0).getDeviceName();
|
|
|
}
|
|
|
System.out.println(deivceName);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@ -191,7 +207,6 @@ public class DeviceLostMessageUtil {
|
|
|
sContent = sContent.replace("{name}",patient.get("name").toString());
|
|
|
sContent = sContent.replace("{sex}",Integer.parseInt(patient.get("sex").toString())==1?"大爷":"大妈");
|
|
|
sContent = sContent.replace("{device}",deivceName);
|
|
|
|
|
|
SystemMessageDO messageDO = new SystemMessageDO();
|
|
|
messageDO.setTitle("设备离线通知");
|
|
|
messageDO.setContent(sContent);
|
|
@ -206,15 +221,17 @@ public class DeviceLostMessageUtil {
|
|
|
messageDO.setDel("1");
|
|
|
messageDO.setCreateTime(new Date());
|
|
|
messageDO.setSenderPhoto(patient.get("photo").toString());
|
|
|
messageDO.setAudioUrl(audioUrl(content));
|
|
|
messageDOS.add(messageDO);
|
|
|
}
|
|
|
|
|
|
|
|
|
//socket推送
|
|
|
patientMessageSocket(messageDO);
|
|
|
}
|
|
|
}
|
|
|
if (messageDOS.size()>0){
|
|
|
BasePushRecordLogEntity logEntity = new BasePushRecordLogEntity();
|
|
|
logEntity.setContent(content);
|
|
|
logEntity.setPushType("1");
|
|
|
logEntity.setPushType("3");
|
|
|
logEntity.setSendTime(new Date());
|
|
|
logEntity.setNum(messageDOS.size());
|
|
|
logEntity.setStatus(1);
|
|
@ -224,7 +241,6 @@ public class DeviceLostMessageUtil {
|
|
|
logEntity.setMessageType(6);
|
|
|
systemMessageDao.save(messageDOS);
|
|
|
basePushRecordLogDao.save(logEntity);
|
|
|
systemMessageDao.save(messageDOS);
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -234,6 +250,8 @@ public class DeviceLostMessageUtil {
|
|
|
* @param patientList
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
public void watchOffWear(List<JSONObject> patientList){
|
|
|
List<SystemMessageDO> messageDOS = new ArrayList<>();
|
|
|
String contentOne = "{name}{sex} 监测到您没有佩戴手表,建议正确佩戴手表,方便我们对您进行照护。";
|
|
@ -244,6 +262,7 @@ public class DeviceLostMessageUtil {
|
|
|
contentTwo = contentTwo.replace("{name}",jsonObject.getString("name"));
|
|
|
contentTwo.replace("{sex}",1==jsonObject.getInteger("sex")?"大爷":"大妈");
|
|
|
|
|
|
String s = audioUrl(contentTwo);
|
|
|
messageDO.setTitle("设备未佩戴通知");
|
|
|
messageDO.setContent(contentTwo);
|
|
|
messageDO.setType("991");
|
|
@ -257,13 +276,21 @@ public class DeviceLostMessageUtil {
|
|
|
messageDO.setDel("1");
|
|
|
messageDO.setCreateTime(new Date());
|
|
|
messageDO.setSenderPhoto(jsonObject.getString("photo"));
|
|
|
messageDO.setAudioUrl(s);
|
|
|
messageDOS.add(messageDO);
|
|
|
|
|
|
JSONObject message = new JSONObject();
|
|
|
message.put("title","设备未佩戴通知");
|
|
|
message.put("type","991");
|
|
|
message.put("content",contentTwo);
|
|
|
message.put("audioUrl",s);
|
|
|
message.put("content_type",999);
|
|
|
imUtil.sendPatientSystemMessage(jsonObject.getString("patient"), JSON.toJSONString(message, SerializerFeature.WriteMapNullValue));
|
|
|
}
|
|
|
if (messageDOS.size() > 0) {
|
|
|
BasePushRecordLogEntity logEntity = new BasePushRecordLogEntity();
|
|
|
logEntity.setContent(contentOne);
|
|
|
logEntity.setPushType("1");
|
|
|
logEntity.setPushType("3");
|
|
|
logEntity.setSendTime(new Date());
|
|
|
logEntity.setNum(messageDOS.size());
|
|
|
logEntity.setStatus(1);
|
|
@ -279,6 +306,17 @@ public class DeviceLostMessageUtil {
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void patientMessageSocket(SystemMessageDO messageDOWatch){
|
|
|
JSONObject message = new JSONObject();
|
|
|
message.put("title",messageDOWatch.getTitle());
|
|
|
message.put("type",messageDOWatch.getType());
|
|
|
message.put("content",messageDOWatch.getContent());
|
|
|
message.put("audioUrl",messageDOWatch.getAudioUrl());
|
|
|
message.put("content_type",999);
|
|
|
imUtil.sendPatientSystemMessage(messageDOWatch.getReceiver(), JSON.toJSONString(message, SerializerFeature.WriteMapNullValue));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 手表 报警器 电量低通知
|
|
|
* @param patientList
|
|
@ -298,52 +336,65 @@ public class DeviceLostMessageUtil {
|
|
|
for (JSONObject jsonObject : patientList) {
|
|
|
switch (jsonObject.getInteger("category_code")){
|
|
|
case 4:
|
|
|
SystemMessageDO messageDOWatch = new SystemMessageDO();
|
|
|
messageDOWatch.setTitle("设备电量低通知");
|
|
|
messageDOWatch.setContent(watchContent);
|
|
|
messageDOWatch.setType("992");
|
|
|
messageDOWatch.setIsRead("0");
|
|
|
messageDOWatch.setSender("system");
|
|
|
messageDOWatch.setSenderName("设备电量通知助手");
|
|
|
messageDOWatch.setReceiver(jsonObject.getString("patient"));
|
|
|
messageDOWatch.setReceiverName(jsonObject.getString("name"));
|
|
|
messageDOWatch.setOver("1");
|
|
|
// messageDO.setData(deviceName+"离线");
|
|
|
messageDOWatch.setDel("1");
|
|
|
messageDOWatch.setCreateTime(new Date());
|
|
|
messageDOWatch.setSenderPhoto(jsonObject.getString("photo"));
|
|
|
messageDOSWatch.add(messageDOWatch);
|
|
|
watchSize+=1;
|
|
|
if (StringUtils.isNotBlank(watchName)){
|
|
|
watchName+=","+jsonObject.getString("patient");
|
|
|
}else {
|
|
|
watchName+=jsonObject.getString("patient");
|
|
|
if (messageOnOff(3)){
|
|
|
|
|
|
//文字转语音
|
|
|
String url = audioUrl(watchContent);
|
|
|
|
|
|
SystemMessageDO messageDOWatch = new SystemMessageDO();
|
|
|
messageDOWatch.setTitle("设备电量低通知");
|
|
|
messageDOWatch.setContent(watchContent);
|
|
|
messageDOWatch.setType("992");
|
|
|
messageDOWatch.setIsRead("0");
|
|
|
messageDOWatch.setSender("system");
|
|
|
messageDOWatch.setSenderName("设备电量通知助手");
|
|
|
messageDOWatch.setReceiver(jsonObject.getString("patient"));
|
|
|
messageDOWatch.setReceiverName(jsonObject.getString("name"));
|
|
|
messageDOWatch.setOver("1");
|
|
|
// messageDO.setData(deviceName+"离线");
|
|
|
messageDOWatch.setDel("1");
|
|
|
messageDOWatch.setCreateTime(new Date());
|
|
|
messageDOWatch.setSenderPhoto(jsonObject.getString("photo"));
|
|
|
messageDOWatch.setAudioUrl(url);
|
|
|
messageDOSWatch.add(messageDOWatch);
|
|
|
watchSize+=1;
|
|
|
if (StringUtils.isNotBlank(watchName)){
|
|
|
watchName+=","+jsonObject.getString("name");
|
|
|
}else {
|
|
|
watchName+=jsonObject.getString("name");
|
|
|
}
|
|
|
/*socket 推送*/
|
|
|
patientMessageSocket(messageDOWatch);
|
|
|
}
|
|
|
break;
|
|
|
case 7:
|
|
|
SystemMessageDO messageDO = new SystemMessageDO();
|
|
|
messageDO.setTitle("设备电量低通知");
|
|
|
messageDO.setContent(SosContent);
|
|
|
messageDO.setType("993");
|
|
|
messageDO.setIsRead("0");
|
|
|
messageDO.setSender("system");
|
|
|
messageDO.setSenderName("设备电量通知助手");
|
|
|
messageDO.setReceiver(jsonObject.getString("patient"));
|
|
|
messageDO.setReceiverName(jsonObject.getString("name"));
|
|
|
messageDO.setOver("1");
|
|
|
// messageDO.setData(deviceName+"离线");
|
|
|
messageDO.setDel("1");
|
|
|
messageDO.setCreateTime(new Date());
|
|
|
messageDO.setSenderPhoto(jsonObject.getString("photo"));
|
|
|
messageDOSSOS.add(messageDO);
|
|
|
SOSSize+=1;
|
|
|
if (StringUtils.isNotBlank(SOSName)){
|
|
|
SOSName+=","+jsonObject.getString("patient");
|
|
|
}else {
|
|
|
SOSName+=jsonObject.getString("patient");
|
|
|
if (messageOnOff(4)) {
|
|
|
SystemMessageDO messageDO = new SystemMessageDO();
|
|
|
messageDO.setTitle("设备电量低通知");
|
|
|
messageDO.setContent(SosContent);
|
|
|
messageDO.setType("993");
|
|
|
messageDO.setIsRead("0");
|
|
|
messageDO.setSender("system");
|
|
|
messageDO.setSenderName("设备电量通知助手");
|
|
|
messageDO.setReceiver(jsonObject.getString("patient"));
|
|
|
messageDO.setReceiverName(jsonObject.getString("name"));
|
|
|
messageDO.setOver("1");
|
|
|
// messageDO.setData(deviceName+"离线");
|
|
|
messageDO.setDel("1");
|
|
|
messageDO.setCreateTime(new Date());
|
|
|
messageDO.setSenderPhoto(jsonObject.getString("photo"));
|
|
|
messageDO.setAudioUrl(audioUrl(SosContent));
|
|
|
messageDOSSOS.add(messageDO);
|
|
|
SOSSize += 1;
|
|
|
if (StringUtils.isNotBlank(SOSName)) {
|
|
|
SOSName += "," + jsonObject.getString("name");
|
|
|
} else {
|
|
|
SOSName += jsonObject.getString("patient");
|
|
|
}
|
|
|
/*socket 推送*/
|
|
|
patientMessageSocket(messageDO);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -351,7 +402,7 @@ public class DeviceLostMessageUtil {
|
|
|
if (messageDOSWatch.size() > 0) {
|
|
|
BasePushRecordLogEntity logEntity = new BasePushRecordLogEntity();
|
|
|
logEntity.setContent(watchContent);
|
|
|
logEntity.setPushType("1");
|
|
|
logEntity.setPushType("3");
|
|
|
logEntity.setSendTime(new Date());
|
|
|
logEntity.setNum(watchSize);
|
|
|
logEntity.setStatus(1);
|
|
@ -366,7 +417,7 @@ public class DeviceLostMessageUtil {
|
|
|
if (messageDOSSOS.size() > 0) {
|
|
|
BasePushRecordLogEntity logEntity = new BasePushRecordLogEntity();
|
|
|
logEntity.setContent(SosContent);
|
|
|
logEntity.setPushType("1");
|
|
|
logEntity.setPushType("3");
|
|
|
logEntity.setSendTime(new Date());
|
|
|
logEntity.setNum(SOSSize);
|
|
|
logEntity.setStatus(1);
|
|
@ -428,9 +479,9 @@ public class DeviceLostMessageUtil {
|
|
|
for (int i = 0; i < patients.size(); i++) {
|
|
|
String name =patients.get(i).get("name").toString();
|
|
|
if (StringUtils.isNotBlank(names)) {
|
|
|
names += name;
|
|
|
} else {
|
|
|
names += "," + name;
|
|
|
} else {
|
|
|
names += name;
|
|
|
}
|
|
|
}
|
|
|
} else if (type == 2) {
|
|
@ -438,9 +489,9 @@ public class DeviceLostMessageUtil {
|
|
|
for (int i = 0; i < patients.size(); i++) {
|
|
|
String name = patients.get(i).getString("name");
|
|
|
if (StringUtils.isNotBlank(names)) {
|
|
|
names += name;
|
|
|
} else {
|
|
|
names += "," + name;
|
|
|
} else {
|
|
|
names += name;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@ -448,5 +499,23 @@ public class DeviceLostMessageUtil {
|
|
|
}
|
|
|
|
|
|
|
|
|
//开关判断
|
|
|
public Boolean messageOnOff(Integer code){
|
|
|
String sql = "SELECT py_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'pushOnOff' AND dict_code ='"+code+"' ";
|
|
|
String onOff= jdbcTemplate.queryForObject(sql,String.class);
|
|
|
Boolean kg = Boolean.parseBoolean(onOff);
|
|
|
return kg;
|
|
|
}
|
|
|
|
|
|
public String audioUrl(String content){
|
|
|
ResponseEntity<String> forEntity = restTemplate.getForEntity("http://svr-cloud-care:10301/common/open/wordToVoice?text={1}", String.class, content);
|
|
|
JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody());
|
|
|
if (jsonObject.getInteger("status") == 200){
|
|
|
return jsonObject.getString("message");
|
|
|
}else {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|