Jelajahi Sumber

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

liubing 4 tahun lalu
induk
melakukan
15b03d4420

+ 7 - 1
common/common-entity/sql记录

@ -429,4 +429,10 @@ ALTER table base.base_doctor add COLUMN `doctor_locate_address` varchar(100) DEF
ALTER table base.base_emergency_assistance_order add COLUMN `team_code` varchar(100) DEFAULT NULL COMMENT '服务团队';
--2021-04-23
ALTER table base.base_emergency_assistance_order modify COLUMN  `conclusion_img` varchar(1000) DEFAULT NULL COMMENT '服务相关附件',
ALTER table base.base_emergency_assistance_order modify COLUMN  `conclusion_img` varchar(1000) DEFAULT NULL COMMENT '服务相关附件';
-- 2021-04-26
ALTER table base.base_emergency_assistance_order add COLUMN `proxy_patient` varchar(50) DEFAULT NULL COMMENT '代理发起工单的居民code,替父母,孩子等发起工单';
ALTER table base.base_emergency_assistance_order add COLUMN `proxy_patient_name` varchar(10) DEFAULT NULL COMMENT '代理发起工单的居民code,替父母,孩子等发起工单';
ALTER table base.base_emergency_assistance_order add COLUMN  `proxy_patient_phone` varchar(15) DEFAULT NULL COMMENT '代理发起工单的居民联系电话';
ALTER table base.base_emergency_assistance_order add COLUMN   `type` tinyint(2) DEFAULT '1' COMMENT '发起类型(1本人发起 2家人待预约 3医生代预约)';

+ 36 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/assistance/EmergencyAssistanceDO.java

@ -18,6 +18,9 @@ public class EmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
    private String patientName; //发起救助的居民姓名
    private String patientPhone; //救助居民电话
    private String patientIdcard; //救助居民身份证
    private String proxyPatient; //代理发起工单的居民code,替父母,孩子等发起工单
    private String proxyPatientName; //代理发起工单的居民code,替父母,孩子等发起工单
    private String proxyPatientPhone; //代理发起工单的居民联系电话
    private String orgCode; //救助居民所在机构code
    private String orgName; //救助居民所在机构名称
    private String serveAddress;
@ -34,6 +37,7 @@ public class EmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
    private Integer status; //工单状态 -1已取消 0已完成 1申请中
    private Date completeTime;//完成时间
    private String teamCode;
    private Integer type; //发起类型(1本人发起 2家人待预约 3医生代预约)
    private String sendMessage;//
    private Integer patientAge;
@ -201,6 +205,38 @@ public class EmergencyAssistanceDO extends UuidIdentityEntityWithOperator {
        this.teamCode = teamCode;
    }
    public String getProxyPatient() {
        return proxyPatient;
    }
    public void setProxyPatient(String proxyPatient) {
        this.proxyPatient = proxyPatient;
    }
    public String getProxyPatientName() {
        return proxyPatientName;
    }
    public void setProxyPatientName(String proxyPatientName) {
        this.proxyPatientName = proxyPatientName;
    }
    public String getProxyPatientPhone() {
        return proxyPatientPhone;
    }
    public void setProxyPatientPhone(String proxyPatientPhone) {
        this.proxyPatientPhone = proxyPatientPhone;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    @Transient
    public String getSendMessage() {
        return sendMessage;

+ 18 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/assistance/EmergencyAssistanceEndpoint.java

@ -35,7 +35,7 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
                               @RequestParam(value = "jsonData") String jsonData
                               ){
        try {
            JSONObject result = assistanceService.newOrder(patientId,jsonData);
            JSONObject result = assistanceService.newOrder(patientId,jsonData,getUID());
            if (result.getIntValue(ResponseContant.resultFlag) == ResponseContant.fail) {
                return ObjEnvelop.getError(result.getString(ResponseContant.resultMsg));
            }
@ -167,7 +167,7 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            if (StringUtils.isBlank(patientId)&&StringUtils.isBlank(doctor)){
                return ListEnvelop.getError("请求参数错误");
            }
            return ListEnvelop.getSuccess( "查询成功",assistanceService.getOrderList(patientId,doctor,"1",page,pageSize,"asc"));
            return ListEnvelop.getSuccess( "查询成功",assistanceService.doctorGetOrderList(patientId,doctor,"1",page,pageSize,"asc"));
        }catch (Exception e){
            e.printStackTrace();
            return ListEnvelop.getError("查询失败"+e.getMessage());
@ -284,4 +284,20 @@ public class EmergencyAssistanceEndpoint extends EnvelopRestEndpoint {
            return ObjEnvelop.getError("发送失败"+e.getMessage());
        }
    }
    @PostMapping(value = "test")
    @ApiOperation(value = "患者发送快捷消息")
    @ObserverRequired
    public ObjEnvelop test(@ApiParam(name="doctor",value = "doctor",required =true )
                           @RequestParam(value = "doctor") String doctor,
                           @ApiParam(name="orderID",value = "orderID",required =true )
                           @RequestParam(value = "orderID") String orderID){
        try {
            return ObjEnvelop.getSuccess("发送成功",assistanceService.test(doctor, orderID));
        }catch (Exception e){
            e.printStackTrace();
            return ObjEnvelop.getError("发送失败"+e.getMessage());
        }
    }
}

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

@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.netflix.ribbon.proxy.annotation.Http;
import com.yihu.jw.care.dao.assistance.EmergencyAssistanceDao;
import com.yihu.jw.care.dao.sign.ServicePackageSignRecordDao;
import com.yihu.jw.care.dao.team.BaseTeamMemberDao;
@ -31,8 +30,6 @@ import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
@ -74,7 +71,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
     * @param jsonData
     * @return
     */
    public JSONObject newOrder(String patient,String jsonData) throws Exception{
    public JSONObject newOrder(String patient,String jsonData,String proxyPatient) throws Exception{
        JSONObject result = new JSONObject();
        EmergencyAssistanceDO assistanceDO = JSON.parseObject(jsonData,EmergencyAssistanceDO.class);
        BasePatientDO patientDO = patientDao.findById(patient);
@ -89,6 +86,18 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        assistanceDO.setPatientIdcard(patientDO.getIdcard());
        assistanceDO.setPatientName(patientDO.getName());
        assistanceDO.setPatientPhone(patientDO.getMobile());
        if(patient.equals(proxyPatient)) {//本人发起
            assistanceDO.setProxyPatient(patient);
            assistanceDO.setProxyPatientName(patientDO.getName());
            assistanceDO.setProxyPatientPhone(patientDO.getMobile());
            assistanceDO.setType(1);
        }else {//家人
            BasePatientDO proxyPatientDO = patientDao.findById(proxyPatient);
            assistanceDO.setProxyPatient(proxyPatient);
            assistanceDO.setProxyPatientName(proxyPatientDO.getName());
            assistanceDO.setProxyPatientPhone(proxyPatientDO.getMobile());
            assistanceDO.setType(2);
        }
        if (emergencyAssistanceDao.findByPatientAndStatus(patient,1)!=null){
            String failMsg = "当前居民存在申请中的救助,请完成后再申请";
@ -140,7 +149,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
//        }
        assistanceDO = emergencyAssistanceDao.save(assistanceDO);
        //创建im会话  紧急救助咨询的sessionid  为居民code+(wlyy_consult_team表consult)+20
        JSONObject IMObj = consultTeamService.addServiceConsult(assistanceDO.getId(),patient,null);
        JSONObject IMObj = consultTeamService.addServiceConsult(assistanceDO.getId(),patient,proxyPatient,null);
        String sessionId=patient+"_"+ IMObj.getJSONObject("resultMsg").getString("consult") + "_20";
        assistanceDO.setSessionId(sessionId);
        //向会话中发送一条 陈XX发起紧急救助
@ -308,7 +317,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        tmpObj.put("status_1",0);//申请中
        StringBuilder sql = new StringBuilder(" select ord.status,count(ord.id) count from base_emergency_assistance_order ord where 1=1") ;
        if (StringUtils.isNotBlank(patient)){
            sql.append( " and ord.patient='"+patient+"' group by ord.status  ");
            sql.append( " and (ord.patient='"+patient+"' or ord.proxy_patient='"+patient+"' ) group by ord.status  ");
        }
        else if (StringUtils.isNotBlank(doctor))    {
            sql.append(" AND EXISTS (" +
@ -359,6 +368,31 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
     * @return
     */
    public List<EmergencyAssistanceDO> getOrderList(String patient,String doctor,String status,Integer page,Integer pageSize,String sort){
        StringBuilder sql = new StringBuilder(" select ord.* from base_emergency_assistance_order ord where 1=1 ");
        if (StringUtils.isNotBlank(doctor)){
            sql.append(" AND EXISTS (" +
                    "SELECT sr.patient from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i ," +
                    "base_team_member m " +
                    "where ord.patient = CONVERT(sr.patient USING utf8) and  sr.id = r.sign_id and sr.status=1 and r.service_package_id = i.service_package_id and  m.team_code = i.team_code " +
                    " and i.del = 1 and sr.`status`=1  and i.code='emergencyAssistance' and m.doctor_code = '"+doctor+"' and m.del = '1') ");
        }
        if (StringUtils.isNotBlank(patient)){
            sql.append(" and ( ord.patient  = '"+patient+"' or ord.proxy_patient='"+patient+"' )");
        }
        sql.append(" and ord.status in ( '").append(status.replace(",","','")).append("') ");
        sql.append(" order by ord.create_time "+sort+" limit "+page*pageSize+","+pageSize);
        List<EmergencyAssistanceDO> resultList = jdbcTemplate.query(sql.toString(),new BeanPropertyRowMapper(EmergencyAssistanceDO.class));
        for (EmergencyAssistanceDO obj:resultList){
            BasePatientDO patientDO = patientDao.findById(obj.getPatient());
            obj.setPatientPhoto(patientDO.getPhoto());
            obj.setPatientSex(patientDO.getSex());
            obj.setPatientAge(IdCardUtil.getAgeForIdcard(patientDO.getIdcard()));
        }
        return resultList;
    }
    public List<EmergencyAssistanceDO> doctorGetOrderList(String patient,String doctor,String status,Integer page,Integer pageSize,String sort){
        StringBuilder sql = new StringBuilder(" select ord.* from base_emergency_assistance_order ord where 1=1 ");
        if (StringUtils.isNotBlank(doctor)){
            sql.append(" AND EXISTS (" +
@ -385,6 +419,13 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
    public JSONObject cancelOrder(String patient,String orderId){
        JSONObject result = new JSONObject();
        BasePatientDO patientDO = patientDao.findById(patient);
        if (patientDO==null){
            String failMsg = "当前居民信息获取失败";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        EmergencyAssistanceDO assistanceDO = emergencyAssistanceDao.findOne(orderId);
        if (assistanceDO==null){
            String failMsg = "当前救助工单不存在";
@ -406,9 +447,15 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        }
        assistanceDO.setStatus(-1);
        assistanceDO.setUpdateUser(patient);
        assistanceDO.setUpdateUserName(assistanceDO.getPatientName());
        assistanceDO.setUpdateUserName(patientDO.getName());
        assistanceDO.setUpdateTime(new Date());
        //im是否结束会话?
        //结束救助咨询
        if (!consultTeamService.finishEmergencyConsult(assistanceDO,patient,1)){
            String failMsg = "咨询结束失败 无法完成工单";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        emergencyAssistanceDao.save(assistanceDO);
        String failMsg = "当前救助工单已取消";
        result.put(ResponseContant.resultFlag, ResponseContant.success);
@ -446,7 +493,13 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        assistanceDO.setUpdateUser(doctor);
        assistanceDO.setUpdateUserName(assistanceDO.getDoctorName());
        assistanceDO.setUpdateTime(new Date());
        //im会话是否结束?
        //结束会话
        if (!consultTeamService.finishEmergencyConsult(assistanceDO,doctor,2)){
            String failMsg = "咨询结束失败 无法完成工单";
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            result.put(ResponseContant.resultMsg,failMsg);
            return result;
        }
        return getOrderDetail(orderId);
    }
@ -531,4 +584,28 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
        }
        return result;
    }
    public String test(String doctor,String orderID){
//        JSONObject message = new JSONObject();
//        message.put("session_id","808080eb78b5d8e90178b5fcfa330001_4028030c78f1df510178f217a6c50001_20");
//        message.put("sender_name","一一");
//        message.put("sender_code","808080eb78b5d8e90178b5fcfa330001");
//        message.put("order_id","4028030c78f1df510178f217a6a70000");
//        message.put("content_type",40);
//        imUtill.sendMDTSocketMessageToDoctor(doctor,message.toString());
        //结束救助咨询
//        String sql = "select id from base_emergency_assistance_order where status!=1";
//        List<String> ids = jdbcTemplate.queryForList(sql,String.class);
//        for (String id:ids){
//            EmergencyAssistanceDO assistanceDO = emergencyAssistanceDao.findOne(orderID);
//            if (!consultTeamService.finishEmergencyConsult(assistanceDO,doctor,2)){
//                String failMsg = "咨询结束失败 无法完成工单";
//
//                return failMsg;
//            }
//        }
        return null;
    }
}

+ 49 - 3
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultTeamService.java

@ -3,10 +3,13 @@ package com.yihu.jw.care.service.consult;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.sign.ServicePackageSignRecordDao;
import com.yihu.jw.care.service.sign.ServicePackageService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageSignRecordDO;
import com.yihu.jw.entity.care.assistance.EmergencyAssistanceDO;
import com.yihu.jw.im.dao.ConsultDao;
import com.yihu.jw.im.dao.ConsultTeamDao;
import com.yihu.jw.im.util.ImUtil;
@ -32,6 +35,8 @@ public class ConsultTeamService {
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private ConsultDao consultDao;
    @Autowired
    private ImUtil imUtill;
@ -121,7 +126,7 @@ public class ConsultTeamService {
     * @return
     * @throws Exception
     */
    public JSONObject addServiceConsult(String orderId,String patient,String symptoms) throws Exception {
    public JSONObject addServiceConsult(String orderId,String patient,String proxyPatient,String symptoms) throws Exception {
        JSONObject result = new JSONObject();
        // 判断居民是否已经签约
@ -143,7 +148,7 @@ public class ConsultTeamService {
        }
        //咨询记录
        String title = patientDO.getName() + "-发起了服务咨询";
        String title = patientDO.getName() + "发起了紧急救助咨询";
        ConsultDo consult = addConsult(patient,title,symptoms,patientDO.getPhone(),20);
        //咨询详细信息
@ -171,13 +176,16 @@ public class ConsultTeamService {
        //4、 紧急救助咨询-参与者
        JSONObject participants = new JSONObject();
        participants.put(patient, 0);
        if (StringUtils.isNotBlank(proxyPatient)&&(!proxyPatient.equals(patient))){
            participants.put(proxyPatient, 0);
        }
        //加入团队医生
        List<Map<String,Object>> doctorList = servicePackageService.fingdDoctorByPaitenId(patient,"emergencyAssistance");
        for(Map<String,Object> map:doctorList){
            participants.put(String.valueOf(map.get("id")), 0);
        }
        String content = patientDO.getName() + "-紧急救助咨询";
        String content = patientDO.getName() + "发起紧急救助申请";
        JSONObject messages = imUtill.getCreateTopicMessage(patient, patientDO.getName(), consult.getTitle(), content, consult.getImages(), "");
        JSONObject imResponseJson = imUtill.createTopics(sessionId, consult.getId(), content, participants, messages, ImUtil.SESSION_TYPE_EMERGENCY_ASSISTANCE);
@ -196,4 +204,42 @@ public class ConsultTeamService {
        result.put(ResponseContant.resultMsg, consultTeam);
        return result;
    }
    /**
     *
     * @param assistanceDO
     * @param endOperator 操作者ID
     * @param endType 1居民 2医生
     * @return
     */
    public boolean finishEmergencyConsult(EmergencyAssistanceDO assistanceDO, String endOperator, int endType){
        ConsultTeamDo consultTeam = consultTeamDao.queryByRelationCode(assistanceDO.getId());
        ConsultDo consult = consultDao.findOne(consultTeam.getConsult());
        String sessionId = assistanceDO.getPatient() + "_" + consultTeam.getConsult() + "_" + consultTeam.getType();
        String operatorId = endOperator;
        String operatorName=null;
        if (endType==1){
            BasePatientDO patientDO = patientDao.findById(endOperator);
            operatorName = patientDO.getName();
        }else {
            BaseDoctorDO doctorDO = doctorDao.findById(endOperator);
            operatorName = doctorDO.getName();
        }
        try {
            JSONObject obj =  imUtill.endTopics(sessionId,operatorId,operatorName,consultTeam.getConsult());
            if (obj == null||obj.getInteger("status") == -1) {
                return false;
            }
            consultTeam.setEndMsgId(obj.getString("id"));
            consult.setEndTime(new Date());
            consultTeam.setEndTime(new Date());
            consultTeam.setStatus(1);
            consultDao.save(consult);
            consultTeamDao.save(consultTeam);
        }catch (Exception e){
            e.printStackTrace();
        }
        return true;
    }
}

+ 1 - 1
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/sign/CapacityAssessmentRecordService.java

@ -132,7 +132,7 @@ public class CapacityAssessmentRecordService extends BaseJpaService<CapacityAsse
        List<Map<String,Object>> countMapList = jdbcTemplate.queryForList(sql);
        for(Map<String,Object> map:countMapList){
            int c = Integer.valueOf(map.get("count").toString());
            res.put(String.valueOf(map.get("status")),c);
            res.put(String.valueOf(map.get("level_conclusion")),c);
        }
        String sql2 = "SELECT COUNT(DISTINCT ar.id) from base_patient ar, " +