浏览代码

代码修改

huangwenjie 7 年之前
父节点
当前提交
af09b97f8e
共有 14 个文件被更改,包括 996 次插入32 次删除
  1. 93 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/DoctorMapping.java
  2. 219 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/prescription/PrescriptionExpressageLog.java
  3. 258 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/prescription/PrescriptionLog.java
  4. 20 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionExpressageLogDao.java
  5. 20 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionLogDao.java
  6. 28 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/wechat/DoctorMappingDao.java
  7. 31 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/Icd10DictServcie.java
  8. 46 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/JwPrescriptionService.java
  9. 127 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/PresModeAdapter.java
  10. 28 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/ZyDictService.java
  11. 2 2
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/user/UserService.java
  12. 113 21
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/prescription/PrescriptionService.java
  13. 2 0
      patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/HttpClientUtil.java
  14. 9 9
      patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/jimeiJkEduPC/DoctorJMJkEduArticlePCController.java

+ 93 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/DoctorMapping.java

@ -0,0 +1,93 @@
package com.yihu.wlyy.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 机构映射表
 * @author hzp
 */
@Entity
@Table(name = "wlyy_doctor_mapping")
public class DoctorMapping extends IdEntity {
	
	// 基卫医生代码
	private String jwDoctor;
	// 基卫医生名称
	private String jwDoctorName;
	// 基卫医生性别
	private String jwDocotrSex;
	// 基卫医生身份证
	private String jwDocotrIdcard;
	// 基卫医生医院
	private String jwDoctorHospital;
	// 基卫医生医院名称
	private String jwDoctorHospiatlName;
	// 医生代码
	private String doctorCode;
	
	@Column(name="jw_doctor")
	public String getJwDoctor() {
		return jwDoctor;
	}
	
	public void setJwDoctor(String jwDoctor) {
		this.jwDoctor = jwDoctor;
	}
	
	@Column(name="jw_doctor_name")
	public String getJwDoctorName() {
		return jwDoctorName;
	}
	
	public void setJwDoctorName(String jwDoctorName) {
		this.jwDoctorName = jwDoctorName;
	}
	
	@Column(name="jw_doctor_sex")
	public String getJwDocotrSex() {
		return jwDocotrSex;
	}
	
	public void setJwDocotrSex(String jwDocotrSex) {
		this.jwDocotrSex = jwDocotrSex;
	}
	
	@Column(name="jw_doctor_idcard")
	public String getJwDocotrIdcard() {
		return jwDocotrIdcard;
	}
	
	public void setJwDocotrIdcard(String jwDocotrIdcard) {
		this.jwDocotrIdcard = jwDocotrIdcard;
	}
	
	@Column(name="jw_doctor_hospital")
	public String getJwDoctorHospital() {
		return jwDoctorHospital;
	}
	
	public void setJwDoctorHospital(String jwDoctorHospital) {
		this.jwDoctorHospital = jwDoctorHospital;
	}
	
	@Column(name="jw_doctor_hospital_name")
	public String getJwDoctorHospiatlName() {
		return jwDoctorHospiatlName;
	}
	
	public void setJwDoctorHospiatlName(String jwDoctorHospiatlName) {
		this.jwDoctorHospiatlName = jwDoctorHospiatlName;
	}
	
	@Column(name="doctor_code")
	public String getDoctorCode() {
		return doctorCode;
	}
	
	public void setDoctorCode(String doctorCode) {
		this.doctorCode = doctorCode;
	}
}

+ 219 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/prescription/PrescriptionExpressageLog.java

@ -0,0 +1,219 @@
package com.yihu.wlyy.entity.prescription;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * Created by Administrator on 2017/7/21.
 * 处方配送流程表
 */
@Entity
@Table(name = "wlyy_prescription_expressage_log")
public class PrescriptionExpressageLog extends IdEntity {
	
	private String code;                    //业务code
	private String prescriptionCode;      //处方code  关联表wlyy_prescription code
	private String expressageCode; //配送code 关联wlyy_prescription_expressage code
	private Date createTime;                //创建的时间
	private String remark;//备注
	
	//健管师配送时候填写字段
	//配送人
	private String expressageHospitalName;            // 如果配送方式是健管师那么这个字段存服务站名称,如果是快递配送那么是快递公司名称
	private String expressageHospitalAddress;         // 配送机构地址
	private String expressageHospitalCode;            //配送机构code
	private String expressageUserName;          //配送人名称
	private String expressageUserCode;          //配送人code
	private String expressageUserMobile;        //配送人电话
	private Date   expressageTime;                //开始配送的时间
	//接收人
	private String acceptHospital;// /健管师配送 接收机构
	private String acceptHospitalName;///健管师配送 接收机构名称
	private String acceptUser;///健管师配送 接收人
	private String acceptUserName;///健管师配送 接收名称
	private String acceptUserMobile;///健管师配送 接收人电话
	
	//快递配送填写字段
	private String acceptAddress;//快递配 路由节点发生的城市    健管师配送机构地址
	private Date acceptTime;// 路由节点产生的时间,格式:YYYY-MM-DD HH24:MM:SS,示例:2012-7-30 09:30:00。
	private String opCode;//路由节点操作码
	private String acceptRemark;//路由节点具体描述
	
	@Column(name = "code", unique = true , nullable=false)
	public String getCode() {
		return code;
	}
	
	public void setCode(String code) {
		this.code = code;
	}
	
	public String getPrescriptionCode() {
		return prescriptionCode;
	}
	
	public void setPrescriptionCode(String prescriptionCode) {
		this.prescriptionCode = prescriptionCode;
	}
	
	
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getCreateTime() {
		return createTime;
	}
	
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	
	public String getExpressageCode() {
		return expressageCode;
	}
	
	public void setExpressageCode(String expressageCode) {
		this.expressageCode = expressageCode;
	}
	
	public String getRemark() {
		return remark;
	}
	
	public void setRemark(String remark) {
		this.remark = remark;
	}
	
	public String getAcceptAddress() {
		return acceptAddress;
	}
	
	public void setAcceptAddress(String acceptAddress) {
		this.acceptAddress = acceptAddress;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	public Date getAcceptTime() {
		return acceptTime;
	}
	
	public void setAcceptTime(Date acceptTime) {
		this.acceptTime = acceptTime;
	}
	
	public String getOpCode() {
		return opCode;
	}
	
	public void setOpCode(String opCode) {
		this.opCode = opCode;
	}
	
	public String getAcceptRemark() {
		return acceptRemark;
	}
	
	public void setAcceptRemark(String acceptRemark) {
		this.acceptRemark = acceptRemark;
	}
	
	public String getAcceptHospital() {
		return acceptHospital;
	}
	
	public void setAcceptHospital(String acceptHospital) {
		this.acceptHospital = acceptHospital;
	}
	
	public String getAcceptHospitalName() {
		return acceptHospitalName;
	}
	
	public void setAcceptHospitalName(String acceptHospitalName) {
		this.acceptHospitalName = acceptHospitalName;
	}
	
	public String getAcceptUser() {
		return acceptUser;
	}
	
	public void setAcceptUser(String acceptUser) {
		this.acceptUser = acceptUser;
	}
	
	public String getAcceptUserName() {
		return acceptUserName;
	}
	
	public void setAcceptUserName(String acceptUserName) {
		this.acceptUserName = acceptUserName;
	}
	
	public String getAcceptUserMobile() {
		return acceptUserMobile;
	}
	
	public void setAcceptUserMobile(String acceptUserMobile) {
		this.acceptUserMobile = acceptUserMobile;
	}
	
	public String getExpressageHospitalName() {
		return expressageHospitalName;
	}
	
	public void setExpressageHospitalName(String expressageHospitalName) {
		this.expressageHospitalName = expressageHospitalName;
	}
	
	public String getExpressageHospitalAddress() {
		return expressageHospitalAddress;
	}
	
	public void setExpressageHospitalAddress(String expressageHospitalAddress) {
		this.expressageHospitalAddress = expressageHospitalAddress;
	}
	
	public String getExpressageHospitalCode() {
		return expressageHospitalCode;
	}
	
	public void setExpressageHospitalCode(String expressageHospitalCode) {
		this.expressageHospitalCode = expressageHospitalCode;
	}
	
	public String getExpressageUserName() {
		return expressageUserName;
	}
	
	public void setExpressageUserName(String expressageUserName) {
		this.expressageUserName = expressageUserName;
	}
	
	public String getExpressageUserCode() {
		return expressageUserCode;
	}
	
	public void setExpressageUserCode(String expressageUserCode) {
		this.expressageUserCode = expressageUserCode;
	}
	
	public String getExpressageUserMobile() {
		return expressageUserMobile;
	}
	
	public void setExpressageUserMobile(String expressageUserMobile) {
		this.expressageUserMobile = expressageUserMobile;
	}
	
	public Date getExpressageTime() {
		return expressageTime;
	}
	
	public void setExpressageTime(Date expressageTime) {
		this.expressageTime = expressageTime;
	}
}

+ 258 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/prescription/PrescriptionLog.java

@ -0,0 +1,258 @@
package com.yihu.wlyy.entity.prescription;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
/**
 * Created by Administrator on 2017/7/21.
 * 处方日志
 */
@Entity
@Table(name = "wlyy_prescription_log")
public class PrescriptionLog extends IdEntity {
	
	
	public enum PrescriptionLogType {
		zy("智业对接", 1),
		ylz("易联众对接", 2),
		create("创建处方", 3),
		reviewed("审核", 4),
		pay("支付", 5),
		expressage("配送", 6),
		finish("已完成", 7),
		sf("顺丰对接", 8);
		private String name;
		private int value;
		
		PrescriptionLogType(String name, int value) {
			this.name = name;
			this.value = value;
		}
		
		public String getName() {
			return name;
		}
		
		public void setName(String name) {
			this.name = name;
		}
		
		public int getValue() {
			return value;
		}
		
		public void setValue(int value) {
			this.value = value;
		}
	}
	
	//状态枚举
	public enum PrescriptionLogStatus {
		
		pay_cancle("线下取消", -5),
		
		pay_refund("线下退费", -4),
		//续方取消
		pay_outtime("支付超时", -3),
		patient_canel("患者自己取消", -2),
		
		// 审核不通过
		no_reviewed("审核不通过", -1),
		
		//审核中
		revieweding("待审核", 0),
		changeing("调整中", 2),
		change_success("调整成功", 3),
		change_error("调整失败", 4),
		reviewed_success(" 医生审核(CA)通过", 10),
		
		//药师审核中
		Pharmacist_examination("药师审核中", 20),
		Pharmacist_examination_error("药师审核失败", 21),
		
		//开方中/药师审核成功
		adding("开方中/药师审核成功", 30),
		add_error("开方失败", 31),
		
		//待支付
		wait_pay("开方完成/待支付", 40),
		pay_error("支付失败", 41),
		
		//配药中
		pay_success("支付成功/待配药", 50),
		
		//等待领药
		wait_expressage("配药成功/待配送", 60),
		
		//配送中
		expressageing_error("配送失败", 61),
		expressageJGS("分配健管师", 62),
		expressageing("配送中", 65),
		expressage2hospital("配送到服务站", 69),
		
		//已完成
		finish("配送到患者手中/已完成", 100);
		
		private String name;
		private int value;
		
		PrescriptionLogStatus(String name, int value) {
			this.name = name;
			this.value = value;
		}
		
		public String getName() {
			return name;
		}
		
		public void setName(String name) {
			this.name = name;
		}
		
		public int getValue() {
			return value;
		}
		
		public void setValue(int value) {
			this.value = value;
		}
	}
	
	private String code;                    //业务流程
	private String prescriptionCode;      //处方code 关联表wlyy_prescription code
	private Date createTime;               //处方创建时间
	private Integer status;                 //状态 (-4线下退费 -3 支付过期 -2 患者自己取消 )续方取消,-1 审核不通过 ,
	// (0 待审核, 2调整中,3调整成功, 4调整失败 ,10 医生审核(CA)通过)审核中,
	// 20药师审核中,21.药师审核失败,30 开方中/药师审核成功,31.开方失败/预结算失败,
	// (40开方完成/待支付 ,41 支付失败 )待支付,  50 支付成功/待配药,(60配药成功/待配送)等待领药,
	// (61配送失败62分配健管师 65配送中,69配送到服务站)配送中,(100配送到患者手中/已完成)已完成',
	
	private Integer type;                   //类型: 1智业对接 2易联众对接  3创建处方 4 审核  5付款 6 配送 7完成
	private String userCode;                  //医生或者患者code
	private String userName;                  //医生或者患者name
	private Integer userType;                 //1 患者 2医生
	private Integer flag;                      //操作是否成功 1成功 0失败
	private String remark;                     //备注信息
	private String hospital;                //医院code
	private String hospitalName;            //医院名称
	
	private String statusName;  //状态名称
	
	@Column(name = "code")
	public String getCode() {
		return code;
	}
	
	public void setCode(String code) {
		this.code = code;
	}
	
	@Column(name = "prescription_code")
	public String getPrescriptionCode() {
		return prescriptionCode;
	}
	
	public void setPrescriptionCode(String prescriptionCode) {
		this.prescriptionCode = prescriptionCode;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
	@Column(name = "create_time")
	public Date getCreateTime() {
		return createTime;
	}
	
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	
	@Column(name = "type")
	public Integer getType() {
		return type;
	}
	
	public void setType(Integer type) {
		this.type = type;
	}
	
	@Column(name = "user_code")
	public String getUserCode() {
		return userCode;
	}
	
	public void setUserCode(String userCode) {
		this.userCode = userCode;
	}
	
	@Column(name = "user_name")
	public String getUserName() {
		return userName;
	}
	
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
	@Column(name = "user_type")
	public Integer getUserType() {
		return userType;
	}
	
	public void setUserType(Integer userType) {
		this.userType = userType;
	}
	
	@Column(name = "flag")
	public Integer getFlag() {
		return flag;
	}
	
	public void setFlag(Integer flag) {
		this.flag = flag;
	}
	
	@Column(name = "remark")
	public String getRemark() {
		return remark;
	}
	
	public void setRemark(String remark) {
		this.remark = remark;
	}
	
	public Integer getStatus() {
		return status;
	}
	
	public void setStatus(Integer status) {
		this.status = status;
	}
	
	public String getHospital() {
		return hospital;
	}
	
	public void setHospital(String hospital) {
		this.hospital = hospital;
	}
	
	public String getHospitalName() {
		return hospitalName;
	}
	
	public void setHospitalName(String hospitalName) {
		this.hospitalName = hospitalName;
	}
	
	
	@Transient
	public String getStatusName() {
		return Prescription.getStatusName(this.status, hospitalName, userName);
	}
}

+ 20 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionExpressageLogDao.java

@ -0,0 +1,20 @@
package com.yihu.wlyy.repository.prescription;
import com.yihu.wlyy.entity.prescription.PrescriptionExpressageLog;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
 * @author huangwenjie
 * @date 2017/12/22 10:39
 */
public interface PrescriptionExpressageLogDao {
	/**
	 * 根据处方号获取该处方的物流配送日志,按路由节点发生的时间倒序排序
	 * @param prescriptionCode
	 * @return
	 */
	@Query("from PrescriptionExpressageLog p where p.prescriptionCode=?1 order by p.acceptTime desc")
	List<PrescriptionExpressageLog> findByPrescriptionCode(String prescriptionCode);
}

+ 20 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionLogDao.java

@ -0,0 +1,20 @@
package com.yihu.wlyy.repository.prescription;
import com.yihu.wlyy.entity.prescription.PrescriptionLog;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by chenweida on 2017/7/27.
 */
public interface PrescriptionLogDao extends PagingAndSortingRepository<PrescriptionLog, Long>, JpaSpecificationExecutor<PrescriptionLog> {
	
	@Query(" from PrescriptionLog l where l.prescriptionCode=?1 and l.status in ?2 order by createTime desc")
	List<PrescriptionLog> findPrescriptionLogsByPrescriptionCode(String prescriptionCode, Integer[] types);
	
	@Query(" from PrescriptionLog l where l.prescriptionCode=?1 and l.status = ?2 ")
	List<PrescriptionLog> findByPrescriptionCodeAndStutas(String prescriptionCode, int status);
}

+ 28 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/repository/wechat/DoctorMappingDao.java

@ -0,0 +1,28 @@
package com.yihu.wlyy.repository.wechat;
import com.yihu.wlyy.entity.Doctor;
import com.yihu.wlyy.entity.DoctorMapping;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 医生映射接口
 **/
public interface DoctorMappingDao extends PagingAndSortingRepository<DoctorMapping, Long>,JpaSpecificationExecutor<DoctorMapping> {
	
	
	@Query("select a.jwDoctor from DoctorMapping a where a.doctorCode = ?1 and a.jwDoctorHospital = ?2")
	String findByDocotrCodeAndJwDoctorHospital(String docotrCode,String jwDoctorHospital);
	
	DoctorMapping findByJwDoctorHospitalAndJwDoctor(String jwDoctorHospital,String jwDoctor);
	
	@Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and b.jwDoctorHospital = ?1 and b.jwDoctor = ?2")
	Doctor getDoctorByJw(String jwDoctorHospital, String jwDoctor);
	
	@Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and a.code = ?1 and b.jwDoctorHospital = ?2")
	Doctor getDoctor(String docotrCode,String jwDoctorHospital);
	
	@Query("from DoctorMapping a where a.jwDoctorHospital = ?1 and a.doctorCode = ?2")
	DoctorMapping findByJwDoctorHospitalAndDoctorCode(String jwDoctorHospital,String doctorCode);
}

+ 31 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/Icd10DictServcie.java

@ -0,0 +1,31 @@
package com.yihu.wlyy.service.jw;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
/**
 * @author huangwenjie
 * @date 2017/12/22 09:43
 */
@Service
public class Icd10DictServcie {
	private final String keyIcd10 = "wlyy:dict:icd:Icd10:";
	private final String keyHealthProblem = "wlyy:dict:icd:HealthProblem:";
	private final String keyDict2healthProblem = "wlyy:dict:icd:Icd10ToHealthProblem:";
	private final String keyHealthProblem2Dict = "wlyy:dict:icd:HealthProblemToIcd10:";
	private final String ok = "wlyy:dict:icd:init";
	
	
	@Autowired
	private StringRedisTemplate redisTemplate;
	/**
	 * 根据icd10的 code 获取全部的健康问题
	 *
	 * @param Icd10Code
	 * @return
	 */
	public String getHealthProblemsByIcd10Code(String Icd10Code) {
		return redisTemplate.opsForValue().get(keyDict2healthProblem + Icd10Code);
	}
}

+ 46 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/JwPrescriptionService.java

@ -0,0 +1,46 @@
package com.yihu.wlyy.service.jw;
import com.yihu.wlyy.util.HttpClientUtil;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * 基位长处方接口
 * Created by yeshijie on 2017/8/3.
 */
@Service
public class JwPrescriptionService {
	
	private static final Logger logger = LoggerFactory.getLogger(JwPrescriptionService.class);
	//基卫服务地址
	@Value("${sign.check_upload}")
	private String jwUrl;
	@Autowired
	private HttpClientUtil httpClientUtil;
	
	/**
	 * 获取单条历史处方
	 * @param recipeNo
	 * @param cardNo
	 * @return
	 */
	public String getRecipe(String recipeNo,String cardNo){
		String url = jwUrl + "/third/prescription/getRecipe";
		List<NameValuePair> params = new ArrayList<>();
		params.add(new BasicNameValuePair("recipeNo", recipeNo));
		params.add(new BasicNameValuePair("cardNo", cardNo));
		
		String response = httpClientUtil.post(url, params, "UTF-8");
		
		return response;
	}
	
}

+ 127 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/PresModeAdapter.java

@ -0,0 +1,127 @@
package com.yihu.wlyy.service.jw;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.Doctor;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Iterator;
/**
 * Created by Trick on 2017/8/10.
 */
@Component
public class PresModeAdapter {
	
	private static Logger logger = LoggerFactory.getLogger(PresModeAdapter.class);
	@Autowired
	private Icd10DictServcie icd10DictServcie;
	@Autowired
	private ZyDictService zyDictService;
	/**
	 * 处方详情转换
	 * @param json
	 * @return
	 */
	public JSONObject modelToSinglePrescription(String json){
		try{
			JSONObject oldJson = JSONObject.parseObject(json);
			if(oldJson.getInteger("status")!=200){
				throw new RuntimeException("智业接口失败:"+oldJson.getString("msg"));
			}
			JSONObject data = oldJson.getJSONObject("data");
			JSONArray returnData = data.getJSONArray("returnData");
			String code = data.getString("CODE");
			if(StringUtils.isNotBlank(code)&&"1".equals(code)&&returnData.size()>0){
				JSONArray modeArray = returnData.getJSONArray(0);
				JSONObject mode = (JSONObject) modeArray.get(0);
				JSONObject p  = new JSONObject();
				p.put("code",mode.getInteger("RECIPE_NO")+"");
				p.put("createTime",mode.getString("APPLY_TIME"));
				
				Doctor doctor =  zyDictService.getDoctByJw(mode.getString("APPLY_OPERATOR"),mode.getString("HEALTH_ORG_CODE"));
				// "APPLY_OPERATOR_NAME": 开单医生姓名","HEALTH_ORG_CODE": "开单机构编码",
				if(doctor!=null){
					p.put("doctor",doctor.getCode());
					p.put("doctorName",doctor.getName());
					p.put("hospitalName",doctor.getHospitalName());
					p.put("hospital",doctor.getHospital());
				}else{
					p.put("doctor",mode.getString("APPLY_OPERATOR"));
					p.put("doctorName",mode.getString("APPLY_OPERATOR_NAME"));
					p.put("hospitalName",mode.getString("HEALTH_ORG_CODE"));
					p.put("hospital",mode.getString("HEALTH_ORG_CODE"));
				}
				JSONObject diagnosis = new JSONObject();
				String diagnoseCode = mode.getString("DIAGNOSE_CODE");
				String diagnoseName = mode.getString("DIAGNOSE_NAME");
//                String diagnoseCode = "E10.100";
//                String diagnoseName = "1型糖尿病性酮症";
				diagnosis.put("code",diagnoseCode);//诊断代码
				diagnosis.put("name",diagnoseName);//诊断名称
				String icd10 = icd10DictServcie.getHealthProblemsByIcd10Code(diagnoseCode);
				if(!StringUtils.isEmpty(icd10)){
					JSONObject icd = JSONObject.parseObject(icd10);
					diagnosis.put("healthProblemName",icd.getString("value"));//诊断名称
					diagnosis.put("healthProblem",icd.getString("key"));//诊断代码
				}else{
					diagnosis.put("healthProblemName",diagnoseName);//诊断名称
					diagnosis.put("healthProblem",diagnoseCode);//诊断代码
				}
				JSONArray jsonArrayDt = new JSONArray();
				jsonArrayDt.add(diagnosis);
				p.put("prescriptionDt",jsonArrayDt);
				
				JSONArray infos = mode.getJSONArray("RECIPE_DETAIL");
				Iterator infoIt = infos.iterator();
				JSONArray prescriptionInfos = new JSONArray();
				while (infoIt.hasNext()){
					JSONObject info = (JSONObject) infoIt.next();
					JSONObject prescriptionInfo = new JSONObject();
					prescriptionInfo.put("Remark",info.getString("REMARK"));
					prescriptionInfo.put("BindFlag",info.getString("BIND_FLAG"));
					prescriptionInfo.put("direction",info.getString("USAGE_NAME"));//药品用法
					prescriptionInfo.put("drugCode",info.getString("ITEM_CODE"));//药品code
					prescriptionInfo.put("drugName",info.getString("ITEM_NAME"));//药品名称
					prescriptionInfo.put("drugRate",info.getString("FREQUENCY"));//吃药频率 FREQUENCY
					prescriptionInfo.put("drugRateName",info.getString("FREQUENCY_NAME"));
					prescriptionInfo.put("drugFormat",info.getString("ITEM_SPEC"));//药品规格
					prescriptionInfo.put("price",info.getDouble("ITEM_PRICE"));//药品单价
					prescriptionInfo.put("num",info.getInteger("ITEM_QUANTITY"));//药品数目
					prescriptionInfo.put("jwSubCode",info.getString("RECIPE_SUB_NO"));//智业子处方号
					prescriptionInfo.put("drugNumUnit",info.getString("ITEM_UNIT"));//数量单位编码
					prescriptionInfo.put("drugNumUnitName",info.getString("ITEM_UNIT_NAME"));//数量单位名称
					prescriptionInfo.put("cost",info.getDouble("COST"));//金额
					prescriptionInfo.put("charge",info.getDouble("CHARGE"));//自付
					prescriptionInfo.put("bindFlag",info.getString("BIND_FLAG"));//成组标志, 0.非成组,1.成组
					prescriptionInfo.put("dayCount",info.getInteger("DAY_COUNT"));//用药天数
					prescriptionInfo.put("drugUsage",info.getString("USAGE"));//用药方法编码
					prescriptionInfo.put("usageName",info.getString("USAGE_NAME"));//用药方法名称
					prescriptionInfo.put("physicDose",info.getString("PHYSIC_DOSE"));//用药剂量
					prescriptionInfo.put("physicDoseUnit",info.getString("PHYSIC_DOSE_UNIT"));//剂量单位编码
					prescriptionInfo.put("physicDoseUnitName",info.getString("PHYSIC_DOSE_UNIT_NAME"));//剂量单位名称
					prescriptionInfo.put("physicAmount",info.getString("PHYSIC_AMOUNT"));//用药总量
					prescriptionInfo.put("physicAmountUnit",info.getString("PHYSIC_AMOUNT_UNIT"));//总量单位编码
					prescriptionInfo.put("physicAmountUnitName",info.getString("PHYSIC_AMOUNT_UNIT_NAME"));//总量单位名称
					prescriptionInfo.put("physicInjectPlace",info.getString("PHYSIC_INJECT_PLACE"));//注射地点编码
					prescriptionInfo.put("physicInjectPlaceName",info.getString("PHYSIC_INJECT_PLACE_NAME"));//注射地点名称
					prescriptionInfo.put("physicSkinTest",info.getString("PHYSIC_SKIN_TEST"));//皮试类型名称
					prescriptionInfo.put("physicSkinTestName",info.getString("PHYSIC_SKIN_TEST_NAME"));//皮试类型名称
					prescriptionInfo.put("subjectClass",info.getString("SUBJECT_CLASS"));//科目类型
					prescriptionInfos.add(prescriptionInfo);
				}
				p.put("prescriptionInfo",prescriptionInfos);
				return p;
			}
		}catch (Exception e){
			logger.info("PresModeAdapter:modelToSinglePrescription:Json:"+json);
			throw e;
		}
		return new JSONObject();
	}
	
}

+ 28 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/jw/ZyDictService.java

@ -0,0 +1,28 @@
package com.yihu.wlyy.service.jw;
import com.yihu.wlyy.entity.Doctor;
import com.yihu.wlyy.repository.wechat.DoctorMappingDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * Created by chenweida on 2017/8/10.
 */
@Service
public class ZyDictService {
	@Autowired
	private DoctorMappingDao doctorMappingDao;
	
	
	/**
	 * 根据基位code 获取医生
	 * @param jwDoctor
	 * @param jwHospital
	 * @return
	 */
	public Doctor getDoctByJw(String jwDoctor, String jwHospital){
		return doctorMappingDao.getDoctorByJw(jwHospital,jwDoctor);
	}
	
	
}

+ 2 - 2
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/manager/user/UserService.java

@ -196,8 +196,8 @@ public class UserService extends BaseJpaService<User,UserDao> {
            String[] codes = code.split(",");
            List<ManageDictEntry> manageDictEntries = manageDictEntryDao.findByDictIdAndCodes(dictId, codes);
            if (null != manageDictEntries && manageDictEntries.size() > 0) {
                return manageDictEntries.get(0).getValue();
//                return "http://localhost:8180/admin/main";
//                return manageDictEntries.get(0).getValue();
                return "http://localhost:8180/admin/main";
            }
        }
        return null;

+ 113 - 21
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/prescription/PrescriptionService.java

@ -1,11 +1,15 @@
package com.yihu.wlyy.service.prescription;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.Patient;
import com.yihu.wlyy.entity.prescription.*;
import com.yihu.wlyy.repository.PatientDao;
import com.yihu.wlyy.repository.prescription.*;
import com.yihu.wlyy.service.jw.JwPrescriptionService;
import com.yihu.wlyy.service.jw.PresModeAdapter;
import com.yihu.wlyy.util.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -15,6 +19,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @author huangwenjie
@ -52,6 +57,18 @@ public class PrescriptionService {
	@Autowired
	PrescriptionPayDao prescriptionPayDao;
	
	@Autowired
	PrescriptionLogDao prescriptionLogDao;
	
	@Autowired
	private PrescriptionExpressageLogDao prescriptionExpressageLogDao;
	
	@Autowired
	private JwPrescriptionService jwPrescriptionService;
	
	@Autowired
	private PresModeAdapter presModeAdapter;
	
	public List<PrescriptionVO> getPrescriptionList(String hospital,
	                                                String disease,
	                                                String dispensarytype,
@ -280,33 +297,35 @@ public class PrescriptionService {
	 */
	public com.alibaba.fastjson.JSONObject getinfo(String code) {
		Prescription prescription = prescriptionDao.findByCode(code);
		List<PrescriptionInfo> prescriptionInfos = prescriptionInfoDao.findByPrescriptionCode(code);
		PrescriptionReviewed reviewed = prescriptionReviewedDao.findByPrescriptionCode(code);
		List<PrescriptionAdjust> prescriptionAdjusts = prescriptionAdjustDao.findByPrescriptionCodeOrderByIdDesc(code);
		com.alibaba.fastjson.JSONObject rs = new com.alibaba.fastjson.JSONObject();
		prescription.setStatusName("");
		rs.put("prescription", prescription);
		rs.put("createTime", DateUtil.dateToStrLong(prescription.getCreateTime()));
		rs.put("reviewedTime",DateUtil.dateToStrLong(reviewed.getCreateTime()));
		rs.put("prescriptionInfo", prescriptionInfos);
		rs.put("reviewed", reviewed);
		if (prescription != null && StringUtils.isNotBlank(prescription.getPatient())) {
			rs.put("patient", patientDao.findByCode(prescription.getPatient()));
		Patient p = patientDao.findByCode(prescription.getPatient());
		String rs = jwPrescriptionService.getRecipe(code, p.getSsc());
		com.alibaba.fastjson.JSONObject r = presModeAdapter.modelToSinglePrescription(rs);
		
		String rState = presCheckStateObj(code);
		if ("1".equals(rState)) {
			r.put("reviewedState", 1);
			r.put("prescriptionCode", "");
		} else {
			rs.put("patient", "");
			r.put("reviewedState", 0);
			r.put("prescriptionCode", rState);
		}
		rs.put("diagnosis", prescriptionDiagnosisDao.findByPrescriptionCode(code));
		
		if (prescriptionAdjusts != null && prescriptionAdjusts.size() > 0) {
			rs.put("prescriptionAdjust", prescriptionAdjusts.get(0));
		
		return r;
	}
	
	public String presCheckStateObj(String code) {
		StringBuffer sql = new StringBuffer(" SELECT pr.code FROM wlyy_prescription pr JOIN wlyy_prescription_reviewed r ON pr.code = r.prescription_code WHERE pr.parent_code = ? AND pr.status >= " + PrescriptionLog.PrescriptionLogStatus.revieweding.getValue() + " AND pr.status < " + PrescriptionLog.PrescriptionLogStatus.wait_pay.getValue());
		List<Map<String, Object>> mp = jdbcTemplate.queryForList(sql.toString(), code);
		if (mp != null && mp.size() > 0) {
			return (String) ((mp.get(0)).get("code"));
		} else {
			rs.put("prescriptionAdjust", "");
			return "1";
		}
		return rs;
	}
	
	/**
	 * 获取续方信息
	 * 获取订单跟踪
	 *
	 * @param code
	 * @return
@ -315,12 +334,19 @@ public class PrescriptionService {
		JSONObject jo = new JSONObject();
		//获取处方信息
		Prescription prescription = prescriptionDao.findByCode(code);
		
//		AdminTeam adminTeam = adminTeamService.getTeam(prescription.getAdminTeamId());
		//获取处方药品信息
		List<PrescriptionInfo> prescriptionInfos = prescriptionInfoDao.findByPrescriptionCode(code);
		//获取付款信息
		PrescriptionPay prescriptionPay = prescriptionPayDao.findByPrescriptionPay(code);
		//获取配送信息
		PrescriptionExpressage prescriptionExpressage = prescriptionExpressageDao.findByPrescriptionCode(code);
		jo.put("prescriptionExpressage", prescriptionExpressage);
		
		jo.put("prescriptionInfos", prescriptionInfos);
		jo.put("prescriptionPay", prescriptionPay);
		jo.put("prescriptionExpressage", prescriptionExpressage);
//		jo.put("leadCode", adminTeam.getLeaderCode());//团队长code
		if (prescription != null) {
			jo.put("createTime", prescription.getCreateTime());//创建时间
			jo.put("doctorName", prescription.getDoctorName());//审核医生
@ -329,8 +355,74 @@ public class PrescriptionService {
			jo.put("dispensaryDispensaryTypeName", prescription.getDispensaryTypeName());//处方配送方式
			jo.put("prescriptionStatus", prescription.getStatus());//处方状态
			jo.put("prescriptionStatusName", prescription.getStatusName(prescription.getStatus(), "",""));//处方状态名称
			jo.put("ssc",prescription.getSsc());//医保卡号
			Patient p =  patientDao.findByCode(prescription.getPatient());
			jo.put("patient",p.getCode());
			jo.put("patientName",p.getName());
			jo.put("IdCard",p.getIdcard());
			jo.put("ssc",p.getSsc());
		}
		
		
		// (-3 支付过期 -2 患者自己取消 -1 审核不通过 , 0 待审核, 2调整中 10 审核通过/开方中  , 20开方完成/待支付, 21 支付失败 , 30 支付成功/待配药 ,
		//  40配药成功/待配送  41配送失败  42配送中   43配送到服务站  100配送到患者手中/已完成)
		Integer[] status = new Integer[]{
				PrescriptionLog.PrescriptionLogStatus.reviewed_success.getValue(),
//                    PrescriptionLog.PrescriptionLogStatus.adding.getValue(), //暂无此状态
				PrescriptionLog.PrescriptionLogStatus.pay_success.getValue(),
				PrescriptionLog.PrescriptionLogStatus.wait_expressage.getValue(),
				PrescriptionLog.PrescriptionLogStatus.expressageing.getValue(),
				PrescriptionLog.PrescriptionLogStatus.finish.getValue()};
		List<PrescriptionLog> prescriptionLogs = prescriptionLogDao.findPrescriptionLogsByPrescriptionCode(code, status);
		
		//加上快递的log
		List<PrescriptionExpressageLog> expressageLogs = prescriptionExpressageLogDao.findByPrescriptionCode(code);
		for (int i = 0; i < expressageLogs.size(); i++) {
			PrescriptionExpressageLog prescriptionExpressageLog = expressageLogs.get(i);
			PrescriptionLog prescriptionLog = new PrescriptionLog();
			prescriptionLog.setStatus(PrescriptionLog.PrescriptionLogStatus.expressage2hospital.getValue());
			prescriptionLog.setCreateTime(prescriptionExpressageLog.getCreateTime());
			prescriptionLog.setHospital(prescriptionExpressageLog.getAcceptHospital());
			prescriptionLog.setHospitalName(prescriptionExpressageLog.getAcceptHospitalName());
			prescriptionLog.setUserCode(prescriptionExpressageLog.getAcceptUser());
			prescriptionLog.setUserName(prescriptionExpressageLog.getAcceptUserName());
			prescriptionLogs.add(prescriptionLog);
		}
		//排序
		//排序
		prescriptionLogs.sort((o1, o2) -> {
			long map1value = o1.getCreateTime().getTime();
			long map2value = o2.getCreateTime().getTime();
			
			if (map1value - map2value > 0) {
				return -1;
			} else if (map1value - map2value < 0) {
				return 1;
			} else {
				return 0;
			}
		});
		if (prescriptionLogs != null && prescriptionLogs.size() > 0) {
			JSONArray ja = new JSONArray();
			for (int i = 0; i < prescriptionLogs.size(); i++) {
				PrescriptionLog one = prescriptionLogs.get(i);
				org.json.JSONObject eo = new org.json.JSONObject();
				eo.put("createTime", DateUtil.dateToStrLong(one.getCreateTime()));
				eo.put("statusName", one.getStatusName());
				eo.put("drugDeliveryflag", "0");
				if(one.getStatus()==100){
					prescription = prescriptionDao.findByCode(one.getPrescriptionCode());
					if(prescription!=null&&prescription.getDrugDeliveryFlag()==1){
						eo.put("drugDeliveryflag", "1");
						eo.put("drugDeliveryOperatorName",prescription.getDrugDeliveryOperatorName());
						eo.put("drugDelivery",prescription.getDrugDeliveryReasonValue()+","+prescription.getDrugDeliveryReason());
					}
				}
				ja.put(eo);
				jo.put("expresslog",jo);
			}
		}
		
		
		return jo;
	}
}

+ 2 - 0
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/util/HttpClientUtil.java

@ -14,12 +14,14 @@ import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
@Component
public class HttpClientUtil {
	/**

+ 9 - 9
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/doctor/jimeiJkEduPC/DoctorJMJkEduArticlePCController.java

@ -55,10 +55,10 @@ public class DoctorJMJkEduArticlePCController extends BaseController {
                               @RequestParam(value = "userScope", required = true) Integer userScope){
        try {
            if(StringUtils.isNotEmpty(currentUserRole)){
            if(StringUtils.isEmpty(currentUserRole)){
                currentUserRole=getCurrentRoleCode();
            }
            if(StringUtils.isNotEmpty(currentUserRoleLevel)){
            if(StringUtils.isEmpty(currentUserRoleLevel)){
                currentUserRoleLevel=getCurrentRoleLevel();
            }
            jmJkEduArticleService.saveArticle(getUID(),articleTitle,articleType,articlelevel,secondLevelCategoryId,imageUrl,
@ -102,24 +102,24 @@ public class DoctorJMJkEduArticlePCController extends BaseController {
                                      @RequestParam(value = "isAuthentication", required = false) String isAuthentication,
                                      @ApiParam(name = "isMyArticle", value = "是否过滤我的文章")
                                      @RequestParam(value = "isMyArticle", required = false) Boolean isMyArticle,
                                      @ApiParam(name = "iDisplayStart", value = "当前页")
                                      @RequestParam(value = "iDisplayStart", required = true) Integer page,
                                      @ApiParam(name = "iDisplayLength", value = "是否过滤我的文章")
                                      @RequestParam(value = "iDisplayLength", required = true) Integer pageSize,
                                      @ApiParam(name = "page", value = "当前页")
                                      @RequestParam(value = "page", required = true) Integer page,
                                      @ApiParam(name = "pageSize", value = "是否过滤我的文章")
                                      @RequestParam(value = "pageSize", required = true) Integer pageSize,
                                      @ApiParam(name = "sEcho", value = "插件自带")
                                      @RequestParam(value = "sEcho", required = false) Integer sEcho,
                                      @ApiParam(name = "roleType", value = "1、普通医生,2、管理员")
                                      @RequestParam(value = "roleType", required = false) Integer roleType){
        try {
            if(StringUtils.isNotEmpty(currentUserRole)){
            if(StringUtils.isEmpty(currentUserRole)){
                currentUserRole=getCurrentRoleCode();
            }
            if(StringUtils.isNotEmpty(currentUserRoleLevel)){
            if(StringUtils.isEmpty(currentUserRoleLevel)){
                currentUserRoleLevel=getCurrentRoleLevel();
            }
            JSONObject response = jmJkEduArticleService.queryArticlePcList(firstLevelCategoryId,secondLevelCategoryId,insertTimeStart,insertTimeEnd,articlelevel,articleTitle,
                    getUID(),currentUserRole,currentUserRoleLevel,isAuthentication,isMyArticle,page,pageSize,sEcho,roleType);
                    "379a7b9886f211e6b394fa163e424525",currentUserRole,currentUserRoleLevel,isAuthentication,isMyArticle,page,pageSize,sEcho,roleType);
            return write(200,"查询成功!","data",response);
        } catch (Exception e){