SiInjuryController.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package thyyxxk.webserver.controller.medicalinsurance;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.PostMapping;
  7. import org.springframework.web.bind.annotation.RequestBody;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import thyyxxk.webserver.config.exception.ExceptionEnum;
  11. import thyyxxk.webserver.dao.his.medicalinsurance.SiInjuryDao;
  12. import thyyxxk.webserver.entity.ResultVo;
  13. import thyyxxk.webserver.entity.dictionary.PureCodeName;
  14. import thyyxxk.webserver.entity.medicalinsurance.injury.AdmissRegistration;
  15. import thyyxxk.webserver.entity.medicalinsurance.injury.InjurySiPatInfo;
  16. import thyyxxk.webserver.entity.yibao.dismiss.YbSettleFee;
  17. import thyyxxk.webserver.entity.yibao.patient.Patient;
  18. import thyyxxk.webserver.service.externalhttp.SiInjuryFeeUpld;
  19. import thyyxxk.webserver.service.externalhttp.SiInjurySystem;
  20. import thyyxxk.webserver.service.yibao.DismissService;
  21. import thyyxxk.webserver.utils.ResultVoUtil;
  22. import thyyxxk.webserver.utils.TokenUtil;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25. import java.util.Map;
  26. @Slf4j
  27. @RestController
  28. @RequestMapping("/siInjury")
  29. public class SiInjuryController {
  30. private final SiInjuryDao dao;
  31. private final DismissService dismissService;
  32. private final SiInjurySystem injurySystem;
  33. private final SiInjuryFeeUpld injuryFeeUpld;
  34. @Autowired
  35. public SiInjuryController(SiInjuryDao dao, DismissService dismissService, SiInjurySystem injurySystem, SiInjuryFeeUpld injuryFeeUpld) {
  36. this.dao = dao;
  37. this.dismissService = dismissService;
  38. this.injurySystem = injurySystem;
  39. this.injuryFeeUpld = injuryFeeUpld;
  40. }
  41. @PostMapping("/getPersonBaseinfo")
  42. public ResultVo<List<InjurySiPatInfo>> getPersonBaseinfo(@RequestBody Patient p) {
  43. if (null == p.getInjuryArea()) {
  44. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "请选择工伤参保地!");
  45. }
  46. p.setStaffId(TokenUtil.getTokenUserId());
  47. ResultVo<JSONObject> resultVo = injurySystem.getPersonBaseinfo(p);
  48. if (null == resultVo) {
  49. return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR);
  50. }
  51. if (resultVo.getCode() != ExceptionEnum.SUCCESS.getCode()) {
  52. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, resultVo.getMessage());
  53. }
  54. JSONObject result = resultVo.getData();
  55. if (dao.selectCount(p.getInpatientNo(), p.getAdmissTimes(), p.getLedgerSn()) == 0) {
  56. JSONArray personinfos = result.getJSONArray("personinfo");
  57. JSONObject item = personinfos.getJSONObject(0);
  58. dao.insertNewInjurybase(p.getInpatientNo(), p.getAdmissTimes(), p.getLedgerSn(), item.getString("indi_id"),
  59. item.getString("center_id"), item.getString("pers_type"), p.getInjuryArea());
  60. } else {
  61. JSONArray personinfos = result.getJSONArray("personinfo");
  62. JSONObject item = personinfos.getJSONObject(0);
  63. dao.updateInjurybase(p.getInpatientNo(), p.getAdmissTimes(), p.getLedgerSn(), item.getString("indi_id"),
  64. item.getString("center_id"), item.getString("pers_type"), p.getInjuryArea());
  65. }
  66. if (null == result.get("injuryorbirthinfo")) {
  67. return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到工伤认定信息!");
  68. }
  69. JSONArray injuries = result.getJSONArray("injuryorbirthinfo");
  70. List<InjurySiPatInfo> list = new ArrayList<>();
  71. for (int i = 0; i < injuries.size(); i++) {
  72. InjurySiPatInfo info = JSONObject.parseObject(injuries.getJSONObject(i).toJSONString(), InjurySiPatInfo.class);
  73. list.add(info);
  74. }
  75. return ResultVoUtil.success(list);
  76. }
  77. @PostMapping("/admissRegistration")
  78. public ResultVo<String> admissRegistration(@RequestBody AdmissRegistration admreg) {
  79. admreg.getBaseinfo().setStaffId(TokenUtil.getTokenUserId());
  80. admreg.getInjuryinfo().setPatNo(admreg.getBaseinfo().getInpatientNo());
  81. admreg.getInjuryinfo().setTimes(admreg.getBaseinfo().getAdmissTimes());
  82. admreg.getInjuryinfo().setLedgerSn(admreg.getBaseinfo().getLedgerSn());
  83. dao.updateInjuryinfo(admreg.getInjuryinfo());
  84. PureCodeName maindiag = dao.selectMainDiag(admreg.getBaseinfo().getInpatientNo(), admreg.getBaseinfo().getAdmissTimes());
  85. if (null == maindiag) {
  86. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医保入院诊断不能为空!");
  87. }
  88. admreg.getBaseinfo().setIcdCode(maindiag.getCode());
  89. admreg.getBaseinfo().setIcdText(maindiag.getName());
  90. admreg.setInjuryinfo(dao.selectInjuryinfo(admreg.getBaseinfo().getInpatientNo(), admreg.getBaseinfo().getAdmissTimes(),
  91. admreg.getBaseinfo().getLedgerSn()));
  92. return injurySystem.admissRegistration(admreg);
  93. }
  94. @PostMapping("/getRegisterInfo")
  95. public ResultVo<Map<String, String>> getRegisterInfo(@RequestBody Patient p) {
  96. p.setStaffId(TokenUtil.getTokenUserId());
  97. return injurySystem.getRegisterInfo(p);
  98. }
  99. @PostMapping("/uploadFees")
  100. public ResultVo<String> uploadFees(@RequestBody Patient p) {
  101. p.setStaffId(TokenUtil.getTokenUserId());
  102. return injuryFeeUpld.uploadFees(p);
  103. }
  104. @PostMapping("/cancelRegister")
  105. public ResultVo<String> cancelRegister(@RequestBody Patient p) {
  106. p.setStaffId(TokenUtil.getTokenUserId());
  107. return injurySystem.cancelRegister(p);
  108. }
  109. @PostMapping("/cancelUploadFee")
  110. public ResultVo<String> cancelUploadFee(@RequestBody Patient p) {
  111. p.setStaffId(TokenUtil.getTokenUserId());
  112. return injurySystem.cancelUploadFee(p);
  113. }
  114. @PostMapping("/preCalculateCost")
  115. public ResultVo<String> preCalculateCost(@RequestBody Patient p) {
  116. p.setStaffId(TokenUtil.getTokenUserId());
  117. return injurySystem.preCalculateCost(p);
  118. }
  119. @PostMapping("/calculateCost")
  120. public synchronized ResultVo<String> calculateCost(@RequestBody Patient p) {
  121. p.setStaffId(TokenUtil.getTokenUserId());
  122. ResultVo<YbSettleFee> resultVo = injurySystem.calculateCost(p);
  123. if (null == resultVo) {
  124. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "获取医保结算费用失败。");
  125. }
  126. if (resultVo.getCode() != ExceptionEnum.SUCCESS.getCode()) {
  127. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, resultVo.getMessage());
  128. }
  129. YbSettleFee settleFee = resultVo.getData();
  130. if (p.getMidSetl()) {
  131. settleFee.setZjdzDatetime(p.getMidSetlDate());
  132. }
  133. settleFee.setMidSetl(p.getMidSetl());
  134. settleFee.setStaffId(TokenUtil.getTokenUserId());
  135. settleFee.setInpatientNo(p.getInpatientNo());
  136. settleFee.setAdmissTimes(p.getAdmissTimes());
  137. settleFee.setBedNo(p.getBedNo());
  138. settleFee.setWardCode(p.getAdmissWard());
  139. settleFee.setDeptCode(p.getAdmissDept());
  140. return dismissService.doDismiss(settleFee);
  141. }
  142. @PostMapping("/cancelCalculate")
  143. public ResultVo<String> cancelCalculate(@RequestBody Patient p) {
  144. p.setStaffId(TokenUtil.getTokenUserId());
  145. return injurySystem.cancelCalculate(p);
  146. }
  147. }