From 6a4de0022652fef623fb1a60ad4ae77cecd1c3a9 Mon Sep 17 00:00:00 2001 From: icanci Date: Mon, 18 Sep 2023 22:54:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bic-config/components/ruleTreeList.vue | 26 +++++++++++++++++-- .../bic-config/components/ruleTreeNode.vue | 5 +++- .../bic-config/dialog/unit-view-tree-form.vue | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue index 7e0536f..bd446b7 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue @@ -104,13 +104,35 @@ export default { methods: { async load(data) { let vm = this + let relationModel = data.relationModel; + let usedNodeSet = new Set() + vm.getAllNodeUuids(relationModel, usedNodeSet) + debugger + for (let i = 0; i < data.selectors.nodeOptions.length; i++) { + let nodeOption = data.selectors.nodeOptions[i]; + nodeOption.disabled = usedNodeSet.has(nodeOption.value); + } + vm.selectors = data.selectors - vm.relationModel = data.relationModel + debugger + console.log(vm.selectors) + vm.relationModel = relationModel vm.showSelf = true }, getRelationModel() { return this.relationModel - } + }, + getAllNodeUuids(relationModel, usedNodeSet) { + let vm = this + if (!relationModel || relationModel.length === 0) { + return + } + for (let i = 0; i < relationModel.length; i++) { + usedNodeSet.add(relationModel[i].sourceNodeUuid) + usedNodeSet.add(relationModel[i].targetNodeUuid) + vm.getAllNodeUuids(relationModel[i].children, usedNodeSet) + } + }, } } diff --git a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue index cca9878..8b82b43 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue @@ -93,6 +93,7 @@ v-for="item in selectors.nodeOptions" :key="item.value" :label="item.label" + :disabled="item.disabled" :value="item.value"> @@ -120,6 +121,7 @@ @@ -189,9 +191,10 @@ label-position="right" ref="relationModelDetailForm" :model="relationModelDetail" label-width="180px"> - + " + targetName } } } -- Gitee From d1a83bd3f3a5067ec57c609c0fa884e793f571e3 Mon Sep 17 00:00:00 2001 From: icanci Date: Tue, 19 Sep 2023 20:21:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=BA=A0=E5=AF=9F=E5=9B=BE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/icanci/loopstack/bic/biz/dts/DTS.java | 16 +++ .../bic/biz/dts/GraphDtsServiceProxy.java | 10 +- .../impl/UnitViewTreeGraphDtsServiceImpl.java | 2 + views/src/main/resources/vueboot/src/main.js | 10 +- .../vueboot/src/views/bic-burying/burying.vue | 3 +- .../bic-config/components/ruleTreeList.vue | 3 - .../bic-config/components/ruleTreeNode.vue | 99 ++++++++++++++++--- .../src/views/bic-config/edge-config.vue | 3 +- .../views/bic-config/edge-style-config.vue | 3 +- .../src/views/bic-config/node-config.vue | 3 +- .../views/bic-config/node-style-config.vue | 3 +- .../src/views/bic-config/node-vue-config.vue | 3 +- .../src/views/bic-config/system-config.vue | 4 +- .../src/views/bic-config/unit-view-tree.vue | 3 +- .../src/views/bic-config/use-case-config.vue | 3 +- 15 files changed, 141 insertions(+), 27 deletions(-) create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java new file mode 100644 index 0000000..0e0780d --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.biz.dts; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/19 20:16 + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DTS { + Class value(); +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java index 28cbc06..1b9c439 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java @@ -1,7 +1,9 @@ package cn.icanci.loopstack.bic.biz.dts; +import java.util.Collection; import java.util.Map; +import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -22,7 +24,13 @@ public class GraphDtsServiceProxy implements GraphDtsService, Applicatio @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map beansOfType = applicationContext.getBeansOfType(GraphDtsService.class); - beansOfType.forEach((k, v) -> graphDtsServiceMap.put(v.getClass().getInterfaces()[0], v)); + Collection services = beansOfType.values(); + for (GraphDtsService service : services) { + DTS dts = AopUtils.getTargetClass(service).getAnnotation(DTS.class); + if (dts != null) { + graphDtsServiceMap.put(dts.value(), service); + } + } } @Override diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java index 35ce494..eb1ec9b 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java @@ -7,6 +7,7 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; import cn.hutool.core.lang.Pair; +import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; import cn.icanci.loopstack.bic.biz.service.UnitViewService; import cn.icanci.loopstack.bic.common.model.graph.*; @@ -16,6 +17,7 @@ import cn.icanci.loopstack.bic.common.model.graph.*; * @since 1.0 Created in 2023/09/17 16:33 */ @Service +@DTS(UnitViewTreeVO.class) public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService { @Resource private UnitViewService unitViewService; diff --git a/views/src/main/resources/vueboot/src/main.js b/views/src/main/resources/vueboot/src/main.js index 21e7008..72949ef 100644 --- a/views/src/main/resources/vueboot/src/main.js +++ b/views/src/main/resources/vueboot/src/main.js @@ -33,7 +33,6 @@ Vue.use(CodeView); import Vuep from 'vuep' - Vue.use(Vuep) /** * If you don't want to use mock-server @@ -67,7 +66,14 @@ Vue.prototype.$cloneObj = function (data) { Vue.prototype.baseDateFormat = function (date) { return moment(date).format('YYYY-MM-DD HH:mm:ss'); } - +Vue.prototype.loading = function () { + return this.$loading({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }); +} new Vue({ el: '#app', diff --git a/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue b/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue index 8413763..b3e063f 100644 --- a/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue +++ b/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue @@ -190,8 +190,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await buryingPageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue index bd446b7..4c3fc88 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue @@ -107,15 +107,12 @@ export default { let relationModel = data.relationModel; let usedNodeSet = new Set() vm.getAllNodeUuids(relationModel, usedNodeSet) - debugger for (let i = 0; i < data.selectors.nodeOptions.length; i++) { let nodeOption = data.selectors.nodeOptions[i]; nodeOption.disabled = usedNodeSet.has(nodeOption.value); } vm.selectors = data.selectors - debugger - console.log(vm.selectors) vm.relationModel = relationModel vm.showSelf = true }, diff --git a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue index 8b82b43..30a2379 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue @@ -85,9 +85,11 @@ style="line-height: 40px;height: 40px;display: flex;" :inline="true" class="demo-form-inline"> - + - + @@ -280,6 +288,7 @@ export default { }, modelDetailFlag: false, relationModelDetail: {}, + nodeUuid: '', } }, created() { @@ -300,7 +309,7 @@ export default { } let obj = vm.$cloneObj(vm.tempRelationModel); - obj.sourceNodeUuid = currentModel.targetNodeUuid + obj.sourceNodeUuid = currentModel.sourceNodeUuid obj.sourceStyleUuid = currentModel.sourceStyleUuid obj.sourceNodeDataKey = currentModel.sourceNodeDataKey obj.sourceNodeDataMode = currentModel.sourceNodeDataMode @@ -319,9 +328,9 @@ export default { let obj = vm.$cloneObj(vm.tempRelationModel); obj.sourceNodeUuid = currentModel.targetNodeUuid - obj.sourceStyleUuid = currentModel.sourceStyleUuid - obj.sourceNodeDataKey = currentModel.sourceNodeDataKey - obj.sourceNodeDataMode = currentModel.sourceNodeDataMode + obj.sourceStyleUuid = currentModel.targetStyleUuid + obj.sourceNodeDataKey = currentModel.targetNodeDataKey + obj.sourceNodeDataMode = currentModel.targetNodeDataMode currentModel.children.push(obj) vm.$forceUpdate() }, @@ -372,7 +381,73 @@ export default { refreshSelf() { let vm = this vm.$forceUpdate() - } - } + }, + refreshNodeUuid(nodeUuid) { + this.nodeUuid = nodeUuid + }, + // 无需实现 + sourceNodeChange(value) { + let vm = this + // 将node禁用掉、或者其他的node释放掉 + vm.releaseNode(value) + vm.$forceUpdate() + }, + targetNodeChange(value, index) { + let vm = this + // 将node禁用掉、或者其他的node释放掉 + vm.releaseNode(value) + // 如果有孩子节点,需要将孩子节点的数据更新 + let children = vm.relationModel[index].children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceNodeUuid = value + } + } + vm.$forceUpdate() + }, + releaseNode(value) { + let vm = this + for (let i = 0; i < vm.selectors.nodeOptions.length; i++) { + let nodeOption = vm.selectors.nodeOptions[i]; + if (nodeOption.value === value) { + nodeOption.disabled = true + } + if (nodeOption.value === vm.nodeUuid) { + nodeOption.disabled = false + } + } + }, + // 对于节点的样式、匹配类型、节点匹配值,只能从父节点进行修改和继承 + targetStyleChange() { + let vm = this + let children = vm.relationModelDetail.children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceStyleUuid = vm.relationModelDetail.targetStyleUuid + } + } + vm.$forceUpdate() + }, + targetNodeDataModeChange() { + let vm = this + let children = vm.relationModelDetail.children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceNodeDataMode = vm.relationModelDetail.targetNodeDataMode + } + } + vm.$forceUpdate() + }, + targetNodeDataKeyChange() { + let vm = this + let children = vm.relationModelDetail.children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceNodeDataKey = vm.relationModelDetail.targetNodeDataKey + } + } + vm.$forceUpdate() + }, + }, } diff --git a/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue index c319528..2af8e7f 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue @@ -136,8 +136,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await edgePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close(); if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue index 1379f41..e3cc4c7 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue @@ -135,8 +135,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await edgeStylePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue index b304dca..e96e3ed 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue @@ -136,8 +136,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await nodePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue index 4e4df4f..5eff451 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue @@ -136,8 +136,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await nodeStylePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue index dd2d888..f837ac9 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue @@ -181,8 +181,9 @@ export default { async query() { let vm = this + let loading = vm.loading(); let ret = await nodeVuePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue index a6b599b..401c950 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue @@ -113,8 +113,10 @@ export default { methods: { async query() { let vm = this + + let loading = vm.loading(); let ret = await systemPageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close(); if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue b/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue index 30b0842..14f0b39 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue @@ -146,8 +146,9 @@ export default { async query() { let vm = this + let loading = vm.loading(); let ret = await unitViewTreePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue index 0244eca..84a163b 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue @@ -135,8 +135,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await useCasePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { -- Gitee From 04fdd9db929e50e5f35394d593e8cb065d71669b Mon Sep 17 00:00:00 2001 From: icanci Date: Tue, 19 Sep 2023 20:36:51 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=BA=A0=E5=AF=9F=E5=9B=BE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../icanci/loopstack/bic/biz/cache/.gitkeep | 0 .../impl/UnitViewTreeGraphDtsServiceImpl.java | 78 ++++++++++++++++++- .../service/impl/EdgeStyleServiceImpl.java | 1 + .../service/impl/NodeStyleServiceImpl.java | 3 +- .../bic/common/model/graph/UnitNodeVO.java | 17 ++++ 5 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/.gitkeep diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/.gitkeep b/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java index eb1ec9b..ba0bb60 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java @@ -1,15 +1,21 @@ package cn.icanci.loopstack.bic.biz.dts.impl; import java.util.List; +import java.util.Set; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; + import cn.hutool.core.lang.Pair; import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; import cn.icanci.loopstack.bic.biz.service.UnitViewService; +import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import cn.icanci.loopstack.bic.common.model.graph.*; /** @@ -55,10 +61,74 @@ public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService, List> adapter2Pair(List relationModel) { - // TODO 处理结对数据 前端也需要处理,这里不太优雅 - // 结对 目标找到所有的node和所有的edge - // 同一个node的样式必须完全一样 - return null; + List edges = Lists.newArrayList(); + Set nodes = Sets.newHashSet(); + loopAdapter(edges, nodes, relationModel); + return new Pair<>(edges, Lists.newArrayList(nodes)); + } + + private void loopAdapter(List edges, Set nodes, List relationModel) { + for (UnitViewTreeRelationVO rm : relationModel) { + nodes.add(buildSourceNode(rm)); + nodes.add(buildTargetNode(rm)); + edges.add(buildEdge(rm)); + if (CollectionUtils.isNotEmpty(rm.getChildren())) { + loopAdapter(edges, nodes, rm.getChildren()); + } + } + } + + /** + * 构建Source + * + * @param rm rm + * @return UnitNodeVO + */ + private UnitNodeVO buildSourceNode(UnitViewTreeRelationVO rm) { + UnitNodeVO node = new UnitNodeVO(); + node.setNodeUuid(rm.getSourceNodeUuid()); + node.setStyleUuid(rm.getSourceStyleUuid()); + node.setNodeDataMode(rm.getSourceNodeDataMode()); + node.setNodeDataKey(rm.getSourceNodeDataKey()); + node.setNodeType(NodeTypeEnum.CHILD); + return node; + } + + /** + * 构建Target + * + * @param rm rm + * @return UnitNodeVO + */ + private UnitNodeVO buildTargetNode(UnitViewTreeRelationVO rm) { + UnitNodeVO node = new UnitNodeVO(); + node.setNodeUuid(rm.getTargetNodeUuid()); + node.setStyleUuid(rm.getTargetStyleUuid()); + node.setNodeDataMode(rm.getTargetNodeDataMode()); + node.setNodeDataKey(rm.getTargetNodeDataKey()); + node.setNodeType(NodeTypeEnum.CHILD); + return node; + } + + /** + * 构建Edge + * + * @param rm rm + * @return UnitEdgeVO + */ + private UnitEdgeVO buildEdge(UnitViewTreeRelationVO rm) { + UnitEdgeVO edge = new UnitEdgeVO(); + edge.setHoverName(rm.getHoverName()); + edge.setSourceUuid(rm.getSourceNodeUuid()); + edge.setTargetUuid(rm.getTargetNodeUuid()); + edge.setStyleUuid(rm.getEdgeStyleUuid()); + return edge; } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java index 2aa3190..5f75591 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java @@ -45,6 +45,7 @@ public class EdgeStyleServiceImpl implements EdgeStyleService { } else { edgeStyleDAO.update(edgeStyleMapper.vo2do(edgeStyleVO)); } + // TODO 最后补充更新视图的逻辑,因为这个地方会构建缓存 } @Override diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java index 6137588..16e255a 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java @@ -38,13 +38,14 @@ public class NodeStyleServiceImpl implements NodeStyleService { @Override public void save(NodeStyleVO nodeStyleVO) { // TODO 日志记录 - // TODO 更新视图 if (doInsert(nodeStyleVO)) { NodeStyleDO insert = nodeStyleMapper.vo2do(nodeStyleVO); nodeStyleDAO.insert(insert); } else { nodeStyleDAO.update(nodeStyleMapper.vo2do(nodeStyleVO)); } + // 更新视图样式 + // TODO 最后补充更新视图的逻辑,因为这个地方会构建缓存 } @Override diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java index bfa574d..266a27e 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java @@ -4,6 +4,8 @@ import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import lombok.Data; +import java.util.Objects; + /** * 图结构的节点 * @@ -22,4 +24,19 @@ public class UnitNodeVO { private String nodeDataKey; /** 节点类型 */ private NodeTypeEnum nodeType; + + @Override + public boolean equals(Object object) { + if (this == object) + return true; + if (object == null || getClass() != object.getClass()) + return false; + UnitNodeVO that = (UnitNodeVO) object; + return Objects.equals(nodeUuid, that.nodeUuid); + } + + @Override + public int hashCode() { + return Objects.hash(nodeUuid); + } } -- Gitee