| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |