diff --git a/src/main/java/neatlogic/framework/dependency/core/CustomDependencyHandlerBase.java b/src/main/java/neatlogic/framework/dependency/core/CustomDependencyHandlerBase.java index 3abf05c0790cd9b9b35f153c6e390877444895cf..0c445a99d166f2c56bba66667ea322f11e515497 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 15bebc2261041ffe5823c127ff989cde3f4c2dbb..9826cd67fb26cc309ec3c57ca29725056caf51ec 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 242841de16125991ae2edeaf4821b63e5c25f094..feec2d8e6be5eaddd61cf29f52b76dd2e6acb3bf 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 f954b0e7d264f11e078f32e1f9cf573fe33e3e1c..42940916efb0163e9c963d2eed807effe25dc870 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 fb4c2cc5c4fa67b84b4c997472d3c5e1634cc0e2..335a5440939c8d5d84439dfa7942f7c1d3457a63 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 662f0030a3f392dc2d40aa6dce7614f07217b58a..1ffc0d86e092e03beaf6b96b5dc3ca934c2a5425 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 d77f8680f5c693d50b86a52ea009b403263c9fd5..8ba344da077776df46ff829cc15b41d900c74f58 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 0df4eeeabe1e4062a03532a68384d46a9d5c3ab9..dea549fb45191662943199c267437f4eb61f5121 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