|  | @ -36,6 +36,8 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SystemMessageDao systemMessageDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SystemPushMessageUtil systemPushMessageUtil;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private PatientDeviceDao patientDeviceDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
	
		
			
				|  | @ -164,6 +166,7 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |     @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |     public void deviceLostMessagePatient(List<String> devices){
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messageDOS = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String content = "{name}{sex}您好,您的{device}设备已离线,请保持设备连接通畅。";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -201,11 +204,11 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(deivceName)){
 | 
	
		
			
				|  |  |             if (StringUtils.isNotBlank(deivceName)) {
 | 
	
		
			
				|  |  |                 String sContent = content;
 | 
	
		
			
				|  |  |                 sContent = sContent.replace("{name}",patient.get("name").toString());
 | 
	
		
			
				|  |  |                 sContent = sContent.replace("{sex}",Integer.parseInt(patient.get("sex").toString())==1?"大爷":"大妈");
 | 
	
		
			
				|  |  |                 sContent = sContent.replace("{device}",deivceName);
 | 
	
		
			
				|  |  |                 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);
 | 
	
	
		
			
				|  | @ -216,17 +219,18 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |                 messageDO.setReceiver(patient.get("id").toString());
 | 
	
		
			
				|  |  |                 messageDO.setReceiverName(patient.get("name").toString());
 | 
	
		
			
				|  |  |                 messageDO.setOver("1");
 | 
	
		
			
				|  |  |                // messageDO.setData(deviceName+"离线");
 | 
	
		
			
				|  |  |                 // messageDO.setData(deviceName+"离线");
 | 
	
		
			
				|  |  |                 messageDO.setDel("1");
 | 
	
		
			
				|  |  |                 messageDO.setUserType(1);
 | 
	
		
			
				|  |  |                 messageDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                 messageDO.setSenderPhoto(patient.get("photo").toString());
 | 
	
		
			
				|  |  |                 messageDO.setAudioUrl(audioUrl(sContent));
 | 
	
		
			
				|  |  |                 messageDOS.add(messageDO);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //socket推送
 | 
	
		
			
				|  |  |                 patientMessageSocket(messageDO,deviceSnS);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |                 patientMessageSocket(messageDO, deviceSnS);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |         if (messageDOS.size()>0){
 | 
	
		
			
				|  |  |             BasePushRecordLogEntity logEntity = new BasePushRecordLogEntity();
 | 
	
		
			
				|  |  |             logEntity.setContent(content);
 | 
	
	
		
			
				|  | @ -244,6 +248,12 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private List<Map<String, Object>> faminlyPatientList(String patientId){
 | 
	
		
			
				|  |  |         String faminlySql = "SELECT p.id,p.name,p.openid FROM base_patient p INNER JOIN base_patient_family_member m ON p.id = m.patient WHERE m.patient = '"+patientId+"' AND m.del AND p.archive_type = 3 ";
 | 
	
		
			
				|  |  |         return jdbcTemplate.queryForList(faminlySql);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 手表未佩戴居民通知
 | 
	
		
			
				|  |  |      * @param patientList
 | 
	
	
		
			
				|  | @ -251,15 +261,17 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |     public void watchOffWear(List<JSONObject> patientList){
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messageDOS = new ArrayList<>();
 | 
	
		
			
				|  |  |         List<SystemMessageDO> familyMessageDOS = new ArrayList<>();
 | 
	
		
			
				|  |  |         String contentOne = "{name}{sex} 监测到您没有佩戴手表,建议正确佩戴手表,方便我们对您进行照护。";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String faminlyContent = "您的亲属未正确佩戴手表,为防止失联,请正确佩戴手表。";
 | 
	
		
			
				|  |  |         for (JSONObject jsonObject : patientList) {
 | 
	
		
			
				|  |  |             SystemMessageDO messageDO = new SystemMessageDO();
 | 
	
		
			
				|  |  |             String contentTwo = contentOne;
 | 
	
		
			
				|  |  |             contentTwo = contentTwo.replace("{name}",jsonObject.getString("name"));
 | 
	
		
			
				|  |  |             contentTwo = contentTwo.replace("{sex}",1==jsonObject.getInteger("sex")?"大爷":"大妈");
 | 
	
		
			
				|  |  |             contentTwo = contentTwo.replace("{sex}",1==jsonObject.getInteger("sex")?"爷爷":"奶奶");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             String s = audioUrl(contentTwo);
 | 
	
		
			
				|  |  |             messageDO.setTitle("设备未佩戴通知");
 | 
	
	
		
			
				|  | @ -278,6 +290,42 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |             messageDO.setAudioUrl(s);
 | 
	
		
			
				|  |  |             messageDOS.add(messageDO);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //家属
 | 
	
		
			
				|  |  |             List<Map<String, Object>> familyListMap = faminlyPatientList(jsonObject.getString("patient"));
 | 
	
		
			
				|  |  |             System.out.println("家属数量:" + familyListMap.size());
 | 
	
		
			
				|  |  |             if (familyListMap.size() > 0) {
 | 
	
		
			
				|  |  |                 for (Map<String, Object> familys : familyListMap) {
 | 
	
		
			
				|  |  |                     if (systemPushMessageUtil.familyMessagePushOnOff(familys.get("patient").toString(), 2)) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         String familyMessageName = "{ \"name\":\""+jsonObject.getString("name")+"\"," +
 | 
	
		
			
				|  |  |                                 "  \"deviceName\":\"智能手表\"," +
 | 
	
		
			
				|  |  |                                 "  \"patient\":\""+jsonObject.getString("patient")+"\"," +
 | 
	
		
			
				|  |  |                                 "  \"deviceSn\":\""+jsonObject.getString("device_sn")+"\" " +
 | 
	
		
			
				|  |  |                                 "}\n";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         SystemMessageDO messageFamily = new SystemMessageDO();
 | 
	
		
			
				|  |  |                         messageFamily.setTitle("智能手表");
 | 
	
		
			
				|  |  |                         messageFamily.setContent(faminlyContent);
 | 
	
		
			
				|  |  |                         messageFamily.setType("991");
 | 
	
		
			
				|  |  |                         messageFamily.setIsRead("0");
 | 
	
		
			
				|  |  |                         messageFamily.setSender("system");
 | 
	
		
			
				|  |  |                         messageFamily.setUserType(3);
 | 
	
		
			
				|  |  |                         messageFamily.setSenderName("设备未佩戴通知助手");
 | 
	
		
			
				|  |  |                         messageFamily.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                         messageFamily.setReceiver(familys.get("patient").toString());
 | 
	
		
			
				|  |  |                         messageFamily.setReceiverName(familys.get("name").toString());
 | 
	
		
			
				|  |  |                         messageFamily.setData(familyMessageName);
 | 
	
		
			
				|  |  |                         messageFamily.setOver("1");
 | 
	
		
			
				|  |  |                         messageFamily.setDel("1");
 | 
	
		
			
				|  |  |                         familyMessageDOS.add(messageFamily);
 | 
	
		
			
				|  |  |                         delDeviceMessage(familys.get("patient").toString(), "991");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             JSONObject message = new JSONObject();
 | 
	
		
			
				|  |  |             message.put("title","设备未佩戴通知");
 | 
	
		
			
				|  |  |             message.put("type","991");
 | 
	
	
		
			
				|  | @ -300,9 +348,14 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |             logEntity.setMessageType(3);
 | 
	
		
			
				|  |  |             systemMessageDao.save(messageDOS);
 | 
	
		
			
				|  |  |             basePushRecordLogDao.save(logEntity);
 | 
	
		
			
				|  |  |             systemMessageDao.save(familyMessageDOS);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |     public void delDeviceMessage(String patientId,String type){
 | 
	
		
			
				|  |  |         String sql =  "delete from base_system_message where user_type = 3 and receiver = '"+patientId+"' and type ='"+type+"'  ";
 | 
	
		
			
				|  |  |         jdbcTemplate.update(sql);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -331,10 +384,14 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void watchRemainingPower(List<JSONObject> patientList){
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messageDOSWatch = new ArrayList<>();
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messageDOSWatchFamily = new ArrayList<>();
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messageDOSSOS = new ArrayList<>();
 | 
	
		
			
				|  |  |         String watchContent = "手表电量低,请充电";
 | 
	
		
			
				|  |  |         String watchContent = "<patientName><sex> 您的手表电量低,请充电";
 | 
	
		
			
				|  |  |         String SosContent = "报警器电量低,请充电";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         StringBuffer watchFamilyContent = new StringBuffer("您的亲属智能手表电量低,为防止失联,请及时充电");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Integer watchSize = 0;
 | 
	
		
			
				|  |  |         String watchName = "";
 | 
	
		
			
				|  |  |         Integer SOSSize = 0;
 | 
	
	
		
			
				|  | @ -345,13 +402,14 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |             switch (jsonObject.getInteger("category_code")){
 | 
	
		
			
				|  |  |                 case 4:
 | 
	
		
			
				|  |  |                     if (messageOnOff(3)){
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         String newContent = watchContent.replace("<patientName>",jsonObject.getString("name"));
 | 
	
		
			
				|  |  |                         newContent = newContent.replace("<sex>",1==jsonObject.getInteger("sex")?"爷爷":"奶奶");
 | 
	
		
			
				|  |  |                         //文字转语音
 | 
	
		
			
				|  |  |                         String url = audioUrl(watchContent);
 | 
	
		
			
				|  |  |                         String url = audioUrl(newContent);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         SystemMessageDO messageDOWatch = new SystemMessageDO();
 | 
	
		
			
				|  |  |                         messageDOWatch.setTitle("设备电量低通知");
 | 
	
		
			
				|  |  |                         messageDOWatch.setContent(watchContent);
 | 
	
		
			
				|  |  |                         messageDOWatch.setContent(newContent);
 | 
	
		
			
				|  |  |                         messageDOWatch.setType("992");
 | 
	
		
			
				|  |  |                         messageDOWatch.setIsRead("0");
 | 
	
		
			
				|  |  |                         messageDOWatch.setSender("system");
 | 
	
	
		
			
				|  | @ -371,8 +429,41 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |                         }else {
 | 
	
		
			
				|  |  |                             watchName+=jsonObject.getString("name");
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         List<Map<String, Object>> familyList = faminlyPatientList(jsonObject.getString("patient"));
 | 
	
		
			
				|  |  |                         if (familyList.size() > 0) {
 | 
	
		
			
				|  |  |                             for (Map<String, Object> map : familyList) {
 | 
	
		
			
				|  |  |                                 if (systemPushMessageUtil.familyMessagePushOnOff(map.get("id").toString(), 2)) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                                     String familyMessageName = "{ \"name\":\""+map.get("name").toString()+"\"," +
 | 
	
		
			
				|  |  |                                             "  \"deviceName\":\"智能手表\"," +
 | 
	
		
			
				|  |  |                                             "  \"patient\":\""+map.get("id").toString()+"\"," +
 | 
	
		
			
				|  |  |                                             "  \"deviceSn\":\""+jsonObject.getString("device_sn")+"\" " +
 | 
	
		
			
				|  |  |                                             "}\n";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                                     SystemMessageDO messageDOWatchFamily = new SystemMessageDO();
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setCreateTime(new Date());
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setIsRead("0");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setUserType(3);
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setType("992");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setOver("1");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setDel("1");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setSender("system");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setSenderName("设备电量通知助手");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setTitle("智能手表");
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setReceiver(map.get("patient").toString());
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setReceiverName(map.get("name").toString());
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setData(familyMessageName);
 | 
	
		
			
				|  |  |                                     messageDOWatchFamily.setContent(watchFamilyContent.toString());
 | 
	
		
			
				|  |  |                                     messageDOSWatchFamily.add(messageDOWatchFamily);
 | 
	
		
			
				|  |  |                                     delDeviceMessage(map.get("patient").toString(), "992");
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                         /*socket 推送*/
 | 
	
		
			
				|  |  |                         patientMessageSocket(messageDOWatch, jsonObject.getString("deviceSn"));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     break;
 | 
	
		
			
				|  |  |                 case 7:
 | 
	
	
		
			
				|  | @ -420,6 +511,7 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |             logEntity.setMessageType(4);
 | 
	
		
			
				|  |  |             systemMessageDao.save(messageDOSWatch);
 | 
	
		
			
				|  |  |             basePushRecordLogDao.save(logEntity);
 | 
	
		
			
				|  |  |             systemMessageDao.save(messageDOSWatchFamily);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (messageDOSSOS.size() > 0) {
 | 
	
	
		
			
				|  | @ -515,6 +607,8 @@ public class DeviceLostMessageUtil {
 | 
	
		
			
				|  |  |         return kg;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public String audioUrl(String content){
 | 
	
		
			
				|  |  |         ResponseEntity<String> forEntity = restTemplate.getForEntity("http://127.0.0.1:10301/common/open/wordToVoice?text={1}", String.class, content);
 | 
	
		
			
				|  |  |         JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody());
 |