|  | @ -45,7 +45,7 @@ import com.yihu.wlyy.util.MessageType;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * 網絡諮詢类.
 | 
	
		
			
				|  |  |  * 
 | 
	
		
			
				|  |  |  *
 | 
	
		
			
				|  |  |  * @author George
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | // Spring Service Bean的标识.
 | 
	
	
		
			
				|  | @ -53,729 +53,774 @@ import com.yihu.wlyy.util.MessageType;
 | 
	
		
			
				|  |  | @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | public class ConsultTeamService extends ConsultService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	private Clock clock = Clock.DEFAULT;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	// 咨询详细记录
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private ConsultTeamLogDao consultTeamLogDao;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private ConsultTeamDoctorDao consultTeamDoctorDao;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private SignFamilyDao signFamilyDao;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private DoctorPatientDao doctorPatientDao;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private DoctorTeamDao doctorTeamDao;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  |     private Clock clock = Clock.DEFAULT;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     // 咨询详细记录
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ConsultTeamLogDao consultTeamLogDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ConsultTeamDoctorDao consultTeamDoctorDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SignFamilyDao signFamilyDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DoctorPatientDao doctorPatientDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DoctorTeamDao doctorTeamDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ConsultTeamDao consultTeamDao;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private DoctorTeamMemberDao doctorTeamDoctor;
 | 
	
		
			
				|  |  | 	@Autowired
 | 
	
		
			
				|  |  | 	private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查询患者是否还有未结束的三师咨询
 | 
	
		
			
				|  |  | 	 * @param patient
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public boolean exist(String patient,Integer type) {
 | 
	
		
			
				|  |  | 		int count = consultTeamDao.countByPatient(patient, type);
 | 
	
		
			
				|  |  | 		return count > 0;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查詢醫生網絡諮詢列表
 | 
	
		
			
				|  |  | 	 * @param type 咨询类型:1、咨询我的,2、公共的, 3、参与过的,4、已结束的 5 名医咨询 全部  6 名医咨询 进行中 7 名医咨询 已结束
 | 
	
		
			
				|  |  | 	 * @param id
 | 
	
		
			
				|  |  | 	 * @param pagesize 每页显示数,默认为10
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByDoctor(String uid, int type, long id, int pagesize,String title) {
 | 
	
		
			
				|  |  | 		if (id < 0) {
 | 
	
		
			
				|  |  | 			id = 0;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		if (pagesize <= 0) {
 | 
	
		
			
				|  |  | 			pagesize = 10;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		switch (type) {
 | 
	
		
			
				|  |  | 		case 0:
 | 
	
		
			
				|  |  | 			// 全部
 | 
	
		
			
				|  |  | 			return findByDoctorType0(uid, id, pagesize);
 | 
	
		
			
				|  |  | 		case 1:
 | 
	
		
			
				|  |  | 			// 咨询我的
 | 
	
		
			
				|  |  | 			return findByDoctorType1(uid, type, id, pagesize);
 | 
	
		
			
				|  |  | 		case 2:
 | 
	
		
			
				|  |  | 			// 我感兴趣的
 | 
	
		
			
				|  |  | 			return findByDoctorType2(uid, type, id, pagesize);
 | 
	
		
			
				|  |  | 		case 3:
 | 
	
		
			
				|  |  | 			// 我回复的
 | 
	
		
			
				|  |  | 			return findByDoctorType3(uid, id, pagesize);
 | 
	
		
			
				|  |  | 		case 4:
 | 
	
		
			
				|  |  | 			// 已完成的
 | 
	
		
			
				|  |  | 			return findByDoctorType4(uid, id, pagesize);
 | 
	
		
			
				|  |  | 		case 5:
 | 
	
		
			
				|  |  | 			// 5 名医咨询 全部
 | 
	
		
			
				|  |  | 			return findByDoctorType5(uid, id, pagesize,title);
 | 
	
		
			
				|  |  | 		case 6:
 | 
	
		
			
				|  |  | 			//6 名医咨询 进行中
 | 
	
		
			
				|  |  | 			return findByDoctorType6(uid, 0, id, pagesize,title);
 | 
	
		
			
				|  |  | 		case 7:
 | 
	
		
			
				|  |  | 			//7 名医咨询 已结束
 | 
	
		
			
				|  |  | 			return findByDoctorType6(uid, 1, id, pagesize,title);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		return null;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	private Page<ConsultTeam> findByDoctorType5(String uid,  long id, int pagesize,String title) {
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		if(StringUtils.isNoneEmpty(title)){
 | 
	
		
			
				|  |  | 			title="%"+title+"%";
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorAllList(uid, id,title, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorAllList(uid,title, pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 		}else{
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorAllList(uid, id, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorAllList(uid, pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 	private Page<ConsultTeam> findByDoctorType6(String uid, int type, long id, int pagesize,String title) {
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		if(StringUtils.isNoneEmpty(title)){
 | 
	
		
			
				|  |  | 			title="%"+title+"%";
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorDoingList(uid, id,title,type, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorDoingList(uid, title,type,pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 		}else{
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorDoingList(uid, id,type, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				return consultTeamDao.findFamousDoctorDoingList(uid,type, pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查询全部咨询记录
 | 
	
		
			
				|  |  | 	 * @param uid
 | 
	
		
			
				|  |  | 	 * @param id
 | 
	
		
			
				|  |  | 	 * @param pagesize
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByDoctorType0(String uid, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorList(uid, id, pageRequest);
 | 
	
		
			
				|  |  | 		} else {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorList(uid, pageRequest);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 指定医生三师咨询列表查询
 | 
	
		
			
				|  |  | 	 * @param uid 医生标识
 | 
	
		
			
				|  |  | 	 * @param type 咨询类型:1、咨询我的,2、公共的, 3、参与过的,4、已结束的
 | 
	
		
			
				|  |  | 	 * @param pagesize
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByDoctorType1(String uid, int type, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorPointList(uid, id, pageRequest);
 | 
	
		
			
				|  |  | 		} else {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorPointList(uid, pageRequest);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 公共三师咨询列表查询
 | 
	
		
			
				|  |  | 	 * @param uid 医生标识
 | 
	
		
			
				|  |  | 	 * @param type 咨询类型:1、咨询我的,2、公共的, 3、参与过的,4、已结束的
 | 
	
		
			
				|  |  | 	 * @param pagesize
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByDoctorType2(String uid, int type, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		// 设置查询条件
 | 
	
		
			
				|  |  | 		Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
 | 
	
		
			
				|  |  | 		// 未指定医生
 | 
	
		
			
				|  |  | 		filters.put("type", new SearchFilter("type", Operator.EQ, 0));
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			filters.put("id", new SearchFilter("id", Operator.LT, id));
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 未回复
 | 
	
		
			
				|  |  | 		filters.put("status", new SearchFilter("status", Operator.EQ, 0));
 | 
	
		
			
				|  |  | 		// 未作废
 | 
	
		
			
				|  |  | 		filters.put("del", new SearchFilter("del", Operator.EQ, "1"));
 | 
	
		
			
				|  |  | 		Specification<ConsultTeam> spec = DynamicSpecifications.bySearchFilter(filters.values(), ConsultTeam.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		return consultTeamDao.findAll(spec, pageRequest);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 医生参与过的未结束的三师咨询列表查询
 | 
	
		
			
				|  |  | 	 * @param uid
 | 
	
		
			
				|  |  | 	 * @param pagesize
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByDoctorType3(String uid, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorJoinList(uid, id, pageRequest);
 | 
	
		
			
				|  |  | 		} else {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorJoinList(uid, pageRequest);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 医生参与过的已结束的三师咨询列表查询
 | 
	
		
			
				|  |  | 	 * @param uid
 | 
	
		
			
				|  |  | 	 * @param pagesize
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByDoctorType4(String uid, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorFinishList(uid, id, pageRequest);
 | 
	
		
			
				|  |  | 		} else {
 | 
	
		
			
				|  |  | 			return consultTeamDao.findDoctorFinishList(uid, pageRequest);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 网络咨询咨询日志查询
 | 
	
		
			
				|  |  | 	 * @param consult 咨询标识
 | 
	
		
			
				|  |  | 	 * @param pagesize 每页显示数,默认为10
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeamLog> findLogByConsult(String consult, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		if (id < 0) {
 | 
	
		
			
				|  |  | 			id = 0;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		// 设置查询条件
 | 
	
		
			
				|  |  | 		Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
 | 
	
		
			
				|  |  | 		filters.put("consult", new SearchFilter("consult", Operator.EQ, consult));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			if(pagesize>0)
 | 
	
		
			
				|  |  | 				filters.put("id", new SearchFilter("id", Operator.LT, id));
 | 
	
		
			
				|  |  | 			else
 | 
	
		
			
				|  |  | 				filters.put("id", new SearchFilter("id", Operator.GT, id));
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		filters.put("del", new SearchFilter("del", Operator.EQ, "1"));
 | 
	
		
			
				|  |  | 		Specification<ConsultTeamLog> spec = DynamicSpecifications.bySearchFilter(filters.values(), ConsultTeamLog.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		if(pagesize <= 0){
 | 
	
		
			
				|  |  | 			Page<ConsultTeamLog> p = new PageImpl<>(consultTeamLogDao.findAll(spec));
 | 
	
		
			
				|  |  | 			return p;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		return consultTeamLogDao.findAll(spec, pageRequest);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 批量回复
 | 
	
		
			
				|  |  | 	 * @param logs
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public void reply(List<ConsultTeamLog> logs, String patient) {
 | 
	
		
			
				|  |  | 		for (ConsultTeamLog log : logs) {
 | 
	
		
			
				|  |  | 			reply(log, patient, null, log.getType());
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 添加咨询记录
 | 
	
		
			
				|  |  | 	 * @param log 日志对象
 | 
	
		
			
				|  |  | 	 * @param type 类型,0问,1回复,2追问,3评价
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public ConsultTeamLog reply(ConsultTeamLog log, String patient, String teamOrDoctor, int type) {
 | 
	
		
			
				|  |  | 		log.setCzrq(clock.getCurrentDate());
 | 
	
		
			
				|  |  | 		// 保存咨询记录
 | 
	
		
			
				|  |  | 		ConsultTeamLog temp = consultTeamLogDao.save(log);
 | 
	
		
			
				|  |  | 		if (temp != null) {
 | 
	
		
			
				|  |  | 			// 发送消息
 | 
	
		
			
				|  |  | 			if (type == 1) {
 | 
	
		
			
				|  |  | 				// 医生回复,给患者发消息
 | 
	
		
			
				|  |  | 				// sendMessage(patient, teamOrDoctor, "三师咨询", log.getDoctorName() + "回复了您的咨询", log.getConsult(), 214, 1, 0, 0);
 | 
	
		
			
				|  |  | 				// 患者未读数量+1
 | 
	
		
			
				|  |  | 				consultTeamDao.increasePatientRead(log.getConsult());
 | 
	
		
			
				|  |  | 				// 医生有回复
 | 
	
		
			
				|  |  | 				consultTeamDoctorDao.updateReply(log.getConsult(), teamOrDoctor);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 				//shenzaixin v1.2.0 推送消息给患者
 | 
	
		
			
				|  |  | 				HttpUtil.sendWeixinWebsocketMsg(patient,"{busiType:'qianyuezixun',msgid:'"+log.getId()+"'}");
 | 
	
		
			
				|  |  | 			} else if (type == 0 || type == 2) {
 | 
	
		
			
				|  |  | 				// 查询相关联的医生
 | 
	
		
			
				|  |  | 				Iterable<ConsultTeamDoctor> iterable = consultTeamDoctorDao.findByConsult(log.getConsult());
 | 
	
		
			
				|  |  | 				if (iterable != null && iterable.iterator() != null && iterable.iterator().hasNext()) {
 | 
	
		
			
				|  |  | 					Iterator<ConsultTeamDoctor> iterator = iterable.iterator();
 | 
	
		
			
				|  |  | 					while (iterator.hasNext()) {
 | 
	
		
			
				|  |  | 						// 患者提问或追问,给医生发消息
 | 
	
		
			
				|  |  | 						ConsultTeamDoctor ctd = iterator.next();
 | 
	
		
			
				|  |  | 						if (ctd == null) {
 | 
	
		
			
				|  |  | 							continue;
 | 
	
		
			
				|  |  | 						}
 | 
	
		
			
				|  |  | 						// 推送消息给医生
 | 
	
		
			
				|  |  | 						PushMsgTask.getInstance().put(ctd.getTo(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM_REPLY.D_CT_02.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM_REPLY.指定咨询.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM_REPLY.您有新的消息.name(), temp.getConsult());
 | 
	
		
			
				|  |  | 					}
 | 
	
		
			
				|  |  | 				}
 | 
	
		
			
				|  |  | 				// 医生未读数量+1
 | 
	
		
			
				|  |  | 				consultTeamDao.increaseDoctorRead(log.getConsult());
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		return temp;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 添加三师咨询
 | 
	
		
			
				|  |  | 	 * @param ct 三师咨询对象
 | 
	
		
			
				|  |  | 	 * @param patient 患者标识
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 * @throws Exception
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public int addTeamConsult(ConsultTeam ct, String patient) throws Exception {
 | 
	
		
			
				|  |  | 		// 咨询三师
 | 
	
		
			
				|  |  | 		if (ct.getType() == 1) {
 | 
	
		
			
				|  |  | 			// 查询三师签约信息
 | 
	
		
			
				|  |  | 			SignFamily sc = signFamilyDao.findBySanshiPatientYes(patient);
 | 
	
		
			
				|  |  | 			if (sc == null) {
 | 
	
		
			
				|  |  | 				// 不存在三师签约
 | 
	
		
			
				|  |  | 				return -2;
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 			ct.setTeam(sc.getTeamCode());
 | 
	
		
			
				|  |  | 			// 设置健康管理师,三师咨询默认给健康管理师处理
 | 
	
		
			
				|  |  | 			//查找病人所在的团队
 | 
	
		
			
				|  |  | 			DoctorTeam doctorTeam=doctorTeamDao.findBySanshiParientCode(patient);
 | 
	
		
			
				|  |  | 			//得到团队的健康管理师
 | 
	
		
			
				|  |  | 			DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorSanshi2ByTeam(doctorTeam.getCode(),3);
 | 
	
		
			
				|  |  | 			// 设置家庭医生
 | 
	
		
			
				|  |  | 			ct.setDoctor( doctorTeamMember.getMemberCode());
 | 
	
		
			
				|  |  | 		} else if (ct.getType() == 2) {
 | 
	
		
			
				|  |  | 			// 咨询家庭医生
 | 
	
		
			
				|  |  | 			SignFamily sf = signFamilyDao.findByjiatingPatient(patient);
 | 
	
		
			
				|  |  | 			if (sf == null) {
 | 
	
		
			
				|  |  | 				// 不存在家庭签约
 | 
	
		
			
				|  |  | 				return -1;
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 			// 设置健康管理师,家庭医生咨询默认给健康管理师处理
 | 
	
		
			
				|  |  | 			//查找病人所在的团队
 | 
	
		
			
				|  |  | 			DoctorTeam doctorTeam=doctorTeamDao.findByParientCode(patient);
 | 
	
		
			
				|  |  | 			//得到团队的健康管理师
 | 
	
		
			
				|  |  | 			DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorJiating2ByTeam(doctorTeam.getCode(),3);
 | 
	
		
			
				|  |  | 			// 设置家庭医生
 | 
	
		
			
				|  |  | 			ct.setDoctor( doctorTeamMember.getMemberCode());
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 设置患者信息
 | 
	
		
			
				|  |  | 		ct.setPatient(patient);
 | 
	
		
			
				|  |  | 		// 查询患者信息
 | 
	
		
			
				|  |  | 		Patient tempPatient = patientDao.findByCode(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);
 | 
	
		
			
				|  |  | 		// 医生未读数量为1
 | 
	
		
			
				|  |  | 		ct.setDoctorRead(1);
 | 
	
		
			
				|  |  | 		// 添加咨询记录
 | 
	
		
			
				|  |  | 		Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
 | 
	
		
			
				|  |  | 		// 设置咨询标识
 | 
	
		
			
				|  |  | 		ct.setConsult(consult.getCode());
 | 
	
		
			
				|  |  | 		// 保存医生咨询信息
 | 
	
		
			
				|  |  | 		if (consultTeamDao.save(ct) == null) {
 | 
	
		
			
				|  |  | 			throw new Exception("保存失败!");
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 添加咨询转发记录
 | 
	
		
			
				|  |  | 		ConsultTeamDoctor cd = new ConsultTeamDoctor();
 | 
	
		
			
				|  |  | 		cd.setConsult(consult.getCode());
 | 
	
		
			
				|  |  | 		cd.setDel("1");
 | 
	
		
			
				|  |  | 		cd.setCzrq(new Date());
 | 
	
		
			
				|  |  | 		cd.setTo(ct.getDoctor());
 | 
	
		
			
				|  |  | 		consultTeamDoctorDao.save(cd);
 | 
	
		
			
				|  |  | 		// 添加医生咨询日志
 | 
	
		
			
				|  |  | 		addLogs(ct);
 | 
	
		
			
				|  |  | 		return 1;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 添加三师咨询日志
 | 
	
		
			
				|  |  | 	 * @param ct
 | 
	
		
			
				|  |  | 	 * @throws Exception
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	private void addLogs(ConsultTeam ct) throws Exception {
 | 
	
		
			
				|  |  | 		List<ConsultTeamLog> logs = new ArrayList<ConsultTeamLog>();
 | 
	
		
			
				|  |  | 		// 添加问题咨询日志
 | 
	
		
			
				|  |  | 		String content ="";
 | 
	
		
			
				|  |  | 			content = "咨询问题:" + (StringUtils.isEmpty(ct.getSymptoms()) ? "无" : ct.getSymptoms());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		// 生成提问日志,并推送相关消息
 | 
	
		
			
				|  |  | 		ConsultTeamLog infoLog = new ConsultTeamLog();
 | 
	
		
			
				|  |  | 		infoLog.setConsult(ct.getConsult());
 | 
	
		
			
				|  |  | 		infoLog.setContent(content);
 | 
	
		
			
				|  |  | 		infoLog.setDel("1");
 | 
	
		
			
				|  |  | 		infoLog.setType(0);
 | 
	
		
			
				|  |  | 		infoLog.setChatType(1);
 | 
	
		
			
				|  |  | 		infoLog.setCzrq(new Date());
 | 
	
		
			
				|  |  | 		logs.add(infoLog);
 | 
	
		
			
				|  |  | 		// 图片日志
 | 
	
		
			
				|  |  | 		if (StringUtils.isNotEmpty(ct.getImages())) {
 | 
	
		
			
				|  |  | 			String[] images = ct.getImages().split(",");
 | 
	
		
			
				|  |  | 			for (String image : images) {
 | 
	
		
			
				|  |  | 				if (StringUtils.isNoneEmpty(image)) {
 | 
	
		
			
				|  |  | 					ConsultTeamLog imgLog = new ConsultTeamLog();
 | 
	
		
			
				|  |  | 					// 设置咨询标识
 | 
	
		
			
				|  |  | 					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 (StringUtils.isNotEmpty(ct.getVoice())) {
 | 
	
		
			
				|  |  | 			ConsultTeamLog voiceLog = new ConsultTeamLog();
 | 
	
		
			
				|  |  | 			// 设置咨询标识
 | 
	
		
			
				|  |  | 			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<ConsultTeamLog> 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);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查询咨询列表
 | 
	
		
			
				|  |  | 	 * @param patientCode 患者标志
 | 
	
		
			
				|  |  | 	 * @param status 咨询状态(0未结束,1已结束,-1 已取消)
 | 
	
		
			
				|  |  | 	 * @param pageSize 页数
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<ConsultTeam> findByPatient(String patientCode, int status, long id, int pageSize) {
 | 
	
		
			
				|  |  | 		if (id < 0) {
 | 
	
		
			
				|  |  | 			id = 0;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		if (pageSize <= 0) {
 | 
	
		
			
				|  |  | 			pageSize = 10;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pageSize, sort);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		Page<ConsultTeam> list = null;
 | 
	
		
			
				|  |  | 		switch (status) {
 | 
	
		
			
				|  |  | 		case 0:
 | 
	
		
			
				|  |  | 			// 未结束
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				list = consultTeamDao.findNotFinishedBypatient(patientCode, id, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				list = consultTeamDao.findNotFinishedBypatient(patientCode, pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 			break;
 | 
	
		
			
				|  |  | 		case 1:
 | 
	
		
			
				|  |  | 			// 已结束
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				list = consultTeamDao.findFinishedBypatient(patientCode, id, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				list = consultTeamDao.findFinishedBypatient(patientCode, pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 			break;
 | 
	
		
			
				|  |  | 		case -1:
 | 
	
		
			
				|  |  | 			// 已取消
 | 
	
		
			
				|  |  | 			if (id > 0) {
 | 
	
		
			
				|  |  | 				list = consultTeamDao.findCancelBypatient(patientCode, id, pageRequest);
 | 
	
		
			
				|  |  | 			} else {
 | 
	
		
			
				|  |  | 				list = consultTeamDao.findCancelBypatient(patientCode, pageRequest);
 | 
	
		
			
				|  |  | 			}
 | 
	
		
			
				|  |  | 			break;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		return list;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 医生关闭三师咨询
 | 
	
		
			
				|  |  | 	 * @param consult 三师咨询标识
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public int finish(String consult) {
 | 
	
		
			
				|  |  | 		return consultTeamDao.updateStatusByConsult(consult);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 设置咨询已读
 | 
	
		
			
				|  |  | 	 *
 | 
	
		
			
				|  |  | 	 * @param consult
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public int readMessage(String consult){
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private DoctorTeamMemberDao doctorTeamDoctor;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查询患者是否还有未结束的三师咨询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patient
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public boolean exist(String patient, Integer type) {
 | 
	
		
			
				|  |  |         int count = consultTeamDao.countByPatient(patient, type);
 | 
	
		
			
				|  |  |         return count > 0;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查詢醫生網絡諮詢列表
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param type     咨询类型:1、咨询我的,2、公共的, 3、参与过的,4、已结束的 5 名医咨询 全部  6 名医咨询 进行中 7 名医咨询 已结束
 | 
	
		
			
				|  |  |      * @param id
 | 
	
		
			
				|  |  |      * @param pagesize 每页显示数,默认为10
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByDoctor(String uid, int type, long id, int pagesize, String title) {
 | 
	
		
			
				|  |  |         if (id < 0) {
 | 
	
		
			
				|  |  |             id = 0;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (pagesize <= 0) {
 | 
	
		
			
				|  |  |             pagesize = 10;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         switch (type) {
 | 
	
		
			
				|  |  |             case 0:
 | 
	
		
			
				|  |  |                 // 全部
 | 
	
		
			
				|  |  |                 return findByDoctorType0(uid, id, pagesize);
 | 
	
		
			
				|  |  |             case 1:
 | 
	
		
			
				|  |  |                 // 咨询我的
 | 
	
		
			
				|  |  |                 return findByDoctorType1(uid, type, id, pagesize);
 | 
	
		
			
				|  |  |             case 2:
 | 
	
		
			
				|  |  |                 // 我感兴趣的
 | 
	
		
			
				|  |  |                 return findByDoctorType2(uid, type, id, pagesize);
 | 
	
		
			
				|  |  |             case 3:
 | 
	
		
			
				|  |  |                 // 我回复的
 | 
	
		
			
				|  |  |                 return findByDoctorType3(uid, id, pagesize);
 | 
	
		
			
				|  |  |             case 4:
 | 
	
		
			
				|  |  |                 // 已完成的
 | 
	
		
			
				|  |  |                 return findByDoctorType4(uid, id, pagesize);
 | 
	
		
			
				|  |  |             case 5:
 | 
	
		
			
				|  |  |                 // 5 名医咨询 全部
 | 
	
		
			
				|  |  |                 return findByDoctorType5(uid, id, pagesize, title);
 | 
	
		
			
				|  |  |             case 6:
 | 
	
		
			
				|  |  |                 //6 名医咨询 进行中
 | 
	
		
			
				|  |  |                 return findByDoctorType6(uid, 0, id, pagesize, title);
 | 
	
		
			
				|  |  |             case 7:
 | 
	
		
			
				|  |  |                 //7 名医咨询 已结束
 | 
	
		
			
				|  |  |                 return findByDoctorType6(uid, 1, id, pagesize, title);
 | 
	
		
			
				|  |  |             case 8:
 | 
	
		
			
				|  |  |                 return findByDoctorType8(uid, id, pagesize, title);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return null;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private Page<ConsultTeam> findByDoctorType8(String uid,long id,int pagesize,String title){
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneEmpty(title)) {
 | 
	
		
			
				|  |  |             title = "%" + title + "%";
 | 
	
		
			
				|  |  |             if (id > 0) {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorUnReplyReadList(uid, id, title, pageRequest);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorUnReplyReadList(uid, title, pageRequest);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             if (id > 0) {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorUnReplyReadNoTitleList(uid, id, pageRequest);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorUnReplyReadNoTitleList(uid, pageRequest);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private Page<ConsultTeam> findByDoctorType5(String uid, long id, int pagesize, String title) {
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneEmpty(title)) {
 | 
	
		
			
				|  |  |             title = "%" + title + "%";
 | 
	
		
			
				|  |  |             if (id > 0) {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorAllList(uid, id, title, pageRequest);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorAllList(uid, title, pageRequest);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             if (id > 0) {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorAllList(uid, id, pageRequest);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorAllList(uid, pageRequest);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private Page<ConsultTeam> findByDoctorType6(String uid, int type, long id, int pagesize, String title) {
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (StringUtils.isNoneEmpty(title)) {
 | 
	
		
			
				|  |  |             title = "%" + title + "%";
 | 
	
		
			
				|  |  |             if (id > 0) {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorDoingList(uid, id, title, type, pageRequest);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorDoingList(uid, title, type, pageRequest);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             if (id > 0) {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorDoingList(uid, id, type, pageRequest);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 return consultTeamDao.findFamousDoctorDoingList(uid, type, pageRequest);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查询全部咨询记录
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param uid
 | 
	
		
			
				|  |  |      * @param id
 | 
	
		
			
				|  |  |      * @param pagesize
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByDoctorType0(String uid, long id, int pagesize) {
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorList(uid, id, pageRequest);
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorList(uid, pageRequest);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 指定医生三师咨询列表查询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param uid      医生标识
 | 
	
		
			
				|  |  |      * @param type     咨询类型:1、咨询我的,2、公共的, 3、参与过的,4、已结束的
 | 
	
		
			
				|  |  |      * @param pagesize
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByDoctorType1(String uid, int type, long id, int pagesize) {
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorPointList(uid, id, pageRequest);
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorPointList(uid, pageRequest);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 公共三师咨询列表查询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param uid      医生标识
 | 
	
		
			
				|  |  |      * @param type     咨询类型:1、咨询我的,2、公共的, 3、参与过的,4、已结束的
 | 
	
		
			
				|  |  |      * @param pagesize
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByDoctorType2(String uid, int type, long id, int pagesize) {
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 设置查询条件
 | 
	
		
			
				|  |  |         Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
 | 
	
		
			
				|  |  |         // 未指定医生
 | 
	
		
			
				|  |  |         filters.put("type", new SearchFilter("type", Operator.EQ, 0));
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             filters.put("id", new SearchFilter("id", Operator.LT, id));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 未回复
 | 
	
		
			
				|  |  |         filters.put("status", new SearchFilter("status", Operator.EQ, 0));
 | 
	
		
			
				|  |  |         // 未作废
 | 
	
		
			
				|  |  |         filters.put("del", new SearchFilter("del", Operator.EQ, "1"));
 | 
	
		
			
				|  |  |         Specification<ConsultTeam> spec = DynamicSpecifications.bySearchFilter(filters.values(), ConsultTeam.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return consultTeamDao.findAll(spec, pageRequest);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 医生参与过的未结束的三师咨询列表查询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param uid
 | 
	
		
			
				|  |  |      * @param pagesize
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByDoctorType3(String uid, long id, int pagesize) {
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorJoinList(uid, id, pageRequest);
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorJoinList(uid, pageRequest);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 医生参与过的已结束的三师咨询列表查询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param uid
 | 
	
		
			
				|  |  |      * @param pagesize
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByDoctorType4(String uid, long id, int pagesize) {
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorFinishList(uid, id, pageRequest);
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             return consultTeamDao.findDoctorFinishList(uid, pageRequest);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 网络咨询咨询日志查询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param consult  咨询标识
 | 
	
		
			
				|  |  |      * @param pagesize 每页显示数,默认为10
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeamLog> findLogByConsult(String consult, long id, int pagesize) {
 | 
	
		
			
				|  |  |         if (id < 0) {
 | 
	
		
			
				|  |  |             id = 0;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 设置查询条件
 | 
	
		
			
				|  |  |         Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
 | 
	
		
			
				|  |  |         filters.put("consult", new SearchFilter("consult", Operator.EQ, consult));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             if (pagesize > 0)
 | 
	
		
			
				|  |  |                 filters.put("id", new SearchFilter("id", Operator.LT, id));
 | 
	
		
			
				|  |  |             else
 | 
	
		
			
				|  |  |                 filters.put("id", new SearchFilter("id", Operator.GT, id));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         filters.put("del", new SearchFilter("del", Operator.EQ, "1"));
 | 
	
		
			
				|  |  |         Specification<ConsultTeamLog> spec = DynamicSpecifications.bySearchFilter(filters.values(), ConsultTeamLog.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (pagesize <= 0) {
 | 
	
		
			
				|  |  |             Page<ConsultTeamLog> p = new PageImpl<>(consultTeamLogDao.findAll(spec));
 | 
	
		
			
				|  |  |             return p;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         return consultTeamLogDao.findAll(spec, pageRequest);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 批量回复
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param logs
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void reply(List<ConsultTeamLog> logs, String patient) {
 | 
	
		
			
				|  |  |         for (ConsultTeamLog log : logs) {
 | 
	
		
			
				|  |  |             reply(log, patient, null, log.getType());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 添加咨询记录
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param log  日志对象
 | 
	
		
			
				|  |  |      * @param type 类型,0问,1回复,2追问,3评价
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public ConsultTeamLog reply(ConsultTeamLog log, String patient, String teamOrDoctor, int type) {
 | 
	
		
			
				|  |  |         log.setCzrq(clock.getCurrentDate());
 | 
	
		
			
				|  |  |         // 保存咨询记录
 | 
	
		
			
				|  |  |         ConsultTeamLog temp = consultTeamLogDao.save(log);
 | 
	
		
			
				|  |  |         if (temp != null) {
 | 
	
		
			
				|  |  |             // 发送消息
 | 
	
		
			
				|  |  |             if (type == 1) {
 | 
	
		
			
				|  |  |                 // 医生回复,给患者发消息
 | 
	
		
			
				|  |  |                 // sendMessage(patient, teamOrDoctor, "三师咨询", log.getDoctorName() + "回复了您的咨询", log.getConsult(), 214, 1, 0, 0);
 | 
	
		
			
				|  |  |                 // 患者未读数量+1
 | 
	
		
			
				|  |  |                 consultTeamDao.increasePatientRead(log.getConsult());
 | 
	
		
			
				|  |  |                 // 医生有回复
 | 
	
		
			
				|  |  |                 consultTeamDoctorDao.updateReply(log.getConsult(), teamOrDoctor);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 //shenzaixin v1.2.0 推送消息给患者
 | 
	
		
			
				|  |  |                 HttpUtil.sendWeixinWebsocketMsg(patient, "{busiType:'qianyuezixun',msgid:'" + log.getId() + "'}");
 | 
	
		
			
				|  |  |             } else if (type == 0 || type == 2) {
 | 
	
		
			
				|  |  |                 // 查询相关联的医生
 | 
	
		
			
				|  |  |                 Iterable<ConsultTeamDoctor> iterable = consultTeamDoctorDao.findByConsult(log.getConsult());
 | 
	
		
			
				|  |  |                 if (iterable != null && iterable.iterator() != null && iterable.iterator().hasNext()) {
 | 
	
		
			
				|  |  |                     Iterator<ConsultTeamDoctor> iterator = iterable.iterator();
 | 
	
		
			
				|  |  |                     while (iterator.hasNext()) {
 | 
	
		
			
				|  |  |                         // 患者提问或追问,给医生发消息
 | 
	
		
			
				|  |  |                         ConsultTeamDoctor ctd = iterator.next();
 | 
	
		
			
				|  |  |                         if (ctd == null) {
 | 
	
		
			
				|  |  |                             continue;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         // 推送消息给医生
 | 
	
		
			
				|  |  |                         PushMsgTask.getInstance().put(ctd.getTo(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM_REPLY.D_CT_02.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM_REPLY.指定咨询.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM_REPLY.您有新的消息.name(), temp.getConsult());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 // 医生未读数量+1
 | 
	
		
			
				|  |  |                 consultTeamDao.increaseDoctorRead(log.getConsult());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return temp;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 添加三师咨询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param ct      三师咨询对象
 | 
	
		
			
				|  |  |      * @param patient 患者标识
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public int addTeamConsult(ConsultTeam ct, String patient) throws Exception {
 | 
	
		
			
				|  |  |         // 咨询三师
 | 
	
		
			
				|  |  |         if (ct.getType() == 1) {
 | 
	
		
			
				|  |  |             // 查询三师签约信息
 | 
	
		
			
				|  |  |             SignFamily sc = signFamilyDao.findBySanshiPatientYes(patient);
 | 
	
		
			
				|  |  |             if (sc == null) {
 | 
	
		
			
				|  |  |                 // 不存在三师签约
 | 
	
		
			
				|  |  |                 return -2;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             ct.setTeam(sc.getTeamCode());
 | 
	
		
			
				|  |  |             // 设置健康管理师,三师咨询默认给健康管理师处理
 | 
	
		
			
				|  |  |             //查找病人所在的团队
 | 
	
		
			
				|  |  |             DoctorTeam doctorTeam = doctorTeamDao.findBySanshiParientCode(patient);
 | 
	
		
			
				|  |  |             //得到团队的健康管理师
 | 
	
		
			
				|  |  |             DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorSanshi2ByTeam(doctorTeam.getCode(), 3);
 | 
	
		
			
				|  |  |             // 设置家庭医生
 | 
	
		
			
				|  |  |             ct.setDoctor(doctorTeamMember.getMemberCode());
 | 
	
		
			
				|  |  |         } else if (ct.getType() == 2) {
 | 
	
		
			
				|  |  |             // 咨询家庭医生
 | 
	
		
			
				|  |  |             SignFamily sf = signFamilyDao.findByjiatingPatient(patient);
 | 
	
		
			
				|  |  |             if (sf == null) {
 | 
	
		
			
				|  |  |                 // 不存在家庭签约
 | 
	
		
			
				|  |  |                 return -1;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             // 设置健康管理师,家庭医生咨询默认给健康管理师处理
 | 
	
		
			
				|  |  |             //查找病人所在的团队
 | 
	
		
			
				|  |  |             DoctorTeam doctorTeam = doctorTeamDao.findByParientCode(patient);
 | 
	
		
			
				|  |  |             //得到团队的健康管理师
 | 
	
		
			
				|  |  |             DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorJiating2ByTeam(doctorTeam.getCode(), 3);
 | 
	
		
			
				|  |  |             // 设置家庭医生
 | 
	
		
			
				|  |  |             ct.setDoctor(doctorTeamMember.getMemberCode());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 设置患者信息
 | 
	
		
			
				|  |  |         ct.setPatient(patient);
 | 
	
		
			
				|  |  |         // 查询患者信息
 | 
	
		
			
				|  |  |         Patient tempPatient = patientDao.findByCode(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);
 | 
	
		
			
				|  |  |         // 医生未读数量为1
 | 
	
		
			
				|  |  |         ct.setDoctorRead(1);
 | 
	
		
			
				|  |  |         // 添加咨询记录
 | 
	
		
			
				|  |  |         Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
 | 
	
		
			
				|  |  |         // 设置咨询标识
 | 
	
		
			
				|  |  |         ct.setConsult(consult.getCode());
 | 
	
		
			
				|  |  |         // 保存医生咨询信息
 | 
	
		
			
				|  |  |         if (consultTeamDao.save(ct) == null) {
 | 
	
		
			
				|  |  |             throw new Exception("保存失败!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 添加咨询转发记录
 | 
	
		
			
				|  |  |         ConsultTeamDoctor cd = new ConsultTeamDoctor();
 | 
	
		
			
				|  |  |         cd.setConsult(consult.getCode());
 | 
	
		
			
				|  |  |         cd.setDel("1");
 | 
	
		
			
				|  |  |         cd.setCzrq(new Date());
 | 
	
		
			
				|  |  |         cd.setTo(ct.getDoctor());
 | 
	
		
			
				|  |  |         consultTeamDoctorDao.save(cd);
 | 
	
		
			
				|  |  |         // 添加医生咨询日志
 | 
	
		
			
				|  |  |         addLogs(ct);
 | 
	
		
			
				|  |  |         return 1;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 添加三师咨询日志
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param ct
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private void addLogs(ConsultTeam ct) throws Exception {
 | 
	
		
			
				|  |  |         List<ConsultTeamLog> logs = new ArrayList<ConsultTeamLog>();
 | 
	
		
			
				|  |  |         // 添加问题咨询日志
 | 
	
		
			
				|  |  |         String content = "";
 | 
	
		
			
				|  |  |         content = "咨询问题:" + (StringUtils.isEmpty(ct.getSymptoms()) ? "无" : ct.getSymptoms());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 生成提问日志,并推送相关消息
 | 
	
		
			
				|  |  |         ConsultTeamLog infoLog = new ConsultTeamLog();
 | 
	
		
			
				|  |  |         infoLog.setConsult(ct.getConsult());
 | 
	
		
			
				|  |  |         infoLog.setContent(content);
 | 
	
		
			
				|  |  |         infoLog.setDel("1");
 | 
	
		
			
				|  |  |         infoLog.setType(0);
 | 
	
		
			
				|  |  |         infoLog.setChatType(1);
 | 
	
		
			
				|  |  |         infoLog.setCzrq(new Date());
 | 
	
		
			
				|  |  |         logs.add(infoLog);
 | 
	
		
			
				|  |  |         // 图片日志
 | 
	
		
			
				|  |  |         if (StringUtils.isNotEmpty(ct.getImages())) {
 | 
	
		
			
				|  |  |             String[] images = ct.getImages().split(",");
 | 
	
		
			
				|  |  |             for (String image : images) {
 | 
	
		
			
				|  |  |                 if (StringUtils.isNoneEmpty(image)) {
 | 
	
		
			
				|  |  |                     ConsultTeamLog imgLog = new ConsultTeamLog();
 | 
	
		
			
				|  |  |                     // 设置咨询标识
 | 
	
		
			
				|  |  |                     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 (StringUtils.isNotEmpty(ct.getVoice())) {
 | 
	
		
			
				|  |  |             ConsultTeamLog voiceLog = new ConsultTeamLog();
 | 
	
		
			
				|  |  |             // 设置咨询标识
 | 
	
		
			
				|  |  |             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<ConsultTeamLog> 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);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查询咨询列表
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patientCode 患者标志
 | 
	
		
			
				|  |  |      * @param status      咨询状态(0未结束,1已结束,-1 已取消)
 | 
	
		
			
				|  |  |      * @param pageSize    页数
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<ConsultTeam> findByPatient(String patientCode, int status, long id, int pageSize) {
 | 
	
		
			
				|  |  |         if (id < 0) {
 | 
	
		
			
				|  |  |             id = 0;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (pageSize <= 0) {
 | 
	
		
			
				|  |  |             pageSize = 10;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pageSize, sort);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Page<ConsultTeam> list = null;
 | 
	
		
			
				|  |  |         switch (status) {
 | 
	
		
			
				|  |  |             case 0:
 | 
	
		
			
				|  |  |                 // 未结束
 | 
	
		
			
				|  |  |                 if (id > 0) {
 | 
	
		
			
				|  |  |                     list = consultTeamDao.findNotFinishedBypatient(patientCode, id, pageRequest);
 | 
	
		
			
				|  |  |                 } else {
 | 
	
		
			
				|  |  |                     list = consultTeamDao.findNotFinishedBypatient(patientCode, pageRequest);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 1:
 | 
	
		
			
				|  |  |                 // 已结束
 | 
	
		
			
				|  |  |                 if (id > 0) {
 | 
	
		
			
				|  |  |                     list = consultTeamDao.findFinishedBypatient(patientCode, id, pageRequest);
 | 
	
		
			
				|  |  |                 } else {
 | 
	
		
			
				|  |  |                     list = consultTeamDao.findFinishedBypatient(patientCode, pageRequest);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case -1:
 | 
	
		
			
				|  |  |                 // 已取消
 | 
	
		
			
				|  |  |                 if (id > 0) {
 | 
	
		
			
				|  |  |                     list = consultTeamDao.findCancelBypatient(patientCode, id, pageRequest);
 | 
	
		
			
				|  |  |                 } else {
 | 
	
		
			
				|  |  |                     list = consultTeamDao.findCancelBypatient(patientCode, pageRequest);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return list;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 医生关闭三师咨询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param consult 三师咨询标识
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public int finish(String consult) {
 | 
	
		
			
				|  |  |         return consultTeamDao.updateStatusByConsult(consult);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 设置咨询已读
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param consult
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public int readMessage(String consult) {
 | 
	
		
			
				|  |  |         return consultTeamDao.updateReadedByConsult(consult);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 取消三师咨询
 | 
	
		
			
				|  |  | 	 * @param consult
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public int cancel(String consult) {
 | 
	
		
			
				|  |  | 		return consultTeamDao.cancel(consult);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	public ConsultTeam findByCode(String code) {
 | 
	
		
			
				|  |  | 		return consultTeamDao.findByConsult(code);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 三师咨询转接医生
 | 
	
		
			
				|  |  | 	 * @param from 转出医生标识
 | 
	
		
			
				|  |  | 	 * @param to 转入医生标识
 | 
	
		
			
				|  |  | 	 * @param consult 三师咨询标识
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public void transfer(String from, String to, String consult) {
 | 
	
		
			
				|  |  | 		// 检查是否存在
 | 
	
		
			
				|  |  | 		if (consultTeamDoctorDao.isExist(consult, to) == 0) {
 | 
	
		
			
				|  |  | 			// 查询医生信息
 | 
	
		
			
				|  |  | 			Doctor d = doctorDao.findByCode(from);
 | 
	
		
			
				|  |  | 			// 再保存
 | 
	
		
			
				|  |  | 			ConsultTeamDoctor cd = new ConsultTeamDoctor();
 | 
	
		
			
				|  |  | 			cd.setConsult(consult);
 | 
	
		
			
				|  |  | 			cd.setDel("1");
 | 
	
		
			
				|  |  | 			cd.setCzrq(new Date());
 | 
	
		
			
				|  |  | 			cd.setFrom(d.getCode());
 | 
	
		
			
				|  |  | 			cd.setFromName(d.getName());
 | 
	
		
			
				|  |  | 			cd.setTo(to);
 | 
	
		
			
				|  |  | 			consultTeamDoctorDao.save(cd);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查询患者视频和三师咨询记录
 | 
	
		
			
				|  |  | 	 * @param patient 患者标识
 | 
	
		
			
				|  |  | 	 * @param id
 | 
	
		
			
				|  |  | 	 * @param pagesize
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Page<Consult> findConsultRecordByPatientType(String patient, long id, int pagesize) {
 | 
	
		
			
				|  |  | 		if (pagesize <= 0) {
 | 
	
		
			
				|  |  | 			pagesize = 10;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 排序
 | 
	
		
			
				|  |  | 		Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  | 		// 分页信息
 | 
	
		
			
				|  |  | 		PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  | 		// 设置查询条件
 | 
	
		
			
				|  |  | 		Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
 | 
	
		
			
				|  |  | 		filters.put("patient", new SearchFilter("patient", Operator.EQ, patient));
 | 
	
		
			
				|  |  | 		filters.put("type", new SearchFilter("type", Operator.LT, 3));
 | 
	
		
			
				|  |  | 		if (id > 0) {
 | 
	
		
			
				|  |  | 			filters.put("id", new SearchFilter("id", Operator.LT, id));
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 未作废
 | 
	
		
			
				|  |  | 		filters.put("del", new SearchFilter("del", Operator.EQ, "1"));
 | 
	
		
			
				|  |  | 		Specification<Consult> spec = DynamicSpecifications.bySearchFilter(filters.values(), Consult.class);
 | 
	
		
			
				|  |  | 		return consultDao.findAll(spec, pageRequest);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 清空医生未读数量
 | 
	
		
			
				|  |  | 	 * @param consult
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public void clearDoctorRead(String consult) {
 | 
	
		
			
				|  |  | 		consultTeamDao.clearDoctorRead(consult);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 清空患者未读数量
 | 
	
		
			
				|  |  | 	 * @param consult
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public void clearPatientRead(String consult) {
 | 
	
		
			
				|  |  | 		consultTeamDao.clearPatientRead(consult);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查询医生的咨询统计
 | 
	
		
			
				|  |  | 	 *
 | 
	
		
			
				|  |  | 	 * @param doctorCode
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public Map<String,Long> getAllCount(String doctorCode) {
 | 
	
		
			
				|  |  | 		Map<String,Long> result = new HashMap<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		//根据医生code查询总咨询数  
 | 
	
		
			
				|  |  | 		 long allCount=consultTeamDoctorDao.getAllCountByDoctorCode(doctorCode);
 | 
	
		
			
				|  |  | 		
 | 
	
		
			
				|  |  | 		//根据医生code查询今日咨询数
 | 
	
		
			
				|  |  | 		 long todayCount=consultTeamDoctorDao.getTodayCountByDoctorCode(doctorCode);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		result.put("all",allCount);
 | 
	
		
			
				|  |  | 		result.put("today",todayCount);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		return result;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查找未完成咨询
 | 
	
		
			
				|  |  | 	 *
 | 
	
		
			
				|  |  | 	 * @param patient
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  | 	 */
 | 
	
		
			
				|  |  | 	public List<ConsultTeam> getUnfinishedConsult(String patient){
 | 
	
		
			
				|  |  | 		return consultTeamDao.findUnfinishedConsult(patient);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 查询患者全部的咨询数目
 | 
	
		
			
				|  |  | 	 * @param patientCode
 | 
	
		
			
				|  |  | 	 * @return
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 取消三师咨询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param consult
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public int cancel(String consult) {
 | 
	
		
			
				|  |  |         return consultTeamDao.cancel(consult);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public ConsultTeam findByCode(String code) {
 | 
	
		
			
				|  |  |         return consultTeamDao.findByConsult(code);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 三师咨询转接医生
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param from    转出医生标识
 | 
	
		
			
				|  |  |      * @param to      转入医生标识
 | 
	
		
			
				|  |  |      * @param consult 三师咨询标识
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void transfer(String from, String to, String consult) {
 | 
	
		
			
				|  |  |         // 检查是否存在
 | 
	
		
			
				|  |  |         if (consultTeamDoctorDao.isExist(consult, to) == 0) {
 | 
	
		
			
				|  |  |             // 查询医生信息
 | 
	
		
			
				|  |  |             Doctor d = doctorDao.findByCode(from);
 | 
	
		
			
				|  |  |             // 再保存
 | 
	
		
			
				|  |  |             ConsultTeamDoctor cd = new ConsultTeamDoctor();
 | 
	
		
			
				|  |  |             cd.setConsult(consult);
 | 
	
		
			
				|  |  |             cd.setDel("1");
 | 
	
		
			
				|  |  |             cd.setCzrq(new Date());
 | 
	
		
			
				|  |  |             cd.setFrom(d.getCode());
 | 
	
		
			
				|  |  |             cd.setFromName(d.getName());
 | 
	
		
			
				|  |  |             cd.setTo(to);
 | 
	
		
			
				|  |  |             consultTeamDoctorDao.save(cd);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查询患者视频和三师咨询记录
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patient  患者标识
 | 
	
		
			
				|  |  |      * @param id
 | 
	
		
			
				|  |  |      * @param pagesize
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Page<Consult> findConsultRecordByPatientType(String patient, long id, int pagesize) {
 | 
	
		
			
				|  |  |         if (pagesize <= 0) {
 | 
	
		
			
				|  |  |             pagesize = 10;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 排序
 | 
	
		
			
				|  |  |         Sort sort = new Sort(Direction.DESC, "id");
 | 
	
		
			
				|  |  |         // 分页信息
 | 
	
		
			
				|  |  |         PageRequest pageRequest = new PageRequest(0, pagesize, sort);
 | 
	
		
			
				|  |  |         // 设置查询条件
 | 
	
		
			
				|  |  |         Map<String, SearchFilter> filters = new HashMap<String, SearchFilter>();
 | 
	
		
			
				|  |  |         filters.put("patient", new SearchFilter("patient", Operator.EQ, patient));
 | 
	
		
			
				|  |  |         filters.put("type", new SearchFilter("type", Operator.LT, 3));
 | 
	
		
			
				|  |  |         if (id > 0) {
 | 
	
		
			
				|  |  |             filters.put("id", new SearchFilter("id", Operator.LT, id));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 未作废
 | 
	
		
			
				|  |  |         filters.put("del", new SearchFilter("del", Operator.EQ, "1"));
 | 
	
		
			
				|  |  |         Specification<Consult> spec = DynamicSpecifications.bySearchFilter(filters.values(), Consult.class);
 | 
	
		
			
				|  |  |         return consultDao.findAll(spec, pageRequest);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 清空医生未读数量
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param consult
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void clearDoctorRead(String consult) {
 | 
	
		
			
				|  |  |         consultTeamDao.clearDoctorRead(consult);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 清空患者未读数量
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param consult
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void clearPatientRead(String consult) {
 | 
	
		
			
				|  |  |         consultTeamDao.clearPatientRead(consult);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查询医生的咨询统计
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param doctorCode
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public Map<String, Long> getAllCount(String doctorCode) {
 | 
	
		
			
				|  |  |         Map<String, Long> result = new HashMap<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //根据医生code查询总咨询数
 | 
	
		
			
				|  |  |         long allCount = consultTeamDoctorDao.getAllCountByDoctorCode(doctorCode);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //根据医生code查询今日咨询数
 | 
	
		
			
				|  |  |         long todayCount = consultTeamDoctorDao.getTodayCountByDoctorCode(doctorCode);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         result.put("all", allCount);
 | 
	
		
			
				|  |  |         result.put("today", todayCount);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查找未完成咨询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patient
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public List<ConsultTeam> getUnfinishedConsult(String patient) {
 | 
	
		
			
				|  |  |         return consultTeamDao.findUnfinishedConsult(patient);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 查询患者全部的咨询数目
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patientCode
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  | 	public Integer findByDoctorSize(String patientCode,String doctorCode) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		return consultDao.findByPatient(patientCode,doctorCode);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	public List<Map<String,Object>> getConsultSign(String[] consults){
 | 
	
		
			
				|  |  | 		String params =  "";
 | 
	
		
			
				|  |  | 		List<String> paramList = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		for(int i = 0; i < consults.length ; i++){
 | 
	
		
			
				|  |  | 			params += (i == 0?"?":",?");
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		paramList.addAll(Arrays.asList(consults));
 | 
	
		
			
				|  |  | 		paramList.addAll(Arrays.asList(consults));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		String sqlgp = "select DISTINCT consult,to_doctor from wlyy_consult_team_doctor ctd,wlyy_doctor d where ctd.to_doctor = d.code and d.level = 2 and ctd.consult in (" + params + ") and ctd.del = '1'";
 | 
	
		
			
				|  |  | 		String sqlgpm = "select DISTINCT to_doctor from wlyy_consult_team_doctor ctd,wlyy_doctor d where ctd.to_doctor = d.code and d.level = 2 and ctd.consult in (" + params + ") and ctd.del = '1'";
 | 
	
		
			
				|  |  | 		String sqlQu = "select * from wlyy_quota_result where qkdoctor_code in (" + sqlgpm+ ") and quato_code = '1' and level1_type = '1'";
 | 
	
		
			
				|  |  | 		String sqlQuSum = "select a.consult,sum(ifnull(b.result,0)) sign from ("+ sqlgp +") a left join (" + sqlQu+ ") b on a.to_doctor = b.qkdoctor_code group by a.consult ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 		return jdbcTemplate.queryForList(sqlQuSum,paramList.toArray());
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	public ConsultTeamLog oneLog(Long logId) {
 | 
	
		
			
				|  |  | 		return consultTeamLogDao.findOne(logId);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	public boolean isExistFamousConsult(String uid) {
 | 
	
		
			
				|  |  | 		ConsultTeam consultTeam= consultTeamDao.findFamousConsultByPatient(uid);
 | 
	
		
			
				|  |  | 		if(consultTeam!=null){
 | 
	
		
			
				|  |  | 			return true;
 | 
	
		
			
				|  |  | 		}else{
 | 
	
		
			
				|  |  | 			return false;
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	public void addFamousTeamConsult(ConsultTeam ct, String uid) throws Exception{
 | 
	
		
			
				|  |  | 		// 设置患者信息
 | 
	
		
			
				|  |  | 		ct.setPatient(uid);
 | 
	
		
			
				|  |  | 		// 查询患者信息
 | 
	
		
			
				|  |  | 		Patient tempPatient = patientDao.findByCode(uid);
 | 
	
		
			
				|  |  | 		// 设置患者姓名
 | 
	
		
			
				|  |  | 		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);
 | 
	
		
			
				|  |  | 		// 医生未读数量为1
 | 
	
		
			
				|  |  | 		ct.setDoctorRead(1);
 | 
	
		
			
				|  |  | 		// 患者未读数量为0
 | 
	
		
			
				|  |  | 		ct.setPatientRead(0);
 | 
	
		
			
				|  |  | 		// 添加咨询记录
 | 
	
		
			
				|  |  | 		Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
 | 
	
		
			
				|  |  | 		// 设置咨询标识
 | 
	
		
			
				|  |  | 		ct.setConsult(consult.getCode());
 | 
	
		
			
				|  |  | 		// 保存医生咨询信息
 | 
	
		
			
				|  |  | 		if (consultTeamDao.save(ct) == null) {
 | 
	
		
			
				|  |  | 			throw new Exception("保存失败!");
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 		// 添加咨询转发记录
 | 
	
		
			
				|  |  | 		ConsultTeamDoctor cd = new ConsultTeamDoctor();
 | 
	
		
			
				|  |  | 		cd.setConsult(consult.getCode());
 | 
	
		
			
				|  |  | 		cd.setDel("1");
 | 
	
		
			
				|  |  | 		cd.setCzrq(new Date());
 | 
	
		
			
				|  |  | 		cd.setTo(ct.getDoctor());
 | 
	
		
			
				|  |  | 		consultTeamDoctorDao.save(cd);
 | 
	
		
			
				|  |  | 		// 添加医生咨询日志
 | 
	
		
			
				|  |  | 		addLogs(ct);
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	/**
 | 
	
		
			
				|  |  | 	 * 根据健康管理师和患者 找到正在进行中的咨询
 | 
	
		
			
				|  |  | 	 * @param patientCode
 | 
	
		
			
				|  |  | 	 * @param doctor
 | 
	
		
			
				|  |  |     public Integer findByDoctorSize(String patientCode, String doctorCode) {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return consultDao.findByPatient(patientCode, doctorCode);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public List<Map<String, Object>> getConsultSign(String[] consults) {
 | 
	
		
			
				|  |  |         String params = "";
 | 
	
		
			
				|  |  |         List<String> paramList = new ArrayList<>();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         for (int i = 0; i < consults.length; i++) {
 | 
	
		
			
				|  |  |             params += (i == 0 ? "?" : ",?");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         paramList.addAll(Arrays.asList(consults));
 | 
	
		
			
				|  |  |         paramList.addAll(Arrays.asList(consults));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String sqlgp = "select DISTINCT consult,to_doctor from wlyy_consult_team_doctor ctd,wlyy_doctor d where ctd.to_doctor = d.code and d.level = 2 and ctd.consult in (" + params + ") and ctd.del = '1'";
 | 
	
		
			
				|  |  |         String sqlgpm = "select DISTINCT to_doctor from wlyy_consult_team_doctor ctd,wlyy_doctor d where ctd.to_doctor = d.code and d.level = 2 and ctd.consult in (" + params + ") and ctd.del = '1'";
 | 
	
		
			
				|  |  |         String sqlQu = "select * from wlyy_quota_result where qkdoctor_code in (" + sqlgpm + ") and quato_code = '1' and level1_type = '1'";
 | 
	
		
			
				|  |  |         String sqlQuSum = "select a.consult,sum(ifnull(b.result,0)) sign from (" + sqlgp + ") a left join (" + sqlQu + ") b on a.to_doctor = b.qkdoctor_code group by a.consult ";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return jdbcTemplate.queryForList(sqlQuSum, paramList.toArray());
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public ConsultTeamLog oneLog(Long logId) {
 | 
	
		
			
				|  |  |         return consultTeamLogDao.findOne(logId);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public boolean isExistFamousConsult(String uid) {
 | 
	
		
			
				|  |  |         ConsultTeam consultTeam = consultTeamDao.findFamousConsultByPatient(uid);
 | 
	
		
			
				|  |  |         if (consultTeam != null) {
 | 
	
		
			
				|  |  |             return true;
 | 
	
		
			
				|  |  |         } else {
 | 
	
		
			
				|  |  |             return false;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void addFamousTeamConsult(ConsultTeam ct, String uid) throws Exception {
 | 
	
		
			
				|  |  |         // 设置患者信息
 | 
	
		
			
				|  |  |         ct.setPatient(uid);
 | 
	
		
			
				|  |  |         // 查询患者信息
 | 
	
		
			
				|  |  |         Patient tempPatient = patientDao.findByCode(uid);
 | 
	
		
			
				|  |  |         // 设置患者姓名
 | 
	
		
			
				|  |  |         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);
 | 
	
		
			
				|  |  |         // 医生未读数量为1
 | 
	
		
			
				|  |  |         ct.setDoctorRead(1);
 | 
	
		
			
				|  |  |         // 患者未读数量为0
 | 
	
		
			
				|  |  |         ct.setPatientRead(0);
 | 
	
		
			
				|  |  |         // 添加咨询记录
 | 
	
		
			
				|  |  |         Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
 | 
	
		
			
				|  |  |         // 设置咨询标识
 | 
	
		
			
				|  |  |         ct.setConsult(consult.getCode());
 | 
	
		
			
				|  |  |         // 保存医生咨询信息
 | 
	
		
			
				|  |  |         if (consultTeamDao.save(ct) == null) {
 | 
	
		
			
				|  |  |             throw new Exception("保存失败!");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         // 添加咨询转发记录
 | 
	
		
			
				|  |  |         ConsultTeamDoctor cd = new ConsultTeamDoctor();
 | 
	
		
			
				|  |  |         cd.setConsult(consult.getCode());
 | 
	
		
			
				|  |  |         cd.setDel("1");
 | 
	
		
			
				|  |  |         cd.setCzrq(new Date());
 | 
	
		
			
				|  |  |         cd.setTo(ct.getDoctor());
 | 
	
		
			
				|  |  |         consultTeamDoctorDao.save(cd);
 | 
	
		
			
				|  |  |         // 添加医生咨询日志
 | 
	
		
			
				|  |  |         addLogs(ct);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 根据健康管理师和患者 找到正在进行中的咨询
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param patientCode
 | 
	
		
			
				|  |  |      * @param doctor
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  | 	public ConsultTeam getConsultByPatientAndDoctor(String patientCode, String doctor) {
 | 
	
		
			
				|  |  | 		ConsultTeam consultTeam= consultTeamDao.findByParientCodeAndSignTypeAndDoctor(patientCode,doctor,2);
 | 
	
		
			
				|  |  | 		return consultTeam;
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 	public void transfers(String uid, String doctor, String consult) {
 | 
	
		
			
				|  |  | 		String[] doctors=doctor.split(",");
 | 
	
		
			
				|  |  | 		for(int i=0;i<doctors.length;i++){
 | 
	
		
			
				|  |  | 			transfer(uid,doctors[i],consult);
 | 
	
		
			
				|  |  | 		}
 | 
	
		
			
				|  |  | 	}
 | 
	
		
			
				|  |  |     public ConsultTeam getConsultByPatientAndDoctor(String patientCode, String doctor) {
 | 
	
		
			
				|  |  |         ConsultTeam consultTeam = consultTeamDao.findByParientCodeAndSignTypeAndDoctor(patientCode, doctor, 2);
 | 
	
		
			
				|  |  |         return consultTeam;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void transfers(String uid, String doctor, String consult) {
 | 
	
		
			
				|  |  |         String[] doctors = doctor.split(",");
 | 
	
		
			
				|  |  |         for (int i = 0; i < doctors.length; i++) {
 | 
	
		
			
				|  |  |             transfer(uid, doctors[i], consult);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |