JieShouHuiZhenService.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package thyyxxk.webserver.service.casefrontsheet;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import org.springframework.transaction.annotation.Transactional;
  8. import thyyxxk.webserver.config.exception.BizException;
  9. import thyyxxk.webserver.config.exception.ExceptionEnum;
  10. import thyyxxk.webserver.dao.his.casefrontsheet.JieShouHuiZhenDao;
  11. import thyyxxk.webserver.entity.ResultVo;
  12. import thyyxxk.webserver.entity.casefrontsheet.JieShouHuiZhenPojo;
  13. import thyyxxk.webserver.entity.login.UserInfo;
  14. import thyyxxk.webserver.service.PublicServer;
  15. import thyyxxk.webserver.service.redislike.RedisLikeService;
  16. import thyyxxk.webserver.service.zhuyuanyisheng.HuiZhenShenQingService;
  17. import thyyxxk.webserver.utils.*;
  18. import java.util.Arrays;
  19. import java.util.List;
  20. /**
  21. * <p>
  22. * 描述: 接受会诊申请
  23. * </p>
  24. *
  25. * @author xc
  26. * @date 2021-07-27 10:29
  27. */
  28. @Service
  29. @Slf4j
  30. public class JieShouHuiZhenService {
  31. private final JieShouHuiZhenDao dao;
  32. private final PublicServer publicServer;
  33. private final RedisLikeService redisLikeService;
  34. public static final String 主任编码 = "01425";
  35. public static final String 副主任编码 = "01426";
  36. public static final String 主治编码 = "01427";
  37. @Autowired
  38. public JieShouHuiZhenService(JieShouHuiZhenDao dao, PublicServer publicServer, RedisLikeService redisLikeService) {
  39. this.dao = dao;
  40. this.publicServer = publicServer;
  41. this.redisLikeService = redisLikeService;
  42. }
  43. /**
  44. * @param deptCode 科室code
  45. * @param currentPage 当前页
  46. * @param pageSize 页大小
  47. * @param startTime 开始时间
  48. * @param endTime 接受时间
  49. * @return 返回没有会诊的信息
  50. */
  51. public ResultVo<Page<JieShouHuiZhenPojo>> getHuiZhenData(String deptCode, long currentPage, long pageSize, String startTime, String endTime) {
  52. List<String> deptList = publicServer.getKeShiLieBiaoList(deptCode);
  53. QueryWrapper<?> qw = new QueryWrapper<>();
  54. qw.eq("status_flag", "1")
  55. .ge("req_date", startTime)
  56. .le("req_date", endTime);
  57. if (ListUtil.notBlank(deptList)) {
  58. qw.and(QueryWrapper -> QueryWrapper.in("req_dept1", deptList).or().in("req_dept2", deptList));
  59. }
  60. Page<JieShouHuiZhenPojo> page = new Page<>(currentPage, pageSize);
  61. dao.getHuiZhenData(page, qw);
  62. return ResultVoUtil.success(page);
  63. }
  64. /**
  65. * @param deptCode 根据科室的编码来获取 科室的名字
  66. * @return 返回科室名字
  67. */
  68. public ResultVo<String> getDeptName(String deptCode) {
  69. return ResultVoUtil.success(dao.getDeptName(deptCode));
  70. }
  71. /**
  72. * @param admissTimes 住院次数
  73. * @param reqTimes 申请次数
  74. * @param inpatientNo 住院号
  75. * @return 返回具体信息
  76. */
  77. public ResultVo<JieShouHuiZhenPojo> getHuanZheXinXi(Integer admissTimes, Integer reqTimes, String inpatientNo) {
  78. JieShouHuiZhenPojo pojo = dao.getHuanZheXinXi(admissTimes, reqTimes, inpatientNo);
  79. if (pojo.getBirthDate() != null) {
  80. pojo.setAge(DateUtil.calculateAge(pojo.getBirthDate(), null));
  81. }
  82. return ResultVoUtil.success(pojo);
  83. }
  84. /**
  85. * @param param 更新的 主键 以及 更新的数据
  86. * @return 返回更新 提示
  87. */
  88. @Transactional(rollbackFor = Exception.class)
  89. public ResultVo<String> wanChenHuiZhen(JieShouHuiZhenPojo param) {
  90. if (param.getAdmissTimes() != null && param.getReqTimes() != null && StringUtil.notBlank(param.getInpatientNo())) {
  91. if (StringUtil.isBlank(param.getHzComment())) {
  92. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "会诊意见不能为空。");
  93. }
  94. param.setHzDoctor2(TokenUtil.getTokenUserId());
  95. UserInfo userInfo = redisLikeService.getUserInfoByToken();
  96. if (StringUtil.isBlank(userInfo.getEmpTitCode())) {
  97. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您还没有职称,请医务部或者人资维护。");
  98. }
  99. String orderCode = dao.getOrderCodeByEmpTit(userInfo.getEmpTitCode());
  100. if (StringUtil.isBlank(orderCode)) {
  101. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您的职称不支持,您接受会诊。");
  102. }
  103. param.setHzType(getHzTypeByOrderCode(orderCode));
  104. JieShouHuiZhenPojo reqData = dao.getHuanZheXinXi(param.getAdmissTimes(), param.getReqTimes(), param.getInpatientNo());
  105. dao.wanChenHuiZhen(param);
  106. dao.updateOrderConsultationCode(orderCode, reqData.getActOrderNo());
  107. log.info("完成会诊 ==》 操作人:{},数据:{}", TokenUtil.getTokenUserId(), param);
  108. return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, param.getStatusFlag() == 1 ? "保存成功" : "完成会诊");
  109. }
  110. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
  111. }
  112. private String getHzTypeByOrderCode(String code) {
  113. switch (code) {
  114. case 主任编码:
  115. return "3";
  116. case 副主任编码:
  117. return "2";
  118. case 主治编码:
  119. return "1";
  120. default:
  121. return "0";
  122. }
  123. }
  124. }