| | |
| | | if (instance == null || instance.isBlank()) throw fail("审批记录不完整,无法下载"); |
| | | boolean humanApproval = taskService.getTaskListByProcessInstanceId(instance, true).stream().anyMatch(task -> { |
| | | var vars = task.getTaskLocalVariables(); |
| | | if (vars == null || !Integer.valueOf(2).equals(vars.get("TASK_STATUS")) || task.getAssignee() == null || task.getAssignee().equals(String.valueOf(userId))) return false; |
| | | if (vars == null || !Integer.valueOf(2).equals(vars.get("TASK_STATUS")) || task.getAssignee() == null) return false; |
| | | Object reason = vars.get("TASK_REASON"); |
| | | return Arrays.stream(cn.iocoder.yudao.module.bpm.enums.task.BpmReasonEnum.values()).noneMatch(item -> Objects.equals(item.getReason(), reason)); |
| | | }); |
| | | if (!humanApproval) throw fail("未找到其他审批人的人工通过记录,无法下载"); |
| | | if (!humanApproval) throw fail("未找到人工审批通过记录,无法下载"); |
| | | byte[] snapshot=(byte[])rows.get(0).get("document_snapshot"), image=(byte[])rows.get(0).get("seal_image"); |
| | | var out=new ByteArrayOutputStream(); boolean found=false; |
| | | try(var zin=new ZipInputStream(new ByteArrayInputStream(snapshot)); var zout=new ZipOutputStream(out)) { ZipEntry entry; while((entry=zin.getNextEntry())!=null){byte[] bytes=zin.readAllBytes(); if(entry.getName().equals("word/media/seal.png")){bytes=image;found=true;} zout.putNextEntry(new ZipEntry(entry.getName())); zout.write(bytes); zout.closeEntry();} } |