From 5be7e0632a1ce0cefc58270d8aac0bcf8091ae9f Mon Sep 17 00:00:00 2001 From: linbangquan <1437892690@qq.com> Date: Tue, 19 Dec 2023 15:32:06 +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-=E5=AF=BC=E5=85=A5=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=AF=BC=E5=85=A5=E7=9A=84=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=B7=B2=E5=AD=98=E5=9C=A8=EF=BC=8C=E4=B8=94=E8=A2=AB=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E6=B5=81=E7=A8=8B=E5=BC=95=E7=94=A8=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1049304318312448]流程管理-导入流程时,导入的依赖已存在,且被其他流程引用,导入失败 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1049304318312448 --- .../handler/ProcessImportExportHandler.java | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java b/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java index d694ba30f..f9b5b553c 100644 --- a/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java +++ b/src/main/java/neatlogic/module/process/importexport/handler/ProcessImportExportHandler.java @@ -11,6 +11,7 @@ import neatlogic.framework.importexport.dto.ImportExportVo; import neatlogic.framework.process.constvalue.ProcessImportExportHandlerType; import neatlogic.framework.process.dto.ProcessVo; import neatlogic.framework.process.exception.process.ProcessNotFoundException; +import neatlogic.framework.util.UuidUtil; import neatlogic.module.process.dao.mapper.ProcessMapper; import neatlogic.module.process.service.ProcessService; import org.apache.commons.collections4.CollectionUtils; @@ -19,7 +20,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.zip.ZipOutputStream; @@ -65,14 +68,16 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { public Object importData(ImportExportVo importExportVo, List primaryChangeList) { ProcessVo process = importExportVo.getData().toJavaObject(ProcessVo.class); ProcessVo oldProcess = processMapper.getProcessByName(importExportVo.getName()); + boolean isChangeUuid = false; if (oldProcess != null) { process.setUuid(oldProcess.getUuid()); } else { if (processMapper.getProcessByUuid(process.getUuid()) != null) { process.setUuid(null); + isChangeUuid = true; } } - importHandle(process, primaryChangeList); + importHandle(process, primaryChangeList, isChangeUuid); process.makeupConfigObj(); processService.saveProcess(process); return process.getUuid(); @@ -82,9 +87,10 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { * 导入处理,更新依赖组件的唯一标识 * @param process * @param primaryChangeList + * @param isChangeUuid */ - private void importHandle(ProcessVo process, List primaryChangeList) { - dependencyHandle(IMPORT, process, null, null, primaryChangeList); + private void importHandle(ProcessVo process, List primaryChangeList, boolean isChangeUuid) { + dependencyHandle(IMPORT, process, null, null, primaryChangeList, isChangeUuid); } @Override @@ -107,7 +113,7 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { * @param zipOutputStream */ private void exportHandle(ProcessVo process, List dependencyList, ZipOutputStream zipOutputStream) { - dependencyHandle(EXPORT, process, dependencyList, zipOutputStream, null); + dependencyHandle(EXPORT, process, dependencyList, zipOutputStream, null, false); } /** @@ -118,8 +124,10 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { * @param dependencyList * @param zipOutputStream * @param primaryChangeList + * @param isChangeUuid */ - private void dependencyHandle(String action, ProcessVo process, List dependencyList, ZipOutputStream zipOutputStream, List primaryChangeList) { + private void dependencyHandle(String action, ProcessVo process, List dependencyList, ZipOutputStream zipOutputStream, List primaryChangeList, boolean isChangeUuid) { + Map oldUuid2NewUuidMap = new HashMap<>(); JSONObject config = process.getConfig(); JSONObject processObj = config.getJSONObject("process"); JSONArray slaList = processObj.getJSONArray("slaList"); @@ -130,6 +138,12 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { if (MapUtils.isEmpty(slaObj)) { continue; } + if (isChangeUuid) { + String oldUuid = slaObj.getString("uuid"); + String newUuid = UuidUtil.randomUuid(); + slaObj.put("uuid", newUuid); + oldUuid2NewUuidMap.put(oldUuid, newUuid); + } JSONArray notifyPolicyList = slaObj.getJSONArray("notifyPolicyList"); if (CollectionUtils.isEmpty(notifyPolicyList)) { continue; @@ -247,6 +261,12 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { if (MapUtils.isEmpty(stepObj)) { continue; } + if (isChangeUuid) { + String oldUuid = stepObj.getString("uuid"); + String newUuid = UuidUtil.randomUuid(); + stepObj.put("uuid", newUuid); + oldUuid2NewUuidMap.put(oldUuid, newUuid); + } JSONObject stepConfig = stepObj.getJSONObject("stepConfig"); if (MapUtils.isEmpty(stepConfig)) { continue; @@ -412,5 +432,28 @@ public class ProcessImportExportHandler extends ImportExportHandlerBase { } } } + + if (isChangeUuid) { + JSONArray connectionList = processObj.getJSONArray("connectionList"); + if (CollectionUtils.isNotEmpty(connectionList)) { + for (int i = 0; i < connectionList.size(); i++) { + JSONObject connectionObj = connectionList.getJSONObject(i); + if (MapUtils.isEmpty(connectionObj)) { + continue; + } + String oldUuid = connectionObj.getString("uuid"); + String newUuid = UuidUtil.randomUuid(); + connectionObj.put("uuid", newUuid); + oldUuid2NewUuidMap.put(oldUuid, newUuid); + } + } + if (MapUtils.isNotEmpty(oldUuid2NewUuidMap)) { + String configStr = config.toJSONString(); + for (Map.Entry entry : oldUuid2NewUuidMap.entrySet()) { + configStr = configStr.replace(entry.getKey(), entry.getValue()); + } + process.setConfig(configStr); + } + } } } -- Gitee