123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package thyyxxk.webserver.service.zhuyuanyisheng;
- import com.alibaba.fastjson.JSON;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import thyyxxk.webserver.config.exception.ExceptionEnum;
- import thyyxxk.webserver.dao.his.zhuyuanyisheng.OrderQuashDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.login.UserInfo;
- import thyyxxk.webserver.entity.zhuyuanyisheng.orderquash.ReqOrderQuash;
- import thyyxxk.webserver.entity.zhuyuanyisheng.orderquash.ReturnReqOrderQuash;
- import thyyxxk.webserver.service.PublicServer;
- import thyyxxk.webserver.utils.DateUtil;
- import thyyxxk.webserver.utils.ListUtil;
- import thyyxxk.webserver.utils.ResultVoUtil;
- import thyyxxk.webserver.utils.TokenUtil;
- import java.math.BigDecimal;
- import java.util.Date;
- import java.util.List;
- @Service
- @Slf4j
- public class OrderQuashService {
- private final OrderQuashDao dao;
- private final PublicServer publicServer;
- public OrderQuashService(OrderQuashDao dao, PublicServer publicServer) {
- this.dao = dao;
- this.publicServer = publicServer;
- }
- public ResultVo<Integer> applicationForRevocation(ReqOrderQuash param) {
- Date orderDate = dao.selectOrderStartTime(param.getActOrderNo());
- if (orderDate == null) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "原医嘱已不存在。");
- }
- // 申请作废先一步要停止医嘱
- dao.stopOrder(param.getActOrderNo());
- Date now = new Date();
- param.setReqId(TokenUtil.getTokenUserId())
- .setReqDatetime(now);
- long subtract = DateUtil.theDifferenceIsHours(now, orderDate);
- // 超过 24 小时 要申请
- if (subtract > 24) {
- return insertTheRequest(param);
- }
- // 有费用要申请
- if (dao.selectzyDetailCharge(param.getActOrderNo(), param.getPatNo(), param.getTimes()) > 0) {
- return insertTheRequest(param);
- }
- // 有药单申请
- if (dao.selectYpOrder(param.getActOrderNo()) > 0) {
- return insertTheRequest(param);
- }
- // 有费用中间表申请
- if (dao.selectZyPatientFee(param.getActOrderNo()) > 0) {
- return insertTheRequest(param);
- }
- param.setState(2).setApproverRemark("系统自动审核。");
- // 删除原来的数据
- dao.deleteById(param.getActOrderNo());
- // 插入申请表数据
- dao.insert(param);
- // 没有产生费用也没有超过 24 小时可以直接撤销
- dao.eraseOrder(param.getActOrderNo());
- dao.delYzOrder(param.getActOrderNo());
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, 1);
- }
- private ResultVo<Integer> insertTheRequest(ReqOrderQuash param) {
- ReqOrderQuash quash = dao.selectById(param.getActOrderNo());
- if (quash == null) {
- dao.insert(param);
- } else if (quash.getState() == 2) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "医嘱已经通过审核了。");
- } else if (quash.getState() == 3 || quash.getState() == 1) {
- dao.deleteById(param.getActOrderNo());
- dao.insert(param);
- }
- log.info("日志:{}", JSON.toJSONString(param));
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "申请成功等待医务部审核通过。", 0);
- }
- public ResultVo<List<ReturnReqOrderQuash>> getReqOrderQuash(String startTime, String endTime, int state, Boolean myReq) {
- QueryWrapper<ReturnReqOrderQuash> qw = new QueryWrapper<>();
- qw.ge("req_datetime", startTime)
- .le("req_datetime", endTime);
- qw.eq("state", state);
- if (myReq) {
- qw.eq("req_id", TokenUtil.getTokenUserId());
- }
- return ResultVoUtil.success(dao.selectReqListGroupBy(qw));
- }
- public ResultVo<List<ReturnReqOrderQuash>> selectReqListByPat(String patNo, String times, int state) {
- return ResultVoUtil.success(dao.selectReqListByPat(patNo, times, state));
- }
- @Transactional(rollbackFor = Exception.class)
- public ResultVo<String> saveData(List<ReqOrderQuash> list) {
- if (ListUtil.isBlank(list)) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请先选择数据。");
- }
- if (publicServer.needRule(38)) {
- String code = TokenUtil.getTokenUserId();
- Date now = new Date();
- for (ReqOrderQuash item : list) {
- item.setApproverId(code);
- item.setApproverDatatime(now);
- revocationOfMedicalOrders(item);
- }
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
- }
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您没有审核权限。");
- }
- /**
- * 撤销医嘱
- *
- * @param item 数据
- */
- public void revocationOfMedicalOrders(ReqOrderQuash item) {
- BigDecimal order = item.getActOrderNo();
- dao.updateReqOrderQuash(item);
- // 删除费用中间表
- dao.delPatientFee(order);
- // 删除药品表
- dao.delYpZyOrder(order);
- dao.eraseOrder(order);
- dao.upErase(order);
- dao.delYzOrder(order);
- }
- }
|