| | |
| | | private final NcNodeService ncNodeService; |
| | | private final OssTemplate ossTemplate; |
| | | private final FlowProgramFileService flowProgramFileService; |
| | | public static final String PROGRAM_JSON_FILE = "exp_mdm_nc_program.json"; |
| | | //public static final String PROGRAM_JSON_FILE = "exp_mdm_nc_program.json"; |
| | | public static final String NODE_JSON_FILE = "exp_mdm_nc_node.json"; |
| | | public static final String APPROVE_RECORD_JSON_FILE = "exp_mdm_approve_record.json"; |
| | | |
| | | /** |
| | | * 是否压缩包内的数据文件 |
| | | * @param filename 文件名称 |
| | | * @return |
| | | */ |
| | | public static boolean isDataFile(String filename){ |
| | | return StringUtils.equals(filename, PROGRAM_JSON_FILE) || StringUtils.equals(filename, NODE_JSON_FILE) || StringUtils.equals(filename, APPROVE_RECORD_JSON_FILE); |
| | | } |
| | | /** |
| | | * 分页查询 |
| | | * @param query 查询参数 |
| | |
| | | |
| | | for (Long approvedId : approvedIdArr) { |
| | | NcProgramApproved approved = approvedService.getById(approvedId); |
| | | programPackageNodeIdList.add(approved.getNodeId()); |
| | | programPackageNodeIdList.add(approved.getNcNodeId()); |
| | | |
| | | /* |
| | | String filename = prog.getOssName(); |
| | | InputStream inputStream = ossTemplate.statFileStream(filename); |
| | | |
| | | addInputStreamToZip(zipOut, inputStream, prog.getName()); |
| | | */ |
| | | addProgramPackageToZip(zipOut,approved); |
| | | } |
| | | addDataJson(zipOut, programPackageNodeIdList); |
| | |
| | | zipOut.putNextEntry(zipEntry); |
| | | zipOut.closeEntry(); |
| | | |
| | | List<NcNode> programNodes = ncNodeService.lambdaQuery().eq(NcNode::getParentId, approved.getNodeId()).list(); |
| | | List<NcNode> programNodes = ncNodeService.lambdaQuery().eq(NcNode::getParentId, approved.getNcNodeId()).list(); |
| | | |
| | | FlowProgramFile programFile; |
| | | for (NcNode node : programNodes) { |
| | | String filePathInZip = packageFolder + node.getName(); |
| | | programFile = this.flowProgramFileService.getById(node.getFlowProgramFileId()); |
| | | |
| | | InputStream inputStream = ossTemplate.statFileStream(programFile.getOssName()); |
| | | |
| | | /* |
| | | ZipEntry fileEntry = new ZipEntry(filePathInZip); |
| | | |
| | | zipOut.putNextEntry(fileEntry); |
| | |
| | | zipOut.write(buffer, 0, length); |
| | | } |
| | | zipOut.closeEntry(); |
| | | |
| | | */ |
| | | |
| | | this.addInputStreamToZip(zipOut,inputStream,filePathInZip); |
| | | } |
| | | |
| | | } |
| | |
| | | * @param zipOut |
| | | */ |
| | | void addDataJson(ZipOutputStream zipOut, List<Long> programPackageNodeIdList) throws IOException { |
| | | //addProgramDataJson(zipOut, programPackageNodeIdList); |
| | | addNodeDataJson(zipOut, programPackageNodeIdList); |
| | | addApproveRecordDataJson(zipOut, programPackageNodeIdList); |
| | | } |
| | |
| | | allNodeIds.add(node.getId()); |
| | | } |
| | | //加入程序包下级的程序节点 |
| | | List<NcNode> programNodes = ncNodeService.lambdaQuery().in(NcNode::getParentId, pkgNodes.stream().map(NcNode::getId)).list(); |
| | | List<NcNode> programNodes = ncNodeService.lambdaQuery().in(NcNode::getParentId, pkgNodes.stream().map(NcNode::getId).toList()).list(); |
| | | |
| | | allNodeIds.addAll(programNodes.stream().map(NcNode::getId).toList()); |
| | | List<Long> distinctIds = allNodeIds.stream().distinct().toList(); |
| | |
| | | addSuperProperties(recObj,node); |
| | | jsonArray.add(recObj); |
| | | } |
| | | addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),PROGRAM_JSON_FILE); |
| | | addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),NODE_JSON_FILE); |
| | | |
| | | } |
| | | |
| | |
| | | * @param programPackageNodeIdList 程序包名的id列表 |
| | | */ |
| | | void addApproveRecordDataJson(ZipOutputStream zipOut, List<Long> programPackageNodeIdList) throws IOException { |
| | | List<String> instanceIds = this.ncNodeService.lambdaQuery().in(NcNode::getProcessInstanceId, programPackageNodeIdList) |
| | | /* |
| | | List<String> instanceIds = this.ncNodeService.lambdaQuery().in(NcNode::getId, programPackageNodeIdList) |
| | | .list().stream().map(NcNode::getProcessInstanceId).toList(); |
| | | |
| | | List<ApproveRecord> records = approveRecordService.lambdaQuery().in(ApproveRecord::getProcessInstanceId, instanceIds).list(); |
| | | */ |
| | | //List<ApproveRecord> records = approveRecordService.lambdaQuery().in(ApproveRecord::getProcessInstanceId, instanceIds).list(); |
| | | List<ApproveRecord> records = approveRecordService.lambdaQuery().in(ApproveRecord::getNcNodeId, programPackageNodeIdList).list(); |
| | | |
| | | JSONArray jsonArray = new JSONArray(); |
| | | for(ApproveRecord record : records){ |
| | |
| | | recObj.put("createDept",entity.getCreateDept()); |
| | | } |
| | | |
| | | public void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName) |
| | | /** |
| | | * 将 输入流 中的内容写入zip |
| | | * @param zipOut zip输出流 |
| | | * @param inputStream 输入流 |
| | | * @param entryName 文件名 |
| | | * @throws IOException |
| | | */ |
| | | void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName) |
| | | throws IOException { |
| | | // 创建新的 ZIP 条目 |
| | | ZipEntry zipEntry = new ZipEntry(entryName); |