From 426c7f0cdb9621f3a754328d460e404a23eaefb6 Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Tue, 27 Feb 2024 19:27:10 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E6=B5=81=E7=A8=8B=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1081086489100288]流程管理-流程导入异常 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1081086489100288 --- .../core/ImportExportHandlerFactory.java | 23 ++++++++--- .../DependencyNotFoundException.java | 28 +++++++++++++ .../handler/MatrixImportExportHandler.java | 39 +++++++++++++++++-- 3 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 src/main/java/neatlogic/framework/importexport/exception/DependencyNotFoundException.java diff --git a/src/main/java/neatlogic/framework/importexport/core/ImportExportHandlerFactory.java b/src/main/java/neatlogic/framework/importexport/core/ImportExportHandlerFactory.java index c655b04df..6c34167de 100644 --- a/src/main/java/neatlogic/framework/importexport/core/ImportExportHandlerFactory.java +++ b/src/main/java/neatlogic/framework/importexport/core/ImportExportHandlerFactory.java @@ -27,6 +27,7 @@ import neatlogic.framework.file.dao.mapper.FileMapper; import neatlogic.framework.file.dto.FileVo; import neatlogic.framework.importexport.constvalue.FrameworkImportExportHandlerType; import neatlogic.framework.importexport.dto.*; +import neatlogic.framework.importexport.exception.DependencyNotFoundException; import neatlogic.framework.importexport.exception.ImportExportHandlerNotFoundException; import neatlogic.framework.importexport.exception.ImportExportTypeInconsistencyException; import neatlogic.framework.importexport.exception.ImportNoAuthException; @@ -174,6 +175,7 @@ public class ImportExportHandlerFactory extends ModuleInitializedListenerBase { } List primaryChangeList = new ArrayList<>(); Map fileMap = new HashMap<>(); + List messageList = new ArrayList<>(); // 第二次遍历压缩包,导入dependency-folder/{primaryKey}.json和{primaryKey}.json文件 try (ZipInputStream zipIs = new ZipInputStream(multipartFile.getInputStream()); ByteArrayOutputStream out = new ByteArrayOutputStream() @@ -205,10 +207,14 @@ public class ImportExportHandlerFactory extends ModuleInitializedListenerBase { if (logger.isWarnEnabled()) { logger.warn("import data: " + dependencyVo.getType() + "-" + dependencyVo.getName() + "-" + oldPrimaryKey); } - newPrimaryKey = importExportHandler.importData(dependencyVo, primaryChangeList); - if (Objects.equals(dependencyVo.getType(), FrameworkImportExportHandlerType.FILE.getValue())) { - FileVo fileVo = dependencyVo.getData().toJavaObject(FileVo.class); - fileMap.put(fileVo.getId(), fileVo); + try { + newPrimaryKey = importExportHandler.importData(dependencyVo, primaryChangeList); + if (Objects.equals(dependencyVo.getType(), FrameworkImportExportHandlerType.FILE.getValue())) { + FileVo fileVo = dependencyVo.getData().toJavaObject(FileVo.class); + fileMap.put(fileVo.getId(), fileVo); + } + } catch (DependencyNotFoundException e) { + messageList.addAll(e.getMessageList()); } } else { newPrimaryKey = importExportHandler.getPrimaryByName(dependencyVo); @@ -231,12 +237,19 @@ public class ImportExportHandlerFactory extends ModuleInitializedListenerBase { if (importExportHandler == null) { throw new ImportExportHandlerNotFoundException(importExportVo.getType()); } - importExportHandler.importData(importExportVo, primaryChangeList); + try { + importExportHandler.importData(importExportVo, primaryChangeList); + } catch (DependencyNotFoundException e) { + messageList.addAll(e.getMessageList()); + } } } } catch (IOException e) { logger.error(e.getMessage(), e); } + if (CollectionUtils.isNotEmpty(messageList)) { + throw new DependencyNotFoundException(messageList); + } // 第三次遍历压缩包,导入attachment-folder/{primaryKey}/xxx文件 try (ZipInputStream zipIs = new ZipInputStream(multipartFile.getInputStream()); ByteArrayOutputStream out = new ByteArrayOutputStream() diff --git a/src/main/java/neatlogic/framework/importexport/exception/DependencyNotFoundException.java b/src/main/java/neatlogic/framework/importexport/exception/DependencyNotFoundException.java new file mode 100644 index 000000000..9495ce31d --- /dev/null +++ b/src/main/java/neatlogic/framework/importexport/exception/DependencyNotFoundException.java @@ -0,0 +1,28 @@ +package neatlogic.framework.importexport.exception; + +import neatlogic.framework.exception.core.ApiRuntimeException; + +import java.util.ArrayList; +import java.util.List; + +public class DependencyNotFoundException extends ApiRuntimeException { + + private List messageList; + + public DependencyNotFoundException(List messageList) { + this.messageList = messageList; + } + + public DependencyNotFoundException(String message) { + this.messageList = new ArrayList<>(); + this.messageList.add(message); + } + + public List getMessageList() { + return messageList; + } + + public void setMessageList(List messageList) { + this.messageList = messageList; + } +} diff --git a/src/main/java/neatlogic/module/framework/importexport/handler/MatrixImportExportHandler.java b/src/main/java/neatlogic/module/framework/importexport/handler/MatrixImportExportHandler.java index e5bd4f83b..9bcc812b0 100644 --- a/src/main/java/neatlogic/module/framework/importexport/handler/MatrixImportExportHandler.java +++ b/src/main/java/neatlogic/module/framework/importexport/handler/MatrixImportExportHandler.java @@ -1,11 +1,16 @@ package neatlogic.module.framework.importexport.handler; +import neatlogic.framework.exception.core.ApiRuntimeException; import neatlogic.framework.importexport.constvalue.FrameworkImportExportHandlerType; +import neatlogic.framework.importexport.core.ImportExportHandler; import neatlogic.framework.importexport.core.ImportExportHandlerBase; +import neatlogic.framework.importexport.core.ImportExportHandlerFactory; import neatlogic.framework.importexport.core.ImportExportHandlerType; import neatlogic.framework.importexport.dto.ImportExportBaseInfoVo; import neatlogic.framework.importexport.dto.ImportExportPrimaryChangeVo; import neatlogic.framework.importexport.dto.ImportExportVo; +import neatlogic.framework.importexport.exception.DependencyNotFoundException; +import neatlogic.framework.importexport.exception.ImportExportHandlerNotFoundException; import neatlogic.framework.matrix.core.IMatrixDataSourceHandler; import neatlogic.framework.matrix.core.MatrixDataSourceHandlerFactory; import neatlogic.framework.matrix.dao.mapper.MatrixMapper; @@ -79,9 +84,22 @@ public class MatrixImportExportHandler extends ImportExportHandlerBase { matrix.setIntegrationUuid((String) newPrimaryKey); } } else if (Objects.equals(matrix.getType(), "cmdbci")) { - Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.CMDB_CI, matrix.getId(), primaryChangeList); - if (newPrimaryKey != null) { - matrix.setCiId((Long) newPrimaryKey); +// Object newPrimaryKey = getNewPrimaryKey(FrameworkImportExportHandlerType.CMDB_CI, matrix.getId(), primaryChangeList); +// if (newPrimaryKey != null) { +// matrix.setCiId((Long) newPrimaryKey); +// } + // 配置项模型不做一起导入,只检查其是否存在 + ImportExportHandler importExportHandler = ImportExportHandlerFactory.getHandler(FrameworkImportExportHandlerType.CMDB_CI.getValue()); + if (importExportHandler == null) { + throw new ImportExportHandlerNotFoundException(FrameworkImportExportHandlerType.CMDB_CI.getText()); + } + ImportExportBaseInfoVo importExportBaseInfoVo = new ImportExportBaseInfoVo(); + importExportBaseInfoVo.setPrimaryKey(matrix.getCiId()); + importExportBaseInfoVo.setType(FrameworkImportExportHandlerType.CMDB_CI.getValue()); + try { + importExportHandler.checkIsExists(importExportBaseInfoVo); + } catch (ApiRuntimeException e) { + throw new DependencyNotFoundException(e.getMessage()); } } matrixDataSourceHandler.importMatrix(matrix); @@ -103,7 +121,20 @@ public class MatrixImportExportHandler extends ImportExportHandlerBase { if (Objects.equals(matrix.getType(), "external")) { doExportData(FrameworkImportExportHandlerType.INTEGRATION, matrixVo.getIntegrationUuid(), dependencyList, zipOutputStream); } else if (Objects.equals(matrix.getType(), "cmdbci")) { - doExportData(FrameworkImportExportHandlerType.CMDB_CI, matrixVo.getCiId(), dependencyList, zipOutputStream); +// doExportData(FrameworkImportExportHandlerType.CMDB_CI, matrixVo.getCiId(), dependencyList, zipOutputStream); + // 配置项模型不做一起导出,只检查其是否存在 + ImportExportHandler importExportHandler = ImportExportHandlerFactory.getHandler(FrameworkImportExportHandlerType.CMDB_CI.getValue()); + if (importExportHandler == null) { + throw new ImportExportHandlerNotFoundException(FrameworkImportExportHandlerType.CMDB_CI.getText()); + } + ImportExportBaseInfoVo importExportBaseInfoVo = new ImportExportBaseInfoVo(); + importExportBaseInfoVo.setPrimaryKey(matrixVo.getCiId()); + importExportBaseInfoVo.setType(FrameworkImportExportHandlerType.CMDB_CI.getValue()); + try { + importExportHandler.checkIsExists(importExportBaseInfoVo); + } catch (ApiRuntimeException e) { + throw new DependencyNotFoundException(e.getMessage()); + } } ImportExportVo importExportVo = new ImportExportVo(this.getType().getValue(), primaryKey, matrixVo.getLabel()); importExportVo.setDataWithObject(matrixVo); -- Gitee