InpatientService.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package thyyxxk.wxservice_server.service;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.web.client.RestTemplate;
  6. import thyyxxk.wxservice_server.config.exception.ExceptionEnum;
  7. import thyyxxk.wxservice_server.config.properties.ApiAddr;
  8. import thyyxxk.wxservice_server.constant.Constants;
  9. import thyyxxk.wxservice_server.dao.InpatientDao;
  10. import thyyxxk.wxservice_server.entity.ResultVo;
  11. import thyyxxk.wxservice_server.entity.inpatient.DoorFace;
  12. import thyyxxk.wxservice_server.entity.inpatient.GetZyFeeParam;
  13. import thyyxxk.wxservice_server.entity.inpatient.InpatientInfo;
  14. import thyyxxk.wxservice_server.entity.inpatient.ZyFee;
  15. import thyyxxk.wxservice_server.utils.DecimalTool;
  16. import thyyxxk.wxservice_server.utils.ResultVoUtil;
  17. import thyyxxk.wxservice_server.utils.StringUtil;
  18. import java.util.*;
  19. /**
  20. * @author dj
  21. */
  22. @Slf4j
  23. @Service
  24. public class InpatientService {
  25. private final InpatientDao dao;
  26. private final String addFaceApi;
  27. @Autowired
  28. public InpatientService(InpatientDao dao, ApiAddr apiAddr) {
  29. this.dao = dao;
  30. this.addFaceApi = apiAddr.getAddFaceApi();
  31. }
  32. public ResultVo<InpatientInfo> getInpatientInfo(String patientId) {
  33. List<String> inpatientNos = getInpatientNoByPatientId(patientId);
  34. if (inpatientNos.isEmpty()) {
  35. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有找到此卡号对应的住院号。");
  36. }
  37. InpatientInfo info;
  38. for (String inpatientNo : inpatientNos) {
  39. info = dao.getInpatientInfo(inpatientNo);
  40. if (null != info) {
  41. info.setPatientId(patientId);
  42. return ResultVoUtil.success(info);
  43. }
  44. }
  45. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有找到此卡号的在院信息。");
  46. }
  47. public ResultVo<InpatientInfo> getInpatientBaseInfo(String inpatientNo) {
  48. InpatientInfo info = dao.getInpatientInfo(inpatientNo);
  49. if (null == info) {
  50. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有找到此住院号的在院信息。");
  51. }
  52. String socialNo = dao.selectSocialNoByInpatientNo(inpatientNo);
  53. if (StringUtil.notBlank(socialNo)) {
  54. info.setSocialNo(socialNo);
  55. String patientId = dao.selectPatientIdBySocialNo(socialNo);
  56. if (StringUtil.notBlank(patientId)) {
  57. info.setPatientId(patientId);
  58. }
  59. }
  60. return ResultVoUtil.success(info);
  61. }
  62. public ResultVo<Map<String, Object>> getZyFees(GetZyFeeParam param) {
  63. dao.receiveProjectFees(param.getInpatientNo(), param.getAdmissTimes());
  64. dao.receiveMedicineFees(param.getInpatientNo(), param.getAdmissTimes());
  65. Map<String, Object> map = new HashMap<>(Constants.Capacity.TWO);
  66. List<ZyFee> fees = dao.selectZyFees(param);
  67. String total = "0.00";
  68. for (ZyFee fee : fees) {
  69. total = DecimalTool.add(total, fee.getJe());
  70. }
  71. map.put("fees", fees);
  72. map.put("totalCost", total);
  73. return ResultVoUtil.success(map);
  74. }
  75. public ResultVo<Map<String, Object>> getPrepaidHistory(String patientId) {
  76. ResultVo<InpatientInfo> infoResultVo = getInpatientInfo(patientId);
  77. if (infoResultVo.getCode() != ExceptionEnum.SUCCESS.getCode()) {
  78. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, infoResultVo.getMessage());
  79. }
  80. InpatientInfo info = infoResultVo.getData();
  81. Map<String, Object> map = new HashMap<>(Constants.Capacity.TWO);
  82. map.put("baseInfo", info);
  83. map.put("prepaid", dao.selectPrepaidHistory(info.getInpatientNo(), info.getAdmissTimes()));
  84. return ResultVoUtil.success(map);
  85. }
  86. public List<String> getInpatientNoByPatientId(String patientId) {
  87. List<String> inpatientNos = dao.selectInpatientNoByPatientId(patientId);
  88. if (inpatientNos.isEmpty()) {
  89. inpatientNos = dao.selectInpatientNoBySocialNo(patientId);
  90. }
  91. log.info("getInpatientNoByPatientId:{}, {}", patientId, inpatientNos);
  92. return inpatientNos;
  93. }
  94. public ResultVo<String> updateDoorFace(DoorFace request) {
  95. log.info("修改人脸信息:{}", request.getFaceData());
  96. request.setFaceData(request.getFaceData().split("base64,")[1]);
  97. return new RestTemplate().postForObject(addFaceApi, request, ResultVo.class);
  98. }
  99. }