|
@ -0,0 +1,1051 @@
|
|
|
package com.yihu.jw.im.service;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
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.im.ConsultTeamDoctorDo;
|
|
|
import com.yihu.jw.entity.base.im.ConsultTeamLogDo;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
|
|
|
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
|
|
|
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.dao.ConsultTeamLogDao;
|
|
|
|
|
|
|
|
|
import com.yihu.jw.im.util.ImUtil;
|
|
|
import com.yihu.jw.im.util.ImageCompress;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
|
|
|
import com.yihu.jw.restmodel.im.ConsultVO;
|
|
|
import com.yihu.jw.util.common.FileUtil;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.wechat.service.WxAccessTokenService;
|
|
|
import org.apache.http.NameValuePair;
|
|
|
import org.apache.http.message.BasicNameValuePair;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.net.HttpURLConnection;
|
|
|
import java.net.URL;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* IM接口业务类
|
|
|
* @author huangwenjie
|
|
|
*/
|
|
|
@Service
|
|
|
public class ImService {
|
|
|
@Autowired
|
|
|
public ConsultDao consultDao;
|
|
|
|
|
|
@Autowired
|
|
|
public ConsultTeamDao consultTeamDao;
|
|
|
|
|
|
@Autowired
|
|
|
public ConsultTeamDoctorDao consultTeamDoctorDao;
|
|
|
|
|
|
@Autowired
|
|
|
public ConsultTeamLogDao consultTeamLogDao;
|
|
|
|
|
|
@Autowired
|
|
|
public BasePatientDao basePatientDao;
|
|
|
|
|
|
@Autowired
|
|
|
public ImUtil imUtil;
|
|
|
|
|
|
public FileUtil fileUtil;
|
|
|
|
|
|
@Autowired
|
|
|
protected HttpServletRequest request;
|
|
|
|
|
|
@Autowired
|
|
|
public WxAccessTokenService wxAccessTokenService;
|
|
|
|
|
|
@Value("${im.data_base_name}")
|
|
|
private String data_base_name;
|
|
|
|
|
|
@Value("${FileTempPath.upload_temp_path}")
|
|
|
private String upload_temp_path;
|
|
|
|
|
|
@Value("${FileTempPath.image_path}")
|
|
|
private String image_path;
|
|
|
|
|
|
@Value("${FileTempPath.voice_path}")
|
|
|
private String voice_path;
|
|
|
|
|
|
@Value("${FileTempPath.chat_file_path}")
|
|
|
private String chat_file_path;
|
|
|
|
|
|
@Value("${fastDFS.fastdfs_file_url}")
|
|
|
private String fastdfs_file_url;
|
|
|
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
@Autowired
|
|
|
private BaseDoctorDao baseDoctorDao;
|
|
|
|
|
|
@Autowired
|
|
|
private OutpatientDao outpatientDao;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 查询患者所有的咨询记录
|
|
|
* @param patient 患者标识
|
|
|
* @param id 会话ID(等同IM表topicId)
|
|
|
* @param type 咨询会话类型
|
|
|
* @param pagesize 分页大小
|
|
|
* @param title 标题关键字
|
|
|
* @return
|
|
|
*/
|
|
|
public List<ConsultVO> findConsultRecordByPatient(String patient, String id,Integer type, int pagesize, String title) {
|
|
|
|
|
|
if (pagesize <= 0) {
|
|
|
pagesize = 10;
|
|
|
}
|
|
|
|
|
|
String sql = "SELECT " +
|
|
|
"a.id AS id," +
|
|
|
"a.type AS type," +
|
|
|
"a.title AS title," +
|
|
|
"a.symptoms AS symptoms," +
|
|
|
"a.czrq AS czrq," +
|
|
|
"b.status AS status," +
|
|
|
"b.evaluate AS evaluate," +
|
|
|
"d.name AS doctorName," +
|
|
|
"d.photo AS doctorphoto," +
|
|
|
"d.job_title_name AS jobTitleName " +
|
|
|
"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="+type;
|
|
|
List<ConsultVO> result = new ArrayList<>();
|
|
|
|
|
|
if(!StringUtils.isEmpty(title)){
|
|
|
title="%"+title+"%";
|
|
|
sql +=" and a.title like '"+title+"'";
|
|
|
|
|
|
|
|
|
}
|
|
|
if (!StringUtils.isEmpty(id)) {
|
|
|
sql += " and a.id = '" + id + "'";
|
|
|
}
|
|
|
sql += " ORDER BY a.id desc limit 0,"+pagesize+"";
|
|
|
|
|
|
result = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ConsultVO.class));
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询居民与某个医生未结束的咨询
|
|
|
*
|
|
|
* @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 a.type<> 8 " +
|
|
|
"AND a.`status`=0";
|
|
|
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
|
|
|
String consultCode = "";
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
consultCode = rstotal.get(0).get("consultCode").toString();
|
|
|
}
|
|
|
return consultCode;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取会话成员
|
|
|
*
|
|
|
* @param sessionId
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray getSessions(String sessionId) {
|
|
|
JSONArray participants = imUtil.getSessions(sessionId);
|
|
|
return participants;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据会话ID获取消息记录
|
|
|
* @param sessionId 会话ID
|
|
|
* @param startMsgId 开始的消息记录ID
|
|
|
* @param endMsgId 结束的消息记录ID
|
|
|
* @param page 第几页
|
|
|
* @param pagesize 分页数量
|
|
|
* @param uid 居民CODE
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray getSessionMessage(String sessionId, String startMsgId, String endMsgId, int page, int pagesize, String uid) {
|
|
|
JSONArray messageArray = imUtil.getSessionMessage(sessionId, startMsgId, endMsgId, page, pagesize, uid);
|
|
|
return messageArray;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据咨询CODE进入会话
|
|
|
* @param consult 咨询CODE
|
|
|
* @param currentUid 当前居民ID
|
|
|
* @param uid 代理人ID(目前版本废弃)
|
|
|
* @return
|
|
|
*/
|
|
|
public int intoTopic(String consult, String currentUid, String uid) {
|
|
|
ConsultTeamDo ct = consultTeamDao.findByConsult(consult);
|
|
|
if (ct.getStatus() != 0) {
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
String content = "进入了咨询";
|
|
|
BasePatientDO p = basePatientDao.findById(currentUid);
|
|
|
String intoUserName = p.getName();
|
|
|
// if (currentUid.equals(uid)) {
|
|
|
// content = intoUserName + content;
|
|
|
// } else {
|
|
|
BasePatientDO member = basePatientDao.findById(currentUid);
|
|
|
content = intoUserName + content;
|
|
|
//目前没有家人关系,所以家人名称的名字获取暂时注释
|
|
|
// content = member.getName() + "(" + relations.get(familyMember.getFamilyRelation()) + ")" + content;
|
|
|
// }
|
|
|
|
|
|
imUtil.sendIntoTopicIM(ct.getPatient(), ct.getPatient(), ct.getConsult(), content, currentUid, intoUserName);
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 居民咨询发消息(追问接口)
|
|
|
* @param consult 咨询标识-咨询CODE
|
|
|
* @param content 消息内容
|
|
|
* @param type 消息类型
|
|
|
* @param times 次数
|
|
|
* @param patientcode 发送的居民CODE
|
|
|
* @param wechat_appid 微信公众号appid
|
|
|
* @return
|
|
|
*/
|
|
|
public List<String> append(String consult, String content, Integer type, Integer times,String patientcode,String wechat_appid) throws Exception {
|
|
|
List<ConsultTeamLogDo> logs = new ArrayList<ConsultTeamLogDo>();
|
|
|
ConsultTeamDo consultModel = consultTeamDao.findByConsult(consult);
|
|
|
|
|
|
if (consultModel == null) {
|
|
|
throw new Exception("咨询记录不存在!");
|
|
|
}
|
|
|
|
|
|
if (consultModel.getEndMsgId() != null) {
|
|
|
throw new Exception("咨询已结束!");
|
|
|
}
|
|
|
|
|
|
String[] arr = null;
|
|
|
if (type == 3) {
|
|
|
// String path = fetchWxVoices(wechat_appid);
|
|
|
// JSONObject obj = new JSONObject();
|
|
|
// // 将临时语音拷贝到正式存储路径下
|
|
|
// if (org.apache.commons.lang3.StringUtils.isNotEmpty(path)) {
|
|
|
// content = fileUtil.copyTempVoice(path,fastdfs_file_url);
|
|
|
// obj.put("path", path);
|
|
|
// obj.put("times", times);
|
|
|
// content = obj.toString();
|
|
|
// }
|
|
|
ConsultTeamLogDo log = new ConsultTeamLogDo();
|
|
|
log.setConsult(consult);
|
|
|
log.setContent(content);
|
|
|
log.setDel("1");
|
|
|
log.setChatType(type);
|
|
|
log.setType(type);
|
|
|
logs.add(log);
|
|
|
} else if (type == 2) {
|
|
|
// // 图片消息
|
|
|
// content = fetchWxImages(wechat_appid);
|
|
|
// // 将临时图片拷贝到正式存储路径下
|
|
|
// if (org.apache.commons.lang3.StringUtils.isNotEmpty(content)) {
|
|
|
// content = fileUtil.copyTempImage(content,upload_temp_path);
|
|
|
// }
|
|
|
// if (org.apache.commons.lang3.StringUtils.isEmpty(content)) {
|
|
|
// throw new Exception("图片上传失败!");
|
|
|
//// return error(-1, "图片上传失败!");
|
|
|
// }
|
|
|
String[] images = content.split(",");
|
|
|
for (String image : images) {
|
|
|
ConsultTeamLogDo log = new ConsultTeamLogDo();
|
|
|
log.setConsult(consult);
|
|
|
log.setContent(image);
|
|
|
log.setDel("1");
|
|
|
log.setChatType(type);
|
|
|
log.setType(type);
|
|
|
logs.add(log);
|
|
|
}
|
|
|
} else {
|
|
|
ConsultTeamLogDo log = new ConsultTeamLogDo();
|
|
|
log.setConsult(consult);
|
|
|
log.setContent(content);
|
|
|
log.setDel("1");
|
|
|
log.setChatType(type);
|
|
|
log.setType(type);
|
|
|
logs.add(log);
|
|
|
|
|
|
arr = new String[]{content};
|
|
|
}
|
|
|
// Patient patient = patientDao.findByCode(getUID());
|
|
|
BasePatientDO patient = basePatientDao.findById(patientcode);
|
|
|
int i = 0;
|
|
|
List<String> failed = new ArrayList<>();
|
|
|
|
|
|
for (ConsultTeamLogDo log : logs) {
|
|
|
// String response = ImUtill.sendTopicIM(getUID(), patient.getName(), consult, String.valueOf(log.getType()), log.getContent());
|
|
|
String response = imUtil.sendTopicIM(patientcode, patient.getName(), consult, String.valueOf(log.getType()), log.getContent(),null);
|
|
|
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(response)) {
|
|
|
JSONObject resObj = JSON.parseObject(response);
|
|
|
if (resObj.getInteger("status") == -1) {
|
|
|
throw new Exception("追问失败!" + resObj.getString("message"));
|
|
|
// return invalidUserException(new RuntimeException(resObj.getString("message")), -1, "追问失败!" + resObj.getString("message"));
|
|
|
}
|
|
|
failed.add(String.valueOf(resObj.get("data")));
|
|
|
// try {
|
|
|
//
|
|
|
// String sql = "";
|
|
|
// if (consultModel.getType() == 2){
|
|
|
// //家庭咨询
|
|
|
// sql = "SELECT t.participant_id FROM " + data_base_name +
|
|
|
// ".participants t where t.session_id = '" +
|
|
|
// patient.getId() + "_" + consultModel.getTeam() + "_" + consultModel.getType() +
|
|
|
// "' and t.participant_role = 0";
|
|
|
// }else if (consultModel.getType() == 8 || consultModel.getType() == 9 || consultModel.getType() == 11){
|
|
|
// //8-续方咨询 9-在线复诊咨询 11-上门预约服务
|
|
|
// sql = "SELECT t.participant_id FROM " + data_base_name +
|
|
|
// ".participants t where t.session_id = '" +
|
|
|
// patient.getId() + "_" + consultModel.getConsult() + "_" + consultModel.getType() +
|
|
|
// "' and t.participant_role = 0";
|
|
|
// }
|
|
|
|
|
|
// if(org.apache.commons.lang3.StringUtils.isEmpty(sql)){
|
|
|
// throw new Exception("追问失败!不存在该类型!【type】:" + type);
|
|
|
// return write(-1, "追问失败!", "data", "不存在该类型!【type】:" + type);
|
|
|
// }
|
|
|
// List<Map<String, Object>> participants = jdbcTemplate.queryForList(sql);
|
|
|
//
|
|
|
// for (Map<String, Object> participant : participants) {
|
|
|
// //有居民、健管、全科
|
|
|
// String doctorCode = participant.get("participant_id").toString();
|
|
|
// if (doctorCode.equals(patient.getCode())) {
|
|
|
// continue;
|
|
|
// }
|
|
|
//健管
|
|
|
// Boolean flag = messageService.getMessageNoticeSettingByMessageType(doctorCode, "1", MessageNoticeSetting.MessageTypeEnum.imSwitch.getValue());
|
|
|
//全科
|
|
|
// Boolean flag2 = !messageService.getMessageNoticeSettingByMessageType(doctorCode, "1", MessageNoticeSetting.MessageTypeEnum.familyTopicSwitch.getValue());
|
|
|
// if (flag) {
|
|
|
// // 新增发送医生助手模板消息 v1.4.0 by wujunjie
|
|
|
// Doctor doctor = doctorDao.findByCode(doctorCode);
|
|
|
// String doctorOpenID = doctor.getOpenid();
|
|
|
// if (org.apache.commons.lang3.StringUtils.isNotEmpty(doctorOpenID)) {
|
|
|
// String title = "";
|
|
|
// Consult consultSingle = consultDao.findByCode(log.getConsult());
|
|
|
// if (consultSingle != null) {
|
|
|
// Integer singleType = consultSingle.getType();
|
|
|
// if (singleType != null && singleType == 8) {
|
|
|
// title = consultSingle.getTitle();
|
|
|
// } else if (singleType != null && singleType != 8) {
|
|
|
// title = consultSingle.getSymptoms();
|
|
|
// }
|
|
|
// String repContent = parseContentType(type + "", content);
|
|
|
// String first = "居民" + patient.getName() + "的咨询有新的回复。";
|
|
|
// String url = doctorAssistant + "/wlyy/feldsher/sendDoctorTemplates";
|
|
|
// List<NameValuePair> params = new ArrayList<>();
|
|
|
// params.add(new BasicNameValuePair("type", "8"));
|
|
|
// params.add(new BasicNameValuePair("openId", doctorOpenID));
|
|
|
// params.add(new BasicNameValuePair("url", targetUrl));
|
|
|
// params.add(new BasicNameValuePair("first", first));
|
|
|
// params.add(new BasicNameValuePair("remark", "请进入手机APP查看"));
|
|
|
// String keywords = title + "," + repContent + "," + doctor.getName();
|
|
|
// params.add(new BasicNameValuePair("keywords", keywords));
|
|
|
//
|
|
|
// httpClientUtil.post(url, params, "UTF-8");
|
|
|
// System.out.println("发送对象:"+doctorCode);
|
|
|
// System.out.println("发送对象名字:"+doctor.getName());
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// } catch (Exception e) {
|
|
|
// e.printStackTrace();
|
|
|
// }
|
|
|
|
|
|
}
|
|
|
}
|
|
|
return failed;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取微信服务器语音
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public String fetchWxVoices(String wecha_appid) {
|
|
|
String voiceIds = "";
|
|
|
try {
|
|
|
String voices = request.getParameter("voices");
|
|
|
if (org.apache.commons.lang3.StringUtils.isEmpty(voices)) {
|
|
|
return voices;
|
|
|
}
|
|
|
String[] mediaIds = voices.split(",");
|
|
|
for (String mediaId : mediaIds) {
|
|
|
if (org.apache.commons.lang3.StringUtils.isEmpty(mediaId)) {
|
|
|
continue;
|
|
|
}
|
|
|
String temp = saveVoiceToDisk(mediaId,wecha_appid);
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(temp)) {
|
|
|
if (voiceIds.length() == 0) {
|
|
|
voiceIds = temp;
|
|
|
} else {
|
|
|
voiceIds += "," + temp;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
// error(e);
|
|
|
}
|
|
|
return voiceIds;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取下载语音信息(jpg)
|
|
|
*
|
|
|
* @param mediaId 文件的id
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public String saveVoiceToDisk(String mediaId,String wechat_appid) throws Exception {
|
|
|
// 文件保存的临时路径
|
|
|
String tempPath = upload_temp_path + File.separator;
|
|
|
// 拼接年月日路径
|
|
|
String datePath = DateUtil.getStringDate("yyyy") + File.separator + DateUtil.getStringDate("MM") + File.separator + DateUtil.getStringDate("dd") + File.separator;
|
|
|
// 重命名文件
|
|
|
String fileBase = DateUtil.dateToStr(new Date(), DateUtil.YYYYMMDDHHMMSS) + "_" + new Random().nextInt(1000);
|
|
|
String newFileName = fileBase+ ".amr";
|
|
|
String mp3FileName = fileBase + ".mp3";
|
|
|
// 保存路径
|
|
|
File uploadFile = new File(tempPath + datePath + newFileName);
|
|
|
|
|
|
InputStream inputStream = null;
|
|
|
FileOutputStream fileOutputStream = null;
|
|
|
try {
|
|
|
if (!uploadFile.getParentFile().exists()) {
|
|
|
uploadFile.getParentFile().mkdirs();
|
|
|
}
|
|
|
inputStream = getInputStream(mediaId,wechat_appid);
|
|
|
byte[] data = new byte[1024];
|
|
|
int len = 0;
|
|
|
fileOutputStream = new FileOutputStream(uploadFile);
|
|
|
while ((len = inputStream.read(data)) != -1) {
|
|
|
fileOutputStream.write(data, 0, len);
|
|
|
}
|
|
|
String amrFilePath = tempPath+datePath+newFileName;
|
|
|
String Mp3FilePath = tempPath+datePath+mp3FileName;
|
|
|
fileUtil.changeToMp3(amrFilePath,Mp3FilePath);
|
|
|
// 返回保存路径
|
|
|
return Mp3FilePath;
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
if (inputStream != null) {
|
|
|
try {
|
|
|
inputStream.close();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
if (fileOutputStream != null) {
|
|
|
try {
|
|
|
fileOutputStream.close();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 下载多媒体文件(请注意,视频文件不支持下载,调用该接口需http协议)
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public InputStream getInputStream(String mediaId,String wechat_appid) {
|
|
|
String accessToken = wxAccessTokenService.getWxAccessTokenById(wechat_appid).getAccessToken();
|
|
|
InputStream is = null;
|
|
|
String url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" + accessToken + "&media_id=" + mediaId;
|
|
|
try {
|
|
|
URL urlGet = new URL(url);
|
|
|
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
|
|
|
http.setRequestMethod("GET"); // 必须是get方式请求
|
|
|
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
|
|
http.setDoOutput(true);
|
|
|
http.setDoInput(true);
|
|
|
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
|
|
|
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
|
|
|
http.connect();
|
|
|
// 获取文件转化为byte流
|
|
|
is = http.getInputStream();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return is;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取微信服务器图片
|
|
|
* @param wechat_appid 微信公众号appid
|
|
|
* @return
|
|
|
*/
|
|
|
public String fetchWxImages(String wechat_appid) {
|
|
|
String photos = "";
|
|
|
try {
|
|
|
String images = request.getParameter("mediaIds");
|
|
|
if (org.apache.commons.lang3.StringUtils.isEmpty(images)) {
|
|
|
return photos;
|
|
|
}
|
|
|
String[] mediaIds = images.split(",");
|
|
|
for (String mediaId : mediaIds) {
|
|
|
if (org.apache.commons.lang3.StringUtils.isEmpty(mediaId)) {
|
|
|
continue;
|
|
|
}
|
|
|
String temp = saveImageToDisk(mediaId,wechat_appid);
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(temp)) {
|
|
|
if (photos.length() == 0) {
|
|
|
photos = temp;
|
|
|
} else {
|
|
|
photos += "," + temp;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
// error(e);
|
|
|
}
|
|
|
return photos;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取下载图片信息(jpg)
|
|
|
*
|
|
|
* @param mediaId 文件的id
|
|
|
* @param wechat_appid 微信appid
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public String saveImageToDisk(String mediaId,String wechat_appid) throws Exception {
|
|
|
// 文件保存的临时路径
|
|
|
String tempPath = upload_temp_path + File.separator;
|
|
|
// 拼接年月日路径
|
|
|
String datePath = DateUtil.getStringDate("yyyy") + File.separator + DateUtil.getStringDate("MM") + File.separator + DateUtil.getStringDate("dd") + File.separator;
|
|
|
// 重命名文件
|
|
|
String newFileName = DateUtil.dateToStr(new Date(), DateUtil.YYYYMMDDHHMMSS) + "_" + new Random().nextInt(1000) + ".png";
|
|
|
// 保存路径
|
|
|
File uploadFile = new File(tempPath + datePath + newFileName);
|
|
|
|
|
|
InputStream inputStream = null;
|
|
|
FileOutputStream fileOutputStream = null;
|
|
|
try {
|
|
|
if (!uploadFile.getParentFile().exists()) {
|
|
|
uploadFile.getParentFile().mkdirs();
|
|
|
}
|
|
|
inputStream = getInputStream(mediaId,wechat_appid);
|
|
|
byte[] data = new byte[1024];
|
|
|
int len = 0;
|
|
|
fileOutputStream = new FileOutputStream(uploadFile);
|
|
|
while ((len = inputStream.read(data)) != -1) {
|
|
|
fileOutputStream.write(data, 0, len);
|
|
|
}
|
|
|
// 生成缩略图
|
|
|
ImageCompress.compress(uploadFile.getAbsolutePath(), uploadFile.getAbsolutePath() + "_small", 300, 300);
|
|
|
// 返回保存路径
|
|
|
return datePath + newFileName;
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
if (inputStream != null) {
|
|
|
try {
|
|
|
inputStream.close();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
if (fileOutputStream != null) {
|
|
|
try {
|
|
|
fileOutputStream.close();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 患者端
|
|
|
* 发起专家咨询
|
|
|
* @param ct 专家咨询对象
|
|
|
* @param patient 患者标识
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONObject addTeamConsult(ConsultTeamDo ct, String patient, String doctor) throws Exception {
|
|
|
JSONObject re = new JSONObject();
|
|
|
if (!StringUtils.isEmpty(getUnfinishedConsult(patient, doctor))) {//判断是否有未结束的咨询移到同步方法中
|
|
|
// re.put("status", -3);
|
|
|
// return re;
|
|
|
throw new RuntimeException("居民还有未结束的专家咨询!");
|
|
|
}
|
|
|
|
|
|
JSONObject users = new JSONObject();
|
|
|
users.put(doctor,0);
|
|
|
|
|
|
|
|
|
// 设置患者信息
|
|
|
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 = addConsult(ct.getPatient(), "专家咨询", ct.getSymptoms(), ct.getImages(), ct.getType());
|
|
|
// // 设置关联指导
|
|
|
// consult.setGuidance(ct.getGuidance());
|
|
|
// 设置咨询标识
|
|
|
ct.setConsult(consult.getId());
|
|
|
|
|
|
//推送给IM去创建议题,取得成员消息
|
|
|
JSONObject messages = imUtil.getCreateTopicMessage(patient, tempPatient.getName(), consult.getTitle(), consult.getSymptoms(), consult.getImages(), doctor);
|
|
|
users.put(patient, 0);//+ " "+(tempPatient.getSex()==1?"(男 ":"(女 ") + IdCardUtil.getAgeForIdcard(tempPatient.getIdcard())+")"
|
|
|
JSONObject obj = imUtil.createTopics(patient + "_" + doctor + "_" + ct.getType(), consult.getId(), tempPatient.getName(), users, messages, imUtil.SESSION_TYPE_MUC);
|
|
|
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 = addLogs(ct);
|
|
|
re.put("doctor", doctor);
|
|
|
re.put("status", 1);
|
|
|
return re;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加一条咨询记录
|
|
|
* @param patient 患者信息
|
|
|
* @param title 咨询标题
|
|
|
* @param type 咨询类型:9在线复诊,13专家咨询
|
|
|
* @return
|
|
|
*/
|
|
|
public ConsultDo addConsult(String patient, String title, String symptoms, String images, int type) {
|
|
|
ConsultDo consult = new ConsultDo();
|
|
|
consult.setId(UUID.randomUUID().toString().replaceAll("-", ""));
|
|
|
consult.setCzrq(new Date());
|
|
|
consult.setDel("1");
|
|
|
consult.setPatient(patient);
|
|
|
consult.setTitle(title);
|
|
|
consult.setSymptoms(symptoms);
|
|
|
consult.setImages(images);
|
|
|
consult.setType(type);
|
|
|
return consultDao.save(consult);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加咨询日志
|
|
|
*
|
|
|
* @param ct
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
private String addLogs(ConsultTeamDo ct) throws Exception {
|
|
|
List<ConsultTeamLogDo> logs = new ArrayList<ConsultTeamLogDo>();
|
|
|
// 添加问题咨询日志
|
|
|
String content = "";
|
|
|
|
|
|
content += "咨询问题:" + (org.apache.commons.lang3.StringUtils.isEmpty(ct.getSymptoms()) ? "无" : ct.getSymptoms());
|
|
|
|
|
|
// 生成提问日志,并推送相关消息
|
|
|
ConsultTeamLogDo infoLog = new ConsultTeamLogDo();
|
|
|
infoLog.setConsult(ct.getConsult());
|
|
|
if (content.length() > 2500) {
|
|
|
content = content.substring(0, 2500);
|
|
|
}
|
|
|
infoLog.setContent(content);
|
|
|
infoLog.setDel("1");
|
|
|
infoLog.setType(0);
|
|
|
infoLog.setChatType(1);
|
|
|
infoLog.setCzrq(new Date());
|
|
|
logs.add(infoLog);
|
|
|
// 图片日志
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(ct.getImages())) {
|
|
|
String[] images = ct.getImages().split(",");
|
|
|
for (String image : images) {
|
|
|
if (org.apache.commons.lang3.StringUtils.isNoneEmpty(image)) {
|
|
|
ConsultTeamLogDo imgLog = new ConsultTeamLogDo();
|
|
|
// 设置咨询标识
|
|
|
imgLog.setConsult(ct.getConsult());
|
|
|
// 设置图片URL
|
|
|
imgLog.setContent(image);
|
|
|
imgLog.setDel("1");
|
|
|
infoLog.setType(0);
|
|
|
imgLog.setCzrq(new Date());
|
|
|
// 图片类型
|
|
|
imgLog.setChatType(2);
|
|
|
// 添加到待保存队列
|
|
|
logs.add(imgLog);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 语音日志
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotEmpty(ct.getVoice())) {
|
|
|
ConsultTeamLogDo voiceLog = new ConsultTeamLogDo();
|
|
|
// 设置咨询标识
|
|
|
voiceLog.setConsult(ct.getConsult());
|
|
|
// 设置语音URL
|
|
|
voiceLog.setContent(ct.getVoice());
|
|
|
voiceLog.setDel("1");
|
|
|
infoLog.setType(0);
|
|
|
// 语音类型
|
|
|
voiceLog.setChatType(3);
|
|
|
voiceLog.setCzrq(new Date());
|
|
|
// 添加到待保存队列
|
|
|
logs.add(voiceLog);
|
|
|
}
|
|
|
if (!logs.isEmpty()) {
|
|
|
Iterable<ConsultTeamLogDo> iterable = consultTeamLogDao.save(logs);
|
|
|
if (iterable == null || iterable.iterator() == null || !iterable.iterator().hasNext()) {
|
|
|
// 日志保存失败
|
|
|
throw new Exception("consult team log save failed!");
|
|
|
}
|
|
|
}
|
|
|
// 患者提问或追问,给医生发消息
|
|
|
// sendMessage(ct.getDoctor(), ct.getPatient(), "三师咨询", "您有新的三师咨询消息", ct.getConsult(), 116, 1, 0, 0);
|
|
|
return content;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加续方咨询
|
|
|
*
|
|
|
* @param outpatientCode
|
|
|
* @param patient
|
|
|
* @param agent
|
|
|
* @param doctorCode
|
|
|
* @param reason
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject addPrescriptionConsult(String outpatientCode, String patient,String doctorCode, ConsultTeamDo ct, String reason, Integer type) throws Exception {
|
|
|
|
|
|
synchronized (outpatientCode.intern()) {
|
|
|
/**
|
|
|
* toto 判断是否存在未审核的复诊
|
|
|
*/
|
|
|
// String check = prescriptionInfoService.presCheckState(jwCode);
|
|
|
// if ("0".equals(check)) {//存在未审核的续方
|
|
|
// return -1;
|
|
|
// }
|
|
|
|
|
|
|
|
|
BaseDoctorDO doctor = baseDoctorDao.findById(doctorCode);
|
|
|
// doctorCode = doctor.getCode();
|
|
|
// 查询患者信息
|
|
|
BasePatientDO p = basePatientDao.findById(patient);
|
|
|
|
|
|
//1、获取his就诊记录详情(保存续方表、药品续方信息表、续方疾病类型表)
|
|
|
WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findOne(outpatientCode);
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("title", p.getName() + "申请复诊");
|
|
|
|
|
|
|
|
|
String content = jsonObject.toString();
|
|
|
|
|
|
//4、创建咨询
|
|
|
JSONObject users = new JSONObject();//咨询参与者
|
|
|
users.put(patient, 0);
|
|
|
users.put(doctorCode, 0);
|
|
|
//关联业务code
|
|
|
ct.setRelationCode(outpatientCode);
|
|
|
//医生信息
|
|
|
ct.setDoctor(doctorCode);
|
|
|
ct.setDoctorName(doctor.getName());
|
|
|
// 设置患者信息
|
|
|
ct.setPatient(patient);
|
|
|
// if (1 == type) {
|
|
|
// ct.setSymptoms("高血压");
|
|
|
// } else if (2 == type) {
|
|
|
// ct.setSymptoms("糖尿病");
|
|
|
// } else if (3 == type) {
|
|
|
// ct.setSymptoms("高血压,糖尿病");
|
|
|
// } else {
|
|
|
// }
|
|
|
|
|
|
// 设置患者姓名
|
|
|
ct.setName(p.getName());
|
|
|
// 设置患者生日
|
|
|
ct.setBirthday(p.getBirthday());
|
|
|
//新增性别
|
|
|
ct.setSex(p.getSex());
|
|
|
// 设置患者头像
|
|
|
ct.setPhoto(p.getPhoto());
|
|
|
// 设置操作日期
|
|
|
ct.setCzrq(new Date());
|
|
|
ct.setDel("1");
|
|
|
ct.setStatus(0);
|
|
|
ct.setEvaluate(0);
|
|
|
// 医生未读数量为1
|
|
|
ct.setDoctorRead(1);
|
|
|
// 添加咨询记录
|
|
|
ConsultDo consult = addConsult(ct.getPatient(), "申请复诊", ct.getSymptoms(), ct.getImages(), ct.getType());
|
|
|
// 设置关联指导
|
|
|
consult.setGuidance(ct.getGuidance());
|
|
|
//关联业务code
|
|
|
consult.setRelationCode(outpatientCode);
|
|
|
// 设置咨询标识
|
|
|
ct.setConsult(consult.getId());
|
|
|
|
|
|
//推送给IM去创建议题,取得成员消息
|
|
|
JSONObject messages = imUtil.getCreateTopicMessage(doctorCode, doctor.getName(), consult.getTitle(), content, consult.getImages(), patient);
|
|
|
|
|
|
//5、(im创建咨询) 续方咨询的sessionid为居民code+就诊code+咨询类型(图文,视频,图文+视频)
|
|
|
String sessionId = patient + "_" + outpatientCode + "_" + ct.getType();
|
|
|
JSONObject obj = imUtil.createTopics(sessionId, consult.getId(), p.getName(), users, messages, imUtil.SESSION_TYPE_EXAMINATION);
|
|
|
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);
|
|
|
|
|
|
//设置咨询code
|
|
|
// wlyyOutpatientDO.setConsult(consult.getCode());
|
|
|
// prescriptionDao.save(prescription);
|
|
|
|
|
|
//6、记录咨询的医生详情
|
|
|
ConsultTeamDoctorDo cd = new ConsultTeamDoctorDo();
|
|
|
cd.setConsult(consult.getId());
|
|
|
cd.setDel("1");
|
|
|
cd.setCzrq(new Date());
|
|
|
cd.setTo(doctorCode);
|
|
|
consultTeamDoctorDao.save(cd);
|
|
|
|
|
|
//7、发送系统消息提示团队长有未审核的消息
|
|
|
// addCheckMessage(prescription, sessionId, p);
|
|
|
|
|
|
//8、 保存医生咨询信息
|
|
|
// 添加咨询转发记录
|
|
|
// 添加医生咨询日志
|
|
|
addLogs(ct);
|
|
|
|
|
|
JSONObject result = imUtil.getSingleSessionInfo(sessionId,doctorCode);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 居民结束咨询
|
|
|
* @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, d.getName(), consultTeam.getConsult());
|
|
|
}
|
|
|
|
|
|
|
|
|
if (obj == null) {
|
|
|
throw new RuntimeException("IM消息结束异常!");
|
|
|
}
|
|
|
if (obj.getInteger("status") == -1) {
|
|
|
throw new RuntimeException(String.valueOf(obj.get("message")));
|
|
|
}
|
|
|
|
|
|
|
|
|
String name = "";
|
|
|
String returnJson = "";
|
|
|
//推送给IM文字消息
|
|
|
// if (endType == 1) {
|
|
|
// BasePatientDO p = basePatientDao.findById(endOperator);
|
|
|
// name = p.getName();
|
|
|
// returnJson = imUtil.sendIM(consultTeam.getPatient(), consultTeam.getDoctor(), "7", name + "结束了本次咨询");
|
|
|
// } else {
|
|
|
// BaseDoctorDO d = baseDoctorDao.findById(endOperator);
|
|
|
// name = d.getName();
|
|
|
// returnJson = imUtil.sendIM(consultTeam.getDoctor(), consultTeam.getPatient(), "7", name + "结束了本次咨询");
|
|
|
// }
|
|
|
|
|
|
// if (org.apache.commons.lang3.StringUtils.isEmpty(returnJson)) {
|
|
|
// throw new RuntimeException("send consult finished IM message failed!");
|
|
|
//// throw new Exception("send consult finished IM message failed");
|
|
|
// } else {
|
|
|
// JSONObject jo = JSON.parseObject(returnJson); //设置消息ID
|
|
|
// consultTeam.setEndMsgId(jo.getInteger("startId") + "");
|
|
|
// consultTeam.setEndOperator(endOperator);
|
|
|
// consultTeam.setEndType(endType);
|
|
|
// }
|
|
|
|
|
|
// org.json.JSONObject group = talkGroupService.findConsultTalkGroup(consultTeam.getConsult());
|
|
|
//
|
|
|
// if (group != null) {
|
|
|
// String json = sendGroupIM(endOperator, group.getString("code"), "7", name + "结束了本次咨询");
|
|
|
//
|
|
|
// if (org.apache.commons.lang3.StringUtils.isEmpty(json)) {
|
|
|
// throw new Exception("send consult finished IM message failed");
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
consultTeam.setEndMsgId(obj.getString("id"));
|
|
|
cons.setEndTime(new Date());
|
|
|
consultTeam.setEndTime(new Date());
|
|
|
consultTeam.setStatus(1);
|
|
|
consultDao.save(cons);
|
|
|
consultTeamDao.save(consultTeam);
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据咨询CODE获取session_id
|
|
|
* @param consult
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getTopic(String consult) throws Exception {
|
|
|
|
|
|
return imUtil.getTopic(consult);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取咨询问题,图片,居民信息
|
|
|
* @param consult
|
|
|
* @param patientCode
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject getConsultInfoAndPatientInfo(String consult,String patientCode) {
|
|
|
BasePatientDO basePatientDO = basePatientDao.findById(patientCode);
|
|
|
ConsultDo consultDo = consultDao.findOne(consult);
|
|
|
JSONObject result = new JSONObject();
|
|
|
|
|
|
JSONObject patientinfoObj = new JSONObject();
|
|
|
patientinfoObj.put("name",basePatientDO.getName());
|
|
|
patientinfoObj.put("sex",basePatientDO.getSex());
|
|
|
patientinfoObj.put("mobile",basePatientDO.getMobile());
|
|
|
patientinfoObj.put("address",basePatientDO.getAddress());
|
|
|
Integer age = DateUtil.getAgeForIdcard(basePatientDO.getIdcard());
|
|
|
patientinfoObj.put("age",age);
|
|
|
result.put("patientInfo",patientinfoObj);
|
|
|
result.put("consultDo",consultDo);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 根据复诊记录获取咨询CODE
|
|
|
* @param outpatientid
|
|
|
* @return
|
|
|
*/
|
|
|
public String getConsultCodeByOutpatientId(String outpatientid) {
|
|
|
String totalSql = "SELECT id FROM wlyy_consult WHERE relation_code='"+outpatientid+"'";
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
String id = "";
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
id = rstotal.get(0).get("id").toString();
|
|
|
}
|
|
|
return id;
|
|
|
}
|
|
|
}
|