Jelajahi Sumber

代码修改

yeshijie 7 tahun lalu
induk
melakukan
ca24a4c1b2

+ 26 - 1
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/controller/PrescriptionController.java

@ -1,5 +1,6 @@
package com.yihu.wlyy.service.controller;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.service.prescription.PrescriptionCAService;
import com.yihu.wlyy.service.service.prescription.PrescriptionService;
@ -87,7 +88,11 @@ public class PrescriptionController extends BaseController{
	public String readNewsOnline(@ApiParam(name="data",value="json串",defaultValue = "{}")
								 @RequestParam(value = "data",required = true) String data){
		try {
			return write(200,"success","url","http://www.yihu.com/");
			String url = prescriptionService.getReadNewsOnline(data);
			if("-1".equals(url)){
				error(-1,"未找到对应的续方记录");
			}
			return write(200,"success","url",url);
		}catch (Exception e){
			e.printStackTrace();
			return error(-1,e.getMessage());
@ -95,6 +100,26 @@ public class PrescriptionController extends BaseController{
	}
	/***************************************获取im消息*****************************************************/
	@RequestMapping(value = "getLoglist",method = RequestMethod.GET)
	@ApiOperation("获取续方消息")
	public String getLoglist(@ApiParam(name = "consult", value = "咨询code", defaultValue = "10")
							 @RequestParam(value = "consult", required = true) String consult,
							 @ApiParam(name = "page", value = "第几页", defaultValue = "0")
							 @RequestParam(value = "page", required = true) Integer page,
							 @ApiParam(name = "pagesize", value = "页面大小", defaultValue = "1")
							 @RequestParam(value = "pagesize", required = true) Integer pagesize){
		try {
			JSONObject json = prescriptionService.getLoglist(consult,page,pagesize);
			return write(200,"success","data",json);
		}catch (Exception e){
			e.printStackTrace();
			return error(-1,"获取续方消息失败");
		}
	}
	/***************************************获取im消息*****************************************************/
	/**************************************提供智业调用的接口 end*******************************************************/

+ 16 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/dao/consult/ConsultTeamDao.java

@ -0,0 +1,16 @@
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package com.yihu.wlyy.service.dao.consult;
import com.yihu.wlyy.service.entity.consult.ConsultTeam;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface ConsultTeamDao extends PagingAndSortingRepository<ConsultTeam, Long>, JpaSpecificationExecutor<ConsultTeam> {
	// 根據consult查詢咨询记录
	ConsultTeam findByConsult(String consult);
}

+ 328 - 0
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/entity/consult/ConsultTeam.java

@ -0,0 +1,328 @@
package com.yihu.wlyy.service.entity.consult;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.service.common.model.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
 * 三师咨询
 * @author George
 */
@Entity
@Table(name = "wlyy_consult_team")
public class ConsultTeam extends IdEntity {
	private static final long serialVersionUID = -7644448339473861513L;
	private String consult;         // 咨询标识
	private String doctor;          // 医生标识
	private String team;            // 三师团队标识
	private Integer type;           //  1、三师咨询,2、家庭医生咨询,6、患者名医咨询 7医生名医咨询 8续方咨询
	private String patient;         // 提问者标识
	private String name;            // 患者姓名
	private Integer sex;            // 患者性别
	private Date birthday;          // 患者生日
	private String photo;           // 患者头像
	private String when;            // 发病日期
	private String symptoms;        // 主要症状
	private Integer status;         // 咨询状态(0进行中,1已完成,-1患者取消,-2超时未响应自动关闭)
	private String images;          // 咨询图片URL,多图以逗号分隔
	private String voice;           // 咨询语音URL
	private String comment;         // 用户评价标识
	private String commentContent;  // 用户评价内容
	private Integer commentStar;    // 用户评价星级
	private Integer doctorRead;     // 医生未读数量
	private Integer patientRead;    // 患者未读数量
	private Date czrq;              // 咨询时间
	private String del;             // 作废标识,1正常,0作废
	private Long adminTeamId;//行政团队ID
	private Long guidance;   //关联指导
	private String doctorName;//醫生名字
	//起始消息id
	private String startMsgId;
	//结束消息id
	private String endMsgId;
	// 结束人
	private String endOperator;
	// 结束人类型
	private Integer endType;
	// 结束时间
	private Date endTime;
	//是否评价 1、已评价 0、未评价'
	private Integer evaluate;
	//评价时间
	private Date evaluateTime;
	private String relationCode;//关联业务表的code
	public Integer getEvaluate() {
		return evaluate;
	}
	public void setEvaluate(Integer evaluate) {
		this.evaluate = evaluate;
	}
	public Date getEvaluateTime() {
		return evaluateTime;
	}
	public void setEvaluateTime(Date evaluateTime) {
		this.evaluateTime = evaluateTime;
	}
	@Column(name = "admin_team_code")
	public Long getAdminTeamId() {
		return adminTeamId;
	}
	public void setAdminTeamId(Long adminTeamId) {
		this.adminTeamId = adminTeamId;
	}
	public String getConsult() {
		return consult;
	}
	public void setConsult(String consult) {
		this.consult = consult;
	}
	public ConsultTeam() {
	}
	public String getDoctor() {
		return doctor;
	}
	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}
	public String getTeam() {
		return team;
	}
	public void setTeam(String team) {
		this.team = team;
	}
	public Integer getType() {
		return type;
	}
	public void setType(Integer type) {
		this.type = type;
	}
	public String getPatient() {
		return patient;
	}
	public void setPatient(String patient) {
		this.patient = patient;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+08:00")
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public String getPhoto() {
		return photo;
	}
	public void setPhoto(String photo) {
		this.photo = photo;
	}
	@Column(name = "fbsj")
	public String getWhen() {
		return when;
	}
	public void setWhen(String when) {
		this.when = when;
	}
	public Integer getStatus() {
		return status;
	}
	public void setStatus(Integer status) {
		this.status = status;
	}
	public String getImages() {
		return images;
	}
	public void setImages(String images) {
		this.images = images;
	}
	public String getVoice() {
		return voice;
	}
	public void setVoice(String voice) {
		this.voice = voice;
	}
	public String getComment() {
		return comment;
	}
	public void setComment(String comment) {
		this.comment = comment;
	}
	@Column(name = "comment_content")
	public String getCommentContent() {
		return commentContent;
	}
	public void setCommentContent(String commentContent) {
		this.commentContent = commentContent;
	}
	@Column(name = "comment_star")
	public Integer getCommentStar() {
		return commentStar;
	}
	public void setCommentStar(Integer commentStar) {
		this.commentStar = commentStar;
	}
	@Column(name = "doctor_read")
	public Integer getDoctorRead() {
		return doctorRead;
	}
	public void setDoctorRead(Integer doctorRead) {
		this.doctorRead = doctorRead;
	}
	@Column(name = "patient_read")
	public Integer getPatientRead() {
		return patientRead;
	}
	public void setPatientRead(Integer patientRead) {
		this.patientRead = patientRead;
	}
	// 设定JSON序列化时的日期格式
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCzrq() {
		return czrq;
	}
	public void setCzrq(Date czrq) {
		this.czrq = czrq;
	}
	// 设定JSON序列化时的日期格式
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getEndTime() {
		return endTime;
	}
	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}
	public String getSymptoms() {
		return symptoms;
	}
	public void setSymptoms(String symptoms) {
		this.symptoms = symptoms;
	}
	public String getDel() {
		return del;
	}
	public void setDel(String del) {
		this.del = del;
	}
	public Integer getSex() {
		return sex;
	}
	public void setSex(Integer sex) {
		this.sex = sex;
	}
	@Transient
	public String getDoctorName() {
		return doctorName;
	}
	public void setDoctorName(String doctorName) {
		this.doctorName = doctorName;
	}
	public Long getGuidance() {
		return guidance;
	}
	public void setGuidance(Long guidance) {
		this.guidance = guidance;
	}
	public String getStartMsgId() {
		return startMsgId;
	}
	public void setStartMsgId(String startMsgId) {
		this.startMsgId = startMsgId;
	}
	public String getEndMsgId() {
		return endMsgId;
	}
	public void setEndMsgId(String endMsgId) {
		this.endMsgId = endMsgId;
	}
	public String getEndOperator() {
		return endOperator;
	}
	public void setEndOperator(String endOperator) {
		this.endOperator = endOperator;
	}
	public Integer getEndType() {
		return endType;
	}
	public void setEndType(Integer endType) {
		this.endType = endType;
	}
	public String getRelationCode() {
		return relationCode;
	}
	public void setRelationCode(String relationCode) {
		this.relationCode = relationCode;
	}
}

+ 107 - 9
patient-co-service/wlyy_service/src/main/java/com/yihu/wlyy/service/service/prescription/PrescriptionService.java

@ -3,13 +3,16 @@ package com.yihu.wlyy.service.service.prescription;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.service.common.SystemConfig;
import com.yihu.wlyy.service.common.model.Result;
import com.yihu.wlyy.service.common.util.AmoutUtils;
import com.yihu.wlyy.service.common.util.CommonUtil;
import com.yihu.wlyy.service.common.util.DateUtil;
import com.yihu.wlyy.service.dao.*;
import com.yihu.wlyy.service.dao.consult.ConsultTeamDao;
import com.yihu.wlyy.service.dao.prescription.*;
import com.yihu.wlyy.service.entity.*;
import com.yihu.wlyy.service.entity.consult.ConsultTeam;
import com.yihu.wlyy.service.entity.prescription.*;
import com.yihu.wlyy.service.entity.prescription.VO.PrescriptionExpressageVO;
import com.yihu.wlyy.service.service.ZysoftBaseService;
@ -64,11 +67,12 @@ public class PrescriptionService extends ZysoftBaseService{
    private PrescriptionReviewedDao prescriptionReviewedDao;
    @Autowired
    private MessageDao messageDao;
    @Value("${im.data_base_name}")
    private String im;
    @Value("${redisChannel.prescription}")
    private String channelTopic;
//    private String channelTopic = "redisPrescription";
    @Autowired
    private ConsultTeamDao consultTeamDao;
    @Autowired
    private AmoutUtils amoutUtils;
@ -165,6 +169,9 @@ public class PrescriptionService extends ZysoftBaseService{
                        }
                        prescriptionInfo.setIsRefrigerate(isRefrigerate);
                        //用药频率
                        prescriptionInfo.setDrugRateName(getZyCommonDictName(info.getString("drugRate")));
                        infoList.add(prescriptionInfo);
                    }
@ -192,12 +199,12 @@ public class PrescriptionService extends ZysoftBaseService{
                    messageDao.save(message);
                    // redis 的发布 {tilte:redisAddPrescription   state: 1 ,//1:成功,2.失败 mes:'开方成功' prescription : "0001" //续方CODE  }
                    JSONObject redisMessage = new JSONObject();
                    redisMessage.put("title","adjustPrescription");
                    redisMessage.put("state",1);
                    redisMessage.put("prescription",prescription.getCode());
                    redisMessage.put("mes","调整处方完成");
                    redisTemplate.convertAndSend(channelTopic,redisMessage.toString());
//                    JSONObject redisMessage = new JSONObject();
//                    redisMessage.put("title","adjustPrescription");
//                    redisMessage.put("state",1);
//                    redisMessage.put("prescription",prescription.getCode());
//                    redisMessage.put("mes","调整处方完成");
//                    redisTemplate.opsForList().leftPush(channelTopic,redisMessage.toString());
                }else {
                    //调整失败
                    prescription.setStatus(4);
@ -222,6 +229,18 @@ public class PrescriptionService extends ZysoftBaseService{
        return addZyPushLog(jsonObject,"prescriptionAdjustCompleted","接收线下处方调整完成消息",error,"POST",status,"1",errMsg);
    }
    public String getZyCommonDictName(String code){
        try{
            String sql  ="SELECT t.name FROM zy_common_dict t WHERE t.code=? AND t.dict_name='IV_RECIPE_FREQUENCY_DICT'";
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql,new Object[]{code});
            if(list!=null&&list.size()>0){
                return (String)(list.get(0).get("name"));
            }
            return "";
        }catch (Exception e){
            return "";
        }
    }
    /**
     * 接收预结算完成消息
@ -369,9 +388,88 @@ public class PrescriptionService extends ZysoftBaseService{
        return addZyPushLog(jsonObject,"pharmacistPrescriptionCompletion","接收药师审方完成及结果消息",error,"POST",status,"1",errMsg);
    }
    /**
     * 提供在线问诊消息调阅
     * @param jsonObject
     * @return
     */
    public String getReadNewsOnline(String jsonObject){
        String url = "";
        String error = null;
        String status = "1";
        String errMsg = null;
        try{
            JSONObject json = JSONObject.parseObject(jsonObject);
            String orderNo = json.getString("ORDER_NO");//挂号编号
            String recipeNo = json.getString("RECIPE_NO");//处方编号
            Prescription prescription = prescriptionDao.findByVisitNoAndRecipeNo(orderNo,recipeNo);
            if(prescription==null){
                url = "-1";
            }else{
                url = SystemConfig.sysPropertiesSets.get("readNewsOnline_url")+"?consult="+prescription.getConsult();
            }
        }catch (JSONException ex){
            ex.printStackTrace();
            error = ex.getMessage();
            errMsg = ex.getMessage();
            status = "0";
        }catch (Exception e){
            e.printStackTrace();
            error = e.getMessage();
            status = "0";
        }
        //添加日志
        addZyPushLog(jsonObject,"getReadNewsOnline","提供在线问诊消息调阅",error,"POST",status,"1",errMsg);
        return url;
    }
    /********************************************智业推送数据处理 end**************************************************/
    /*********************************************获取im消息 start**************************************************/
    /**
     * 获取续方消息
     * @return
     */
    public JSONObject getLoglist(String consult,Integer page,Integer pagesize){
        JSONObject re = new JSONObject();
        try {
            //获取咨询
            ConsultTeam consultTeam = consultTeamDao.findByConsult(consult);
            String sessionId = consultTeam.getPatient()+"_"+consult+"_8";
            //获取消息记录
            Integer start = (page - 1 < 0 ? 0 : page - 1) * pagesize;
            Integer end = start + pagesize;
            StringBuffer sql = new StringBuffer("select * from ");
            sql.append(im).append(".muc_messages ");
            sql.append(" where session_id = ? ");
            sql.append(" order by timestamp desc ");
            sql.append(" limit ").append(start).append(",").append(end);
            List<Map<String,Object>> list = jdbcTemplate.queryForList(sql.toString(),sessionId);
            re.put("list",list);
            //获取参与人的信息
            StringBuffer parts = new StringBuffer("SELECT u.code id, u.name, u.sex, u.birthday birthdate, u.photo avatar, p.participant_role role, false is_patient,p.last_fetch_time,u.level FROM ");
            parts.append(im).append(".sessions s, ").append(im).append(".participants p, wlyy_doctor u ");
            parts.append("WHERE s.id = ? AND s.id = p.session_id AND p.participant_id = u.code union ");
            parts.append("SELECT u.code id, u.name, u.sex, u.birthday birthdate, u.photo avatar, p.participant_role role, true is_patient,p.last_fetch_time,0 as level FROM ");
            parts.append(im).append(".sessions s, ").append(im).append(".participants p, wlyy_patient u ");
            parts.append("WHERE s.id = ? AND s.id = p.session_id AND p.participant_id = u.code ");
            List<Map<String,Object>> partsList = jdbcTemplate.queryForList(parts.toString(),sessionId,sessionId);
            re.put("users",partsList);
        }catch (Exception e){
            e.printStackTrace();
            logger.info("获取续方消息失败");
        }
        return re;
    }
    /*********************************************获取im消息 end******************************************************/
    /*********************************************请求智业接口数据 start**************************************************/