Browse Source

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

叶仕杰 3 years ago
parent
commit
5b5f9bd149

+ 113 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/DoctorConsultEndpoint.java

@ -0,0 +1,113 @@
package com.yihu.jw.care.endpoint.consult;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.service.consult.ConsultService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.UUID;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/5/29
 * @Description:
 */
@RestController
@RequestMapping(value = "/im/doctor")
@Api(value = "医生端咨询IM接口", description = "医生端咨询IM接口", tags = {"医生端咨询IM接口"})
public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(DoctorConsultEndpoint.class);
    @Autowired
    private ConsultService consultService;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private ImService imService;
    @PostMapping(value = "finish")
    @ApiOperation(value = "医生结束咨询", notes = "医生结束咨询")
    public Envelop finish(
            @ApiParam(name = "consult", value = "咨询CODE")
            @RequestParam(value = "consult",required = true) String consult,
            @ApiParam(name = "doctorCode", value = "医生COEE")
            @RequestParam(value = "doctorCode",required = true) String doctorCode) throws Exception {
        int resutl = consultService.finish(consult,doctorCode,2);
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctorCode);
        JSONObject msgObj = new JSONObject();
        msgObj.put("msg",baseDoctorDO.getName()+"结束了咨询");
        msgObj.put("consultcode",consult);
        String jsonStr = "";
        if(1 == resutl){
            jsonStr = "{\"id\":\""+ UUID.randomUUID().toString()+"\",\"sender_id\":\""+doctorCode+"\",\"sender_name\":\"系统\",\"timestamp\":"+System.currentTimeMillis()+",\"content_type\":7,\"content\":"+msgObj.toString()+",\"business_type\":1}";
        }
        return success(jsonStr);
    }
    @GetMapping(value = "getConsultInfoAndPatientInfo")
    @ApiOperation(value = "获取咨询问题,图片,居民信息", notes = "获取咨询问题,图片,居民信息")
    public Envelop getConsultInfoAndPatientInfo(
            @ApiParam(name = "consult", value = "咨询CODE")
            @RequestParam(value = "consult",required = false) String consult,
            @ApiParam(name = "patientCode", value = "居民COEE")
            @RequestParam(value = "patientCode",required = false) String patientCode)throws Exception {
        try {
            return success("请求成功",imService.getConsultInfoAndPatientInfo(consult,patientCode));
        }catch (Exception e){
            return failedException(e);
        }
    }
    @GetMapping(value = "records")
    @ApiOperation(value = "医生咨询记录查询")
    public Envelop records(
            @ApiParam(name = "doctor", value = "医生id")
            @RequestParam(value = "doctor",required = false) String doctor,
            @ApiParam(name = "title", value = "咨询标题关键字")
            @RequestParam(value = "title",required = false) String title,
            @ApiParam(name = "id", value = "咨询ID")
            @RequestParam(value = "id",required = false) String id,
            @ApiParam(name = "type", value = "咨询类型")
            @RequestParam(value = "type",required = true) String type,
            @ApiParam(name = "status", value = "咨询状态:0进行中,1已完成,-1患者取消,-2超时未响应自动关闭")
            @RequestParam(value = "status",required = true) Integer status,
            @ApiParam(name = "start_time", value = "开始时间 YYYY-MM-DD HH:MM:SS")
            @RequestParam(value = "start_time",required = false) String start_time,
            @ApiParam(name = "end_time", value = "结束时间 YYYY-MM-DD HH:MM:SS")
            @RequestParam(value = "end_time",required = false) String end_time,
            @ApiParam(name = "page", value = "第几页")
            @RequestParam(value = "page",required = false) int page,
            @ApiParam(name = "pagesize", value = "分页大小")
            @RequestParam(value = "pagesize",required = false) int pagesize
    )throws Exception{
        try {
            List<Map<String,Object>>  data = imService.findConsultRecordByDoctor(doctor, id,type,status, page,pagesize, title,start_time,end_time);
            Long total = imService.countConsultRecordByDoctor(doctor, id,type,status,title,start_time,end_time);
            JSONObject result = new JSONObject();
            result.put("total",total);
            result.put("list",data);
            return success(result);
        }catch (Exception e){
            return failedException(e);
        }
    }
}

+ 2 - 2
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/consult/PatientConsultEndpoint.java

@ -42,10 +42,10 @@ import java.security.MessageDigest;
import java.util.*;
import java.util.*;
/**
/**
 * @author huangwenjie
 * @author yeshijie
 */
 */
@RestController
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.PatientIM.PREFIX)
@RequestMapping(value = "/im/patient")
@Api(value = "居民端咨询IM接口", description = "居民端咨询IM接口", tags = {"居民端咨询IM接口"})
@Api(value = "居民端咨询IM接口", description = "居民端咨询IM接口", tags = {"居民端咨询IM接口"})
public class PatientConsultEndpoint extends EnvelopRestEndpoint {
public class PatientConsultEndpoint extends EnvelopRestEndpoint {

+ 96 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultService.java

@ -3,7 +3,9 @@ package com.yihu.jw.care.service.consult;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.im.ConsultTeamDoctorDo;
import com.yihu.jw.entity.base.im.ConsultTeamDoctorDo;
@ -18,6 +20,7 @@ import com.yihu.jw.im.service.ImService;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.sms.dao.HospitalSysDictDao;
import com.yihu.jw.sms.dao.HospitalSysDictDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import com.yihu.jw.utils.hibernate.HibenateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
@ -63,6 +66,8 @@ public class ConsultService {
    private SystemMessageDao systemMessageDao;
    private SystemMessageDao systemMessageDao;
    @Autowired
    @Autowired
    private HibenateUtils hibenateUtils;
    private HibenateUtils hibenateUtils;
    @Autowired
    private BaseDoctorHospitalDao doctorHospitalDao;
    /**
    /**
     * 居民结束咨询
     * 居民结束咨询
@ -177,6 +182,97 @@ public class ConsultService {
        return result;
        return result;
    }
    }
    /**
     * 查询医生所有的咨询记录
     * @param doctor 医生标识
     * @param id 会话ID(等同IM表topicId)
     * @param type 咨询会话类型 : 0 全部
     * @param status 咨询状态:0全部,1候诊中,2就诊中,3结束
     * @param pagesize 分页大小
     * @param title 标题关键字
     * @param start_time 开始时间
     * @param end_time 结束时间
     * @return
     */
    public List<Map<String,Object>>  findConsultRecordByDoctor(String doctor, String id,
                                                               String type, Integer status,
                                                               int page,int pagesize,
                                                               String title,String start_time,String end_time) {
        String sql = "SELECT " +
                    "a.id AS \"id\"," +
                    "a.type AS \"type\"," +
                    "a.title AS \"title\"," +
                    "a.symptoms AS \"symptoms\","+
                    "date_format(a.czrq,'%Y-%m-%d %H:%i:%S' )  AS \"czrq\","+
                	"b.status AS \"status\"," +
                    "b.evaluate AS \"evaluate\"," +
                    "d.name AS \"patientName\"," +
                    "d.id as \"patientId\"," +
                    "d.idcard as \"patientIdcard\"," +
                    "d.sex as \"patientSex\"," +
                    "d.photo AS \"patientPhoto\", " +
                    "b.doctor as \"doctor\" ,"+
                    "a.source as \"source\"  "+
                    "FROM wlyy_consult a," +
                    "wlyy_consult_team b," +
                    "base_patient d " +
                    "WHERE a.id=b.consult " +
                    "AND b.patient=d.id ";
            if (org.apache.commons.lang.StringUtils.isNotBlank(doctor)) {
                sql += " AND b.doctor='" + doctor + "' ";
            }
            if (!StringUtils.isEmpty(title)) {
                title = "%" + title + "%";
                sql += " and a.symptoms like '" + title + "'";
            }
            if (!StringUtils.isEmpty(start_time)) {
                sql += " and a.czrq >= '" + start_time + "'";
            }
            if (!StringUtils.isEmpty(end_time)) {
                sql += " and a.czrq <= '" + end_time + "'";
            }
            //咨询状态
            if (status != null) {
                sql += " and b.status = "+status;
            }
            //咨询类型
            if (!StringUtils.isEmpty(type)) {
                sql += " AND a.type in (" + type + ")";
            }
            if (!StringUtils.isEmpty(id)) {
                sql += " and a.id = '" + id + "'";
            }
            sql += " ORDER BY a.czrq desc ";
        List<Map<String,Object>> mapList = hibenateUtils.createSQLQuery(sql,page,pagesize);
        for (Map<String,Object> map:mapList){
            if (map.get("patientIdcard")!=null){
                String idcard = map.get("patientIdcard").toString();
                Integer age = IdCardUtil.getAgeForIdcard(idcard);
                map.put("patientAge",age);
            }else {
                map.put("patientAge",null);
            }
            if (map.get("doctor")!=null){
                String doctorId = map.get("doctor").toString();
                BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctorId);
                List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(doctorId);
                if (doctorHospitalDOS!=null&&doctorHospitalDOS.size()!=0){
                    map.put("deptName",doctorHospitalDOS.get(0).getDeptName());
                }
                if (baseDoctorDO!=null){
                    map.put("doctorName",baseDoctorDO.getName());
                }
            }
        }
        return mapList;
    }
    /**
    /**
     * 保存系统消息&发送IM外层刷新事件的消息
     * 保存系统消息&发送IM外层刷新事件的消息
     * @param systemMessageDO
     * @param systemMessageDO