|
@ -0,0 +1,326 @@
|
|
|
package com.yihu.jw.hospital.message.service;
|
|
|
|
|
|
import com.google.j2objc.annotations.AutoreleasePool;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.entity.base.score.BaseEvaluateDO;
|
|
|
import com.yihu.jw.entity.base.score.BaseEvaluateScoreDO;
|
|
|
import com.yihu.jw.entity.hospital.message.BaseBannerDO;
|
|
|
import com.yihu.jw.entity.hospital.message.BaseUserMessageDO;
|
|
|
import com.yihu.jw.entity.hospital.message.BaseUserMsgContentDO;
|
|
|
import com.yihu.jw.evaluate.score.dao.BaseEvaluateDao;
|
|
|
import com.yihu.jw.evaluate.score.dao.BaseEvaluateScoreDao;
|
|
|
import com.yihu.jw.hospital.message.dao.BaseUserMessageDao;
|
|
|
import com.yihu.jw.hospital.message.dao.BaseUserMsgContentDao;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.restmodel.web.Envelop;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.rm.base.BaseRequestMapping;
|
|
|
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.utils.hibernate.HibenateUtils;
|
|
|
import com.yihu.mysql.query.BaseJpaService;
|
|
|
import com.yihu.mysql.query.URLQueryParser;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.checkerframework.checker.units.qual.A;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.jpa.provider.HibernateUtils;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.swing.plaf.PanelUI;
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
public class BaseUserMsgService extends BaseJpaService<BaseUserMessageDO, BaseUserMessageDao> {
|
|
|
|
|
|
@Autowired
|
|
|
private BaseUserMessageDao baseUserMessageDao;
|
|
|
@Autowired
|
|
|
private BaseUserMsgContentDao baseUserMsgContentDao;
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
@Autowired
|
|
|
private HibenateUtils hibenateUtils;
|
|
|
@Autowired
|
|
|
private BaseEvaluateScoreDao baseEvaluateScoreDao;
|
|
|
@Autowired
|
|
|
private BaseEvaluateDao baseEvaluateDao;
|
|
|
@Autowired
|
|
|
private BasePatientDao basePatientDao;
|
|
|
|
|
|
@Value("${wechat.id}")
|
|
|
private String wxId;
|
|
|
|
|
|
|
|
|
@Value("${wechat.flag}")
|
|
|
private boolean flag;
|
|
|
|
|
|
//患者给医生自身留言接口
|
|
|
public void leaveMessage(String content, String reciverId, String reciverName, String senderId, String senderName) {
|
|
|
BaseUserMessageDO baseUserMessageDO = new BaseUserMessageDO();
|
|
|
String relationCode=UUID.randomUUID().toString();
|
|
|
baseUserMessageDO.setContent(content);
|
|
|
baseUserMessageDO.setSender(senderId);
|
|
|
baseUserMessageDO.setSenderName(senderName);
|
|
|
baseUserMessageDO.setReceiver(reciverId);
|
|
|
baseUserMessageDO.setReceiverName(reciverName);
|
|
|
baseUserMessageDO.setRelationCode(relationCode);
|
|
|
baseUserMessageDO.setRelationName("自身留言");
|
|
|
baseUserMessageDO.setRelationType(1);
|
|
|
baseUserMessageDO.setStatus(1);
|
|
|
baseUserMessageDO.setDel(1);
|
|
|
baseUserMessageDao.save(baseUserMessageDO);
|
|
|
|
|
|
}
|
|
|
//回复留言接口
|
|
|
@Transactional
|
|
|
public void responseMessage(String contentId,String content, String reciverId, String reciverName, String senderId, String senderName) {
|
|
|
BaseUserMessageDO baseUserMessageDOS = baseUserMessageDao.findOne(contentId);
|
|
|
if(null!=baseUserMessageDOS){
|
|
|
baseUserMessageDOS.setStatus(2);
|
|
|
}
|
|
|
baseUserMessageDao.save(baseUserMessageDOS);
|
|
|
BaseUserMsgContentDO baseUserMsgContentDO =new BaseUserMsgContentDO();
|
|
|
baseUserMsgContentDO.setBaseUserMsgId(contentId);
|
|
|
baseUserMsgContentDO.setContent(content);
|
|
|
baseUserMsgContentDO.setSender(senderId);
|
|
|
baseUserMsgContentDO.setSenderName(senderName);
|
|
|
baseUserMsgContentDO.setReceiver(reciverId);
|
|
|
baseUserMsgContentDO.setReceiverName(reciverName);
|
|
|
baseUserMsgContentDO.setDel(1);
|
|
|
baseUserMsgContentDO.setStatus(1);
|
|
|
baseUserMsgContentDao.save(baseUserMsgContentDO);
|
|
|
}
|
|
|
|
|
|
//评论留言展示
|
|
|
public Envelop getMessage(String doctor, String showAll, String showAllType, String beginTime, String endTime, Integer page, Integer pageSize) {
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
Map<String,Object> params = new HashedMap();
|
|
|
sql.append("select t.id as \"id\" ,t.content as \"content\"," +
|
|
|
"t.sender as \"sender\",t.sender_name as \"sender_name\",t.receiver as \"receiver\"," +
|
|
|
"t.receiver_name as \"receiver_name\",t.relation_type as \"relation_type\"," +
|
|
|
"t.relation_code as \"relation_code\",t.status as \"status\",t.update_time as \"update_time\"");
|
|
|
/*if("xm_ykyy_wx".equals(wxId)){
|
|
|
flag = true;
|
|
|
if (flag){
|
|
|
sql.append(",date_format(t.update_time,'%Y-%m-%d %H:%i:%S' ) AS \"update_time\"");
|
|
|
}else {
|
|
|
sql.append(",to_char(t.update_time,'YYYY-MM-DD hh24:mi:ss') AS \"update_time\"");
|
|
|
}
|
|
|
}else{
|
|
|
sql.append("date_format(t.update_time,'%Y-%m-%d %H:%i:%S' ) AS \"update_time\"");
|
|
|
}*/
|
|
|
|
|
|
sql.append(" from base_user_message t where 1 = 1");
|
|
|
if (StringUtils.isNotEmpty(doctor)) {
|
|
|
sql.append(" and t.receiver = '" + doctor + "'");
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(showAll)) {
|
|
|
sql.append(" and t.status = " + showAll);
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(showAllType)) {
|
|
|
sql.append(" and t.relation_type = " + showAllType);
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(beginTime)) {
|
|
|
sql.append(" and t.update_time > '" + beginTime+"'");//DateUtil.stringToDate(beginTime,"yyyy-MM-dd HH:mm:ss")
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(endTime)) {
|
|
|
sql.append(" and t.update_time < '" + endTime+"'");//DateUtil.stringToDate(endTime,"yyyy-MM-dd HH:mm:ss")
|
|
|
}
|
|
|
String sqlcount = "SELECT COUNT(1) AS \"total\" FROM ("+sql.toString()+") t";
|
|
|
Long count = 0L;
|
|
|
List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlcount,params);
|
|
|
if(total!=null){
|
|
|
//mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
|
|
|
count = hibenateUtils.objTransformLong(total.get(0).get("total"));
|
|
|
}
|
|
|
sql.append(" GROUP BY t.relation_code ORDER BY t.update_time ASC");
|
|
|
System.out.println(sql.toString());
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql.toString(),params,page,pageSize);
|
|
|
List<Map<String, Object>> returnList = new ArrayList<>();
|
|
|
for (Map<String, Object> map : list) {
|
|
|
Map<String,Object> returnMap = new HashMap<>();
|
|
|
String relationCode = map.get("relation_code").toString();
|
|
|
String id = map.get("id").toString();
|
|
|
BaseUserMessageDO baseUserMsgContentDO =new BaseUserMessageDO();
|
|
|
baseUserMsgContentDO.setId(id);
|
|
|
baseUserMsgContentDO.setReceiver(map.get("receiver").toString());
|
|
|
baseUserMsgContentDO.setReceiverName(map.get("receiver_name").toString());
|
|
|
baseUserMsgContentDO.setSenderName(map.get("sender").toString());
|
|
|
baseUserMsgContentDO.setContent(map.get("content").toString());
|
|
|
BasePatientDO patientDO = basePatientDao.findById(map.get("sender").toString());
|
|
|
String icon = null;
|
|
|
if (null!=patientDO){
|
|
|
icon = patientDO.getPhoto();
|
|
|
}
|
|
|
List<BaseUserMsgContentDO> contentlist=baseUserMsgContentDao.getContentListByID(id);
|
|
|
baseUserMsgContentDO.setMsgList(contentlist);
|
|
|
String updateTime = map.get("update_time").toString();
|
|
|
baseUserMsgContentDO.setUpdateTime(DateUtil.strToDateLong(updateTime));
|
|
|
|
|
|
//map.put("update_time",DateUtil.dateToStrLong(DateUtil.strToDateLong(updateTime)));
|
|
|
List<BaseEvaluateDO> baseEvaluateDO=baseEvaluateDao.findByRelationCode(relationCode);
|
|
|
BaseEvaluateScoreDO scoreList =null;
|
|
|
if (baseEvaluateDO.size()>0){
|
|
|
String findRC=baseEvaluateDO.get(0).getRelationCode();
|
|
|
scoreList= baseEvaluateScoreDao.findOne(relationCode);
|
|
|
if(null!=scoreList){
|
|
|
returnMap.put("everangScore",scoreList);
|
|
|
returnMap.put("scoreList",baseEvaluateDO);
|
|
|
}
|
|
|
}
|
|
|
baseUserMsgContentDO.setSenderName(scoreList.getType()==1?map.get("sender_name").toString():map.get("sender_name").toString().substring(0,1)+"**");
|
|
|
returnMap.put("contentList",baseUserMsgContentDO);
|
|
|
returnMap.put("patientIcon",icon);
|
|
|
returnList.add(returnMap);
|
|
|
}
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, returnList, page, pageSize, count);
|
|
|
}
|
|
|
public List<Map<String,Object>> getListByRelationCode(String relationCode){
|
|
|
//查询评价明细
|
|
|
String sqlScoreList = "SELECT " +
|
|
|
"a.score as \"score\"," +
|
|
|
"a.score_type as \"score_type\"," +
|
|
|
"a.content as \"content\",";
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sqlScoreList += "date_format(b.create_time,'%Y-%m-%d %H:%i:%S' ) AS \"create_time\",";
|
|
|
}else {
|
|
|
sqlScoreList += "to_char(b.create_time,'YYYY-MM-DD hh24:mi:ss') AS \"create_time\",";
|
|
|
}
|
|
|
}else{
|
|
|
sqlScoreList += "date_format(b.create_time,'%Y-%m-%d %H:%i:%S' ) AS \"create_time\",";
|
|
|
}
|
|
|
|
|
|
sqlScoreList += "c.type as \"type\"," +
|
|
|
"c.name as \"patientname\"," +
|
|
|
"b.id as \"id\"," +
|
|
|
"c.photo as \"patientphoto\"," +
|
|
|
"b.type as \"niming\" " +
|
|
|
"FROM " +
|
|
|
"base_evaluate a " +
|
|
|
"LEFT JOIN base_evaluate_score b ON b.id=a.relation_code " +
|
|
|
"LEFT JOIN wlyy_consult_team c ON c.consult=b.relation_code " +
|
|
|
"WHERE a.relation_code=b.id "+
|
|
|
"AND c.consult='"+relationCode+"'";
|
|
|
System.out.println(sqlScoreList);
|
|
|
List<Map<String,Object>> scoreList = hibenateUtils.createSQLQuery(sqlScoreList);
|
|
|
if(scoreList.isEmpty()){
|
|
|
return null;
|
|
|
}
|
|
|
return scoreList;
|
|
|
}
|
|
|
//获取单条评论详细信息
|
|
|
public List<Map<String,Object>> getSingle(String id){
|
|
|
BaseUserMessageDO baseUserMessageDO=baseUserMessageDao.findOne(id);
|
|
|
List<BaseUserMsgContentDO> contentlist=baseUserMsgContentDao.getContentListByID(id);
|
|
|
String relationCode= baseUserMessageDO.getRelationCode();
|
|
|
|
|
|
List<Map<String,Object>> returnResult = new ArrayList<>();
|
|
|
//List<Map<String,Object>> scoreList = this.getListByRelationCode(relationCode);
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
BaseEvaluateScoreDO scoreList = new BaseEvaluateScoreDO();
|
|
|
List<BaseEvaluateDO> baseEvaluateDO=baseEvaluateDao.findByRelationCode(relationCode);
|
|
|
if (baseEvaluateDO.size()>0){
|
|
|
String findRC=baseEvaluateDO.get(0).getRelationCode();
|
|
|
scoreList= baseEvaluateScoreDao.findOne(relationCode);
|
|
|
if(null!=scoreList){
|
|
|
map.put("everangScore",scoreList);
|
|
|
map.put("scoreList",baseEvaluateDO);
|
|
|
}
|
|
|
}
|
|
|
map.put("scoreList",scoreList);
|
|
|
map.put("sender",baseUserMessageDO.getSender());
|
|
|
map.put("senderName",baseUserMessageDO.getSenderName());
|
|
|
map.put("content",baseUserMessageDO.getContent());
|
|
|
map.put("receiver",baseUserMessageDO.getReceiver());
|
|
|
map.put("receiverName",baseUserMessageDO.getReceiverName());
|
|
|
map.put("relationCode",baseUserMessageDO.getRelationCode());
|
|
|
map.put("relationType",baseUserMessageDO.getRelationType());
|
|
|
map.put("status",baseUserMessageDO.getStatus());
|
|
|
map.put("updateTime",DateUtil.dateToStrLong(DateUtil.strToDateLong(baseUserMessageDO.getUpdateUserName())));
|
|
|
map.put("relationName",baseUserMessageDO.getRelationName());
|
|
|
map.put("contentlist",contentlist);
|
|
|
returnResult.add(map);
|
|
|
return returnResult;
|
|
|
}
|
|
|
//专家咨询留言
|
|
|
public void expertMessage(String content, String reciverId, String reciverName, String senderId, String senderName, String relationCode) {
|
|
|
|
|
|
BaseUserMessageDO baseUserMessageDO = new BaseUserMessageDO();
|
|
|
baseUserMessageDO.setContent(content);
|
|
|
baseUserMessageDO.setSender(senderId);
|
|
|
baseUserMessageDO.setSenderName(senderName);
|
|
|
baseUserMessageDO.setReceiver(reciverId);
|
|
|
baseUserMessageDO.setReceiverName(reciverName);
|
|
|
baseUserMessageDO.setRelationCode(relationCode);
|
|
|
baseUserMessageDO.setRelationName("专家咨询");
|
|
|
baseUserMessageDO.setRelationType(3);
|
|
|
baseUserMessageDO.setStatus(1);
|
|
|
baseUserMessageDO.setDel(1);
|
|
|
baseUserMessageDao.save(baseUserMessageDO);
|
|
|
|
|
|
|
|
|
}
|
|
|
//在线复诊留言
|
|
|
public void onlineVisitMessage(String content, String reciverId, String reciverName, String senderId, String senderName, String relationCode) {
|
|
|
BaseUserMessageDO baseUserMessageDO = new BaseUserMessageDO();
|
|
|
baseUserMessageDO.setContent(content);
|
|
|
baseUserMessageDO.setSender(senderId);
|
|
|
baseUserMessageDO.setSenderName(senderName);
|
|
|
baseUserMessageDO.setReceiver(reciverId);
|
|
|
baseUserMessageDO.setReceiverName(reciverName);
|
|
|
baseUserMessageDO.setRelationCode(relationCode);
|
|
|
baseUserMessageDO.setRelationName("在线复诊");
|
|
|
baseUserMessageDO.setRelationType(4);
|
|
|
baseUserMessageDO.setStatus(1);
|
|
|
baseUserMessageDO.setDel(1);
|
|
|
baseUserMessageDao.save(baseUserMessageDO);
|
|
|
|
|
|
|
|
|
}
|
|
|
//评论回复展示
|
|
|
public Envelop showReply(String relationCode, Integer page, Integer pageSize){
|
|
|
String sql = dealSql(relationCode,false);
|
|
|
String sqlCount = dealSql(relationCode,true);
|
|
|
Map<String,Object> params = new HashedMap();
|
|
|
if (StringUtils.isNotEmpty(relationCode)){
|
|
|
params.put("relationCode",relationCode);
|
|
|
}
|
|
|
Long count = 0L;
|
|
|
List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlCount,params);
|
|
|
if(total!=null){
|
|
|
//mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
|
|
|
count = hibenateUtils.objTransformLong(total.get(0).get("total"));
|
|
|
}
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql,params,page,pageSize);
|
|
|
for (Map<String,Object> map:list){
|
|
|
String createTime= map.get("updateTime").toString();
|
|
|
String updateTime = map.get("updateTime1").toString();
|
|
|
map.put("updateTime",DateUtil.dateToStrLong(DateUtil.strToDateLong(createTime)));
|
|
|
map.put("updateTime1",DateUtil.dateToStrLong(DateUtil.strToDateLong(updateTime)));
|
|
|
}
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, pageSize, count);
|
|
|
}
|
|
|
private String dealSql(String relationCode,Boolean isCount){
|
|
|
StringBuffer sql = new StringBuffer();
|
|
|
if (isCount) {
|
|
|
sql.append("SELECT COUNT(1) AS \"total\" FROM (");
|
|
|
}
|
|
|
sql.append("select " +"b.id AS \"id\",b.content AS \"topContent\",b.sender_name AS \"topSenderName\" " +
|
|
|
",a.content AS \"content\",b.update_time AS \"updateTime\", a.sender_name AS \"senderName\",a.receiver_name AS \"receiverName\",a.update_time AS \"updateTime1\""+
|
|
|
"from base_user_msg_content a left join base_user_message b" +
|
|
|
"on on b.id = a.base_user_msg_id");
|
|
|
sql.append(" where 1=1 ");
|
|
|
if (StringUtils.isNotEmpty(relationCode)){
|
|
|
sql.append(" and a.relation_code = :relationCode");
|
|
|
}
|
|
|
if (isCount) {
|
|
|
sql.append(") t");
|
|
|
}
|
|
|
return sql.toString();
|
|
|
}
|
|
|
}
|