ConsultTeamDao.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. /*******************************************************************************
  2. * Copyright (c) 2005, 2014 springside.github.io
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. *******************************************************************************/
  6. package com.yihu.wlyy.repository.consult;
  7. import org.springframework.data.domain.Page;
  8. import org.springframework.data.domain.PageRequest;
  9. import org.springframework.data.domain.Pageable;
  10. import org.springframework.data.domain.jaxb.PageAdapter;
  11. import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  12. import org.springframework.data.jpa.repository.Modifying;
  13. import org.springframework.data.jpa.repository.Query;
  14. import org.springframework.data.repository.PagingAndSortingRepository;
  15. import com.yihu.wlyy.entity.consult.ConsultTeam;
  16. import java.util.List;
  17. public interface ConsultTeamDao extends PagingAndSortingRepository<ConsultTeam, Long>, JpaSpecificationExecutor<ConsultTeam> {
  18. // 根據consult查詢咨询记录
  19. ConsultTeam findByConsult(String consult);
  20. @Query("select a from ConsultTeam a where a.patient = ?1 and a.del = '1' and a.status = 0")
  21. List<ConsultTeam> findUnfinishedConsult(String patient);
  22. // 统计未完成的数量
  23. @Query("select count(1) from ConsultTeam a where a.patient = ?1 and a.status = 0 and a.del = '1'and a.type=?2")
  24. int countByPatient(String patient,Integer signType);
  25. // 被指定且未结束列表
  26. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.del = '1' and b.del = '1' and a.type<3")
  27. Page<ConsultTeam> findDoctorList(String doctor, Pageable pageRequest);
  28. // 被指定且未结束列表
  29. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.id < ?2 and a.del = '1' and b.del = '1' and a.type<3")
  30. Page<ConsultTeam> findDoctorList(String doctor, long id, Pageable pageRequest);
  31. // 被指定且未结束列表
  32. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.status = 0 and a.del = '1' and b.del = '1' and a.type<3 ")
  33. Page<ConsultTeam> findDoctorPointList(String doctor, Pageable pageRequest);
  34. // 被指定且未结束列表
  35. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.id < ?2 and a.status = 0 and a.del = '1' and b.del = '1' and a.type<3 ")
  36. Page<ConsultTeam> findDoctorPointList(String doctor, long id, Pageable pageRequest);
  37. // 医生参与且未结束列表
  38. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.status = 0 and b.reply = 1 and a.del = '1' and b.del = '1' and a.type<3")
  39. Page<ConsultTeam> findDoctorJoinList(String doctor, Pageable pageRequest);
  40. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.id < ?2 and a.status = 0 and b.reply = 1 and a.del = '1' and b.del = '1' and a.type<3 ")
  41. Page<ConsultTeam> findDoctorJoinList(String doctor, long id, Pageable pageRequest);
  42. // 医生参与并已结束列表
  43. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.status = 1 and a.del = '1' and b.del = '1' and a.type<3")
  44. Page<ConsultTeam> findDoctorFinishList(String doctor, Pageable pageRequest);
  45. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and b.to = ?1 and a.id < ?2 and a.status = 1 and a.del = '1' and b.del = '1' and a.type<3")
  46. Page<ConsultTeam> findDoctorFinishList(String doctor, long id, Pageable pageRequest);
  47. // 医生关闭三师咨询
  48. @Modifying
  49. @Query("update ConsultTeam a set a.status = 1 where a.consult = ?1")
  50. int updateStatusByConsult(String consult);
  51. @Modifying
  52. @Query("update ConsultTeam a set a.doctorRead = 0 where a.consult = ?1")
  53. int updateReadedByConsult(String consult);
  54. /**
  55. * 解约时结束家庭咨询
  56. *
  57. * @param patient
  58. * @return
  59. */
  60. @Modifying
  61. @Query("update ConsultTeam a set a.status = 1 where a.patient =?1 and a.type = 2")
  62. int updateStatusByPatient(String patient);
  63. // 取消三师咨询
  64. @Modifying
  65. @Query("update ConsultTeam a set a.status = -1 where a.consult = ?1 and a.status <> 1")
  66. int cancel(String consult);
  67. // 患者咨询列表(未结束)
  68. @Query("select a from ConsultTeam a where a.patient = ?1 and a.status=0 and del = '1'")
  69. Page<ConsultTeam> findNotFinishedBypatient(String patient, Pageable pageRequest);
  70. @Query("select a from ConsultTeam a where a.patient = ?1 and a.id < ?2 and a.status=0 and del = '1'")
  71. Page<ConsultTeam> findNotFinishedBypatient(String patient, long id, Pageable pageRequest);
  72. // 患者咨询列表(已结束)
  73. @Query("select a from ConsultTeam a where a.patient=?1 and a.status=1 and del = '1'")
  74. Page<ConsultTeam> findFinishedBypatient(String patient, Pageable pageRequest);
  75. @Query("select a from ConsultTeam a where a.patient=?1 and a.id < ?2 and a.status=1 and del = '1'")
  76. Page<ConsultTeam> findFinishedBypatient(String patient, long id, Pageable pageRequest);
  77. // 患者咨询列表(已取消)
  78. @Query("select a from ConsultTeam a where a.patient=?1 and a.status=-1 and del = '1'")
  79. Page<ConsultTeam> findCancelBypatient(String patient, Pageable pageRequest);
  80. @Query("select a from ConsultTeam a where a.patient=?1 and a.id < ?2 and a.status=-1 and del = '1'")
  81. Page<ConsultTeam> findCancelBypatient(String patient, long id, Pageable pageRequest);
  82. // 医生未读数量+1
  83. @Modifying
  84. @Query("update ConsultTeam a set a.doctorRead = a.doctorRead + 1 where a.consult = ?1")
  85. int increaseDoctorRead(String consult);
  86. // 患者未读数量+1
  87. @Modifying
  88. @Query("update ConsultTeam a set a.patientRead = a.patientRead + 1 where a.consult = ?1")
  89. int increasePatientRead(String consult);
  90. // 清空医生未读数量
  91. @Modifying
  92. @Query("update ConsultTeam a set a.doctorRead = 0 where a.consult = ?1")
  93. int clearDoctorRead(String consult);
  94. // 清空患者未读数量
  95. @Modifying
  96. @Query("update ConsultTeam a set a.patientRead = 0 where a.consult = ?1")
  97. int clearPatientRead(String consult);
  98. // 更新患者评价标识
  99. @Modifying
  100. @Query("update ConsultTeam a set a.commentContent = ?2, a.commentStar = ?3 where a.consult = ?4")
  101. int updateComment(String commentContent, double commentStar, String consult);
  102. // 查询医生所有未读的消息总数
  103. @Query("SELECT SUM(a.doctorRead) FROM ConsultTeam a, ConsultTeamDoctor b WHERE a.consult = b.consult AND b.to = ?1 AND a.del = '1' AND a.status = 0")
  104. int amountAllDoctorUnread(String doctor);
  105. // 查询医生所有未读的消息总数
  106. @Query("SELECT a.name,b.czrq FROM ConsultTeam a, ConsultTeamDoctor b WHERE a.consult = b.consult AND b.to = ?1 AND a.del = '1' AND a.status = 0 order by b.czrq desc")
  107. Page<Object> AllDoctorUnreadLast(String doctor,Pageable pageRequest);
  108. // 查询带未读数量的所有健康咨询列表
  109. @Query("SELECT a FROM ConsultTeam a, ConsultTeamDoctor b WHERE a.consult = b.consult AND b.to = ?1 AND a.status = 0 and a.type< 3")
  110. Page<ConsultTeam> findListByUnreadDoctor(String doctor, Pageable pageRequest);
  111. // 查询带未读数量的所有健康咨询列表
  112. @Query("SELECT a FROM ConsultTeam a, ConsultTeamDoctor b WHERE a.consult = b.consult AND b.to = ?1 and a.id < ?2 AND a.status = 0 and a.type<3")
  113. Page<ConsultTeam> findListByUnreadDoctor(String doctor, long id, Pageable pageRequest);
  114. //找出当日的咨询量
  115. @Query("SELECT a FROM ConsultTeam a WHERE a.type=2 and unix_timestamp(a.czrq)>=unix_timestamp(?1) and unix_timestamp(a.czrq)<unix_timestamp(?2) ")
  116. List<ConsultTeam> findByCzrqyYesterday(String yesterday,String now);
  117. //查找
  118. @Query("SELECT a FROM ConsultTeam a WHERE a.patient=?1 and a.status=0 and a.del=1 and a.type=6")
  119. ConsultTeam findFamousConsultByPatient(String uid);
  120. //名医咨询 -全部
  121. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.del = '1' and b.del = '1'")
  122. Page<ConsultTeam> findFamousDoctorAllList(String uid, long id, Pageable pageRequest);
  123. //名医咨询 -全部
  124. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.del = '1' and b.del = '1'")
  125. Page<ConsultTeam> findFamousDoctorAllList(String uid, Pageable pageRequest);
  126. //名医咨询 -全部 带symptoms
  127. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.symptoms like ?3 and a.del = '1' and b.del = '1'")
  128. Page<ConsultTeam> findFamousDoctorAllList(String uid, long id,String title, Pageable pageRequest);
  129. //名医咨询 -全部 带symptoms
  130. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.symptoms like ?2 and a.del = '1' and b.del = '1'")
  131. Page<ConsultTeam> findFamousDoctorAllList(String uid,String title, Pageable pageRequest);
  132. //名医咨询 -根据status
  133. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.status = ?3 and a.del = '1' and b.del = '1'")
  134. Page<ConsultTeam> findFamousDoctorDoingList(String uid, long id,Integer type, Pageable pageRequest);
  135. //名医咨询 -根据status
  136. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.status = ?2 and a.del = '1' and b.del = '1'")
  137. Page<ConsultTeam> findFamousDoctorDoingList(String uid,Integer type, Pageable pageRequest);
  138. //名医咨询 -根据status 带symptoms
  139. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.symptoms like ?3 and a.status = ?4 and a.del = '1' and b.del = '1'")
  140. Page<ConsultTeam> findFamousDoctorDoingList(String uid, long id,String title,Integer type, Pageable pageRequest);
  141. //名医咨询 -根据status 带symptoms
  142. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.symptoms like ?2 and a.status = ?3 and a.del = '1' and b.del = '1'")
  143. Page<ConsultTeam> findFamousDoctorDoingList(String uid,String title,Integer type, Pageable pageRequest);
  144. @Query("select a from ConsultTeam a where a.type=?3 and a.del = '1' and a.patient=?1 and a.doctor=?2 and a.status=0 ")
  145. ConsultTeam findByParientCodeAndSignTypeAndDoctor(String patientCode, String doctor, int s);
  146. //名医咨询 -全部 带symptoms 未处理、未回复
  147. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.symptoms like ?3 and a.status = 0 and (a.doctorRead > 0 or b.reply != 1) and a.del = '1' and b.del = '1'")
  148. Page<ConsultTeam> findFamousDoctorUnReplyReadList(String uid, long id,String title, Pageable pageRequest);
  149. //名医咨询 -全部 带symptoms 处理、未回复
  150. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.symptoms like ?2 and a.status = 0 and (a.doctorRead > 0 or b.reply != 1) and a.del = '1' and b.del = '1'")
  151. Page<ConsultTeam> findFamousDoctorUnReplyReadList(String uid,String title, Pageable pageRequest);
  152. //名医咨询 -全部 处理、未回复
  153. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.status = 0 and (a.doctorRead > 0 or b.reply != 1) and a.del = '1' and b.del = '1'")
  154. Page<ConsultTeam> findFamousDoctorUnReplyReadNoTitleList(String uid, long id, Pageable pageRequest);
  155. //名医咨询 -全部
  156. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.status = 0 and (a.doctorRead > 0 or b.reply != 1) and a.del = '1' and b.del = '1'")
  157. Page<ConsultTeam> findFamousDoctorUnReplyReadNoTitleList(String uid, Pageable pageRequest);
  158. //名医咨询 -全部 带symptoms 进行中
  159. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.symptoms like ?3 and a.status = 0 and b.reply = 1 and a.del = '1' and b.del = '1'")
  160. Page<ConsultTeam> findFamousDoctorIngList(String uid, long id,String title, Pageable pageRequest);
  161. //名医咨询 -全部 带symptoms 进行中
  162. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.symptoms like ?2 and a.status = 0 and b.reply = 1 and a.del = '1' and b.del = '1'")
  163. Page<ConsultTeam> findFamousDoctorIngList(String uid,String title, Pageable pageRequest);
  164. //名医咨询 -全部 进行中
  165. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.id < ?2 and a.status = 0 and b.reply = 1 and a.del = '1' and b.del = '1'")
  166. Page<ConsultTeam> findFamousDoctorIngNoTitleList(String uid, long id, Pageable pageRequest);
  167. //名医咨询 -全部 进行中
  168. @Query("select a from ConsultTeam a, ConsultTeamDoctor b where a.consult = b.consult and a.type=6 and b.to = ?1 and a.status = 0 and b.reply = 1 and a.del = '1' and b.del = '1'")
  169. Page<ConsultTeam> findFamousDoctorIngNoTitleList(String uid, Pageable pageRequest);
  170. // 最近24小时内未回复的项目
  171. @Query("FROM ConsultTeam a where CURRENT_TIME - a.czrq < 86400 and a.status = 0 order by a.czrq desc")
  172. Page<ConsultTeam> getUnresponsedConsultIn24Hours(Pageable pageable);
  173. // 更新超过24小时未回复的项目,多加一分钟,防止过于频繁更新
  174. @Modifying
  175. @Query("UPDATE ConsultTeam a set a.status = -2 where CURRENT_TIME - a.czrq > 87840")
  176. void updateUnresponsedConsultOver24Hours();
  177. }