Procházet zdrojové kódy

Merge branch 'dev' of chinawu123/wlyy2.0 into dev

chinawu123 před 2 roky
rodič
revize
65900af4b1

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/service/ManageMessagePush/ManageSystemPushMessageService.java

@ -156,7 +156,7 @@ public class ManageSystemPushMessageService {
        }
        if (StringUtils.isNotBlank(name)){
            sql +=" and name send_object like '%"+name+"%'";
            sql +=" and  send_object like '%"+name+"%'";
        }
        sql += " LIMIT  " + (page - 1) * pageSize + "," + pageSize + "";

+ 8 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/PatientMessageService.java

@ -15,6 +15,7 @@ import com.yihu.jw.entity.care.message.OrgNoticeDO;
import com.yihu.jw.entity.care.securitymonitoring.BaseEmergencyWarnLogDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.PageEnvelop;
@ -147,9 +148,15 @@ public class PatientMessageService {
        return emergencyAssistanceService.getBaiduWeather();
    }
    @Autowired
    private ImUtil imUtil;
    public List<Map<String,Object>> getSystemMessageListPad(String patient,String type){
        String sql = "SELECT id,type,title,sender_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,is_read,data,content,audio_url FROM base_system_message WHERE type IN ("+type+") and receiver = '"+patient+"'" +
        String sql = "SELECT id,type,title,sender_name,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time,is_read,data,content,audio_url " +
                " FROM base_system_message WHERE type IN ("+type+") and receiver = '"+patient+"'" +
                " AND del = 1  ORDER BY create_time DESC ";
        return  jdbcTemplate.queryForList(sql);
    }

+ 9 - 0
svr/svr-cloud-device/src/main/java/com/yihu/SvrCloudDeviceApplication.java

@ -4,8 +4,10 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.client.RestTemplate;
/**
 * Created with IntelliJ IDEA.
@ -27,4 +29,11 @@ public class SvrCloudDeviceApplication extends SpringBootServletInitializer {
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SvrCloudDeviceApplication.class);
    }
    @Bean//将RestTemplate注册到容器
    public RestTemplate RestTemplate(){
        return new RestTemplate();
    }
}

+ 57 - 42
svr/svr-cloud-device/src/main/java/com/yihu/jw/care/service/DeviceUploadService.java

@ -27,8 +27,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
@ -84,7 +86,8 @@ public class DeviceUploadService {
    private String wxId;
    @Autowired
    private PatientFamilyService patientFamilyService;
    @Autowired
    private RestTemplate restTemplate;
    public Result uploadDevicesData(String dataJson, HttpServletRequest request)throws Exception {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
@ -163,50 +166,62 @@ public class DeviceUploadService {
                        break;
                }
                if (StringUtils.isNotBlank(typeName)){
                    messageDO.setTitle(typeName);
                    messageDO.setType("42");//42体征设备测量
                    messageDO.setSender("system");
                    messageDO.setSenderName("养护助手");
                    messageDO.setRelationCode(result.getId()+"");
                    messageDO.setReceiver(patientDO.getId());
                    messageDO.setReceiverName(patientDO.getName());
                    messageDO.setOver("1");
                    messageDO.setCode(type);//与体征类型对应
                    JSONArray errorIndex = healthIndexUtil.verifyHealthIndex(Integer.parseInt(type),result.getValue1(),result.getValue2(),
                            result.getValue3(),result.getValue4(),result.getValue5(),result.getValue6(),
                            result.getValue7());
                    messageDO.setData(JSON.toJSONString(errorIndex,SerializerFeature.WriteNullStringAsEmpty));
                    messageDO.setDel("1");
                    messageDO.setCreateTime(new Date());
                    //推送socket
                    com.alibaba.fastjson.JSONObject message = new com.alibaba.fastjson.JSONObject();
                    message.put("title",typeName2);
                    message.put("code",messageDO.getCode());
                    message.put("content",messageDO.getData());
                    message.put("relation_code",messageDO.getRelationCode());
                    message.put("content_type",42);
                    message.put("content_notice","");
                    String content_notice = "";
                    for (int i=0;i<errorIndex.size();i++){
                        com.alibaba.fastjson.JSONObject tmp = errorIndex.getJSONObject(i);
                        if (0!=tmp.getInteger("error")){
                            result.setStatus(1);
                    String sql = "SELECT py_code FROM wlyy_hospital_sys_dict WHERE dict_name = 'pushOnOff' AND dict_code ='"+6+"' ";
                    String onOff= jdbcTemplate.queryForObject(sql,String.class);
                    Boolean kg = Boolean.parseBoolean(onOff);
                    if (kg) {
                        messageDO.setTitle(typeName);
                        messageDO.setType("42");//42体征设备测量
                        messageDO.setSender("system");
                        messageDO.setSenderName("养护助手");
                        messageDO.setRelationCode(result.getId() + "");
                        messageDO.setReceiver(patientDO.getId());
                        messageDO.setReceiverName(patientDO.getName());
                        messageDO.setOver("1");
                        ResponseEntity<String> forEntity = restTemplate.getForEntity("http://svr-cloud-care:10301/common/open/wordToVoice?text={1}", String.class, typeName);
                        com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(forEntity.getBody());
                        if (jsonObject.getInteger("status") == 200) {
                            messageDO.setAudioUrl(jsonObject.getString("message"));
                        }
                        if (1 == tmp.getInteger("error")){
                            content_notice += tmp.getString("indexName")+"、";
                        messageDO.setCode(type);//与体征类型对应
                        JSONArray errorIndex = healthIndexUtil.verifyHealthIndex(Integer.parseInt(type), result.getValue1(), result.getValue2(),
                                result.getValue3(), result.getValue4(), result.getValue5(), result.getValue6(),
                                result.getValue7());
                        messageDO.setData(JSON.toJSONString(errorIndex, SerializerFeature.WriteNullStringAsEmpty));
                        messageDO.setDel("1");
                        messageDO.setCreateTime(new Date());
                        //推送socket
                        com.alibaba.fastjson.JSONObject message = new com.alibaba.fastjson.JSONObject();
                        message.put("title", typeName2);
                        message.put("code", messageDO.getCode());
                        message.put("content", messageDO.getData());
                        message.put("relation_code", messageDO.getRelationCode());
                        message.put("content_type", 42);
                        message.put("content_notice", "");
                        String content_notice = "";
                        for (int i = 0; i < errorIndex.size(); i++) {
                            com.alibaba.fastjson.JSONObject tmp = errorIndex.getJSONObject(i);
                            if (0 != tmp.getInteger("error")) {
                                result.setStatus(1);
                            }
                            if (1 == tmp.getInteger("error")) {
                                content_notice += tmp.getString("indexName") + "、";
                            }
                        }
                        if (StringUtils.isNotBlank(content_notice)) {
                            content_notice = content_notice.substring(0, content_notice.length() - 1);
                            message.put("content_notice", "您的key1过高,请注意饮食,尽量食用少油少盐食物".replace("key1", content_notice));
                            messageDO.setContent("您的key1过高,请注意饮食,尽量食用少油少盐食物".replace("key1", content_notice));
                            dataPushLogUtil.updContactStatus(deviceSn, 1, true);
                        } else {
                            dataPushLogUtil.updContactStatus(deviceSn, 1, false);
                        }
                        patientHealthIndexDao.save(result);
                        systemMessageDao.save(messageDO);
                        imUtil.sendPatientSystemMessage(messageDO.getReceiver(), JSON.toJSONString(message, SerializerFeature.WriteMapNullValue));
                    }
                    if (StringUtils.isNotBlank(content_notice)){
                        content_notice = content_notice.substring(0,content_notice.length()-1);
                        message.put("content_notice","您的key1过高,请注意饮食,尽量食用少油少盐食物".replace("key1",content_notice));
                        messageDO.setContent("您的key1过高,请注意饮食,尽量食用少油少盐食物".replace("key1",content_notice));
                        dataPushLogUtil.updContactStatus(deviceSn,1,true);
                    }else{
                        dataPushLogUtil.updContactStatus(deviceSn,1,false);
                    }
                    patientHealthIndexDao.save(result);
                    systemMessageDao.save(messageDO);
                    imUtil.sendPatientSystemMessage(messageDO.getReceiver(),JSON.toJSONString(message,SerializerFeature.WriteMapNullValue));
                    //发送模板消息通知家属
                    List<Map<String,Object>> families = patientFamilyService.getPatientFamilyList(patientDO.getId(),"3");
                    if (families.size()>0){

+ 1 - 1
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/event/ApplicationEvent.java

@ -240,7 +240,7 @@ public class ApplicationEvent implements ApplicationListener<ContextRefreshedEve
            //手表未佩戴
            if (!quartzHelper.isExistJob("DEVICE_WATCH_OFF_WEAR_JOB")){
                String trigger = SystemConf.getInstance().getSystemProperties().getProperty("DEVICE_WATCH_OFF_WEAR_JOB");
                quartzHelper.addJob(DeviceOffLoneJob.class,trigger,"DEVICE_WATCH_OFF_WEAR_JOB",new HashMap<String, Object>() );
                quartzHelper.addJob(DeviceWatchOffWearJob.class,trigger,"DEVICE_WATCH_OFF_WEAR_JOB",new HashMap<String, Object>() );
                logger.info("DEVICE_WATCH_OFF_WEAR_JOB success");
            }else {
                logger.info("DEVICE_WATCH_OFF_WEAR_JOB exist");

+ 8 - 11
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/job/device/PressureGlucoseNotJob.java

@ -20,20 +20,17 @@ public class PressureGlucoseNotJob implements Job {
    @Autowired
    private PressureGlucoseNotService pressureGlucoseNotService;
    @Autowired
    private DeviceLostMessageUtil deviceLostMessageUtil;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        if (deviceLostMessageUtil.messageOnOff(6)) {
            logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job start");
            try {
                pressureGlucoseNotService.sendNotice();
                logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job end");
            }catch (Exception e){
                e.printStackTrace();
                logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job end===ERROE===,message:"+e.getMessage());
            }
        logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job start");
        try {
            pressureGlucoseNotService.sendNotice();
            logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job end");
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("BLOOD_PRESSURE_GLUCOSE_NOT_MEASURED job end===ERROE===,message:" + e.getMessage());
        }
    }
}

+ 49 - 16
svr/svr-cloud-job/src/main/java/com/yihu/jw/care/util/DeviceLostMessageUtil.java

@ -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,6 +10,7 @@ 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;
@ -44,6 +47,8 @@ public class DeviceLostMessageUtil {
    private String wxId;
    @Autowired
    BasePushRecordLogDao basePushRecordLogDao;
    @Autowired
    private ImUtil imUtil;
    @Autowired
    private RestTemplate restTemplate;
@ -218,6 +223,9 @@ public class DeviceLostMessageUtil {
                messageDO.setSenderPhoto(patient.get("photo").toString());
                messageDO.setAudioUrl(audioUrl(content));
                messageDOS.add(messageDO);
                //socket推送
                patientMessageSocket(messageDO);
            }
        }
        if (messageDOS.size()>0){
@ -242,6 +250,8 @@ public class DeviceLostMessageUtil {
     * @param patientList
     */
    public void watchOffWear(List<JSONObject> patientList){
        List<SystemMessageDO> messageDOS = new ArrayList<>();
        String contentOne = "{name}{sex} 监测到您没有佩戴手表,建议正确佩戴手表,方便我们对您进行照护。";
@ -252,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");
@ -265,9 +276,16 @@ public class DeviceLostMessageUtil {
            messageDO.setDel("1");
            messageDO.setCreateTime(new Date());
            messageDO.setSenderPhoto(jsonObject.getString("photo"));
            messageDO.setAudioUrl(audioUrl(contentTwo));
            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();
@ -288,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
@ -308,6 +337,10 @@ public class DeviceLostMessageUtil {
            switch (jsonObject.getInteger("category_code")){
                case 4:
                    if (messageOnOff(3)){
                        //文字转语音
                        String url = audioUrl(watchContent);
                        SystemMessageDO messageDOWatch = new SystemMessageDO();
                        messageDOWatch.setTitle("设备电量低通知");
                        messageDOWatch.setContent(watchContent);
@ -322,20 +355,20 @@ public class DeviceLostMessageUtil {
                        messageDOWatch.setDel("1");
                        messageDOWatch.setCreateTime(new Date());
                        messageDOWatch.setSenderPhoto(jsonObject.getString("photo"));
                        messageDOWatch.setAudioUrl(audioUrl(watchContent));
                        messageDOWatch.setAudioUrl(url);
                        messageDOSWatch.add(messageDOWatch);
                        watchSize+=1;
                        if (StringUtils.isNotBlank(watchName)){
                            watchName+=","+jsonObject.getString("patient");
                            watchName+=","+jsonObject.getString("name");
                        }else {
                            watchName+=jsonObject.getString("patient");
                            watchName+=jsonObject.getString("name");
                        }
                        break;
                    }else {
                        break;
                        /*socket 推送*/
                        patientMessageSocket(messageDOWatch);
                    }
                    break;
                case 7:
                    if (messageOnOff(4)){
                    if (messageOnOff(4)) {
                        SystemMessageDO messageDO = new SystemMessageDO();
                        messageDO.setTitle("设备电量低通知");
                        messageDO.setContent(SosContent);
@ -352,16 +385,16 @@ public class DeviceLostMessageUtil {
                        messageDO.setSenderPhoto(jsonObject.getString("photo"));
                        messageDO.setAudioUrl(audioUrl(SosContent));
                        messageDOSSOS.add(messageDO);
                        SOSSize+=1;
                        if (StringUtils.isNotBlank(SOSName)){
                            SOSName+=","+jsonObject.getString("patient");
                        }else {
                            SOSName+=jsonObject.getString("patient");
                        SOSSize += 1;
                        if (StringUtils.isNotBlank(SOSName)) {
                            SOSName += "," + jsonObject.getString("name");
                        } else {
                            SOSName += jsonObject.getString("patient");
                        }
                        break;
                    }else {
                        break;
                        /*socket 推送*/
                        patientMessageSocket(messageDO);
                    }
                    break;
            }
        }