瀏覽代碼

医养1.9.0服务端应用消息

liubing 2 年之前
父節點
當前提交
f2e031d5d7

+ 4 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java

@ -76,4 +76,8 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Modifying
    @Query("update SystemMessageDO m set m.isRead=1 ,m.over=0,m.data=?3 where m.type=?1 and m.relationCode=?2 ")
    void readByTypeAndRelationCode(String type,String relationCode,String data);
    @Modifying
    @Query("update SystemMessageDO s set s.del=0 where s.type=?1 and s.relationCode=?2 ")
    void delMessageByTypeAndRelationCode(String type,String relationCode);
}

+ 2 - 1
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/message/SystemMessageDO.java

@ -23,7 +23,8 @@ public class SystemMessageDO extends UuidIdentityEntity {
     * 体征设备测量系统消息 42
     * 设备离线系统消息 43   推送给家属 社工  助老员
     * 监护确认消息 44
     * 家属紧急预警系统消息 50
     * 工作提醒 45 (对应code 20紧急救助 22安防监护)
     * 家属紧急预警系统消息 50(对应code 20紧急救助 22安防监护)
     * 新生儿在线咨询 850
     * 老人在线咨询 851
     * 老人健康咨询 852

+ 15 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/message/DoctorMessageEndpoint.java

@ -32,7 +32,8 @@ public class DoctorMessageEndpoint extends EnvelopRestEndpoint {
    @GetMapping(value = "messages")
    @ApiOperation("应用消息")
    public ObjEnvelop messages(@ApiParam(name = "type", value = "消息类型 10床位申请,11安全监护,12紧急救助,13体征异常消息,14设备离线通知")
    public ObjEnvelop messages(@ApiParam(name = "type", value = "消息类型 10床位申请,11安全监护,12紧急救助," +
            "13体征异常消息,14设备离线通知,15工作提醒")
                               @RequestParam(value = "type", required = false) String type,
                               @ApiParam(name = "doctor", value = "doctor")
                               @RequestParam(value = "doctor", required = false) String doctor){
@ -127,6 +128,19 @@ public class DoctorMessageEndpoint extends EnvelopRestEndpoint {
        }
    }
    @GetMapping(value = "/getToDoWorkReminder")
    @ApiOperation("获取待办工作提醒")
    public PageEnvelop getToDoWorkReminder(@ApiParam(name="doctor",value = "医生ID,当前查看列表医生",required = true)
                                          @RequestParam(value = "doctor")String doctor,
                                          @RequestParam(value = "page")Integer page,
                                          @RequestParam(value = "pageSize")Integer pageSize){
        try {
            return doctorMessageService.getToDoWorkReminder(doctor,page,pageSize);
        }catch (Exception e){
            return failedPageEnvelopException(e);
        }
    }
    @PostMapping(value = "/updateMessageRead")
    @ApiOperation("已读消息")
    @ObserverRequired

+ 5 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/assistance/EmergencyAssistanceService.java

@ -944,6 +944,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        logTypeDO.setContent("已取消");
        logTypeDO.setType(6);
        logDao.save(logTypeDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        return result;
    }
@ -1065,6 +1067,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        imUtill.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
        emergencyAssistanceDao.save(assistanceDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        return getOrderDetail(orderId,null);
    }
@ -1322,6 +1326,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
            return result;
        }
        emergencyAssistanceDao.save(assistanceDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        //工单完成 给pc管理端推送完成信息
        JSONObject message = new JSONObject();

+ 44 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/message/DoctorMessageService.java

@ -26,6 +26,7 @@ import com.yihu.jw.restmodel.ResponseContant;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.entity.EntityUtils;
import org.apache.commons.lang3.StringUtils;
@ -178,6 +179,13 @@ public class DoctorMessageService {
            tmpObj = jdbcTemplate.queryForMap(sql);
            result.put("deviceLost",tmpObj);
        }
        if (typeNull||type.equals("15")){//工作提醒
            String sql = " select count(1) as 'all',type,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') create_time from base_system_message " +
                    " where type='45' and del=1 and receiver='"+doctor+"' order by create_time desc ";
            Map<String,Object> tmpObj = new HashMap<>();
            tmpObj = jdbcTemplate.queryForMap(sql);
            result.put("toDoWorkReminder",tmpObj);
        }
        return result;
    }
@ -362,6 +370,42 @@ public class DoctorMessageService {
        return maps;
    }
    public PageEnvelop<Map<String,Object>> getToDoWorkReminder(String doctor,Integer page,Integer pageSize){
        page = page>0?page-1:0;
        String sql = " select mess.id,p.id patientCode,p.name,p.idcard,p.birthday,p.sex,p.photo,residential_area,p.mobile, " +
                " '紧急呼叫' as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`,mess.`code` orderType " +
                "  from base_system_message mess INNER JOIN base_emergency_assistance_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=20 and mess.receiver='"+doctor+"'  " +
                "union ALL " +
                "select mess.id,p.id patientCode,p.name,p.idcard,p.birthday,p.sex,p.photo,residential_area,p.mobile, " +
                "ord.serve_desc as serve_desc,DATE_FORMAT(ord.create_time,'%Y-%m-%d %H:%i:%S') create_time,ord.`status`, " +
                " mess.`code` orderType  " +
                " from base_system_message mess INNER JOIN base_security_monitoring_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=22 and mess.receiver='"+doctor+"' " +
                "ORDER BY create_time desc,id desc limit "+page*pageSize+","+pageSize;
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        String sqlCount = " select count(mess.id) total " +
                "  from base_system_message mess INNER JOIN base_emergency_assistance_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=20 and mess.receiver='"+doctor+"'  " +
                "union ALL " +
                "select count(mess.id) total " +
                " from base_system_message mess INNER JOIN base_security_monitoring_order ord on mess.relation_code = ord.id " +
                " INNER JOIN base_patient p on p.id = ord.patient " +
                " where mess.del=1 and mess.type=45 and mess.code=22 and mess.receiver='"+doctor+"' " ;
        List<Map<String,Object>> totalList = jdbcTemplate.queryForList(sqlCount);
        Long total = totalList.stream().mapToLong(e->Long.valueOf(e.get("total").toString())).sum();
        for (Map<String,Object>tmp:list){
            String idcard = null==tmp.get("idcard")?"":tmp.get("idcard").toString();
            String birthday = null==tmp.get("birthday")?"":tmp.get("birthday").toString();
            Integer age = IdCardUtil.getAgeByIdcardOrBirthday(idcard,DateUtil.strToDate(birthday));
            tmp.put("age",age);
        }
        return PageEnvelop.getSuccessListWithPage("查询成功",list,page,pageSize,total);
    }
    public Integer todoworkTotal(String doctor){
        Integer total=0;
        BaseDoctorDO  doctorDO = baseDoctorDao.findById(doctor);

+ 5 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/security/SecurityMonitoringOrderService.java

@ -653,6 +653,8 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
            return result;
        }
        securityMonitoringOrderDao.save(orderDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        //完成工单向pc管理端发送消息
        JSONObject message = new JSONObject();
@ -1210,6 +1212,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        orderDO.setCancelReason(reason);
        orderDO.setStatus(SecurityMonitoringOrderDO.Status.cancel.getType());
        this.save(orderDO);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        if (type == SecurityMonitoringOrderDO.CancelType.patient.getType()) {                   //居民取消,消息列表也应该不显示
            messageUtil.updateSecurityMonitoringOrderMessage(orderDO, new String[]{"602", "603"}, "patientCancel");
@ -1402,6 +1405,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setStatus(SecurityMonitoringOrderDO.Status.complete.getType());//已完成
        one.setConclusionStatus(2);
        securityMonitoringOrderDao.save(one);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        List<BaseEmergencyWarnLogDO> byOrderIdByType = logDao.findByOrderIdByType(orderId);
        if (byOrderIdByType.size()==0){
@ -1496,7 +1500,7 @@ public class SecurityMonitoringOrderService extends BaseJpaService<SecurityMonit
        one.setStatus(0);
        one.setUpdateTime(new Date());
        securityMonitoringOrderDao.save(one);
        systemMessageDao.delMessageByTypeAndRelationCode("45",orderId);//删除医生工作提醒消息
        return getSecurityOrderDetail(orderId, null);
    }

+ 29 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/util/MessageUtil.java

@ -530,4 +530,33 @@ public class MessageUtil {
        }
    }
    /**
     * 创建医生工作提醒
     * @param doctor
     * @param sender
     * @param senderName
     * @param relationCode 紧急救助/安防工单id
     * @param code 20紧急救助 22安防工单
     */
    public void createToDoWorkReminder(String doctor,String sender,String senderName,String relationCode,String code){
        BaseDoctorDO doctorDO = baseDoctorDao.findById(doctor);
        if (null!=doctorDO){
            SystemMessageDO messageDO = new SystemMessageDO();
            messageDO.setTitle("医生工作提醒");
            messageDO.setType("45");
            messageDO.setSender(sender);
            messageDO.setSenderName(senderName);
            messageDO.setRelationCode(relationCode);
            messageDO.setReceiver(doctorDO.getId());
            messageDO.setReceiverName(doctorDO.getName());
            messageDO.setOver("");
            messageDO.setData("");
            messageDO.setDel("1");
            messageDO.setCreateTime(new Date());
            messageDO.setCode(code);
            systemMessageDao.save(messageDO);
        }
        //todo 向社工浙政钉发送消息
    }
}