MarkMtFeesController.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package thyyxxk.webserver.controller.medicalinsurance;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.*;
  5. import thyyxxk.webserver.config.auth.PassToken;
  6. import thyyxxk.webserver.config.exception.ExceptionEnum;
  7. import thyyxxk.webserver.entity.ResultVo;
  8. import thyyxxk.webserver.entity.markmtfees.SiMzBusinessParams;
  9. import thyyxxk.webserver.entity.medicalinsurance.onlinepayment.EcToken;
  10. import thyyxxk.webserver.entity.medicalinsurance.outpatient.MzPatientInfo;
  11. import thyyxxk.webserver.entity.medicalinsurance.outpatient.SpcChrDiseAcct;
  12. import thyyxxk.webserver.entity.medicalinsurance.setlinfo.FundDetail;
  13. import thyyxxk.webserver.service.medicalinsurance.SiMzService;
  14. import thyyxxk.webserver.utils.ResultVoUtil;
  15. import java.util.*;
  16. @Slf4j
  17. @RestController
  18. @RequestMapping("/markMtFees")
  19. public class MarkMtFeesController {
  20. private final SiMzService mzService;
  21. @Autowired
  22. public MarkMtFeesController(SiMzService mzService) {
  23. this.mzService = mzService;
  24. }
  25. /**
  26. * HRG查询门特备案
  27. * */
  28. @PassToken
  29. @GetMapping("/fetchSpcSlwinfo")
  30. public ResultVo<List<SpcChrDiseAcct>> fetchSpcSlwinfo(@RequestParam("socialNo") String socialNo) {
  31. return mzService.fetchSpcSlwinfo(socialNo);
  32. }
  33. /**
  34. * HRG调用试算
  35. * */
  36. @PassToken
  37. @PostMapping("/uploadFees")
  38. public Map<String, Object> uploadFees(@RequestBody SiMzBusinessParams param) {
  39. MzPatientInfo mz = new MzPatientInfo();
  40. mz.setPatNo(param.getPatientId());
  41. mz.setTimes(param.getTimes());
  42. mz.setStaffId(param.getStaffId());
  43. ResultVo<FundDetail> result = mzService.outpatientPreSettlement(mz);
  44. return getStringObjectMap(param, result, "收费窗口获取门特报销");
  45. }
  46. /**
  47. * HRG调用结算
  48. * */
  49. @PassToken
  50. @PostMapping("/calculateCost")
  51. public Map<String, Object> settlement(@RequestBody SiMzBusinessParams param) {
  52. MzPatientInfo mz = new MzPatientInfo();
  53. mz.setPatNo(param.getPatientId());
  54. mz.setTimes(param.getTimes());
  55. mz.setStaffId(param.getStaffId());
  56. ResultVo<FundDetail> result = mzService.outpatientSettlement(mz);
  57. return getStringObjectMap(param, result, "收费窗口门特结算");
  58. }
  59. /**
  60. * HRG调用取消结算
  61. * */
  62. @PassToken
  63. @PostMapping("/retractFees")
  64. public Map<String, Object> revokeSettlement(@RequestBody SiMzBusinessParams param) {
  65. MzPatientInfo mz = new MzPatientInfo();
  66. mz.setPatNo(param.getPatientId());
  67. mz.setTimes(param.getTimes());
  68. mz.setStaffId(param.getStaffId());
  69. mz.setNeedRevokeRegistration(1);
  70. ResultVo<FundDetail> result = mzService.revokeOutpatientSettlement(mz);
  71. return getStringObjectMap(param, result, "收费窗口撤销门特结算");
  72. }
  73. private Map<String, Object> getStringObjectMap(SiMzBusinessParams param, ResultVo<FundDetail> result, String logText) {
  74. Map<String, Object> map = new HashMap<>();
  75. if (null == result) {
  76. map.put("code", -2);
  77. map.put("msg", "医保中心网络异常!");
  78. return map;
  79. }
  80. if (result.getCode() != ExceptionEnum.SUCCESS.getCode()) {
  81. map.put("code", -2);
  82. if (null == result.getMessage()) {
  83. map.put("msg", "医保中心网络异常!");
  84. } else {
  85. map.put("msg", result.getMessage());
  86. }
  87. return map;
  88. }
  89. FundDetail fund = result.getData();
  90. Map<String, Object> payInfo = new HashMap<>();
  91. payInfo.put("totalCost", fund.getTotalCost());
  92. payInfo.put("fundPay", fund.getFundPay());
  93. payInfo.put("cashPay", fund.getCashPay());
  94. payInfo.put("acctPay", fund.getAcctPay());
  95. payInfo.put("selfPay", fund.getSelfPay());
  96. payInfo.put("cardType", fund.getCardType());
  97. map.put("code", 0);
  98. map.put("msg", "成功。");
  99. map.put("payInfo", payInfo);
  100. log.info("{}:参数:{},结果:{}", logText, param, map);
  101. return map;
  102. }
  103. @PassToken
  104. @PostMapping("/queryInsuinfo")
  105. public Map<String, Object> queryInsuinfo(@RequestBody SiMzBusinessParams param) {
  106. return mzService.queryInsuinfo(param);
  107. }
  108. @PassToken
  109. @PostMapping("/directRegistration")
  110. public Map<String, Object> directRegistration(@RequestBody SiMzBusinessParams param) {
  111. log.info("门诊共济:{}", param);
  112. ResultVo<FundDetail> result = mzService.directRegistration(param);
  113. return getStringObjectMap(param, result, "医生保存处方试算");
  114. }
  115. @PassToken
  116. @GetMapping("/isPatientDuringSiSettle")
  117. public Map<String, Object> isPatientDuringSiSettle(@RequestParam("patientId") String patientId) {
  118. ResultVo<Integer> resvo = mzService.isPatientDuringSiSettle(patientId);
  119. Map<String, Object> map = new HashMap<>();
  120. if (resvo.getData() == 1) {
  121. map.put("code", -1);
  122. map.put("msg", "此患者正处于医保统筹进程中,请稍候。");
  123. } else {
  124. map.put("code", 0);
  125. map.put("msg", "OK");
  126. }
  127. return map;
  128. }
  129. @PassToken
  130. @PostMapping("/payOnline")
  131. public ResultVo<String> payOnline(@RequestBody EcToken token) {
  132. return ResultVoUtil.success(token.getEcToken());
  133. }
  134. }