From a5599660c80e4cec2195b4fa06712e9edae72785 Mon Sep 17 00:00:00 2001 From: Hongfei Sun Date: Thu, 12 Sep 2024 16:03:39 +0800 Subject: [PATCH 1/4] Update pom.xml --- pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pom.xml b/pom.xml index e50124a..9ddf3c7 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,14 @@ view-object-rtwebapi view-object-api + + + scm:git:git://git.iec.io/gsp-cloud-ds/bef/ubml/view-object-model.git + scm:git:ssh://git@git.iec.io:6060/gsp-cloud-ds/bef/ubml/view-object-model.git + https://git.iec.io/gsp-cloud-ds/bef/ubml/view-object-model + HEAD + + 8 8 -- Gitee From 51d06bfd5e25b7dd2924ffd20a26d58f2cb5b018 Mon Sep 17 00:00:00 2001 From: GitLab CI Bot Date: Thu, 12 Sep 2024 08:13:01 +0000 Subject: [PATCH 2/4] [maven-release-plugin] prepare release v0.1.4 --- pom.xml | 4 ++-- view-object-api/pom.xml | 2 +- view-object-manager/pom.xml | 2 +- view-object-model/pom.xml | 2 +- view-object-rtwebapi/pom.xml | 2 +- view-object-voextendinfo-server-api/pom.xml | 2 +- view-object-voextendinfo-server-core/pom.xml | 2 +- view-object-webapi/pom.xml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 9ddf3c7..d07a670 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ com.inspur.edp viewObject-model1 pom - 0.1.4-SNAPSHOT + 0.1.4 view-object-model view-object-manager @@ -42,7 +42,7 @@ scm:git:git://git.iec.io/gsp-cloud-ds/bef/ubml/view-object-model.git scm:git:ssh://git@git.iec.io:6060/gsp-cloud-ds/bef/ubml/view-object-model.git https://git.iec.io/gsp-cloud-ds/bef/ubml/view-object-model - HEAD + v0.1.4 diff --git a/view-object-api/pom.xml b/view-object-api/pom.xml index 1a8a540..4f9c6eb 100644 --- a/view-object-api/pom.xml +++ b/view-object-api/pom.xml @@ -20,7 +20,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 view-object-api diff --git a/view-object-manager/pom.xml b/view-object-manager/pom.xml index e905b69..6185f32 100644 --- a/view-object-manager/pom.xml +++ b/view-object-manager/pom.xml @@ -21,7 +21,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 view-object-manager diff --git a/view-object-model/pom.xml b/view-object-model/pom.xml index 8d3b3cb..968bf20 100644 --- a/view-object-model/pom.xml +++ b/view-object-model/pom.xml @@ -21,7 +21,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 view-object-model diff --git a/view-object-rtwebapi/pom.xml b/view-object-rtwebapi/pom.xml index 3fd7cd1..846f381 100644 --- a/view-object-rtwebapi/pom.xml +++ b/view-object-rtwebapi/pom.xml @@ -20,7 +20,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 view-object-rtwebapi diff --git a/view-object-voextendinfo-server-api/pom.xml b/view-object-voextendinfo-server-api/pom.xml index 246b3c9..14db8f1 100644 --- a/view-object-voextendinfo-server-api/pom.xml +++ b/view-object-voextendinfo-server-api/pom.xml @@ -19,7 +19,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 4.0.0 diff --git a/view-object-voextendinfo-server-core/pom.xml b/view-object-voextendinfo-server-core/pom.xml index 905de8c..87a7f6f 100644 --- a/view-object-voextendinfo-server-core/pom.xml +++ b/view-object-voextendinfo-server-core/pom.xml @@ -19,7 +19,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 4.0.0 diff --git a/view-object-webapi/pom.xml b/view-object-webapi/pom.xml index 28a90c2..b185c55 100644 --- a/view-object-webapi/pom.xml +++ b/view-object-webapi/pom.xml @@ -21,7 +21,7 @@ com.inspur.edp viewObject-model1 - 0.1.4-SNAPSHOT + 0.1.4 view-object-webapi -- Gitee From 23289619c7a03e313d067b99d7215d6726912b45 Mon Sep 17 00:00:00 2001 From: GitLab CI Bot Date: Thu, 12 Sep 2024 08:13:01 +0000 Subject: [PATCH 3/4] [maven-release-plugin] prepare for next development iteration --- pom.xml | 4 ++-- view-object-api/pom.xml | 2 +- view-object-manager/pom.xml | 2 +- view-object-model/pom.xml | 2 +- view-object-rtwebapi/pom.xml | 2 +- view-object-voextendinfo-server-api/pom.xml | 2 +- view-object-voextendinfo-server-core/pom.xml | 2 +- view-object-webapi/pom.xml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index d07a670..0157175 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ com.inspur.edp viewObject-model1 pom - 0.1.4 + 0.2.0-SNAPSHOT view-object-model view-object-manager @@ -42,7 +42,7 @@ scm:git:git://git.iec.io/gsp-cloud-ds/bef/ubml/view-object-model.git scm:git:ssh://git@git.iec.io:6060/gsp-cloud-ds/bef/ubml/view-object-model.git https://git.iec.io/gsp-cloud-ds/bef/ubml/view-object-model - v0.1.4 + HEAD diff --git a/view-object-api/pom.xml b/view-object-api/pom.xml index 4f9c6eb..5bae2b5 100644 --- a/view-object-api/pom.xml +++ b/view-object-api/pom.xml @@ -20,7 +20,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT view-object-api diff --git a/view-object-manager/pom.xml b/view-object-manager/pom.xml index 6185f32..7512825 100644 --- a/view-object-manager/pom.xml +++ b/view-object-manager/pom.xml @@ -21,7 +21,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT view-object-manager diff --git a/view-object-model/pom.xml b/view-object-model/pom.xml index 968bf20..153d13d 100644 --- a/view-object-model/pom.xml +++ b/view-object-model/pom.xml @@ -21,7 +21,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT view-object-model diff --git a/view-object-rtwebapi/pom.xml b/view-object-rtwebapi/pom.xml index 846f381..934a657 100644 --- a/view-object-rtwebapi/pom.xml +++ b/view-object-rtwebapi/pom.xml @@ -20,7 +20,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT view-object-rtwebapi diff --git a/view-object-voextendinfo-server-api/pom.xml b/view-object-voextendinfo-server-api/pom.xml index 14db8f1..b68409c 100644 --- a/view-object-voextendinfo-server-api/pom.xml +++ b/view-object-voextendinfo-server-api/pom.xml @@ -19,7 +19,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT 4.0.0 diff --git a/view-object-voextendinfo-server-core/pom.xml b/view-object-voextendinfo-server-core/pom.xml index 87a7f6f..2536e29 100644 --- a/view-object-voextendinfo-server-core/pom.xml +++ b/view-object-voextendinfo-server-core/pom.xml @@ -19,7 +19,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT 4.0.0 diff --git a/view-object-webapi/pom.xml b/view-object-webapi/pom.xml index b185c55..0fd1472 100644 --- a/view-object-webapi/pom.xml +++ b/view-object-webapi/pom.xml @@ -21,7 +21,7 @@ com.inspur.edp viewObject-model1 - 0.1.4 + 0.2.0-SNAPSHOT view-object-webapi -- Gitee From c96e131eba64c05f5977c33ad610efcb72b7a895 Mon Sep 17 00:00:00 2001 From: sunhongfei01 Date: Fri, 18 Oct 2024 16:39:57 +0800 Subject: [PATCH 4/4] =?UTF-8?q?1.IDP=E6=8E=A8=E9=80=81BE=E5=90=8C=E6=AD=A5?= =?UTF-8?q?VO=E6=94=AF=E6=8C=81=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=202.=E6=9F=A5=E8=AF=A2=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E5=85=B3=E8=81=94BE=E6=97=B6=E5=BA=94=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E6=89=BE=E4=B8=8D=E5=88=B0=E7=9A=84BE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../viewmodel/common/ConvertUtils.java | 9 +- .../viewmodel/common/ConvertVoUtils.java | 206 +++++++++++++----- .../viewmodel/common/LinkBeUtils.java | 17 +- 3 files changed, 167 insertions(+), 65 deletions(-) diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java index 015e938..8dbb684 100644 --- a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertUtils.java @@ -67,10 +67,8 @@ import java.util.stream.Collectors; /** * The Tool Of Convert Between Busiess Entity And View Model * - * @ClassName: ConvertUtils - * @Author: Benjamin Gong - * @Date: 2021/1/11 17:13 - * @Version: V1.0 + * @author Benjamin Gong + * @version 2021/1/11 17:13 */ public final class ConvertUtils { private static final String AUTO_GEN_VM_PREFIX = "GenVo"; @@ -291,7 +289,6 @@ public final class ConvertUtils { * @param vmObject * @param parentObjIDElementId */ - private static void convertObjectSelfInfo(IGspCommonObject cmObject, GspViewObject vmObject, String parentObjIDElementId, GspVoObjectSourceType objSourceType) { List elementList = vmObject.getContainElements().stream().filter(item -> item.getIsVirtual() == false).collect(Collectors.toList()); @@ -414,7 +411,7 @@ public final class ConvertUtils { * @param viewObj * @param elementMappings */ - public static void updateColumnGenerateId(IGspCommonObject beObject, GspViewObject viewObj, java.util.HashMap elementMappings) { + public static void updateColumnGenerateId(IGspCommonObject beObject, GspViewObject viewObj, Map elementMappings) { if (elementMappings.containsKey(beObject.getColumnGenerateID().getElementID())) { viewObj.getColumnGenerateID().setElementID(elementMappings.get(beObject.getColumnGenerateID().getElementID())); } diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java index 6864c4e..ee41251 100644 --- a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/ConvertVoUtils.java @@ -19,19 +19,30 @@ package com.inspur.edp.formserver.viewmodel.common; import com.inspur.edp.bef.bizentity.GspBizEntityObject; import com.inspur.edp.bef.bizentity.GspBusinessEntity; import com.inspur.edp.cef.designtime.api.IGspCommonField; +import com.inspur.edp.cef.designtime.api.collection.GspAssociationCollection; +import com.inspur.edp.cef.designtime.api.collection.GspFieldCollection; +import com.inspur.edp.cef.designtime.api.element.GspAssociation; +import com.inspur.edp.cef.designtime.api.element.GspAssociationKey; import com.inspur.edp.das.commonmodel.IGspCommonElement; import com.inspur.edp.das.commonmodel.IGspCommonObject; import com.inspur.edp.das.commonmodel.collection.GspObjectCollection; +import com.inspur.edp.das.commonmodel.entity.GspCommonElement; import com.inspur.edp.formserver.viewmodel.GspViewModel; import com.inspur.edp.formserver.viewmodel.GspViewModelElement; import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.formserver.viewmodel.collection.VMElementCollection; import com.inspur.edp.formserver.viewmodel.collection.ViewObjectCollection; +import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementMapping; import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoElementSourceType; import com.inspur.edp.formserver.viewmodel.common.mapping.GspVoObjectSourceType; +import com.inspur.edp.formserver.viewmodel.exception.ViewModelException; +import com.inspur.edp.formserver.viewmodel.exception.VoModelErrorCodes; import io.iec.edp.caf.commons.utils.CollectionUtils; import java.util.ArrayList; -import java.util.Iterator; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; //be上新增加的对象,字段等,同步到vo上,IDP用 public class ConvertVoUtils { @@ -40,7 +51,7 @@ public class ConvertVoUtils { GspBizEntityObject bizObject = be.getMainObject(); GspViewObject viewObject = viewModel.getMainObject(); - dealObject(be, bizObject, viewObject); + dealObject(be, bizObject, viewObject, null); dealActions(be, viewModel); return viewModel; } @@ -56,14 +67,20 @@ public class ConvertVoUtils { utils.linkActions(model); } - private static void dealObject(GspBusinessEntity be, GspBizEntityObject bizObject, GspViewObject viewObject) { + /** + * VO同步对象 + * @param be 业务实体 + * @param bizObject 业务实体节点 + * @param viewObject 视图对象节点 + * @param parentVoIDElementId 父节点的唯一标识字段的唯一标识 + */ + private static void dealObject(GspBusinessEntity be, GspBizEntityObject bizObject, GspViewObject viewObject, String parentVoIDElementId) { dealObjectBasicInfo(bizObject, viewObject); - dealElements(be, bizObject, viewObject); + dealElements(bizObject, viewObject); - dealObjectSelfInfo(bizObject, viewObject); + dealObjectSelfInfo(bizObject, viewObject, parentVoIDElementId); //联动中处理 -// dealModifyChildObjects(be,bizObject,viewObject); dealAddChildObjects(be, bizObject, viewObject); } @@ -77,7 +94,7 @@ public class ConvertVoUtils { GspViewObject gspViewObject = getExistBizChildObject(viewObject, beObj.getID()); // 若存在对应子对象, 则递归同步 if (gspViewObject != null) { - dealObject(be, (GspBizEntityObject) beObj, gspViewObject); + dealObject(be, (GspBizEntityObject) beObj, gspViewObject, viewObject.getIDElement().getID()); continue; } // 子对象不存在则新增 @@ -87,51 +104,84 @@ public class ConvertVoUtils { } - private static boolean isExistedBizObject(GspBusinessEntity be, String objId) { - GspBizEntityObject bizObj = be.getNode(node -> node.getID().equals(objId)); - return bizObj != null; - } + /** + * 处理对象的基本信息 + * @param bizObject 业务实体节点 + * @param viewObject 视图对象节点 + * @param parentVoIDElementId 视图对象父节点的唯一标识字段的唯一标识 + */ + private static void dealObjectSelfInfo(GspBizEntityObject bizObject, GspViewObject viewObject, String parentVoIDElementId) { + // 获取视图对象所有字段, 并做成其对应be字段id与当前字段id的映射关系 + Map collect = viewObject.getAllElementList(false).stream() + .filter(item -> item != null && ((GspViewModelElement) item).getMapping() != null) + .collect(Collectors.toMap(item -> ((GspViewModelElement) item).getMapping().getTargetElementId(), IGspCommonField::getID)); + // 根据BE唯一标识字段的id, 获取视图对象的唯一标识字段,并记录其id + ConvertUtils.updateColumnGenerateId(bizObject, viewObject, collect); - private static GspBizEntityObject getBizObject(GspBusinessEntity be, String objId) { - return be.getNode(node -> node.getID().equals(objId)); + // 更新视图对象节点间关联关系 + viewObject.getKeys().clear(); + for (GspAssociationKey beKey : bizObject.getKeys()) { + // 获取be节点关联关系 + GspAssociationKey key = beKey.clone(); + // 获取be当前节点关联字段在vo中映射字段的id, 设置为sourceElement + key.setSourceElement(getVmElementByMappedBizEleId(viewObject.getAllElementList(true), key.getSourceElement()).getID()); + // 获取视图对象父节点的唯一标识字段的id, 设置给targetElement + key.setTargetElement(parentVoIDElementId); + viewObject.getKeys().add(key); + } } - private static void dealModifyChildObjects(GspBusinessEntity be, GspBizEntityObject bizObject, GspViewObject viewObject) { - if (viewObject == null || CollectionUtils.isEmpty(viewObject.getContainChildObjects())) - return; - ViewObjectCollection childObjList = viewObject.getContainChildObjects(); - Iterator iterators = childObjList.iterator(); - while (iterators.hasNext()) { - GspViewObject childObj = (GspViewObject) iterators.next(); - if (childObj.getIsVirtual()) { - continue; - } - String beChildObjId = childObj.getMapping().getTargetObjId(); - - if (!isExistedBizObject(be, beChildObjId)) { - iterators.remove(); - continue; + /** + * 根据BE字段ID获取视图对象中的字段 + * @param vmElements 视图对象字段列表 + * @param bizEleId be字段id + * @return 视图对象对应字段 + */ + private static GspCommonElement getVmElementByMappedBizEleId(ArrayList vmElements, String bizEleId) { + if (vmElements.isEmpty()) { + throw new ViewModelException(VoModelErrorCodes.GSP_VIEWOBJECT_MODEL_1006, null, bizEleId); + } + for (IGspCommonElement item : vmElements) { + if (bizEleId.equals(((GspViewModelElement) item).getMapping().getTargetObjId())) { + return (GspCommonElement) item; } - GspBizEntityObject childBizObject = getBizObject(be, beChildObjId); - dealObject(be, childBizObject, childObj); } + throw new ViewModelException(VoModelErrorCodes.GSP_VIEWOBJECT_MODEL_1006, null, bizEleId); } - private static void dealObjectSelfInfo(GspBizEntityObject bizObject, GspViewObject viewObject) { - } + private static void dealElements(GspBizEntityObject bizObject, GspViewObject viewObject) { + // 获取BE字段列表 + ArrayList bizElemens = bizObject.getContainElements().getAllItems(item -> !item.getIsVirtual()); - private static void dealElements(GspBusinessEntity be, GspBizEntityObject bizObject, GspViewObject viewObject) { - dealBeAddElements(bizObject, viewObject); - } + // 获取BE字段与ID映射Map + Map bizElementMap + = bizElemens.stream().collect(Collectors.toMap(IGspCommonField::getID, item -> item)); - private static void dealBeAddElements(GspBizEntityObject bizObject, GspViewObject viewObject) { - ArrayList bizElemens = bizObject.getContainElements().getAllItems(item -> !item.getIsVirtual()); - if (CollectionUtils.isEmpty(bizElemens)) { - return; + // 遍历VO字段列表 + VMElementCollection voElementList = viewObject.getContainElements(); + for (int i = voElementList.size() - 1; i >= 0; i--) { + GspViewModelElement voElement = (GspViewModelElement) voElementList.get(i); + // 检查BE是否存在VO对应字段 + String beIdInView = voElement.getMapping().getTargetElementId(); + // 检查VO字段是否存在映射的BE字段 + if (bizElementMap.containsKey(beIdInView)) { + // 标记BE字段已存在映射 + IGspCommonField beElement = bizElementMap.remove(beIdInView); + // 基于BE字段重新生成VO字段 + GspViewModelElement newViewEle = ConvertUtils.toElement((IGspCommonElement) beElement, viewObject.getMapping().getTargetMetadataPkgName(), viewObject.getMapping().getTargetMetadataId(), GspVoElementSourceType.BeElement); + // 将原VO字段相关ID 赋值给新构造VO字段 + syncVoElementIds(voElement, newViewEle); + // 更新VO字段为新构造的VO字段 + voElementList.set(i, newViewEle); + + } else { + // 若对应的BE字段已不存在, 则移除VO中此字段 + voElementList.remove(i); + } } - for (IGspCommonField beEle : bizElemens) { - if (isExistBizElement(viewObject, beEle.getID())) - continue; + + // 剩余的BE字段识别为新增字段, 构造对应的VO字段并补充到VO中 + for (IGspCommonField beEle : bizElementMap.values()) { IGspCommonElement newViewEle = ConvertUtils.toElement((IGspCommonElement) beEle, viewObject.getMapping().getTargetMetadataPkgName(), viewObject.getMapping().getTargetMetadataId(), GspVoElementSourceType.BeElement); newViewEle.setBelongObject(viewObject); viewObject.getContainElements().add(newViewEle); @@ -139,15 +189,73 @@ public class ConvertVoUtils { } - private static boolean isExistBizElement(GspViewObject bizObject, String elementId) { - ArrayList list = bizObject.getAllElementList(false); - for (IGspCommonElement ele : list) { - String beIdInView = ((GspViewModelElement) ele).getMapping().getTargetElementId(); - if (elementId.equals(beIdInView)) { - return true; + /** + * 将旧VO字段中相关ID赋予新构造的VO字段 + * @param voElement 旧VO字段 + * @param newViewEle 新VO字段 + */ + private static void syncVoElementIds(GspViewModelElement voElement, GspViewModelElement newViewEle) { + // VO字段ID重赋 + newViewEle.setID(voElement.getID()); + // 将旧VO字段关联信息中的ID等字段赋值给新构造的VO字段 + syncVoElementChildAssoIds(voElement.getChildAssociations(), newViewEle.getChildAssociations(), newViewEle.getID()); + } + + /** + * 将旧VO字段中关联信息中的ID等字段赋予新构造的VO字段 + * + * @param sourceAssos 旧VO字段关联信息 + * @param targetAssos 新VO字段关联信息 + * @param voElementId 当前VO字段ID + */ + private static void syncVoElementChildAssoIds(GspAssociationCollection sourceAssos, GspAssociationCollection targetAssos, String voElementId) { + // 遍历旧VO关联信息, 根据关联信息的 refModelID 和 refObjectID 构建关联信息Map + Map sourceAssoMap = sourceAssos.stream() + .collect(Collectors.toMap(item -> item.getRefModelID() + "_" + item.getRefObjectID(), item -> item)); + + // 遍历新VO关联信息, 若存在对应旧VO关联信息, 则赋予旧VO关联信息中的ID等字段 + for (GspAssociation targetAsso : targetAssos) { + String key = targetAsso.getRefModelID() + "_" + targetAsso.getRefObjectID(); + if (sourceAssoMap.containsKey(key)) { + GspAssociation sourceAsso = sourceAssoMap.get(key); + // 同步关联信息中的 ID + targetAsso.setId(sourceAsso.getId()); + // 同步关联信息中的 refElementCollection + syncVoElementChildAssoRefElementIds(sourceAsso.getRefElementCollection(), targetAsso.getRefElementCollection()); + } + + // 同步关联信息中的 的关联字段ID + for (GspAssociationKey gspAssociationKey : targetAsso.getKeyCollection()) { + gspAssociationKey.setTargetElement(voElementId); + } + } + + } + + /** + * 同步新旧VO关联信息中的 refElementCollection + * @param sourceRefElementCollection 旧VO关联信息中的 refElementCollection + * @param targetRefElementCollection 新VO关联信息中的 refElementCollection + */ + private static void syncVoElementChildAssoRefElementIds(GspFieldCollection sourceRefElementCollection, + GspFieldCollection targetRefElementCollection) { + // 遍历旧VO关联信息中的 refElementCollection, 构建 refElementId Map + Map sourceRefElementIdMap = new HashMap<>(); + for (IGspCommonField sourceRefEle : sourceRefElementCollection) { + GspViewModelElement voElement = (GspViewModelElement)sourceRefEle; + GspVoElementMapping mapping = voElement.getMapping(); + sourceRefElementIdMap.put(mapping.getTargetMetadataId() + "_" + mapping.getTargetObjectId() + "_" + mapping.getTargetElementId(), voElement.getID()); + } + + // 遍历新VO关联信息中的 refElementCollection, 若存在对应旧VO关联信息, 则赋予旧VO关联信息中的ID + for (IGspCommonField targetRefEle : targetRefElementCollection) { + GspViewModelElement voElement = (GspViewModelElement)targetRefEle; + GspVoElementMapping mapping = voElement.getMapping(); + String key = mapping.getTargetMetadataId() + "_" + mapping.getTargetObjectId() + "_" + mapping.getTargetElementId(); + if (sourceRefElementIdMap.containsKey(key)) { + targetRefEle.setID(sourceRefElementIdMap.get(key)); } } - return false; } private static GspViewObject getExistBizChildObject(GspViewObject bizObject, String objectId) { diff --git a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java index c257a77..69eddaf 100644 --- a/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java +++ b/view-object-model/src/main/java/com/inspur/edp/formserver/viewmodel/common/LinkBeUtils.java @@ -67,10 +67,8 @@ import java.util.Map; /** * The Tool Of Link Business Entity By View Model * - * @ClassName: LinkBeUtils - * @Author: Benjamin Gong - * @Date: 2021/1/11 17:13 - * @Version: V1.0 + * @author Benjamin Gong + * @version 2021/1/11 17:13 */ public class LinkBeUtils { private final static CustomizationService SERVICE = SpringBeanUtils.getBean(CustomizationService.class); @@ -861,15 +859,14 @@ public class LinkBeUtils { metadata = MetadataUtil.getCustomMetadataByI18n(id, false); } else { //设计时获取 - MetadataURI metadataURI = new MetadataURI(); - metadataURI.setId(id); - setMetadataURI(metadataURI, getMetadata(), id); + MetadataURI targetURI = new MetadataURI(); + targetURI.setId(id); + setMetadataURI(targetURI, getMetadata(), id); MetadataURI sourceURI = new MetadataURI(); - setSourceMetadataURI(metadataURI, getMetadata()); - metadata = getLcmDtService().getRefMetadata(metadataURI, sourceURI, ""); + setSourceMetadataURI(sourceURI, getMetadata()); + metadata = getLcmDtService().getRefMetadata(targetURI, sourceURI, ""); } - //todo 需要后续讨论,抛异常时提示出明确的元数据信息,不仅仅提示id if (metadata == null) { String vmNameSpace = getVmNameSpace(getMetadata()); MetadataHeader metadataHeader = getgetDependentMetadataInfo(getMetadata(), id); -- Gitee