IsvRegisterServiceImpl.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. package com.ywt.alipaympapi.service.impl;
  2. import com.ywt.alipaympapi.core.utils.BizUtil;
  3. import com.ywt.alipaympapi.core.utils.Checker;
  4. import com.ywt.alipaympapi.core.utils.DateUtil;
  5. import com.ywt.alipaympapi.core.utils.JsonSerializer;
  6. import com.ywt.alipaympapi.models.enums.SexEnum;
  7. import com.ywt.alipaympapi.service.IsvRegisterService;
  8. import com.ywt.core.exception.AppMessageException;
  9. import com.ywt.gapi.Result;
  10. import com.ywt.gapi.ResultCode;
  11. import com.ywt.gapi.system.Dept;
  12. import com.ywt.gapi.system.*;
  13. import com.ywt.gapi.taihe.register.CancelRegisteredRequest;
  14. import com.ywt.gapi.taihe.register.CancelRegisteredResponse;
  15. import com.ywt.gapi.taihe.register.TaiheRegisterServiceGrpc;
  16. import com.ywt.gapi.third.taihe.*;
  17. import com.ywt.model.PageVO;
  18. import com.ywt.model.Pagination;
  19. import com.ywt.request.queue.QueryQueueListRequest;
  20. import com.ywt.request.register.*;
  21. import com.ywt.response.queue.QueryQueueListResponse;
  22. import com.ywt.response.register.*;
  23. import lombok.extern.slf4j.Slf4j;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import java.time.LocalDate;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.LinkedList;
  30. import java.util.List;
  31. @Service
  32. @Slf4j
  33. public class IsvRegisterServiceImpl implements IsvRegisterService {
  34. @Autowired
  35. private TaiheRegisterServiceGrpc.TaiheRegisterServiceBlockingStub taiheRegisterServiceBlockingStub;
  36. @Autowired
  37. private SystemServiceGrpc.SystemServiceBlockingStub systemServiceBlockingStub;
  38. @Autowired
  39. private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
  40. @Override
  41. public List<QueryDepartmentListResponseData> queryDepartmentList(QueryDepartmentListRequest request) throws Exception {
  42. log.info("IsvRegisterServiceImpl#queryDepartmentList--QueryDepartmentListRequest:{}", JsonSerializer.toJson(request));
  43. int hospitalId = BizUtil.getCurrentHospitalId();
  44. String hospitalDistrictId = request.getHospitalDistrictId();
  45. int subHospitalId = 0;
  46. if (!Checker.isNone(hospitalDistrictId)) {
  47. subHospitalId = Integer.parseInt(hospitalDistrictId);
  48. }
  49. List<HospitalDept> deptList = null;
  50. HospitalDeptListRequest req = HospitalDeptListRequest.newBuilder()
  51. .setHospitalId(hospitalId)
  52. .setSubHospitalId(subHospitalId)
  53. .build();
  54. HospitalDeptListResponse res = systemServiceBlockingStub.getHospitalDeptList(req);
  55. Result result = res.getResult();
  56. if (result.getCode() == ResultCode.SUCCEED) {
  57. deptList = res.getHospitalDeptListList();
  58. }
  59. if (deptList == null) {
  60. throw new AppMessageException("科室不存在");
  61. }
  62. String parentId = request.getParentId();
  63. int deptParentId = 0;
  64. if (!Checker.isNone(parentId)) {
  65. deptParentId = Integer.parseInt(parentId);
  66. }
  67. List<QueryDepartmentListResponseData> lst = new LinkedList<>();
  68. for (HospitalDept d : deptList) {
  69. if (deptParentId == 0) {
  70. QueryDepartmentListResponseData map = new QueryDepartmentListResponseData();
  71. map.setDepartmentId(d.getDeptId() + "");
  72. map.setName(d.getDeptName());
  73. map.setHasChildren(d.getDeptListList().size() > 0);
  74. map.setRemain(0);
  75. //院区id
  76. map.setHospitalDistrictId(hospitalDistrictId);
  77. lst.add(map);
  78. } else {
  79. if (deptParentId == d.getDeptId()) {
  80. for (Dept secDept : d.getDeptListList()) {
  81. QueryDepartmentListResponseData map = new QueryDepartmentListResponseData();
  82. map.setDepartmentId(secDept.getDeptId() + "");
  83. map.setName(secDept.getDeptName());
  84. map.setHasChildren(false);
  85. map.setRemain(0);
  86. map.setHospitalDistrictId(hospitalDistrictId);
  87. lst.add(map);
  88. }
  89. }
  90. }
  91. }
  92. return lst;
  93. }
  94. @Override
  95. public List<QueryDepOrderSourceRemainResponseData> queryDepOrderSourceRemain(QueryDepOrderSourceRemainRequest request) {
  96. return null;
  97. }
  98. @Override
  99. public PageVO<QueryDepDoctorListResponseData> queryDepDoctorList(QueryDepDoctorListRequest request) {
  100. return null;
  101. }
  102. @Override
  103. public List<QueryDoctorOrderSourceListResponseData> queryDoctorOrderSourceList(QueryDoctorOrderSourceListRequest request) {
  104. return null;
  105. }
  106. @Override
  107. public OrderConfirmResponseData orderConfirm(OrderConfirmRequest request) {
  108. log.info("IsvRegisterServiceImpl#orderConfirm--OrderConfirmRequest:{}", JsonSerializer.toJson(request));
  109. int userId = Integer.parseInt(Checker.getStringValue(request.getUserId(), "0"));//用户唯一识别号
  110. String doctorId = request.getDoctorId();//医生唯一识别号
  111. String orderSourceId = request.getOrderSourceId();//号源id
  112. String cardNum = request.getCardNum();//就诊卡卡号
  113. int hospitalId = BizUtil.getCurrentHospitalId();
  114. return null;
  115. }
  116. @Override
  117. public QueryOrderDetailResponseData queryOrderDetail(QueryOrderDetailRequest request) {
  118. return null;
  119. }
  120. @Override
  121. public PageVO<QueryOrderListResponseData> queryOrderList(QueryOrderListRequest request) {
  122. return null;
  123. }
  124. @Override
  125. public CancelOrderResponseData cancelOrder(CancelOrderRequest request) throws Exception {
  126. CancelOrderResponseData responseData = new CancelOrderResponseData();
  127. String orderIdStr = request.getOrderId();
  128. if (Checker.isNone(orderIdStr) || Integer.parseInt(orderIdStr) <= 0) {
  129. throw new AppMessageException("订单不存在");
  130. }
  131. int orderId = Integer.parseInt(orderIdStr);
  132. int userId = Integer.parseInt(Checker.getStringValue(request.getUserId(), "0"));
  133. CancelRegisteredRequest req = CancelRegisteredRequest.newBuilder()
  134. .setOrderId(orderId)
  135. .setUserId(userId)
  136. .build();
  137. CancelRegisteredResponse res = taiheRegisterServiceBlockingStub.cancelRegistered(req);
  138. responseData.setIsSuccess(false);
  139. if (res.getCode() == ResultCode.SUCCEED_VALUE) {
  140. responseData.setIsSuccess(true);
  141. }
  142. return responseData;
  143. }
  144. @Override
  145. public List<QueryHospitalDistrictListResponseData> queryHospitalDistrictList(QueryHospitalDistrictListRequest request) {
  146. return null;
  147. }
  148. @Override
  149. public List<QueryQueueListResponse> queryQueueList(QueryQueueListRequest request) throws Exception {
  150. log.info("IsvRegisterServiceImpl#queryQueueList--QueryQueueListRequest:{}", JsonSerializer.toJson(request));
  151. int hospitalId = BizUtil.getCurrentHospitalId();
  152. //用户唯一识别号
  153. int userId = Integer.parseInt(Checker.getStringValue(request.getUserId(), "0"));
  154. List<QueryQueueListResponse> list = new LinkedList<>();
  155. com.ywt.gapi.taihe.register.GetQueueListRequest req = com.ywt.gapi.taihe.register.GetQueueListRequest.newBuilder()
  156. .setUserId(userId)
  157. .setHospitalId(hospitalId)
  158. .build();
  159. com.ywt.gapi.taihe.register.GetQueueListResponse res = taiheRegisterServiceBlockingStub.getQueueList(req);
  160. if (res.getCode() != ResultCode.SUCCEED_VALUE) {
  161. throw new AppMessageException(res.getMsg());
  162. }
  163. List<com.ywt.gapi.taihe.register.RegisteredOrder> queueList = res.getOrderList();
  164. LocalDate now = LocalDate.now();
  165. for (com.ywt.gapi.taihe.register.RegisteredOrder order : queueList) {
  166. QueryQueueListResponse reportItem = new QueryQueueListResponse();
  167. int cancel = 0; //是否显示退号按钮,1-是,0-否
  168. LocalDate regDate = DateUtil.convertToLocalDate(new Date(order.getRegisteredDate()));//预约日期
  169. if (now.isBefore(regDate)) {
  170. cancel = 1;
  171. }
  172. String statusName = order.getStatusName();
  173. int status = order.getStatus();
  174. if (order.getStatus() == 1) {
  175. //已预约
  176. statusName = "未取号";
  177. if (DateUtil.convertTimestampToDateString(order.getRegisteredDate(), "yyyy-MM-dd").equals(
  178. DateUtil.formatDate(new Date(), "yyyy-MM-dd"))) {
  179. } else {
  180. status = 0;
  181. }
  182. }
  183. reportItem.setCardNum(order.getMedicalCardId()+"");//就诊卡卡号
  184. reportItem.setName(order.getPatientName());//就诊人姓名
  185. reportItem.setSex(SexEnum.getSexDisplayName(order.getSex()));//性别
  186. reportItem.setAge("");//年龄
  187. reportItem.setTitle(statusName);//排队标题
  188. reportItem.setDepName(order.getDeptName());//科室
  189. reportItem.setDoctorName(order.getDoctorName());//医生姓名
  190. reportItem.setDoctorDesc("");//医生描述
  191. reportItem.setAddress(order.getAddress());//就诊地点
  192. int queueNum = 0, leftOver = 0;
  193. GetQueueInfoRequest getQueueInfoRequest = GetQueueInfoRequest.newBuilder()
  194. .setRegistrationId(order.getHisSeqCode())
  195. .setHospitalId(hospitalId)
  196. .build();
  197. GetQueueInfoResponse getQueueInfoResponse = taiheServiceBlockingStub.getQueueInfo(getQueueInfoRequest);
  198. if (getQueueInfoResponse.getCode() == ResultCode.SUCCEED_VALUE) {
  199. QueueInfo data = getQueueInfoResponse.getQueueInfo();
  200. queueNum = data.getWaitingNumber();
  201. }
  202. reportItem.setQueueNum(queueNum+"");//排队编号
  203. reportItem.setLeftover("0");//前面排队剩余人数
  204. reportItem.setStatus(statusName);//状态,expired:已过号,queuing:排队中,ringing:叫号中,completed:已完成
  205. reportItem.setContext(order.getRemark());//排队结束显示内容
  206. list.add(reportItem);
  207. }
  208. return list;
  209. }
  210. @Override
  211. public QueryDoctorInfoResponseData queryDoctorInfo(QueryDoctorInfoRequest request) {
  212. return null;
  213. }
  214. @Override
  215. public PageVO<QueryDoctorListResponseData> queryDoctorList(QueryDoctorListRequest request) {
  216. log.info("IsvRegisterServiceImpl#queryDoctorList--QueryDoctorListRequest:{}", JsonSerializer.toJson(request));
  217. int pageIndex = request.getPageIndex();
  218. int pageSize = request.getPageSize();
  219. String deptCode = request.getDeptCode();
  220. String doctorName = request.getDoctorName();
  221. int hospitalId = BizUtil.getCurrentHospitalId();
  222. GetDoctorListRequest getDoctorListRequest = GetDoctorListRequest.newBuilder()
  223. .setDeptCode(deptCode)
  224. .setDoctorName(doctorName)
  225. .setHospitalId(hospitalId)
  226. .build();
  227. GetDoctorListResponse getDoctorListResponse = taiheServiceBlockingStub.getDoctorList(getDoctorListRequest);
  228. int total = 0;
  229. List<QueryDoctorListResponseData> doctorList = new LinkedList<>();
  230. if (getDoctorListResponse.getCode() == ResultCode.SUCCEED_VALUE) {
  231. List<com.ywt.gapi.third.taihe.Doctor> doctorsList = getDoctorListResponse.getDoctorsList();
  232. total = doctorsList.size();
  233. for (com.ywt.gapi.third.taihe.Doctor doctor : doctorsList) {
  234. QueryDoctorListResponseData doctorItem = new QueryDoctorListResponseData();
  235. //医生id
  236. doctorItem.setDoctorId(doctor.getDoctorCode());
  237. //医生姓名
  238. doctorItem.setName(doctor.getDoctorName());
  239. //医生简介
  240. doctorItem.setDesc(doctor.getDoctorIntro());
  241. //医生头像地址
  242. doctorItem.setPicUrl("");
  243. //职级,医生职级
  244. doctorItem.setLevel(doctor.getDoctorTitle());
  245. //医生所在科室
  246. Department department = new Department();
  247. department.setDepartmentId(doctor.getDoctorDeptCode());
  248. department.setName(doctor.getDoctorDept());
  249. List<Department> deptList = new ArrayList();
  250. deptList.add(department);
  251. doctorItem.setDepartments(deptList);
  252. doctorList.add(doctorItem);
  253. }
  254. }
  255. Pagination pagination = new Pagination(pageIndex, pageSize, total);
  256. PageVO<QueryDoctorListResponseData> res = new PageVO<>(pagination, doctorList);
  257. return res;
  258. }
  259. }