123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- package thyyxxk.webserver.service.casefrontsheet;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import thyyxxk.webserver.config.exception.BizException;
- import thyyxxk.webserver.config.exception.ExceptionEnum;
- import thyyxxk.webserver.dao.his.casefrontsheet.JieShouHuiZhenDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.casefrontsheet.JieShouHuiZhenPojo;
- import thyyxxk.webserver.entity.login.UserInfo;
- import thyyxxk.webserver.service.PublicServer;
- import thyyxxk.webserver.service.redislike.RedisLikeService;
- import thyyxxk.webserver.service.zhuyuanyisheng.HuiZhenShenQingService;
- import thyyxxk.webserver.utils.*;
- import java.util.Arrays;
- import java.util.List;
- /**
- * <p>
- * 描述: 接受会诊申请
- * </p>
- *
- * @author xc
- * @date 2021-07-27 10:29
- */
- @Service
- @Slf4j
- public class JieShouHuiZhenService {
- private final JieShouHuiZhenDao dao;
- private final PublicServer publicServer;
- private final RedisLikeService redisLikeService;
- public static final String 主任编码 = "01425";
- public static final String 副主任编码 = "01426";
- public static final String 主治编码 = "01427";
- @Autowired
- public JieShouHuiZhenService(JieShouHuiZhenDao dao, PublicServer publicServer, RedisLikeService redisLikeService) {
- this.dao = dao;
- this.publicServer = publicServer;
- this.redisLikeService = redisLikeService;
- }
- /**
- * @param deptCode 科室code
- * @param currentPage 当前页
- * @param pageSize 页大小
- * @param startTime 开始时间
- * @param endTime 接受时间
- * @return 返回没有会诊的信息
- */
- public ResultVo<Page<JieShouHuiZhenPojo>> getHuiZhenData(String deptCode, long currentPage, long pageSize, String startTime, String endTime) {
- List<String> deptList = publicServer.getKeShiLieBiaoList(deptCode);
- QueryWrapper<?> qw = new QueryWrapper<>();
- qw.eq("status_flag", "1")
- .ge("req_date", startTime)
- .le("req_date", endTime);
- if (ListUtil.notBlank(deptList)) {
- qw.and(QueryWrapper -> QueryWrapper.in("req_dept1", deptList).or().in("req_dept2", deptList));
- }
- Page<JieShouHuiZhenPojo> page = new Page<>(currentPage, pageSize);
- dao.getHuiZhenData(page, qw);
- return ResultVoUtil.success(page);
- }
- /**
- * @param deptCode 根据科室的编码来获取 科室的名字
- * @return 返回科室名字
- */
- public ResultVo<String> getDeptName(String deptCode) {
- return ResultVoUtil.success(dao.getDeptName(deptCode));
- }
- /**
- * @param admissTimes 住院次数
- * @param reqTimes 申请次数
- * @param inpatientNo 住院号
- * @return 返回具体信息
- */
- public ResultVo<JieShouHuiZhenPojo> getHuanZheXinXi(Integer admissTimes, Integer reqTimes, String inpatientNo) {
- JieShouHuiZhenPojo pojo = dao.getHuanZheXinXi(admissTimes, reqTimes, inpatientNo);
- if (pojo.getBirthDate() != null) {
- pojo.setAge(DateUtil.calculateAge(pojo.getBirthDate(), null));
- }
- return ResultVoUtil.success(pojo);
- }
- /**
- * @param param 更新的 主键 以及 更新的数据
- * @return 返回更新 提示
- */
- @Transactional(rollbackFor = Exception.class)
- public ResultVo<String> wanChenHuiZhen(JieShouHuiZhenPojo param) {
- if (param.getAdmissTimes() != null && param.getReqTimes() != null && StringUtil.notBlank(param.getInpatientNo())) {
- if (StringUtil.isBlank(param.getHzComment())) {
- return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "会诊意见不能为空。");
- }
- param.setHzDoctor2(TokenUtil.getTokenUserId());
- UserInfo userInfo = redisLikeService.getUserInfoByToken();
- if (StringUtil.isBlank(userInfo.getEmpTitCode())) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您还没有职称,请医务部或者人资维护。");
- }
- String orderCode = dao.getOrderCodeByEmpTit(userInfo.getEmpTitCode());
- if (StringUtil.isBlank(orderCode)) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您的职称不支持,您接受会诊。");
- }
- param.setHzType(getHzTypeByOrderCode(orderCode));
- JieShouHuiZhenPojo reqData = dao.getHuanZheXinXi(param.getAdmissTimes(), param.getReqTimes(), param.getInpatientNo());
- dao.wanChenHuiZhen(param);
- dao.updateOrderConsultationCode(orderCode, reqData.getActOrderNo());
- log.info("完成会诊 ==》 操作人:{},数据:{}", TokenUtil.getTokenUserId(), param);
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, param.getStatusFlag() == 1 ? "保存成功" : "完成会诊");
- }
- return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
- }
- private String getHzTypeByOrderCode(String code) {
- switch (code) {
- case 主任编码:
- return "3";
- case 副主任编码:
- return "2";
- case 主治编码:
- return "1";
- default:
- return "0";
- }
- }
- }
|