From 0b0e82d81fb2f9506269cf3720ffa1fca04b61ec Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 10 Apr 2025 15:20:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E9=80=BB=E8=BE=91=EF=BC=8C=E5=8F=AA=E6=9C=89=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=88=B0=E7=9A=84=E6=96=87=E4=BB=B6=E6=89=8D=E4=BC=9A?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../secret/service/UnpackZipService.java | 6 +++-- .../impl/OfflineZipUnpackServiceImpl.java | 19 +++++++------ .../QualificationApplicationServiceImpl.java | 27 +++++++++---------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/com/engine/secret/service/UnpackZipService.java b/src/com/engine/secret/service/UnpackZipService.java index 7254aeb..e38af64 100644 --- a/src/com/engine/secret/service/UnpackZipService.java +++ b/src/com/engine/secret/service/UnpackZipService.java @@ -1,6 +1,8 @@ package com.engine.secret.service; import com.fasterxml.jackson.databind.JsonNode; +import net.lingala.zip4j.ZipFile; +import net.lingala.zip4j.model.FileHeader; import java.util.Map; @@ -20,13 +22,13 @@ public interface UnpackZipService { * @return * @throws Exception */ - Map registerAcceptance(String requestId, JsonNode rootNode, Map imageFileMap) throws Exception; + Map registerAcceptance(ZipFile zipFile, String requestId, JsonNode rootNode, Map imageFileMap) throws Exception; /** * 材料补正 * * @return */ - Map reviewResubmittedMaterials(String requestId, JsonNode rootNode, Map imageFileMap); + Map reviewResubmittedMaterials(ZipFile zipFile, String requestId, JsonNode rootNode, Map imageFileMap); } diff --git a/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java b/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java index b6a1734..a233db0 100644 --- a/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java +++ b/src/com/engine/secret/service/impl/OfflineZipUnpackServiceImpl.java @@ -48,17 +48,19 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer Map> resourceInfoMap; - Map imageFileMap; + Map fileHeaderMap; String relatedFlowId; Map returnMap = new HashMap<>(); + ZipFile zipFile; @Override - public Map registerAcceptance(String requestId, JsonNode rootNode, Map imageFileMap) { + public Map registerAcceptance(ZipFile zipFile, String requestId, JsonNode rootNode, Map imageFileMap) { try { - this.imageFileMap = imageFileMap; + this.fileHeaderMap = imageFileMap; this.relatedFlowId = requestId; + this.zipFile = zipFile; // 构建流程表单反填字段 buildFormFields(rootNode); // 插入建模表单数据,写入文件数据 @@ -71,11 +73,12 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer } @Override - public Map reviewResubmittedMaterials(String requestId, JsonNode rootNode, Map imageFileMap) { + public Map reviewResubmittedMaterials(ZipFile zipFile, String requestId, JsonNode rootNode, Map imageFileMap) { // TODO 逻辑待完善 try { - this.imageFileMap = imageFileMap; + this.fileHeaderMap = imageFileMap; this.relatedFlowId = requestId; + this.zipFile = zipFile; // 写入补正文件数据 updateCorrectedMaterials(rootNode); } catch (Exception e) { @@ -173,7 +176,6 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer private void updateFileList(int mainId, List fileConfigList, String tableName, boolean isDetail) throws Exception { Map dataMap = new IgnoreCaseHashMap<>(); - //StringBuilder whereSql = new StringBuilder(" where 1=1 "); String fileTypeField = ""; String fileTypeValue = ""; for (FileConfig fileConfig : fileConfigList) { @@ -222,7 +224,7 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer continue; } String fileName = resourceInfo.getFileName(); - Integer imageFileId = imageFileMap.get(fileName); + int imageFileId = generateImageFileId(zipFile, fileHeaderMap.get(fileName), fileName); // 生成文档ID int docId = ModeUtil.createDocId(uploadCatalogue, imageFileId, user); docIds.add(docId); @@ -564,7 +566,8 @@ public class OfflineZipUnpackServiceImpl extends Service implements UnpackZipSer continue; } String fileName = resourceInfo.getFileName(); - Integer imageFileId = imageFileMap.get(fileName); + int imageFileId = generateImageFileId(zipFile, fileHeaderMap.get(fileName), fileName); + // 生成文档ID int docId = ModeUtil.createDocId(uploadCatalogue, imageFileId, user); docIds.add(docId); diff --git a/src/com/engine/secret/service/impl/QualificationApplicationServiceImpl.java b/src/com/engine/secret/service/impl/QualificationApplicationServiceImpl.java index 94622c9..323357f 100644 --- a/src/com/engine/secret/service/impl/QualificationApplicationServiceImpl.java +++ b/src/com/engine/secret/service/impl/QualificationApplicationServiceImpl.java @@ -43,13 +43,13 @@ public class QualificationApplicationServiceImpl extends Service implements Qual BaseBean baseBean = new BaseBean(); - Map imageFileMap; + Map fileHeaderMap; @Override public Map parsingFiles(Map param) { try { - Map returnMap = new HashMap<>(); + Map returnMap; String docId = Util.null2String(param.get("docId")); String requestId = Util.null2String(param.get("requestId")); @@ -125,7 +125,8 @@ public class QualificationApplicationServiceImpl extends Service implements Qual // 遍历 ZIP 内文件(可选) List fileHeaders = zipFile.getFileHeaders(); - imageFileMap = new HashMap<>(); + //imageFileMap = new HashMap<>(); + fileHeaderMap = new HashMap<>(); for (FileHeader header : fileHeaders) { if (header.isDirectory()) { continue; @@ -135,30 +136,28 @@ public class QualificationApplicationServiceImpl extends Service implements Qual String fileName = (lastSlashIndex != -1) ? fullPath.substring(lastSlashIndex + 1) : fullPath; - baseBean.writeLog("文件名称: " + fileName); - - // 上传文件 - int imageFileId = generateImageFileId(zipFile, header, fileName); - imageFileMap.put(fileName, imageFileId); + fileHeaderMap.put(fileName,header); } baseBean.writeLog("fileHeaders.size==" + fileHeaders.size()); - baseBean.writeLog("imageFileMap.size==" + imageFileMap.size()); - baseBean.writeLog("imageFileMap==" + JSON.toJSONString(imageFileMap)); + baseBean.writeLog("fileHeaderMap.size==" + fileHeaderMap.size()); + baseBean.writeLog("fileHeaderMap==" + JSON.toJSONString(fileHeaderMap)); // 获取数据文件,用于后续数据解析 - Integer dataJsonImageId = imageFileMap.get("(database)data.json"); + String jsonFileName="(database)data.json"; + FileHeader fileHeader = fileHeaderMap.get(jsonFileName); + int dataJsonImageId = generateImageFileId(zipFile, fileHeader, jsonFileName); - if (dataJsonImageId != null && dataJsonImageId > 0) { + if (dataJsonImageId > 0) { // 离线端方式 JsonNode rootNode = parseJsonContent(dataJsonImageId); OfflineZipUnpackServiceImpl offlineZipUnpackService = ServiceUtil.getService(OfflineZipUnpackServiceImpl.class, user); if ("true".equals(isCorrection)) { - return offlineZipUnpackService.reviewResubmittedMaterials(requestId, rootNode, imageFileMap); + return offlineZipUnpackService.reviewResubmittedMaterials(zipFile,requestId, rootNode, fileHeaderMap); } - return offlineZipUnpackService.registerAcceptance(requestId, rootNode, imageFileMap); + return offlineZipUnpackService.registerAcceptance(zipFile,requestId, rootNode, fileHeaderMap); } // TODO 兼容其他方式