diff --git a/src/main/java/neatlogic/framework/importexport/core/ImportExportHandlerFactory.java b/src/main/java/neatlogic/framework/importexport/core/ImportExportHandlerFactory.java index c655b04dfe0d79d7e27d27b2f42cbbf1483f0ab2..6c34167de5c983565be70123af9ba55c4c5e3e6e 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 0000000000000000000000000000000000000000..9495ce31d605b1b7f5c4f36eeca29d91efdfe7dc --- /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 e5bd4f83bcf0c5d89f9fac0eb2cfea0438e56a90..9bcc812b0fd22297b571c3ec69215b475fe705ae 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);