123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- package thyyxxk.webserver.service.datamodify;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import thyyxxk.webserver.config.exception.ExceptionEnum;
- import thyyxxk.webserver.constants.GetDateFormat;
- import thyyxxk.webserver.dao.his.datamodify.YzActOrderModifyVerifyDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.datamodify.TYzActOrderModify;
- import thyyxxk.webserver.utils.ResultVoUtil;
- import thyyxxk.webserver.utils.StringUtil;
- import thyyxxk.webserver.utils.TokenUtil;
- import thyyxxk.webserver.websocket.WebSocketServer;
- import java.math.BigDecimal;
- import java.util.List;
- /**
- * <p>
- * 描述 医嘱修改审核
- * </p>
- *
- * @author xc
- * @date 2021-04-09 08:40
- */
- @Service
- @Slf4j
- public class YzActOrderModifyVerifyService {
- private final YzActOrderModifyVerifyDao dao;
- private static final int YZ_APPROVED = 2;
- private static final int YZ_REJECT = 3;
- private static final int YZ_WITHDRAW = 4;
- @Autowired
- public YzActOrderModifyVerifyService(YzActOrderModifyVerifyDao dao) {
- this.dao = dao;
- }
- /**
- * 根据医嘱号或者住院号 还有审核的状态来获取 需要审核的信息
- *
- * @param param 查询的条件
- * @return 返回审核的信息
- */
- public ResultVo<List<TYzActOrderModify>> chaKanZhuangTai(TYzActOrderModify param) {
- log.info("查询医嘱审核状态==》操作员:{},医嘱号:{},住院号:{},状态值:{}",
- TokenUtil.getTokenUserId(), param.getActOrderNo(), param.getInpatientNo(), param.getAuditFlag());
- QueryWrapper<TYzActOrderModify> qw = new QueryWrapper<>();
- qw.select("inpatient_no,act_order_no,order_name,audit_flag");
- if (param.getActOrderNo() != null) {
- qw.eq("act_order_no", param.getActOrderNo());
- }
- if (StringUtil.notBlank(param.getInpatientNo())) {
- qw.eq("inpatient_no", param.getInpatientNo());
- }
- if (param.getAuditFlag() == 0) {
- qw.in("audit_flag", 1, 2, 3, 4);
- } else {
- qw.eq("audit_flag", param.getAuditFlag());
- }
- List<TYzActOrderModify> list = dao.selectList(qw);
- if (list.size() > 0) {
- return ResultVoUtil.success(list);
- }
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有找到对应的申请记录 ╮(﹀_﹀”)╭");
- }
- /**
- * 根据医嘱号来获取一些详细的信息 这个是在是在医嘱申请表中查询的数据
- *
- * @param actOrderNo 医嘱号
- * @return 返回指定的
- */
- public ResultVo<TYzActOrderModify> shenHeXinXi(BigDecimal actOrderNo) {
- return ResultVoUtil.success(yzActOrderQuery(actOrderNo));
- }
- /**
- * 把通过医嘱号查询的封装起来 别的地方还要用
- *
- * @param actOrderNo 医嘱号
- * @return 返回对应的数据
- */
- public TYzActOrderModify yzActOrderQuery(BigDecimal actOrderNo) {
- QueryWrapper<TYzActOrderModify> qw = new QueryWrapper<>();
- qw.select("act_order_no,inpatient_no,start_time,end_time,new_start_time," +
- "new_end_time,audit_flag,proposer,proposer_name=(select name from a_employee_mi where code=proposer),propose_time," +
- "audit_staff,audit_time,audit_remark,propose_remark," +
- "patient_name,frequ_code,ward_code,order_name");
- qw.eq("act_order_no", actOrderNo);
- return dao.selectOne(qw);
- }
- /**
- * 审核判断要执行哪些动作
- *
- * @param auditFlag 1-未审核 2-通过 3-不通过 4-数据回撤到最近一次的修改
- * @param actOrderNo 医嘱号,任任何操作都是根据医嘱号来的
- * @param auditRemark 一些审核的备注信息
- * @return 返回
- */
- public ResultVo<Boolean> shenHePanDuan(Integer auditFlag, BigDecimal actOrderNo, String auditRemark) {
- //根据医嘱号 在申请表中 获取数据
- TYzActOrderModify pojo = yzActOrderQuery(actOrderNo);
- JSONObject obj = new JSONObject();
- obj.put("name", "systemNotification");
- if (auditFlag == YZ_APPROVED) {
- if (judgeTheTime(pojo)) {
- dao.shenHeZhuangTaiGaiBian(3, TokenUtil.getTokenUserId(), actOrderNo, "结束时间不能大于开始时间。");
- obj.put("type", "error");
- obj.put("message", String.format("用户【%s】,医嘱号为【%s】已驳回,驳回原因:%s", pojo.getProposerName(), actOrderNo, "结束时间不能大于开始时间。"));
- log.info("医嘱修改审核,操作:{驳回},操作员:{},驳回医嘱号:{}", TokenUtil.getTokenUserId(), pojo.getActOrderNo());
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "结束时间不能大于开始时间,已自动驳回。");
- } else {
- dao.yzActOrderModify(pojo.getNewStartTime(), pojo.getNewEndTime(), pojo.getActOrderNo());
- dao.shenHeZhuangTaiGaiBian(auditFlag, TokenUtil.getTokenUserId(), actOrderNo, auditRemark);
- obj.put("type", "success");
- obj.put("message", String.format("用户【%s】,医嘱号为【%s】已通过审核。", pojo.getProposerName(), actOrderNo));
- log.info("医嘱修改成功===>审核人:{},数据:{}",
- TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(pojo, GetDateFormat.DATE_TIME));
- }
- } else if (auditFlag == YZ_REJECT) {
- dao.shenHeZhuangTaiGaiBian(auditFlag, TokenUtil.getTokenUserId(), actOrderNo, auditRemark);
- obj.put("message", String.format("用户【%s】,医嘱号为【%s】已驳回,驳回原因:%s。", pojo.getProposerName(), actOrderNo, auditRemark));
- obj.put("type", "error");
- log.info("医嘱修改审核,操作:{驳回},操作员:{},驳回医嘱号:{}", TokenUtil.getTokenUserId(), pojo.getActOrderNo());
- } else if (auditFlag == YZ_WITHDRAW) {
- //数据回撤
- dao.shuJuHuiChe(pojo.getStartTime(), pojo.getEndTime(), pojo.getActOrderNo());
- dao.shenHeZhuangTaiGaiBian(auditFlag, TokenUtil.getTokenUserId(), actOrderNo, auditRemark);
- obj.put("message", String.format("用户【%s】,医嘱号为【%s】数据撤回,撤回原因:%s。", pojo.getProposerName(), actOrderNo, auditRemark));
- obj.put("type", "error");
- log.info("医嘱修改审核,操作:{数据撤回成功},操作人员:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(pojo, GetDateFormat.DATE_TIME));
- }
- String message = obj.toJSONString();
- WebSocketServer.sendMessageByUserCode(pojo.getProposer(), message);
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "操作成功,已通知申请人员。");
- }
- public Boolean judgeTheTime(TYzActOrderModify pojo) {
- if (pojo.getNewEndTime() != null) {
- if (pojo.getNewStartTime() != null) {
- return pojo.getNewEndTime().getTime() < pojo.getNewStartTime().getTime();
- } else {
- return pojo.getNewEndTime().getTime() < pojo.getStartTime().getTime();
- }
- }
- return false;
- }
- }
|