|  | @@ -622,6 +622,15 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |          if (ListUtil.isBlank(param)) {
 | 
	
		
			
				|  |  |              return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请选择需要上传的患者。");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        List<String> patNos = param.stream().map(SiSetlinfoTemp::getPatNo).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        List<Integer> times = param.stream().map(SiSetlinfoTemp::getTimes).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        List<Integer> auditFlags = dao.listSetlModifyReq(patNos, times);
 | 
	
		
			
				|  |  | +        if(ListUtil.notBlank(auditFlags)){
 | 
	
		
			
				|  |  | +            boolean flag = auditFlags.stream().allMatch(obj -> "1".equals(auditFlags));
 | 
	
		
			
				|  |  | +            if(!flag){
 | 
	
		
			
				|  |  | +                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "选中上传的患者审核状态必须要全部为审核通过。");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          for (int i = 0; i < param.size(); i++) {
 | 
	
		
			
				|  |  |              SiSetlinfoTemp siPatInfo = param.get(i);
 | 
	
		
			
				|  |  |              try {
 | 
	
	
		
			
				|  | @@ -649,6 +658,11 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |              if (ListUtil.isBlank(list)) {
 | 
	
		
			
				|  |  |                  return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有要上传的信息。");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            // 只有全部为审核通过的数据才能上传
 | 
	
		
			
				|  |  | +            boolean isAllAuditPass = list.stream().allMatch(obj -> "1".equals(obj.getAuditFlag()));
 | 
	
		
			
				|  |  | +            if(!isAllAuditPass){
 | 
	
		
			
				|  |  | +                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "要所有数据为审核通过状态才能全部上传。");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              upldSetlListBatch(list);
 | 
	
		
			
				|  |  |          } catch (Exception e) {
 | 
	
		
			
				|  |  |              e.printStackTrace();
 | 
	
	
		
			
				|  | @@ -1029,7 +1043,7 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ZyInactpatient zy = dao.huanZheXinXi(patNo, times);
 | 
	
		
			
				|  |  |          List<Integer> code = publicServer.getRoleCode().getData();
 | 
	
		
			
				|  |  | -        if (!code.contains(1) && !code.contains(8)) {
 | 
	
		
			
				|  |  | +        if (!code.contains(1) && !code.contains(8) && !code.contains(49) && !code.contains(50)) {
 | 
	
		
			
				|  |  |              if (zy.getReferPhysician() == null || !zy.getReferPhysician().equals(TokenUtil.getTokenUserId())) {
 | 
	
		
			
				|  |  |                  return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您不是该患者的管床医生。");
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -1157,7 +1171,11 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |              return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "不可以有相同的诊断。");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          dao.delReq(param.getInpatientNo(), param.getAdmissTimes());
 | 
	
		
			
				|  |  | +        //发起审核
 | 
	
		
			
				|  |  |          dao.setlModifyReq(param.getInpatientNo(), param.getAdmissTimes(), TokenUtil.getTokenUserId(), param.getOpIdName(), param.getReqRemark());
 | 
	
		
			
				|  |  | +        //记录审核日志
 | 
	
		
			
				|  |  | +        SetlAuditLog setlAuditLog =  cretaSetlAuditLog(param,TokenUtil.getTokenUserId(),0,0);
 | 
	
		
			
				|  |  | +        saveAuditLog(setlAuditLog);
 | 
	
		
			
				|  |  |          if (ListUtil.notBlank(param.getYbZyDisDiag())) {
 | 
	
		
			
				|  |  |              dao.setlModDis(param.getYbZyDisDiag(), "zy_dis_diag_yb_modify");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1165,7 +1183,19 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |              dao.setlModBat(param.getBatjBa4(), "batj_ba4_modify");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          dao.shenBao(param.getOperation(), param.getDecType(), param.getInpatientNo(), param.getAdmissTimes());
 | 
	
		
			
				|  |  | -        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "申请成功,请等待医保科审核。");
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "申请成功,请等待编码员进行审核。");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private SetlAuditLog cretaSetlAuditLog(ZyInactpatient param, String tokenUserId,Integer auditFlag,Integer auditType) {
 | 
	
		
			
				|  |  | +        SetlAuditLog setlAuditLog = new SetlAuditLog();
 | 
	
		
			
				|  |  | +        setlAuditLog.setPatNo(param.getInpatientNo());
 | 
	
		
			
				|  |  | +        setlAuditLog.setTimes(param.getAdmissTimes());
 | 
	
		
			
				|  |  | +        setlAuditLog.setRemark(param.getReqRemark());
 | 
	
		
			
				|  |  | +        setlAuditLog.setCreateCode(tokenUserId);
 | 
	
		
			
				|  |  | +        setlAuditLog.setCreateName(param.getOpIdName());
 | 
	
		
			
				|  |  | +        setlAuditLog.setAuditFlag(auditFlag);
 | 
	
		
			
				|  |  | +        setlAuditLog.setAuditType(auditType);
 | 
	
		
			
				|  |  | +        return setlAuditLog;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
	
		
			
				|  | @@ -1182,18 +1212,33 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |              // 审核通过需要 删除 并更新 现在占时用不到
 | 
	
		
			
				|  |  |  //            dao.delYuanShuJu(req.getPatNo(), req.getTimes());
 | 
	
		
			
				|  |  |  //            dao.auditTongGuo(req.getPatNo(), req.getTimes());
 | 
	
		
			
				|  |  | -            dao.updateReq(id, remark, auditStaff, auditName);
 | 
	
		
			
				|  |  | -            dao.upAuditFlag(id, auditFlag);
 | 
	
		
			
				|  |  | +            saveAuditLog(id,auditFlag,remark, auditStaff, auditName, req);
 | 
	
		
			
				|  |  |              return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "审核已通过 (*^▽^*)");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (StringUtil.isBlank(remark)) {
 | 
	
		
			
				|  |  |              return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "驳回信息不能为空。");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        dao.upAuditFlag(id, auditFlag);
 | 
	
		
			
				|  |  | +        //驳回
 | 
	
		
			
				|  |  | +        //审核 并 保存审核日志
 | 
	
		
			
				|  |  | +        saveAuditLog(id,auditFlag,remark, auditStaff, auditName, req);
 | 
	
		
			
				|  |  |          sendWxInfoService.sendCorpWxMsg(dao.yuanGongGongHao(req.getReqOpId()), String.format("医保结算单上传\n申请已驳回\n患者姓名:【%s】\n住院号:【%s】\n原因:【%s】\n审核人:【%s】", req.getPatName(), req.getPatNo(), remark, auditName));
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "审核已驳回 (╯﹏╰)b");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private void saveAuditLog(Integer id,Integer auditFlag,String remark, String auditStaff, String auditName, TYbSetlModifyReq req) {
 | 
	
		
			
				|  |  | +        dao.updateReq(id, remark, auditStaff, auditName);
 | 
	
		
			
				|  |  | +        dao.upAuditFlag(id, auditFlag);
 | 
	
		
			
				|  |  | +        SetlAuditLog setlAuditLog = new SetlAuditLog();
 | 
	
		
			
				|  |  | +        setlAuditLog.setPatNo(req.getPatNo());
 | 
	
		
			
				|  |  | +        setlAuditLog.setTimes(req.getTimes());
 | 
	
		
			
				|  |  | +        setlAuditLog.setAuditType(1);
 | 
	
		
			
				|  |  | +        setlAuditLog.setAuditFlag(auditFlag);
 | 
	
		
			
				|  |  | +        setlAuditLog.setRemark(remark);
 | 
	
		
			
				|  |  | +        setlAuditLog.setCreateCode(auditStaff);
 | 
	
		
			
				|  |  | +        setlAuditLog.setCreateName(auditName);
 | 
	
		
			
				|  |  | +        saveAuditLog(setlAuditLog);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      public ResultVo<TYbSetModifyTime> xianZhiShiJian() {
 | 
	
		
			
				|  |  |          return ResultVoUtil.success(dao.xianZhiShiJian());
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1506,4 +1551,62 @@ public class SetlListUpldService {
 | 
	
		
			
				|  |  |              ++initSize;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * @description: 发起审核
 | 
	
		
			
				|  |  | +     * @author: lihong
 | 
	
		
			
				|  |  | +     * @date: 2022/12/12 16:28
 | 
	
		
			
				|  |  | +     * @param: setlAuditLog
 | 
	
		
			
				|  |  | +     * @return: thyyxxk.webserver.entity.ResultVo<java.lang.String>
 | 
	
		
			
				|  |  | +     **/
 | 
	
		
			
				|  |  | +    public ResultVo<String> sendAudit(SetlAuditLog setlAuditLog) {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            //只有 驳回 或没有审核记录 才能 发起申请
 | 
	
		
			
				|  |  | +            Integer auditFlag = dao.getAuditFlag(setlAuditLog.getPatNo(), setlAuditLog.getTimes());
 | 
	
		
			
				|  |  | +             if(auditFlag == null  || auditFlag == 2){
 | 
	
		
			
				|  |  | +                 dao.deleteModifReq(setlAuditLog.getPatNo(),setlAuditLog.getTimes());
 | 
	
		
			
				|  |  | +                 dao.setlModifyReq(setlAuditLog.getPatNo(), setlAuditLog.getTimes(), TokenUtil.getTokenUserId(), setlAuditLog.getCreateName(), setlAuditLog.getRemark());
 | 
	
		
			
				|  |  | +                 saveAuditLog(setlAuditLog);
 | 
	
		
			
				|  |  | +             }else {
 | 
	
		
			
				|  |  | +                 throw new BizException(ExceptionEnum.LOGICAL_ERROR,"只有驳回状态或未申请状态才能发起审核流程");
 | 
	
		
			
				|  |  | +             }
 | 
	
		
			
				|  |  | +        }catch (Exception e){
 | 
	
		
			
				|  |  | +            log.error("发起审核失败", e);
 | 
	
		
			
				|  |  | +            throw new BizException(ExceptionEnum.LOGICAL_ERROR,"发起审核失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION,"成功");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +   private void saveAuditLog(SetlAuditLog setlAuditLog){
 | 
	
		
			
				|  |  | +       if(setlAuditLog.getAuditType()==null){
 | 
	
		
			
				|  |  | +           setlAuditLog.setAuditType(0);
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       if (StringUtil.isBlank(setlAuditLog.getRemark())) {
 | 
	
		
			
				|  |  | +           setlAuditLog.setRemark("申请审核");
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       if (setlAuditLog.getAuditFlag() == null) {
 | 
	
		
			
				|  |  | +           //设置为待审核
 | 
	
		
			
				|  |  | +           setlAuditLog.setAuditFlag(0);
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       if (StringUtil.isBlank(setlAuditLog.getCreateCode())) {
 | 
	
		
			
				|  |  | +           String code = TokenUtil.getTokenUserId();
 | 
	
		
			
				|  |  | +           setlAuditLog.setCreateCode(code);
 | 
	
		
			
				|  |  | +           setlAuditLog.setCreateName(publicServer.huoQuYuanGongXinXi(code).getName());
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +       log.info("审核参数setlAuditLog:{}",JSON.toJSONString(setlAuditLog));
 | 
	
		
			
				|  |  | +           dao.insertSetlAuditLog(setlAuditLog);
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * @description:获取审核日志
 | 
	
		
			
				|  |  | +     * @author: lihong
 | 
	
		
			
				|  |  | +     * @date: 2022/12/13 9:04
 | 
	
		
			
				|  |  | +     * @param: patNo
 | 
	
		
			
				|  |  | +     * @param: times
 | 
	
		
			
				|  |  | +     * @return: thyyxxk.webserver.entity.ResultVo<java.lang.String>
 | 
	
		
			
				|  |  | +     **/
 | 
	
		
			
				|  |  | +    public ResultVo<List<SetlAuditLog>> listSetlAuditLog(String patNo, Integer times) {
 | 
	
		
			
				|  |  | +        AssertUtil.isnotBlank(patNo,"病案号不能为空");
 | 
	
		
			
				|  |  | +        AssertUtil.isnotBlank(times,"住院次数不能为空");
 | 
	
		
			
				|  |  | +        List<SetlAuditLog> setlAuditLogs = dao.listSetlAuditLog(patNo, times);
 | 
	
		
			
				|  |  | +        return ResultVoUtil.success(setlAuditLogs);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |