| 
					
				 | 
			
			
				@ -0,0 +1,543 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.care.service.consult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.BaseDoctorHospitalDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.im.ConsultDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.im.ConsultTeamDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.im.ConsultTeamDoctorDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.patient.BasePatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.message.SystemMessageDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.message.dao.SystemMessageDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.dao.ConsultDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.dao.ConsultTeamDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.dao.ConsultTeamDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.service.ImService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.util.ImUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.utils.hibernate.HibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.util.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import static jxl.biff.FormatRecord.logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created with IntelliJ IDEA. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @Author: yeshijie 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @Date: 2021/5/28 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * @Description: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class ConsultService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JdbcTemplate jdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private HospitalSysDictDao hospitalSysDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorDao baseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientDao basePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ImUtil imUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ImService imService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ConsultTeamDao consultTeamDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ConsultDao consultDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ConsultTeamDoctorDao consultTeamDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private SystemMessageDao systemMessageDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private HibenateUtils hibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorHospitalDao doctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 居民结束咨询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param consult 咨询CODE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endOperator 操作人 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param endType 1居民 2医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public int finish(String consult, String endOperator, int endType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ConsultTeamDo consultTeam = consultTeamDao.findByConsult(consult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ConsultDo cons = consultDao.findOne(consult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (consultTeam.getStatus() == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String endName = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String endId = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject obj = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //结束咨询才发送推送给IM文字消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (endType == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BasePatientDO p = basePatientDao.findById(endOperator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endName = p.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            endId = p.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            obj = imUtil.endTopics(consultTeam.getPatient(), endId, endName, consultTeam.getConsult()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO d = baseDoctorDao.findById(endOperator); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (endOperator.equals("admin")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endId = "system"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endName = "超时,系统自动"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endId = d.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                endName = d.getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            obj = imUtil.endTopics(consultTeam.getDoctor(), endId, endName, consultTeam.getConsult()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new RuntimeException("IM消息结束异常!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj.getInteger("status") == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new RuntimeException(String.valueOf(null==obj.get("message")?"无失败信息":obj.get("message"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultTeam.setEndMsgId(obj.getString("id")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        cons.setEndTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultTeam.setEndTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultTeam.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultDao.save(cons); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultTeamDao.save(consultTeam); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询患者所有的咨询记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patient 患者标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param id 会话ID(等同IM表topicId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 咨询会话类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param pagesize 分页大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param title 标题关键字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status 状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctorName 医生名字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<Map<String,Object>>  findConsultRecordByPatient(String patient, String id,String type, int page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ,int pagesize, String title, String symptoms,Integer status,String doctorName) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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 \"doctorName\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "d.photo AS \"doctorphoto\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "d.id AS \"doctorCode\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "d.job_title_name AS \"jobTitleName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "h.dept_name AS \"deptName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "h.org_name AS \"hospitalName\", " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "a.pay_status AS \"payStatus\", "+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "a.source AS \"source\" "+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "FROM wlyy_consult a," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "wlyy_consult_team b," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "base_doctor d, " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "base_doctor_hospital h " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "WHERE a.id=b.consult and d.id = h.doctor_code " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND b.doctor=d.id AND a.patient='"+patient+"' AND a.type in ("+type+")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            title="%"+title+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and a.title like '"+title+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(symptoms)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            symptoms="%"+symptoms+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and a.symptoms like '"+symptoms+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(doctorName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            doctorName="%"+doctorName+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and d.name like '"+doctorName+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //咨询状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(status != null && status != 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and b.status ="+status; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and a.id = '" + id + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql += " ORDER BY a.czrq desc "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info("sql="+sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> result = hibenateUtils.createSQLQuery(sql,page,pagesize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询患者所有的咨询记录总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patient 患者标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param id 会话ID(等同IM表topicId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 咨询会话类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param title 标题关键字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Long countConsultRecordByPatient(String patient, String id,String type, String title,String symptoms,String doctorName,Integer status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String  sql = "SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " COUNT(1) AS \"total\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "FROM wlyy_consult a," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "wlyy_consult_team b," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "base_doctor d " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "WHERE a.id=b.consult " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND b.doctor=d.id AND a.patient='"+patient+"' AND a.type in ("+type+") "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(title)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            title="%"+title+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and a.title like '"+title+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(symptoms)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            symptoms="%"+symptoms+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and a.symptoms like '"+symptoms+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(doctorName)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            doctorName="%"+doctorName+"%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and d.name like '"+doctorName+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //咨询状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(status != null && status != 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql +=" and b.status ="+status; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and a.id = '" + id + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (rstotal != null && rstotal.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = Long.parseLong(rstotal.get(0).get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询患者所有的咨询记录总数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctor 患者标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param id 会话ID(等同IM表topicId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 咨询会话类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param symptoms 标题关键字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Long countConsultRecordByDoctor(String doctor, String id,String type, String symptoms,Integer status,String start_time,String end_time,String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String  sql = "SELECT " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " COUNT(1) AS \"total\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "FROM wlyy_consult a," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "wlyy_consult_team b," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "base_patient d " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "WHERE a.id=b.consult " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND b.patient=d.id AND b.doctor='"+doctor+"' AND a.type in ("+type+") "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(symptoms)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            symptoms = "%" + symptoms + "%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and a.symptoms like '" + symptoms + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            name = "%" + name + "%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql += " and b.name like '" + name + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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 + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Long count = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (rstotal != null && rstotal.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            count = Long.parseLong(rstotal.get(0).get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询医生所有的咨询记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctor 医生标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param id 会话ID(等同IM表topicId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 咨询会话类型 : 0 全部 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param status 咨询状态:0全部,1候诊中,2就诊中,3结束 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param pagesize 分页大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param symptoms 标题关键字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @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 symptoms,String start_time,String end_time,String name) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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(symptoms)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                symptoms = "%" + symptoms + "%"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql += " and a.symptoms like '" + symptoms + "'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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外层刷新事件的消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param systemMessageDO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void saveMessage(SystemMessageDO systemMessageDO) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //发送系统消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        systemMessageDO.setIsRead("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        systemMessageDO.setDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        systemMessageDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        systemMessageDao.save(systemMessageDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //发型IM外层消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("socket_sms_type",11);//系统消息刷新事件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        object.put("relation_code",systemMessageDO.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        imService.sendWaiSocketMessage(systemMessageDO.getSender(),systemMessageDO.getReceiver(),object.toString(),"1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 患者端 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 发起在线咨询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param ct      在线咨询对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patient 患者标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public JSONObject addTeamConsult(ConsultTeamDo ct, String patient, String doctor, String source) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject re = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean boo = StringUtils.isEmpty(getUnfinishedConsult(patient, doctor)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info("boo"+boo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyyHospitalSysDictDO sysDictDO = hospitalSysDictDao.findById("consultClose"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (sysDictDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (sysDictDO.getDictCode().equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!StringUtils.isEmpty(getUnfinishedConsult(patient, doctor))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                throw new RuntimeException("居民还有未结束的在线咨询!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject users = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        users.put(doctor,0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置医生名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置患者信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setPatient(patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 查询患者信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO tempPatient = basePatientDao.findById(patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置患者姓名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setName(tempPatient.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置患者生日 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setBirthday(tempPatient.getBirthday()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //新增性别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setSex(tempPatient.getSex()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置患者头像 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setPhoto(tempPatient.getPhoto()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置操作日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setCzrq(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setEvaluate(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 医生未读数量为1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setDoctorRead(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 添加咨询记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ConsultDo consult = imService.addConsult(ct.getPatient(), "在线咨询", ct.getSymptoms(), ct.getImages(), ct.getType(),source); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		// 设置关联指导 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//		consult.setGuidance(ct.getGuidance()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置咨询标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setConsult(consult.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置医生CODE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setDoctor(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 设置医生名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setDoctorName(baseDoctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject jsonObject = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("title", tempPatient.getName() + "申请在线咨询"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("content",ct.getSymptoms()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("age", DateUtil.getAgeForIdcard(tempPatient.getIdcard())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("sex",tempPatient.getSex()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        jsonObject.put("name",tempPatient.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //推送给IM去创建议题,取得成员消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject messages = imUtil.getCreateTopicMessage(patient, tempPatient.getName(), consult.getTitle(), jsonObject.toJSONString(), consult.getImages(), doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        users.put(patient, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        users.put(doctor, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String session_type = ImUtil.SESSION_TYPE_ONLINE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject obj = imUtil.createTopics(patient + "_" + doctor + "_" + ct.getType(), consult.getId(), tempPatient.getName(), users, messages, session_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new RuntimeException("IM消息发送异常!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (obj.getInteger("status") == -1) {//im议题创建失败 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new RuntimeException(obj.getString("message")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ct.setStartMsgId(obj.get("start_msg_id").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultTeamDao.save(ct); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        consultDao.save(consult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONArray doctors = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (String key : users.keySet()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (patient.equals(key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            doctors.add(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //记录咨询的医生详情误删 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ConsultTeamDoctorDo cd = new ConsultTeamDoctorDo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            cd.setConsult(consult.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            cd.setDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            cd.setCzrq(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            cd.setTo(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            consultTeamDoctorDao.save(cd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 保存医生咨询信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 添加咨询转发记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 添加医生咨询日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String content = imService.addLogs(ct); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("doctor", doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("doctorName", baseDoctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("status", 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("sessiond_id",patient + "_" + doctor + "_" + ct.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("patient",patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("patientName",tempPatient.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("patient_idcard",tempPatient.getIdcard()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        re.put("consult",consult.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return re; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询居民是否有未结束的在线咨询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patient 居民 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param doctor  医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String  getUnfinishedConsult(String patient, String doctor) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String totalSql = "SELECT a.consult as \"consultCode\" " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "FROM wlyy_consult_team a,wlyy_consult_team_doctor b " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "WHERE a.consult=b.consult " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND a.patient= '" +patient+"' "+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                "AND b.to_doctor='" +doctor+"' "+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND a.del='1' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND type = 23 " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "AND a.status=0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String consultCode = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (rstotal != null && rstotal.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            consultCode = rstotal.get(0).get("consultCode").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info("未结束判断语句"+totalSql+"======consultCode"+consultCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return consultCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |