From 6afdb3da0cfd1f34372167edc4d244155dfd825a Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 4 Dec 2024 17:48:20 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E5=92=8C=E8=A1=A8=E5=8D=95=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=E6=98=AF=E8=A1=A8=E5=8D=95=E7=BB=84=E4=BB=B6uuid?= =?UTF-8?q?=E4=BF=9D=E6=8C=81=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1304407751229440]表单复制和表单另存为是表单组件uuid保持不变 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1304407751229440 --- .../core/CustomDependencyHandlerBase.java | 5 +++ .../core/DefaultDependencyHandlerBase.java | 11 +++++ .../dependency/core/DependencyManager.java | 15 ++++++- .../dependency/core/IDependencyHandler.java | 9 +++++ .../neatlogic/framework/util/FormUtil.java | 13 +++--- ...Matrix2FormAttributeDependencyHandler.java | 40 ++++++++++++++++++- .../MatrixAttr2FormAttrDependencyHandler.java | 37 +++++++++++++++++ .../form/service/FormServiceImpl.java | 10 +++-- 8 files changed, 127 insertions(+), 13 deletions(-) diff --git a/src/main/java/neatlogic/framework/dependency/core/CustomDependencyHandlerBase.java b/src/main/java/neatlogic/framework/dependency/core/CustomDependencyHandlerBase.java index 3abf05c07..0c445a99d 100644 --- a/src/main/java/neatlogic/framework/dependency/core/CustomDependencyHandlerBase.java +++ b/src/main/java/neatlogic/framework/dependency/core/CustomDependencyHandlerBase.java @@ -115,6 +115,11 @@ public abstract class CustomDependencyHandlerBase implements IDependencyHandler */ @Override public int delete(Object to) { + return delete(to, null); + } + + @Override + public int delete(Object to, JSONObject config) { return dependencyMapper.deleteDependencyByCaller(getTableName(), getToField(), to); } diff --git a/src/main/java/neatlogic/framework/dependency/core/DefaultDependencyHandlerBase.java b/src/main/java/neatlogic/framework/dependency/core/DefaultDependencyHandlerBase.java index 15bebc226..9826cd67f 100644 --- a/src/main/java/neatlogic/framework/dependency/core/DefaultDependencyHandlerBase.java +++ b/src/main/java/neatlogic/framework/dependency/core/DefaultDependencyHandlerBase.java @@ -81,6 +81,17 @@ public abstract class DefaultDependencyHandlerBase implements IDependencyHandler */ @Override public int delete(Object to) { + return delete(to, null); + } + + /** + * 删除引用关系 + * + * @param to 引用者(下游)值(如:服务uuid) + * @param config 额外数据 + */ + @Override + public int delete(Object to, JSONObject config) { DependencyVo dependencyVo = new DependencyVo(getHandler(), to.toString()); return dependencyMapper.deleteDependency(dependencyVo); } diff --git a/src/main/java/neatlogic/framework/dependency/core/DependencyManager.java b/src/main/java/neatlogic/framework/dependency/core/DependencyManager.java index 242841de1..feec2d8e6 100644 --- a/src/main/java/neatlogic/framework/dependency/core/DependencyManager.java +++ b/src/main/java/neatlogic/framework/dependency/core/DependencyManager.java @@ -92,15 +92,26 @@ public class DependencyManager { * @param to 引用者(下游)值(如:服务uuid) */ public static int delete(Class clazz, Object to) { + return delete(clazz, to, null); + } + + /** + * 删除引用关系 + * + * @param clazz 引用关系处理器类 + * @param to 引用者(下游)值(如:服务uuid) + * @param config 额外数据 + */ + public static int delete(Class clazz, Object to, JSONObject config) { IDependencyHandler dependencyHandler = DependencyHandlerFactory.getHandler(clazz.getSimpleName()); if (to instanceof List) { int sum = 0; for (Object c : (List) to) { - sum += dependencyHandler.delete(c); + sum += dependencyHandler.delete(c, config); } return sum; } else { - return dependencyHandler.delete(to); + return dependencyHandler.delete(to, config); } } diff --git a/src/main/java/neatlogic/framework/dependency/core/IDependencyHandler.java b/src/main/java/neatlogic/framework/dependency/core/IDependencyHandler.java index f954b0e7d..42940916e 100644 --- a/src/main/java/neatlogic/framework/dependency/core/IDependencyHandler.java +++ b/src/main/java/neatlogic/framework/dependency/core/IDependencyHandler.java @@ -86,6 +86,15 @@ public interface IDependencyHandler { */ int delete(Object to); + /** + * 删除引用关系 + * + * @param to 引用者(下游)值(如:服务uuid) + * @param config 额外数据 + * @return + */ + int delete(Object to, JSONObject config); + /** * 删除引用关系 * diff --git a/src/main/java/neatlogic/framework/util/FormUtil.java b/src/main/java/neatlogic/framework/util/FormUtil.java index fb4c2cc5c..335a54409 100644 --- a/src/main/java/neatlogic/framework/util/FormUtil.java +++ b/src/main/java/neatlogic/framework/util/FormUtil.java @@ -122,11 +122,12 @@ public class FormUtil { if (StringUtils.isBlank(matrixUuid)) { return; } + JSONObject dependencyConfig = new JSONObject(); + dependencyConfig.put("formUuid", formUuid); + dependencyConfig.put("formVersionUuid", formVersionUuid); + dependencyConfig.put("sceneUuid", sceneUuid); + dependencyConfig.put("uuid", uuid); if (isSave) { - JSONObject dependencyConfig = new JSONObject(); - dependencyConfig.put("formUuid", formUuid); - dependencyConfig.put("formVersionUuid", formVersionUuid); - dependencyConfig.put("sceneUuid", sceneUuid); DependencyManager.insert(Matrix2FormAttributeDependencyHandler.class, matrixUuid, uuid, dependencyConfig); dependencyConfig.put("matrixUuid", matrixUuid); @@ -166,8 +167,8 @@ public class FormUtil { } } } else { - DependencyManager.delete(Matrix2FormAttributeDependencyHandler.class, uuid); - DependencyManager.delete(MatrixAttr2FormAttrDependencyHandler.class, uuid); + DependencyManager.delete(Matrix2FormAttributeDependencyHandler.class, uuid, dependencyConfig); + DependencyManager.delete(MatrixAttr2FormAttrDependencyHandler.class, uuid, dependencyConfig); } } else if (Objects.equals(handler, FormHandler.FORMTABLEINPUTER.getHandler())) { // 表格输入组件 diff --git a/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java b/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java index 662f0030a..1ffc0d86e 100644 --- a/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java +++ b/src/main/java/neatlogic/module/framework/dependency/handler/Matrix2FormAttributeDependencyHandler.java @@ -16,6 +16,7 @@ import neatlogic.framework.util.FormUtil; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; +import org.springframework.util.DigestUtils; import javax.annotation.Resource; import java.util.ArrayList; @@ -27,6 +28,16 @@ public class Matrix2FormAttributeDependencyHandler extends DefaultDependencyHand @Resource private FormMapper formMapper; + @Override + public int insert(Object from, Object to, JSONObject config) { + return super.insert(from, getGenerateTo(to, config), config); + } + + @Override + public int delete(Object to, JSONObject config) { + return super.delete(getGenerateTo(to, config), config); + } + @Override protected DependencyInfoVo parse(DependencyVo dependencyVo) { JSONObject config = dependencyVo.getConfig(); @@ -53,7 +64,8 @@ public class Matrix2FormAttributeDependencyHandler extends DefaultDependencyHand pathList.add(formVo.getName()); pathList.add(formVersionVo.getVersion().toString()); String sceneUuid = config.getString("sceneUuid"); - FormAttributeVo formAttribute = FormUtil.getFormAttribute(formVersionVo.getFormConfig(), dependencyVo.getTo(), sceneUuid); + String uuid = config.getString("uuid"); + FormAttributeVo formAttribute = FormUtil.getFormAttribute(formVersionVo.getFormConfig(), uuid, sceneUuid); if (formAttribute == null) { return null; } @@ -75,4 +87,30 @@ public class Matrix2FormAttributeDependencyHandler extends DefaultDependencyHand public IFromType getFromType() { return FrameworkFromType.MATRIX; } + + /** + * 由于不同表单或不同版本的属性uuid可能是相同的,所以这里需要重新生成to + * @param to + * @param config + * @return + */ + private String getGenerateTo(Object to, JSONObject config) { + if (MapUtils.isNotEmpty(config)) { + String str = to.toString(); + String formUuid = config.getString("formUuid"); + String formVersionUuid = config.getString("formVersionUuid"); + String sceneUuid = config.getString("sceneUuid"); + if (StringUtils.isNotBlank(sceneUuid)) { + str += "&" + sceneUuid; + } + if (StringUtils.isNotBlank(formVersionUuid)) { + str += "&" + formVersionUuid; + } + if (StringUtils.isNotBlank(formUuid)) { + str += "&" + formUuid; + } + return DigestUtils.md5DigestAsHex(str.getBytes()); + } + return to.toString(); + } } diff --git a/src/main/java/neatlogic/module/framework/dependency/handler/MatrixAttr2FormAttrDependencyHandler.java b/src/main/java/neatlogic/module/framework/dependency/handler/MatrixAttr2FormAttrDependencyHandler.java index d77f8680f..8ba344da0 100644 --- a/src/main/java/neatlogic/module/framework/dependency/handler/MatrixAttr2FormAttrDependencyHandler.java +++ b/src/main/java/neatlogic/module/framework/dependency/handler/MatrixAttr2FormAttrDependencyHandler.java @@ -30,6 +30,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; +import org.springframework.util.DigestUtils; import javax.annotation.Resource; import java.util.ArrayList; @@ -47,6 +48,16 @@ public class MatrixAttr2FormAttrDependencyHandler extends DefaultDependencyHandl @Resource private FormMapper formMapper; + @Override + public int insert(Object from, Object to, JSONObject config) { + return super.insert(from, getGenerateTo(to, config), config); + } + + @Override + public int delete(Object to, JSONObject config) { + return super.delete(getGenerateTo(to, config), config); + } + @Override protected DependencyInfoVo parse(DependencyVo dependencyVo) { JSONObject config = dependencyVo.getConfig(); @@ -91,4 +102,30 @@ public class MatrixAttr2FormAttrDependencyHandler extends DefaultDependencyHandl public IFromType getFromType() { return FrameworkFromType.MATRIXATTR; } + + /** + * 由于不同表单或不同版本的属性uuid可能是相同的,所以这里需要重新生成to + * @param to + * @param config + * @return + */ + private String getGenerateTo(Object to, JSONObject config) { + if (MapUtils.isNotEmpty(config)) { + String str = to.toString(); + String formUuid = config.getString("formUuid"); + String formVersionUuid = config.getString("formVersionUuid"); + String sceneUuid = config.getString("sceneUuid"); + if (StringUtils.isNotBlank(sceneUuid)) { + str += "&" + sceneUuid; + } + if (StringUtils.isNotBlank(formVersionUuid)) { + str += "&" + formVersionUuid; + } + if (StringUtils.isNotBlank(formUuid)) { + str += "&" + formUuid; + } + return DigestUtils.md5DigestAsHex(str.getBytes()); + } + return to.toString(); + } } diff --git a/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java b/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java index 0df4eeeab..dea549fb4 100644 --- a/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java +++ b/src/main/java/neatlogic/module/framework/form/service/FormServiceImpl.java @@ -553,6 +553,7 @@ public class FormServiceImpl implements FormService, IFormCrossoverService { searchVo.setFormVersionUuid(formVersion.getUuid()); List formAttributeList = formMapper.getFormAttributeList(searchVo); if (StringUtils.isBlank(tag)) { + formAttributeList.sort(Comparator.comparing(FormAttributeVo::getLabel)); return formAttributeList; } Set tagSet = new HashSet<>(); @@ -562,18 +563,19 @@ public class FormServiceImpl implements FormService, IFormCrossoverService { tagSet.add(formAttributeVo.getTag()); } } + List resultList = new ArrayList<>(); if (tagSet.contains(tag)) { - List formExtendAttributeList = new ArrayList<>(); List list = formMapper.getFormExtendAttributeListByFormUuidAndFormVersionUuid(formUuid, formVersion.getUuid()); for (FormAttributeVo formAttributeVo : list) { if (Objects.equals(formAttributeVo.getTag(), tag) && formAttributeVo.getParentUuid() == null) { - formExtendAttributeList.add(formAttributeVo); + resultList.add(formAttributeVo); } } - return formExtendAttributeList; } else { - return getFormAttributeList(formUuid, formName, tag); + resultList = getFormAttributeList(formUuid, formName, tag); } + resultList.sort(Comparator.comparing(FormAttributeVo::getLabel)); + return resultList; } @Override -- Gitee