From bcbf00a67e91fa6dadfba159ae90c4097f22cde2 Mon Sep 17 00:00:00 2001 From: gzp Date: Wed, 24 Jun 2026 16:11:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=95=BF=E5=BA=A6=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edp/cef/core/datatype/CefEntity.java | 2 +- .../DecimalLengthValAdaptor.java | 5 +++ .../lengthvaladaptor/LengthValAdaptor.java | 45 +++++++++++++++++++ .../lengthvaladaptor/LengthValUtils.java | 28 ++++++++---- .../SmallIntLengthValAdaptor.java | 10 +++++ .../StringLengthValAdaptor.java | 8 +++- .../newAssociationLengthValAdaptor.java | 5 +++ 7 files changed, 92 insertions(+), 11 deletions(-) diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java index 0994f6ff..b6c3e5e3 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java @@ -421,7 +421,7 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { addUQConstraintValidations(b4SaveValAssembler); addSecretValidations(b4SaveValAssembler); addRequireValidations(b4SaveValAssembler); - LengthValUtils.addLengthVals(extList, b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo(), getVersion()); + LengthValUtils.addLengthVals(extList, b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo(), getVersion(), getEntityResInfo().getEntityId()); addExtendB4SaveVals(b4SaveValAssembler); addChildTransB4SaveVals(b4SaveValAssembler); // addDeleteCheckValidations(b4SaveValAssembler); diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/DecimalLengthValAdaptor.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/DecimalLengthValAdaptor.java index 323e5720..129f6bce 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/DecimalLengthValAdaptor.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/DecimalLengthValAdaptor.java @@ -38,6 +38,11 @@ public class DecimalLengthValAdaptor extends LengthValAdaptor { this.cefVersion = cefVersion; } + public DecimalLengthValAdaptor(String propName, int length, int prec, int cefVersion, String entityCode, String entityId) { + super(propName, length, prec, entityCode, entityId); + this.cefVersion = cefVersion; + } + @Override protected String getDisplayMessage(ICefValidationContext context) { //国际化异常调用资源文件 diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java index 3e44f9c3..68541e72 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java @@ -16,6 +16,8 @@ package com.inspur.edp.cef.core.validation.lengthvaladaptor; +import com.inspur.edp.bef.api.action.determination.IDeterminationContext; +import com.inspur.edp.bef.api.be.IBENodeEntityContext; import com.inspur.edp.cef.api.exceptions.ErrorCodes; import com.inspur.edp.cef.api.message.CefException; import com.inspur.edp.cef.api.message.IBizMessage; @@ -30,15 +32,22 @@ import com.inspur.edp.cef.entity.dependenceTemp.DataValidator; import com.inspur.edp.cef.entity.exception.CefRuntimeBaseException; import com.inspur.edp.cef.spi.validation.IValidation; import io.iec.edp.caf.commons.exception.ExceptionLevel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.Arrays; +import java.util.Objects; public abstract class LengthValAdaptor implements IValidation { + private static final Logger logger = LoggerFactory.getLogger(LengthValAdaptor.class); + protected String propName; protected int length; protected int prec; protected int curLength; protected int curPrec; + protected String entityCode; + protected String entityId; protected LengthValAdaptor(String propName, int length, int prec) { DataValidator.checkForEmptyString(propName, "propName"); @@ -48,6 +57,12 @@ public abstract class LengthValAdaptor implements IValidation { this.prec = prec; } + protected LengthValAdaptor(String propName, int length, int prec, String entityCode, String entityId) { + this(propName, length, prec); + this.entityCode = entityCode; + this.entityId = entityId; + } + @Override public final boolean canExecute(IChangeDetail change) { if (change == null) { @@ -81,6 +96,7 @@ public abstract class LengthValAdaptor implements IValidation { * throw length or precision exceptions */ private void onInvalid(ICefValidationContext context) { + logValidationFailure(context); if (context instanceof ISupportBizMessage) { IBizMessage msg = ((ISupportBizMessage) context) .createMessageWithLocation(MessageLevel.Error, Arrays.asList(propName), @@ -91,6 +107,35 @@ public abstract class LengthValAdaptor implements IValidation { } } + /** + * 记录字段长度校验失败的上下文信息,便于定位问题。 + * 具体的限制值和实际值在 getDisplayMessage() 构建的异常消息中已有详细描述。 + */ + protected void logValidationFailure(ICefValidationContext context) { + String beId = null; + String beCode = null; + String objCode = entityCode; + if (context instanceof IDeterminationContext) { + IDeterminationContext detCtx = (IDeterminationContext) context; + if (detCtx.getModelResInfo() != null) { + beId = detCtx.getModelResInfo().getMetaDataId(); + beCode = detCtx.getModelResInfo().getRootNodeCode(); + } + IBENodeEntityContext beCtx = detCtx.getBEContext(); + if (objCode == null && beCtx != null) { + objCode = beCtx.getCode(); + } + } + + logger.error("字段长度校验失败, BE:[ID:{}, 编号:{}], 对象:[名称:{}, ID:{}, 编号:{}], 字段code:{}", + Objects.toString(beId, "?"), + Objects.toString(beCode, "?"), + context.getEntityI18nName(), + Objects.toString(entityId, "?"), + Objects.toString(objCode, "?"), + propName); + } + protected abstract String getDisplayMessage(ICefValidationContext context); protected abstract boolean isValid(Object value); diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java index ba12b9e2..10517642 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java @@ -19,6 +19,7 @@ package com.inspur.edp.cef.core.validation.lengthvaladaptor; import com.inspur.edp.cef.api.repository.GspDbDataType; import com.inspur.edp.cef.core.validation.requiredvaladaptor.RequiredStringValAdaptor; import com.inspur.edp.cef.spi.entity.info.CefDataTypeInfo; +import com.inspur.edp.cef.spi.entity.info.CefEntityTypeInfo; import com.inspur.edp.cef.spi.entity.info.propertyinfo.AssocationPropertyInfo; import com.inspur.edp.cef.spi.entity.info.propertyinfo.DataTypePropertyInfo; import com.inspur.edp.cef.spi.entity.info.propertyinfo.ObjectType; @@ -42,29 +43,30 @@ public class LengthValUtils { * @param dataTypeInfo * @param cefVersion */ - public static void addLengthVals(List extendList, IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion) { + public static void addLengthVals(List extendList, IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion, String entityId) { int index = 0; + String entityCode = getEntityCode(dataTypeInfo); for (DataTypePropertyInfo propertyInfo : dataTypeInfo.getPropertyInfos().values()) { if (propertyInfo.getObjectType() == ObjectType.Association) { - validationAssembler.getValidations().add(index++, new newAssociationLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion)); + validationAssembler.getValidations().add(index++, new newAssociationLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, entityId)); continue; } if (propertyInfo.getObjectType() == ObjectType.Normal) { switch (propertyInfo.getFieldType()) { case String: Integer length = getLength(extendList, propertyInfo); - validationAssembler.getValidations().add(index++, new StringLengthValAdaptor(propertyInfo.getPropertyName(), length, propertyInfo.getPrecision(), cefVersion)); + validationAssembler.getValidations().add(index++, new StringLengthValAdaptor(propertyInfo.getPropertyName(), length, propertyInfo.getPrecision(), cefVersion, entityCode, entityId)); break; case Text: - validationAssembler.getValidations().add(index++, new StringLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion)); + validationAssembler.getValidations().add(index++, new StringLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, entityId)); break; case Decimal: - validationAssembler.getValidations().add(index++, new DecimalLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion)); + validationAssembler.getValidations().add(index++, new DecimalLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, entityId)); break; case Integer: { if(propertyInfo.getDbDataType() == GspDbDataType.SmallInt){ - validationAssembler.getValidations().add(index++, new SmallIntLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getPrecision(), cefVersion)); + validationAssembler.getValidations().add(index++, new SmallIntLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getPrecision(), cefVersion, cefVersion, entityCode, entityId)); } break; } @@ -90,11 +92,19 @@ public class LengthValUtils { return propertyInfo.getLength(); } + private static String getEntityCode(CefDataTypeInfo dataTypeInfo) { + if (dataTypeInfo instanceof CefEntityTypeInfo) { + return ((CefEntityTypeInfo) dataTypeInfo).getEntityCode(); + } + return null; + } + public static void addLengthVals(IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion) { int index = 0; + String entityCode = getEntityCode(dataTypeInfo); for (DataTypePropertyInfo propertyInfo : dataTypeInfo.getPropertyInfos().values()) { if (propertyInfo.getObjectType() == ObjectType.Association) { - validationAssembler.getValidations().add(index++, new newAssociationLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion)); + validationAssembler.getValidations().add(index++, new newAssociationLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, null)); continue; } if (propertyInfo.getObjectType() == ObjectType.Normal) { @@ -103,12 +113,12 @@ public class LengthValUtils { case Text: validationAssembler.getValidations().add(index++, new StringLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), - propertyInfo.getPrecision(), cefVersion)); + propertyInfo.getPrecision(), cefVersion, entityCode, null)); break; case Decimal: validationAssembler.getValidations().add(index++, new DecimalLengthValAdaptor(propertyInfo.getPropertyName(), - propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion)); + propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, null)); break; } } diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/SmallIntLengthValAdaptor.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/SmallIntLengthValAdaptor.java index 9d8e179d..1f85f7b1 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/SmallIntLengthValAdaptor.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/SmallIntLengthValAdaptor.java @@ -33,6 +33,16 @@ public class SmallIntLengthValAdaptor extends LengthValAdaptor { super(propName, length, prec); } + public SmallIntLengthValAdaptor(String propName, int length, int prec, int cefVersion) { + super(propName, length, prec); + this.cefVersion = cefVersion; + } + + public SmallIntLengthValAdaptor(String propName, int length, int prec, int cefVersion, String entityCode, String entityId) { + super(propName, length, prec, entityCode, entityId); + this.cefVersion = cefVersion; + } + @Override protected String getDisplayMessage(ICefValidationContext context) { diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/StringLengthValAdaptor.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/StringLengthValAdaptor.java index fa4ffd47..34930b91 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/StringLengthValAdaptor.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/StringLengthValAdaptor.java @@ -35,6 +35,11 @@ public class StringLengthValAdaptor extends LengthValAdaptor { this.cefVersioin = cefVersioin; } + public StringLengthValAdaptor(String propName, int length, int prec, int cefVersioin, String entityCode, String entityId) { + super(propName, length, prec, entityCode, entityId); + this.cefVersioin = cefVersioin; + } + @Override protected String getDisplayMessage(ICefValidationContext context) { @@ -45,7 +50,7 @@ public class StringLengthValAdaptor extends LengthValAdaptor { String i18nMessage; if (context instanceof IValueObjValidationContext) { -// IUnifiedDataType dataType=(IUnifiedDataType)(((UdtValidationContext)context).getUdtContext().getValueObjDataType()); +// IUnifiedDataType dataType=(IUnifiedDataType)(((UdtValidationContext)context).getUdtContext().getValueObjDataType()); if (((IValueObjValidationContext) context).getParentContext() == null || ((IValueObjValidationContext) context).getPropertyName() == null || "".equals(((IValueObjValidationContext) context).getPropertyName())) { @@ -64,6 +69,7 @@ public class StringLengthValAdaptor extends LengthValAdaptor { i18nMessage = context.getPropertyI18nName(propName); } + exceptionCode = String.format(exceptionCode, i18nMessage, Integer.toString(this.length)); return exceptionCode; diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/newAssociationLengthValAdaptor.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/newAssociationLengthValAdaptor.java index 7d253174..7d119caf 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/newAssociationLengthValAdaptor.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/newAssociationLengthValAdaptor.java @@ -34,6 +34,11 @@ public class newAssociationLengthValAdaptor extends LengthValAdaptor { this.cefVersion = cefVersion; } + protected newAssociationLengthValAdaptor(String propName, int length, int prec, int cefVersion, String entityCode, String entityId) { + super(propName, length, prec, entityCode, entityId); + this.cefVersion = cefVersion; + } + @Override protected String getDisplayMessage(ICefValidationContext context) { String language = CAFContext.current.getLanguage(); -- Gitee From a3d3a7f6bbd746c769911c9f28ca66e6d21d862f Mon Sep 17 00:00:00 2001 From: gzp Date: Thu, 2 Jul 2026 10:01:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E9=95=BF=E5=BA=A6?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=BF=A1=E6=81=AF=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude --- .../edp/cef/core/datatype/CefEntity.java | 2 +- .../edp/cef/core/datatype/CefValueObject.java | 2 +- .../lengthvaladaptor/LengthValAdaptor.java | 18 +++++++++--- .../lengthvaladaptor/LengthValUtils.java | 28 ++++++------------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java index b6c3e5e3..1ded8dc4 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefEntity.java @@ -421,7 +421,7 @@ public abstract class CefEntity extends CefDataType implements ICefEntity { addUQConstraintValidations(b4SaveValAssembler); addSecretValidations(b4SaveValAssembler); addRequireValidations(b4SaveValAssembler); - LengthValUtils.addLengthVals(extList, b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo(), getVersion(), getEntityResInfo().getEntityId()); + LengthValUtils.addLengthVals(extList, b4SaveValAssembler, getEntityResInfo().getEntityTypeInfo(), getVersion(), getEntityResInfo().getEntityCode(), getEntityResInfo().getEntityId()); addExtendB4SaveVals(b4SaveValAssembler); addChildTransB4SaveVals(b4SaveValAssembler); // addDeleteCheckValidations(b4SaveValAssembler); diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefValueObject.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefValueObject.java index de6057b3..5a9f4124 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefValueObject.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/datatype/CefValueObject.java @@ -284,7 +284,7 @@ public abstract class CefValueObject extends CefDataType { private void addBuiltInB4SaveVals(ValueObjBeforeSaveValAssembler b4SaveValAssembler) { addUdtTransB4SaveVals(b4SaveValAssembler); addRequireValidations(b4SaveValAssembler); - LengthValUtils.addLengthVals(b4SaveValAssembler, getValueObjResInfo().getEntityTypeInfo(), getVersion()); + LengthValUtils.addLengthVals(b4SaveValAssembler, getValueObjResInfo().getEntityTypeInfo(), getVersion(), getValueObjResInfo().getEntityCode()); addUdtB4SaveVals(b4SaveValAssembler); } diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java index 68541e72..69d9f274 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValAdaptor.java @@ -24,6 +24,7 @@ import com.inspur.edp.cef.api.message.IBizMessage; import com.inspur.edp.cef.api.message.ISupportBizMessage; import com.inspur.edp.cef.api.message.MessageLevel; import com.inspur.edp.cef.api.validation.ICefValidationContext; +import com.inspur.edp.cef.api.validation.IValueObjValidationContext; import com.inspur.edp.cef.core.exception.ExceptionCode; import com.inspur.edp.cef.entity.changeset.AbstractModifyChangeDetail; import com.inspur.edp.cef.entity.changeset.ChangeType; @@ -109,14 +110,23 @@ public abstract class LengthValAdaptor implements IValidation { /** * 记录字段长度校验失败的上下文信息,便于定位问题。 - * 具体的限制值和实际值在 getDisplayMessage() 构建的异常消息中已有详细描述。 */ protected void logValidationFailure(ICefValidationContext context) { String beId = null; String beCode = null; String objCode = entityCode; - if (context instanceof IDeterminationContext) { - IDeterminationContext detCtx = (IDeterminationContext) context; + + // 值对象场景:从父上下文提取 BE 信息 + ICefValidationContext beContext = context; + if (context instanceof IValueObjValidationContext) { + ICefValidationContext parentCtx = ((IValueObjValidationContext) context).getParentContext(); + if (parentCtx != null) { + beContext = parentCtx; + } + } + + if (beContext instanceof IDeterminationContext) { + IDeterminationContext detCtx = (IDeterminationContext) beContext; if (detCtx.getModelResInfo() != null) { beId = detCtx.getModelResInfo().getMetaDataId(); beCode = detCtx.getModelResInfo().getRootNodeCode(); @@ -127,7 +137,7 @@ public abstract class LengthValAdaptor implements IValidation { } } - logger.error("字段长度校验失败, BE:[ID:{}, 编号:{}], 对象:[名称:{}, ID:{}, 编号:{}], 字段code:{}", + logger.warn("字段长度校验失败, BE:[ID:{}, 编号:{}], 对象:[名称:{}, ID:{}, 编号:{}], 字段code:{}", Objects.toString(beId, "?"), Objects.toString(beCode, "?"), context.getEntityI18nName(), diff --git a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java index 10517642..10e2ed7b 100644 --- a/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java +++ b/common-entity-framework-core/src/main/java/com/inspur/edp/cef/core/validation/lengthvaladaptor/LengthValUtils.java @@ -17,10 +17,7 @@ package com.inspur.edp.cef.core.validation.lengthvaladaptor; import com.inspur.edp.cef.api.repository.GspDbDataType; -import com.inspur.edp.cef.core.validation.requiredvaladaptor.RequiredStringValAdaptor; import com.inspur.edp.cef.spi.entity.info.CefDataTypeInfo; -import com.inspur.edp.cef.spi.entity.info.CefEntityTypeInfo; -import com.inspur.edp.cef.spi.entity.info.propertyinfo.AssocationPropertyInfo; import com.inspur.edp.cef.spi.entity.info.propertyinfo.DataTypePropertyInfo; import com.inspur.edp.cef.spi.entity.info.propertyinfo.ObjectType; import com.inspur.edp.cef.spi.extend.entity.ICefEntityExtend; @@ -32,20 +29,21 @@ import java.util.Map; public class LengthValUtils { public static void addLengthVals( IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo) { - addLengthVals(validationAssembler, dataTypeInfo, 0); + addLengthVals(validationAssembler, dataTypeInfo, 0, null); } /** * 长度校验传入扩展信息 * - * @param extendList - * @param validationAssembler - * @param dataTypeInfo - * @param cefVersion + * @param extendList 扩展信息列表 + * @param validationAssembler 校验装配器 + * @param dataTypeInfo 数据类型信息 + * @param cefVersion CEF版本 + * @param entityCode 实体/值对象编码 + * @param entityId 实体ID(值对象传null) */ - public static void addLengthVals(List extendList, IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion, String entityId) { + public static void addLengthVals(List extendList, IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion, String entityCode, String entityId) { int index = 0; - String entityCode = getEntityCode(dataTypeInfo); for (DataTypePropertyInfo propertyInfo : dataTypeInfo.getPropertyInfos().values()) { if (propertyInfo.getObjectType() == ObjectType.Association) { validationAssembler.getValidations().add(index++, new newAssociationLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, entityId)); @@ -92,16 +90,8 @@ public class LengthValUtils { return propertyInfo.getLength(); } - private static String getEntityCode(CefDataTypeInfo dataTypeInfo) { - if (dataTypeInfo instanceof CefEntityTypeInfo) { - return ((CefEntityTypeInfo) dataTypeInfo).getEntityCode(); - } - return null; - } - - public static void addLengthVals(IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion) { + public static void addLengthVals(IRuntimeValidationAssembler validationAssembler, CefDataTypeInfo dataTypeInfo, int cefVersion, String entityCode) { int index = 0; - String entityCode = getEntityCode(dataTypeInfo); for (DataTypePropertyInfo propertyInfo : dataTypeInfo.getPropertyInfos().values()) { if (propertyInfo.getObjectType() == ObjectType.Association) { validationAssembler.getValidations().add(index++, new newAssociationLengthValAdaptor(propertyInfo.getPropertyName(), propertyInfo.getLength(), propertyInfo.getPrecision(), cefVersion, entityCode, null)); -- Gitee