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