From 7e4b41ecf0da957bed726d8477787b739339ba68 Mon Sep 17 00:00:00 2001 From: liuyuan <739331171@qq.com> Date: Sun, 12 Nov 2023 17:07:48 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=99=84=E4=BB=B6=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96=E6=94=AF=E6=8C=81=E6=8A=BD=E5=8F=96=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E3=80=81=E6=9E=9A=E4=B8=BE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../libs/bef-engine-core.jar | Bin 0 -> 103341 bytes .../libs/bff-engine-core.jar | Bin 0 -> 91851 bytes .../web-jitengine-frontendproject-api.jar | Bin 0 -> 10469 bytes .../libs/web-jitengine-frontendproject.jar | Bin 0 -> 71908 bytes scriptcache/runtime-scriptcache/pom.xml | 2 +- ...FileUploadPreviewI18nResourceStrategy.java | 47 ++++++++++++++++++ .../ListFilterI18nResourceStrategy.java | 8 +++ 7 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 scriptcache/runtime-scriptcache/libs/bef-engine-core.jar create mode 100644 scriptcache/runtime-scriptcache/libs/bff-engine-core.jar create mode 100644 scriptcache/runtime-scriptcache/libs/web-jitengine-frontendproject-api.jar create mode 100644 scriptcache/runtime-scriptcache/libs/web-jitengine-frontendproject.jar diff --git a/scriptcache/runtime-scriptcache/libs/bef-engine-core.jar b/scriptcache/runtime-scriptcache/libs/bef-engine-core.jar new file mode 100644 index 0000000000000000000000000000000000000000..bee5febb42a4f20c4eb3b549dc156e10fc7a0e08 GIT binary patch literal 103341 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 vi} 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 z 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

-5s$ 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 0.1.12 system - ${pom.basedir}/libs/bef-engine-core-0.1.12.jar + ${pom.basedir}/libs/bef-engine-core.jar com.inspur.edp diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/FileUploadPreviewI18nResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/FileUploadPreviewI18nResourceStrategy.java index 91d23411..33a15d06 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/FileUploadPreviewI18nResourceStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/FileUploadPreviewI18nResourceStrategy.java @@ -16,12 +16,15 @@ package com.inspur.edp.web.formmetadata.i18n.component.strategy.i18nresourcestrategy; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.inspur.edp.lcm.metadata.api.entity.I18nResourceItem; import com.inspur.edp.lcm.metadata.api.entity.I18nResourceItemCollection; import com.inspur.edp.web.formmetadata.i18n.I18nResourceItemManager; import com.inspur.edp.web.formmetadata.i18n.component.ComponentUtility; +import com.inspur.edp.web.formmetadata.i18n.component.I18nResourceUtility; import com.inspur.edp.web.formmetadata.i18n.constant.I18nResourceConstant; +import java.util.ArrayList; import java.util.HashMap; /** @@ -50,6 +53,50 @@ public class FileUploadPreviewI18nResourceStrategy extends AbstractI18nResourceS if (previewDefaultNameI18nResourceItemCollection != null && previewDefaultNameI18nResourceItemCollection.size() > 0) { i18nResourceItemCollection.addRange(previewDefaultNameI18nResourceItemCollection); } + + String currentComponentId = ComponentUtility.getInstance().getId(currentComponent); + String currentComponentType = ComponentUtility.getInstance().getType(currentComponent); + ArrayList> cols = ComponentUtility.getInstance().getValue(currentComponent, "previewColumns"); + cols.forEach(field -> { + String bindingField = ComponentUtility.getInstance().getValue(field, "bindingField"); + String value = ComponentUtility.getInstance().getValue(field, "title"); + String baseId = currentComponentType + + I18nResourceConstant.SECOND_LEVEL_DELIMITER + currentComponentId + + I18nResourceConstant.SECOND_LEVEL_DELIMITER + bindingField; + String generatedComponentId = baseId + I18nResourceConstant.SECOND_LEVEL_DELIMITER + "title"; + I18nResourceItem i18nResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedComponentId, value, value); + i18nResourceItemCollection.add(i18nResourceItem); + + // 提取枚举值资源项 + ArrayList> enumValueCollection = ComponentUtility.getInstance().GetEnumData(field); + if (enumValueCollection.size() > 0) { + // 从enumData中提取多语资源项 + String enumDataAttributeName = ComponentUtility.getInstance().GetEnumDataName(currentComponent); + I18nResourceItemCollection enumDataI18nResourceItemCollection = I18nResourceUtility.GetInstance().ExtractEnumDataI18nResourceItemCollection(i18nResourceItemBaseId, baseId, enumValueCollection, enumDataAttributeName, "value", "name"); + if (enumDataI18nResourceItemCollection.size() > 0) { + i18nResourceItemCollection.addRange(enumDataI18nResourceItemCollection); + } + } + + // 提取布尔值资源项 + HashMap formatter = ComponentUtility.getInstance().getValue(field, "formatter"); + String formatterType = ComponentUtility.getInstance().getValue(formatter, "type"); + if ("boolean".equals(formatterType)) { + String baseKey = baseId + + I18nResourceConstant.SECOND_LEVEL_DELIMITER + + "formatter" + + I18nResourceConstant.SECOND_LEVEL_DELIMITER; + String trueTextVal = ComponentUtility.getInstance().getValue(formatter, "trueText"); + String trueTextKey = baseKey + "trueText"; + I18nResourceItem trueTextI18nItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, trueTextKey, trueTextVal, trueTextVal); + i18nResourceItemCollection.add(trueTextI18nItem); + + String falseTextVal = ComponentUtility.getInstance().getValue(formatter, "falseText"); + String falseTextKey = baseKey + "falseText"; + I18nResourceItem falseTextI18nItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, falseTextKey, falseTextVal, falseTextVal); + i18nResourceItemCollection.add(falseTextI18nItem); + } + }); return i18nResourceItemCollection; } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/ListFilterI18nResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/ListFilterI18nResourceStrategy.java index aeed0007..9f504288 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/ListFilterI18nResourceStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/ListFilterI18nResourceStrategy.java @@ -41,6 +41,14 @@ public class ListFilterI18nResourceStrategy extends AbstractI18nResourceStrategy i18nResourceItemCollection.addRange(fieldConfigsI18nResourceItemCollection); } + if (currentComponent.containsKey("clearSelectedText")) { + String curCompId = ComponentUtility.getInstance().getId(currentComponent); + String clearSelectedText = ComponentUtility.getInstance().getValue(currentComponent, "clearSelectedText"); + String currentComponentType = ComponentUtility.getInstance().getType(currentComponent); + String generatedComponentId = currentComponentType + "/" + curCompId + "/clearSelectedText"; + I18nResourceItem i18nResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedComponentId, clearSelectedText, clearSelectedText); + i18nResourceItemCollection.add(i18nResourceItem); + } return i18nResourceItemCollection; } -- Gitee From 6b2d954432fd96e51405ea6949e9e5dd36119d9b Mon Sep 17 00:00:00 2001 From: volibear0110 Date: Thu, 16 Nov 2023 15:01:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E6=80=A7=E6=A3=80=E6=9F=A5=E3=80=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/service/GspAppConfigService.java | 3 +- .../ApprovalFormMetadataServiceImpl.java | 3 +- .../service/ApprovalFormatServiceImpl.java | 55 +++--- .../service/BusinessEntityServiceImpl.java | 5 +- .../core/util/ApprovalFormUtil.java | 7 +- .../approvalformat/core/util/FieldUtil.java | 5 +- .../core/util/TypeBuildingContext.java | 3 +- .../DeployApprovalFormatImpl.java | 5 +- form-process/web-form-process/pom.xml | 13 +- .../core/config/NpmPackageConfiguration.java | 2 +- .../NpmPackageInstallConfiguration.java | 2 +- .../core/npminstall/NpmInstallManager.java | 1 + .../core/npmsetting/NpmSettingConvertor.java | 3 +- .../NpmPackageInstallWebServiceImpl.java | 5 +- pom.xml | 17 +- relycheck/noah-test/pom.xml | 29 +++ .../main/java/com/noah/NoahApplication.java | 36 ++++ .../com/noah/config/NoahConfiguration.java | 26 +++ .../main/java/com/noah/service/MyBean.java | 14 ++ .../main/java/com/noah/service/YourBean.java | 21 +++ relycheck/pom.xml | 17 ++ .../core/config/JitBuildConfiguration.java | 2 +- .../FrmJsonFileGenerator.java | 1 - .../core/service/JitBuildServiceImp.java | 3 +- .../libs/bef-engine-core-0.1.12.jar | Bin 0 -> 80073 bytes .../libs/bff-engine-core-0.1.4.jar | Bin 0 -> 80940 bytes .../runtime-scriptcache/libs/cdp-sgf-api.jar | Bin 0 -> 33265 bytes .../libs/lcm-metadata-api.jar | Bin 0 -> 127802 bytes .../libs/task-api-0.3.11.jar | Bin 0 -> 76098 bytes .../config/ScriptCacheConfiguration.java | 4 +- .../service/ScriptCacheServiceImpl.java | 3 +- toout.bat | 2 + .../web/common/encrypt/EncryptUtility.java | 3 +- .../edp/web/common/logger/WebLogger.java | 5 +- .../web/common/metadata/MetadataUtility.java | 2 +- .../common/serialize/SerializeUtility.java | 5 +- .../utility/CommandExecuteInterceptor.java | 4 +- .../common/utility/CommandLineUtility.java | 3 +- .../edp/web/common/utility/ListUtility.java | 68 +++++++ .../edp/web/common/utility/LoggerUtility.java | 10 - .../web/common/utility/ListUtilityTest.java | 126 +++++++++++++ web-designschema/pom.xml | 11 +- .../designschema/generator/FieldBuilder.java | 4 +- .../generator/FieldTypeBuilder.java | 5 +- .../generator/TypeBuildingContext.java | 7 +- .../BaseDesignSchemaChangeHandler.java | 3 +- .../synchronization/FormMetadataUpdate.java | 3 +- .../web/designschema/elements/FieldTest.java | 27 +++ .../core/components/QuerySchemaField.java | 17 +- .../ModuleFormExpressionFieldItem.java | 5 +- .../parser/EntityExpressionParser.java | 3 +- web-form-metadata/pom.xml | 4 + .../config/FormMetadataConfiguration.java | 6 +- .../event/FormMetadataSaveEventListener.java | 3 +- .../event/WebCommandMetadataDelete.java | 3 +- .../formresource/FormResourceManager.java | 3 +- .../i18n/component/ComponentUtility.java | 2 +- .../metadata/FormMetadataContent.java | 9 +- .../metadataanalysis/CommandsAnalysis.java | 8 +- .../metadatamanager/FormMetadataManager.java | 3 +- .../replication/FormMetadataReplicator.java | 4 +- .../replication/FormMetadataSmManager.java | 1 + .../replication/FormMetadataVoManager.java | 1 + .../FormMetadataCommonServiceImpl.java | 5 +- .../i18n/FormMetadataI18nServiceTest.java | 1 + .../api/webservice/FormProcessWebService.java | 18 ++ .../process/service/FormProcessManager.java | 73 +++++++ .../webservice/FormProcessWebServiceImpl.java | 18 ++ .../core/entity/FormConfigEntity.java | 3 +- web-formmetadata-relycheck/.gitignore | 38 ++++ web-formmetadata-relycheck/pom.xml | 40 ++++ .../web/relycheck/RelyCheckApplication.java | 14 ++ .../web/relycheck/config/RelyCheckConfig.java | 113 +++++++++++ .../constant/NeedCheckLengthType.java | 45 +++++ .../constant/NeedCheckPrecisionType.java | 29 +++ .../web/relycheck/constant/RelyCheckType.java | 51 +++++ .../relycheck/constant/ValidateConstants.java | 22 +++ .../MetadataElementGenerator.java | 37 ++++ .../MetadataVOElementLocatorGenerator.java | 49 +++++ .../SchemaEntityDependencyGenerator.java | 90 +++++++++ .../SchemaFieldDependencyGenerator.java | 71 +++++++ .../entity/BaseSourceElement.java | 76 ++++++++ .../entity/SourceElementEntity.java | 44 +++++ .../entity/SourceElementField.java | 42 +++++ .../AbstractDependencyValidator.java | 17 ++ .../VoElementValidator.java | 174 +++++++++++++++++ .../VoEntityValidator.java | 113 +++++++++++ .../element/BaseElementValidator.java | 57 ++++++ .../element/DataTypeValidator.java | 113 +++++++++++ .../element/ElementValidateParameter.java | 47 +++++ .../element/EnumValueValidator.java | 59 ++++++ .../element/LengthValidator.java | 45 +++++ .../element/MultiLanguageValidator.java | 38 ++++ .../element/PrecisionValidator.java | 43 +++++ .../element/RequireValidator.java | 38 ++++ .../edp/web/relycheck/elements/BaseField.java | 142 ++++++++++++++ .../web/relycheck/elements/CustomEntity.java | 90 +++++++++ .../web/relycheck/elements/CustomField.java | 66 +++++++ .../relycheck/elements/CustomFieldEditor.java | 124 ++++++++++++ .../web/relycheck/elements/CustomSchema.java | 178 ++++++++++++++++++ .../relycheck/elements/CustomVariable.java | 63 +++++++ .../relycheck/elements/editor/CheckBox.java | 27 +++ .../relycheck/elements/editor/DataSource.java | 63 +++++++ .../relycheck/elements/editor/DateBox.java | 37 ++++ .../elements/editor/DefaultEditor.java | 27 +++ .../relycheck/elements/editor/EnumField.java | 28 +++ .../elements/editor/FieldEditor.java | 37 ++++ .../elements/editor/LanguageTextBox.java | 23 +++ .../relycheck/elements/editor/LookupEdit.java | 128 +++++++++++++ .../elements/editor/MultiTextBox.java | 23 +++ .../relycheck/elements/editor/NumericBox.java | 23 +++ .../relycheck/elements/editor/RadioGroup.java | 23 +++ .../elements/editor/SwitchField.java | 23 +++ .../relycheck/elements/editor/TextBox.java | 24 +++ .../elements/type/BaseFieldType.java | 61 ++++++ .../elements/type/CustomBaseFieldType.java | 77 ++++++++ .../elements/type/CustomEntityTypeBase.java | 64 +++++++ .../elements/type/CustomEnumItem.java | 44 +++++ .../service/BaseMetadataElementService.java | 74 ++++++++ .../service/FormMetadataElementService.java | 38 ++++ .../MobileFormMetadataElementService.java | 35 ++++ .../utility/StringConcatUtility.java | 46 +++++ .../utility/ValidateResultUtility.java | 76 ++++++++ .../main/resources/META-INF/spring.factories | 2 + .../relycheck/custom/CustomApplication.java | 25 +++ .../edp/web/relycheck/custom/MyConfig.java | 16 ++ .../edp/web/relycheck/custom/TestBean.java | 13 ++ .../VoElementValidatorTest.java | 40 ++++ .../VoEntityValidatorTest.java | 18 ++ .../web/relycheck/elements/SchemaTest.java | 21 +++ .../utility/StringConcatUtilityTest.java | 43 +++++ .../FormMetadataDebugUriWithMobile.java | 1 + .../metadata/FormMetadataManager.java | 5 +- .../zerocode/ZeroCodeConstants.java | 4 +- .../zerocode/ZeroCodeParameterValidator.java | 13 +- 135 files changed, 3995 insertions(+), 138 deletions(-) create mode 100644 relycheck/noah-test/pom.xml create mode 100644 relycheck/noah-test/src/main/java/com/noah/NoahApplication.java create mode 100644 relycheck/noah-test/src/main/java/com/noah/config/NoahConfiguration.java create mode 100644 relycheck/noah-test/src/main/java/com/noah/service/MyBean.java create mode 100644 relycheck/noah-test/src/main/java/com/noah/service/YourBean.java create mode 100644 relycheck/pom.xml create mode 100644 scriptcache/runtime-scriptcache/libs/bef-engine-core-0.1.12.jar create mode 100644 scriptcache/runtime-scriptcache/libs/bff-engine-core-0.1.4.jar create mode 100644 scriptcache/runtime-scriptcache/libs/cdp-sgf-api.jar create mode 100644 scriptcache/runtime-scriptcache/libs/lcm-metadata-api.jar create mode 100644 scriptcache/runtime-scriptcache/libs/task-api-0.3.11.jar create mode 100644 web-common/src/test/java/com/inspur/edp/web/common/utility/ListUtilityTest.java create mode 100644 web-designschema/src/test/java/com/inspur/edp/web/designschema/elements/FieldTest.java create mode 100644 web-form-process-api/src/main/java/com/inspur/edp/web/form/process/api/webservice/FormProcessWebService.java create mode 100644 web-form-process/src/main/java/com/inspur/edp/web/form/process/service/FormProcessManager.java create mode 100644 web-form-process/src/main/java/com/inspur/edp/web/form/process/webservice/FormProcessWebServiceImpl.java create mode 100644 web-formmetadata-relycheck/.gitignore create mode 100644 web-formmetadata-relycheck/pom.xml create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/RelyCheckApplication.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/config/RelyCheckConfig.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckLengthType.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckPrecisionType.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/ValidateConstants.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataElementGenerator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataVOElementLocatorGenerator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaEntityDependencyGenerator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaFieldDependencyGenerator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/BaseSourceElement.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementEntity.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementField.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/AbstractDependencyValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/BaseElementValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/DataTypeValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/ElementValidateParameter.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/EnumValueValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/LengthValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/MultiLanguageValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/PrecisionValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/RequireValidator.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/BaseField.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomEntity.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomField.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomFieldEditor.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomSchema.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomVariable.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/CheckBox.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DataSource.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DateBox.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DefaultEditor.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/EnumField.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/FieldEditor.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LanguageTextBox.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LookupEdit.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/MultiTextBox.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/NumericBox.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/RadioGroup.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/SwitchField.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/TextBox.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/BaseFieldType.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomBaseFieldType.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEntityTypeBase.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEnumItem.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/BaseMetadataElementService.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/FormMetadataElementService.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/MobileFormMetadataElementService.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/StringConcatUtility.java create mode 100644 web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/ValidateResultUtility.java create mode 100644 web-formmetadata-relycheck/src/main/resources/META-INF/spring.factories create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/CustomApplication.java create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/MyConfig.java create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/TestBean.java create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidatorTest.java create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidatorTest.java create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/elements/SchemaTest.java create mode 100644 web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/utility/StringConcatUtilityTest.java diff --git a/appconfig/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java b/appconfig/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java index 1dd4cdd9..1c863d59 100644 --- a/appconfig/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java +++ b/appconfig/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java @@ -21,6 +21,7 @@ import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; import com.inspur.edp.web.appconfig.api.entity.GspAppConfig; import com.inspur.edp.web.appconfig.core.appconfig.AppConfigFileManager; import com.inspur.edp.web.appconfig.core.appconfig.AppConfigFilePathGenerator; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.GspProjectUtility; @@ -126,7 +127,7 @@ public class GspAppConfigService { appConfig.setMobilePageFlowMetadataPath(pageFlowMetadataFullPath); break; default: - throw new CAFRuntimeException("", "Web_UpdateAppConfigFile", "未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType, null); + throw new WebCustomException("未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); } modifyPageFlowMetadataPath(appConfig, pageFlowMetadataFullPath); diff --git a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormMetadataServiceImpl.java b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormMetadataServiceImpl.java index 5b5a10df..d28bcdda 100644 --- a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormMetadataServiceImpl.java +++ b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormMetadataServiceImpl.java @@ -32,6 +32,7 @@ import com.inspur.edp.web.approvalformat.api.service.ApprovalFormMetadataService import com.inspur.edp.web.approvalformat.core.util.ApprovalFormSchemaUtil; import com.inspur.edp.web.approvalformat.core.util.ApprovalFormUtil; import com.inspur.edp.web.approvalformat.core.util.ApprovalFormatPermission; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import io.iec.edp.caf.commons.utils.SpringBeanUtils; @@ -117,7 +118,7 @@ public class ApprovalFormMetadataServiceImpl implements ApprovalFormMetadataServ FormSchema schema = ApprovalFormSchemaUtil.constructSchema(vm); return new ObjectMapper().writeValueAsString(schema); } catch (JsonProcessingException e) { - throw new RuntimeException("Schema序列化失败,id=" + voContent.get("ID")); + throw new WebCustomException("Schema序列化失败,id=" + voContent.get("ID")); } } } diff --git a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java index 363e9eda..3968e5c2 100644 --- a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java +++ b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java @@ -48,6 +48,7 @@ import com.inspur.edp.web.approvalformat.core.domain.converter.ApprovalFormatCon import com.inspur.edp.web.approvalformat.core.domain.entity.ApprovalFormatDO; import com.inspur.edp.web.approvalformat.core.domain.manager.ApprovalFormatManager; import com.inspur.edp.web.approvalformat.core.util.*; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.utility.StringUtility; @@ -109,7 +110,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { public Map getEntityDataByBizEntityId(String dataId, String bizEntityId) { String targetServiceUnitCode = getServiceUnitCode(bizEntityId); if (targetServiceUnitCode == null || targetServiceUnitCode.isEmpty()) { - throw new RuntimeException("当前BE对应su的编号为空。当前BE的id是:" + bizEntityId); + throw new WebCustomException("当前BE对应su的编号为空。当前BE的id是:" + bizEntityId); } RpcClient client = SpringBeanUtils.getBean(RpcClient.class); LinkedHashMap parameterHashMap = new LinkedHashMap<>(); @@ -122,7 +123,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { parameterHashMap, null); } catch (Exception e) { - throw new RuntimeException("调用RPC服务发生异常。当前BE的id是:" + bizEntityId + ",获取到的su编号:" + targetServiceUnitCode, e); + throw new WebCustomException("调用RPC服务发生异常。当前BE的id是:" + bizEntityId + ",获取到的su编号:" + targetServiceUnitCode, e); } } @@ -158,7 +159,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { public List queryEntityData(String bizEntityId) { String targetServiceUnitCode = getServiceUnitCode(bizEntityId); if (targetServiceUnitCode == null || targetServiceUnitCode.isEmpty()) { - throw new RuntimeException("当前BE对应su的编号为空。当前BE的id是:" + bizEntityId); + throw new WebCustomException("当前BE对应su的编号为空。当前BE的id是:" + bizEntityId); } LinkedHashMap parameterHashMap = new LinkedHashMap<>(); @@ -172,7 +173,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { parameterHashMap, null); } catch (Exception e) { - throw new RuntimeException("调用RPC服务发生异常。当前BE的id是:" + bizEntityId + ",获取到的su编号:" + targetServiceUnitCode + e.getMessage(), e); + throw new WebCustomException("调用RPC服务发生异常。当前BE的id是:" + bizEntityId + ",获取到的su编号:" + targetServiceUnitCode + e.getMessage(), e); } } @@ -181,7 +182,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { String bizEntityId = queryStringMap.get("bizEntityId").asText(); String targetServiceUnitCode = getServiceUnitCode(bizEntityId); if (targetServiceUnitCode == null || targetServiceUnitCode.isEmpty()) { - throw new RuntimeException("当前BE对应su的编号为空。当前BE的id是:" + bizEntityId); + throw new WebCustomException("当前BE对应su的编号为空。当前BE的id是:" + bizEntityId); } LinkedHashMap parameterHashMap = new LinkedHashMap<>(); @@ -195,7 +196,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { parameterHashMap, null); } catch (Exception e) { - throw new RuntimeException("调用RPC服务发生异常。当前BE的id是:" + bizEntityId + ",获取到的su编号:" + targetServiceUnitCode + e.getMessage(), e); + throw new WebCustomException("调用RPC服务发生异常。当前BE的id是:" + bizEntityId + ",获取到的su编号:" + targetServiceUnitCode + e.getMessage(), e); } } @@ -207,7 +208,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { if (checkIfExistsByBillCategoryIdAndDimension(approvalFormatCreateRequestBody.getBillCategoryId(), approvalFormatCreateRequestBody.getDim1(), approvalFormatCreateRequestBody.getDim2())) { - throw new RuntimeException("不允许相同单据种类id下,存在两个维度定义相同的记录,请检查。"); + throw new WebCustomException("不允许相同单据种类id下,存在两个维度定义相同的记录,请检查。"); } @@ -216,7 +217,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { try { ApprovalFormUtil.saveCheck(approvalFormatCreateRequestBody, "Form"); } catch (Exception e) { - throw new RuntimeException("已存在格式编号为" + formatCode + "的审批格式,请更换格式编号后重试。"); + throw new WebCustomException("已存在格式编号为" + formatCode + "的审批格式,请更换格式编号后重试。", e); } //todo 改为vo创建后,新增一个方法执行vo创建格式 this.approvalFormMetadataService.createApprovalForm(approvalFormatCreateRequestBody); @@ -225,7 +226,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { } else { //不允许使用审批格式的VO创建新的审批格式 if (checkIfExistsByViewModelId(approvalFormatCreateRequestBody.getVoId())) { - throw new RuntimeException("当前视图对象已经创建过审批格式,不允许重复创建!"); + throw new WebCustomException("当前视图对象已经创建过审批格式,不允许重复创建!"); } //根据VO创建eapi元数据 ApprovalFormUtil.deployManualVOandEapi(approvalFormatCreateRequestBody, approvalFormatCreateRequestBody.getVoId(), ""); @@ -291,14 +292,14 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { try { this.deleteFilesGeneratedInPreviewApprovalFormat(approvalFormId); } catch (Exception e) { - throw new RuntimeException("删除移动审批相关文件失败。详细信息如下:" + e.getMessage()); + throw new WebCustomException("删除移动审批相关文件失败。详细信息如下:" + e.getMessage()); } //根据表单元数据获取Eapi的ID GspMetadata approvalFormMetaData = null; approvalFormMetaData = this.customizationService.getMetadata(approvalFormId); if (approvalFormMetaData == null) { - throw new RuntimeException("获取审批格式失败"); + throw new WebCustomException("获取审批格式失败"); } // 删除审批单据 this.customizationService.deleteGeneratedMetadata(approvalFormId); @@ -328,13 +329,13 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { @Override public ApprovalFormat updateApprovalFormat(ApprovalFormatUpdateRequestBody approvalFormatUpdateRequestBody) { if (!approvalFormatUpdateRequestBody.getApprovalFormatId().equals(approvalFormatUpdateRequestBody.getApprovalFormatInstance().getId())) { - throw new RuntimeException("待更新审批格式id与待更新内容中id不一致,请检查。"); + throw new WebCustomException("待更新审批格式id与待更新内容中id不一致,请检查。"); } ApprovalFormat approvalFormatInstance = approvalFormatUpdateRequestBody.getApprovalFormatInstance(); ApprovalFormat approvalFormatFromDatabase = this.approvalFormatManager.getApprovalFormatById(approvalFormatInstance.getId()); if (approvalFormatFromDatabase == null) { - throw new RuntimeException("待更新审批格式不存在,不能调用更新接口。请联系开发人员处理"); + throw new WebCustomException("待更新审批格式不存在,不能调用更新接口。请联系开发人员处理"); } if (ApprovalFormatUtil.isEqual(approvalFormatInstance, approvalFormatFromDatabase)) { return approvalFormatInstance; @@ -342,7 +343,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { ApprovalFormatDO approvalFormatDO = ApprovalFormatConverter.toDo(approvalFormatInstance); if (this.approvalFormatManager.checkIfExistsByBillCategoryIdAndDimension(approvalFormatDO)) { - throw new RuntimeException("不允许相同单据种类id下,存在两个维度定义相同的记录,请检查。"); + throw new WebCustomException("不允许相同单据种类id下,存在两个维度定义相同的记录,请检查。"); } return this.approvalFormatManager.save(approvalFormatDO); @@ -351,13 +352,13 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { @Override public ApprovalFormat updateApprovalFormatFormUrl(ApprovalFormatUpdateRequestBody approvalFormatUpdateRequestBody) { if (!approvalFormatUpdateRequestBody.getApprovalFormatId().equals(approvalFormatUpdateRequestBody.getApprovalFormatInstance().getId())) { - throw new RuntimeException("待更新审批格式id与待更新内容中id不一致,请检查。"); + throw new WebCustomException("待更新审批格式id与待更新内容中id不一致,请检查。"); } ApprovalFormat approvalFormatInstance = approvalFormatUpdateRequestBody.getApprovalFormatInstance(); ApprovalFormat approvalFormatFromDatabase = this.approvalFormatManager.getApprovalFormatById(approvalFormatInstance.getId()); if (approvalFormatFromDatabase == null) { - throw new RuntimeException("待更新审批格式不存在,不能调用更新接口。请联系开发人员处理"); + throw new WebCustomException("待更新审批格式不存在,不能调用更新接口。请联系开发人员处理"); } // 检测到未修改,直接返回 if (approvalFormatInstance.getApprovalFormPublishUri().equals(approvalFormatFromDatabase.getApprovalFormPublishUri())) { @@ -373,7 +374,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { public ApprovalFormat updateApprovalFormatDimension(ApprovalFormatDimensionUpdateRequestBody approvalFormatDimensionUpdateRequestBody) { ApprovalFormat approvalFormatFromDatabase = this.approvalFormatManager.getApprovalFormatById(approvalFormatDimensionUpdateRequestBody.getId()); if (approvalFormatFromDatabase == null) { - throw new RuntimeException("待更新审批格式不存在,不能调用更新接口。请联系开发人员处理"); + throw new WebCustomException("待更新审批格式不存在,不能调用更新接口。请联系开发人员处理"); } // 检测到未修改,直接返回 @@ -431,7 +432,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { return null; } if (approvalFormatCollection.size() > 1) { - throw new RuntimeException("表中存在重复数据,请联系开发人员处理。"); + throw new WebCustomException("表中存在重复数据,请联系开发人员处理。"); } return approvalFormatCollection.get(0); @@ -444,7 +445,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { return null; } if (approvalFormatCollection.size() > 1) { - throw new RuntimeException("表中存在重复数据,请联系开发人员处理。"); + throw new WebCustomException("表中存在重复数据,请联系开发人员处理。"); } return approvalFormatCollection.get(0); @@ -522,7 +523,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { for (ApprovalFormat approvalFormat : approvalFormatCollection) { String currentFormId = approvalFormat.getApprovalFormId(); if (formIdApprovalFormatMap.containsKey(currentFormId)) { - throw new RuntimeException("审批格式和审批单据的一对一映射被破坏,请联系开发人员处理。审批单据id是:" + approvalFormat.getApprovalFormId()); + throw new WebCustomException("审批格式和审批单据的一对一映射被破坏,请联系开发人员处理。审批单据id是:" + approvalFormat.getApprovalFormId()); } formIdApprovalFormatMap.put(currentFormId, approvalFormat); } @@ -542,7 +543,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { try { children = this.customizationService.getMetadataInfoRecusively(metadataHeader.getId(), metadataHeader.getCertId()); } catch (Exception e) { - throw new RuntimeException("getMetadataInfoRecusively Error."); + throw new WebCustomException("getMetadataInfoRecusively Error.", e); } if (children != null && children.size() > 0) { @@ -563,7 +564,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { return null; } if (approvalFormatCollection.size() > 1) { - throw new RuntimeException("表中存在重复数据,请联系开发人员处理。"); + throw new WebCustomException("表中存在重复数据,请联系开发人员处理。"); } return approvalFormatCollection.get(0); @@ -632,7 +633,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { */ private void deleteFilesGeneratedInPreviewApprovalFormat(String formId) throws Exception { if (formId == null || formId.isEmpty()) { - throw new Exception("删除移动审批相关文件失败,表单编号为空。"); + throw new WebCustomException("删除移动审批相关文件失败,表单编号为空。"); } GspMetadata gspMetadata = ApproveFormatPreviewUtil.getGspMetadataWithFormId(formId); @@ -653,7 +654,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { for (ApprovalFormat approvalFormat : approvalFormatCollection) { GspMetadata approvalForm = this.customizationService.getMetadata(approvalFormat.getApprovalFormId()); if (approvalForm == null) { - throw new RuntimeException("获取元数据失败。待获取元数据ID是:" + approvalFormat.getApprovalFormId()); + throw new WebCustomException("获取元数据失败。待获取元数据ID是:" + approvalFormat.getApprovalFormId()); } MetadataHeader approvalFormMetadataHeader = approvalForm.getHeader(); approvalFormat.setCode(approvalFormMetadataHeader.getCode()); @@ -693,7 +694,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { ApprovalFormatQueryResponseBody approvalFormatQueryResponseBody = ApprovalFormatUtil.convertToApprovalFormatQueryResponseBody(approvalFormat); GspMetadata approvalForm = this.customizationService.getMetadata(approvalFormatQueryResponseBody.getApprovalFormId()); if (approvalForm == null) { - throw new RuntimeException("获取元数据失败。待获取元数据ID是:" + approvalFormatQueryResponseBody.getApprovalFormId()); + throw new WebCustomException("获取元数据失败。待获取元数据ID是:" + approvalFormatQueryResponseBody.getApprovalFormId()); } MetadataHeader approvalFormMetadataHeader = approvalForm.getHeader(); approvalFormatQueryResponseBody.setCode(approvalFormMetadataHeader.getCode()); @@ -829,13 +830,13 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { } catch (JsonProcessingException e) { WebLogger.Instance.error(e); - throw new RuntimeException(e); + throw new WebCustomException("getJsonNode出现错误", e); } } private boolean isCreatedByViewModel(ApprovalFormatCreateRequestBody approvalFormatCreateRequestBody) { if (approvalFormatCreateRequestBody == null) { - throw new RuntimeException("参数为空,请检查!"); + throw new WebCustomException("参数为空,请检查!"); } return StringUtility.isNullOrEmpty(approvalFormatCreateRequestBody.getBeId()); diff --git a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/BusinessEntityServiceImpl.java b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/BusinessEntityServiceImpl.java index ceb064e6..452da2ed 100644 --- a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/BusinessEntityServiceImpl.java +++ b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/BusinessEntityServiceImpl.java @@ -20,6 +20,7 @@ import com.inspur.edp.bef.bizentity.GspBusinessEntity; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; import com.inspur.edp.web.approvalformat.api.service.BusinessEntityService; +import com.inspur.edp.web.common.customexception.WebCustomException; import io.iec.edp.caf.commons.utils.SpringBeanUtils; /** @@ -34,7 +35,7 @@ public class BusinessEntityServiceImpl implements BusinessEntityService { public GspBusinessEntity getBusinessEntity(String bizEntityId) { GspMetadata bizEntityMetadata = this.customizationService.getMetadata(bizEntityId); if(bizEntityMetadata == null) { - throw new RuntimeException("The Metadata to search is null. The Searching Metadata ID is: " + bizEntityId); + throw new WebCustomException("The Metadata to search is null. The Searching Metadata ID is: " + bizEntityId); } return (GspBusinessEntity)bizEntityMetadata.getContent(); @@ -44,7 +45,7 @@ public class BusinessEntityServiceImpl implements BusinessEntityService { public GspMetadata getBusinessEntityMetadata(String bizEntityId) { GspMetadata bizEntityMetadata = this.customizationService.getMetadata(bizEntityId); if(bizEntityMetadata == null) { - throw new RuntimeException("The Metadata to search is null. The Searching Metadata ID is: " + bizEntityId); + throw new WebCustomException("The Metadata to search is null. The Searching Metadata ID is: " + bizEntityId); } return bizEntityMetadata; diff --git a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/ApprovalFormUtil.java b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/ApprovalFormUtil.java index c0dda73b..8cbdfdef 100644 --- a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/ApprovalFormUtil.java +++ b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/ApprovalFormUtil.java @@ -29,6 +29,7 @@ import com.inspur.edp.lcm.metadata.common.Utils; import com.inspur.edp.metadata.businesstype.api.MdBizTypeMappingService; import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; import com.inspur.edp.web.approvalformat.api.entity.ApprovalFormatCreateRequestBody; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import io.iec.edp.caf.commons.utils.SpringBeanUtils; import com.inspur.edp.formserver.viewmodel.extendinfo.entity.GspVoExtendInfo; @@ -143,7 +144,7 @@ public class ApprovalFormUtil { try { customizationService.saveCheck(metadata); } catch (Exception e) { - throw new RuntimeException("元数据namespace + code + type发生重复"); + throw new WebCustomException("元数据namespace + code + type发生重复", e); } } @@ -318,7 +319,7 @@ public class ApprovalFormUtil { try { return mapper.readValue(requestBody.getVoContent(), GspViewModel.class); } catch (JsonProcessingException e) { - throw new RuntimeException("创建" + metaDataType + "元数据失败"); + throw new WebCustomException("创建" + metaDataType + "元数据失败"); } default: return null; @@ -387,7 +388,7 @@ public class ApprovalFormUtil { GspMetadata RtEapiMetadata = eapiMetadataRtService.createRtEapi(voMetadataCopy); DeployEapiMetadataAndSyncToFormMetadata(request, RtEapiMetadata); } catch (Exception e) { - throw new RuntimeException("只支持使用手工创建且没有部署过Eapi的视图对象来创建审批格式!"); + throw new WebCustomException("只支持使用手工创建且没有部署过Eapi的视图对象来创建审批格式!", e); } } diff --git a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/FieldUtil.java b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/FieldUtil.java index d69e70bd..f1a81bd6 100644 --- a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/FieldUtil.java +++ b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/FieldUtil.java @@ -35,6 +35,7 @@ import com.inspur.edp.web.approvalformat.api.entity.schema.Field; import com.inspur.edp.web.approvalformat.api.entity.schema.SimpleField; import com.inspur.edp.web.approvalformat.api.entity.schema.editor.*; import com.inspur.edp.web.approvalformat.api.entity.schema.type.*; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import io.iec.edp.caf.commons.utils.SpringBeanUtils; @@ -218,7 +219,7 @@ public class FieldUtil { } } if(!(udtTypeDef instanceof SimpleDataTypeDef)&&!(udtTypeDef instanceof ComplexDataTypeDef)) { - throw new RuntimeException("Id为"+udtTypeDef.getId()+"的统一数据类型元数据为未识别的类型。"); + throw new WebCustomException("Id为"+udtTypeDef.getId()+"的统一数据类型元数据为未识别的类型。"); } ObjectType objectType = new ObjectType(typeName, displayTypeName, fields); @@ -233,7 +234,7 @@ public class FieldUtil { private static FieldType constructEntityFieldType(TypeBuildingContext elementContext, TypeBuildingContext parentContext) { GspAssociationCollection associations = elementContext.getAssociations(); if (associations == null || associations.size() == 0) { - throw new RuntimeException("字段" + elementContext.getParams().get("name") + "不包含关联实体信息。"); + throw new WebCustomException("字段" + elementContext.getParams().get("name") + "不包含关联实体信息。"); } TypeBuildingContext originalFieldContext = TypeBuildingContext.createSimpleTypeContextFromAssociation(elementContext, parentContext); Field originalField = constructField(originalFieldContext, parentContext); diff --git a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/TypeBuildingContext.java b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/TypeBuildingContext.java index 0565db31..a8f0cbcc 100644 --- a/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/TypeBuildingContext.java +++ b/approval-format/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/util/TypeBuildingContext.java @@ -24,6 +24,7 @@ import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; import com.inspur.edp.das.commonmodel.entity.GspCommonElement; import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; import com.inspur.edp.udt.designtime.api.entity.element.UdtElement; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import lombok.Data; import org.springframework.util.StringUtils; @@ -183,7 +184,7 @@ public class TypeBuildingContext { public static TypeBuildingContext create(UdtElement udtTypeDef, TypeBuildingContext parentContext) { if (udtTypeDef.getIsUdt()) { if (StringUtility.isNullOrEmpty(udtTypeDef.getUdtID()) || StringUtility.isNullOrEmpty(udtTypeDef.getUdtID().trim())) { - throw new RuntimeException("标识为" + udtTypeDef.getId() + ",标签为" + udtTypeDef.getLabelID() + "的字段" + udtTypeDef.getName() + "被定义为'UnifiedDataType'字段,但是没有指定'UnifiedDataType'标识,请检查业务实体。"); + throw new WebCustomException("标识为" + udtTypeDef.getId() + ",标签为" + udtTypeDef.getLabelID() + "的字段" + udtTypeDef.getName() + "被定义为'UnifiedDataType'字段,但是没有指定'UnifiedDataType'标识,请检查业务实体。"); } } TypeBuildingContext typeBuildingContext = new TypeBuildingContext() { diff --git a/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/service/deployapprovalformat/DeployApprovalFormatImpl.java b/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/service/deployapprovalformat/DeployApprovalFormatImpl.java index a975a7f3..3fda9318 100644 --- a/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/service/deployapprovalformat/DeployApprovalFormatImpl.java +++ b/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/service/deployapprovalformat/DeployApprovalFormatImpl.java @@ -17,6 +17,7 @@ package com.inspur.edp.web.approvalformat.rpc.service.deployapprovalformat; import com.fasterxml.jackson.databind.JsonNode; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.jitruntimebuild.scriptcache.api.entity.ScriptCacheResponse; import com.inspur.edp.web.jitruntimebuild.scriptcache.localserver.LocalServerVersionManager; import io.iec.edp.caf.commons.utils.SpringBeanUtils; @@ -42,10 +43,10 @@ public class DeployApprovalFormatImpl implements DeployApprovalFormat { result.put("flag", "true"); // 是否解析型 return result; } else { - throw new RuntimeException(scriptCacheResponse.getErrorMessage()); + throw new WebCustomException(scriptCacheResponse.getErrorMessage()); } } else { - throw new RuntimeException("beforeNavigate 参数转换失败"); + throw new WebCustomException("beforeNavigate 参数转换失败"); } } } diff --git a/form-process/web-form-process/pom.xml b/form-process/web-form-process/pom.xml index 18ba3de6..f7b480b5 100644 --- a/form-process/web-form-process/pom.xml +++ b/form-process/web-form-process/pom.xml @@ -21,13 +21,13 @@ form-process com.inspur.edp - ${custom.version} + 0.1.9-SNAPSHOT 4.0.0 web-form-process jar - ${custom.version} + io.iec.edp @@ -37,13 +37,6 @@ com.inspur.edp lcm-metadata-api - 0.1.23 - - - com.inspur.edp - lcm-metadata-api - 0.1.23 - compile com.inspur.edp @@ -72,4 +65,4 @@ - \ No newline at end of file + diff --git a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageConfiguration.java b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageConfiguration.java index 5c8f7858..bfa61e79 100644 --- a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageConfiguration.java +++ b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageConfiguration.java @@ -27,7 +27,7 @@ import org.springframework.context.annotation.Configuration; /** * @author guozhiqi */ -@Configuration +@Configuration(proxyBeanMethods = false) public class NpmPackageConfiguration { @Bean public NpmPackageWebService npmPackageWebService() { diff --git a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageInstallConfiguration.java b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageInstallConfiguration.java index ea359d71..985722a1 100644 --- a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageInstallConfiguration.java +++ b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/config/NpmPackageInstallConfiguration.java @@ -24,7 +24,7 @@ import io.iec.edp.caf.rest.RESTEndpoint; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -@Configuration +@Configuration(proxyBeanMethods = false) public class NpmPackageInstallConfiguration { @Bean public NpmPackageInstallWebService npmPackageInstallWebService() { diff --git a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java index bf2d0044..5e9544f8 100644 --- a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java +++ b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java @@ -270,6 +270,7 @@ public class NpmInstallManager { FileUtility.deleteFile(lockFilePath); } } catch (Exception ignored) { + WebLogger.Instance.info("deleteLockFile failed " + ignored.getMessage()); } } diff --git a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmsetting/NpmSettingConvertor.java b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmsetting/NpmSettingConvertor.java index 1e87ecdc..ece0bda8 100644 --- a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmsetting/NpmSettingConvertor.java +++ b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmsetting/NpmSettingConvertor.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.npmpackage.core.npmsetting; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.npmpackage.api.entity.NpmInstallParameter; import com.inspur.edp.web.npmpackage.api.entity.settings.NpmRepository; @@ -42,7 +43,7 @@ public class NpmSettingConvertor { } // 如果获取到的仓库实例为空 if (currentRepository == null) { - throw new RuntimeException("未获取到npm配置仓库实例"); + throw new WebCustomException("未获取到npm配置仓库实例"); } npmInstallParameter.setUserName(currentRepository.getUserName()); diff --git a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/webservice/NpmPackageInstallWebServiceImpl.java b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/webservice/NpmPackageInstallWebServiceImpl.java index 73efdcaa..552811ac 100644 --- a/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/webservice/NpmPackageInstallWebServiceImpl.java +++ b/npmpackage/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/webservice/NpmPackageInstallWebServiceImpl.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.npmpackage.core.webservice; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.utility.CommonUtility; import com.inspur.edp.web.npmpackage.api.entity.NpmInstallParameter; import com.inspur.edp.web.npmpackage.api.entity.NpmPackageResponse; @@ -28,6 +29,8 @@ import com.inspur.edp.web.npmpackage.core.npmsetting.NpmSettingEncryptService; import com.inspur.edp.web.npmpackage.core.npmsetting.NpmSettingManager; import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import java.util.Arrays; + /** * npm 包安装webservice * @@ -55,7 +58,7 @@ public class NpmPackageInstallWebServiceImpl implements NpmPackageInstallWebServ npmSettings.setLastUpdated(CommonUtility.getCurrentDateString()); NpmSettingManager.saveNpmSetting(npmSettings); } catch (Exception ignored) { - + WebLogger.Instance.info("npm install failed " + ignored.getMessage() + Arrays.toString(ignored.getStackTrace())); } return npmPackageResponse; diff --git a/pom.xml b/pom.xml index 5108f457..f7e652ab 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,9 @@ form-process metadata tsfile + + web-formmetadata-relycheck + @@ -131,6 +134,12 @@ ${custom.version} compile + + com.inspur.edp + web-formconfig-api + ${custom.version} + compile + com.inspur.edp web-jitengine-web-core @@ -356,7 +365,7 @@ com.inspur.edp lcm-metadata-spi - 0.1.37 + 0.1.40-SNAPSHOT compile @@ -456,11 +465,7 @@ bef-api 0.2.2 - - com.inspur.edp - udt-designtime-api - 0.1.7 - + com.inspur.edp bef-bizentity diff --git a/relycheck/noah-test/pom.xml b/relycheck/noah-test/pom.xml new file mode 100644 index 00000000..b621822f --- /dev/null +++ b/relycheck/noah-test/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.inspur.edp + web + 0.1.9-SNAPSHOT + ../../pom.xml + + + noah-test + jar + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + true + test + + + + \ No newline at end of file diff --git a/relycheck/noah-test/src/main/java/com/noah/NoahApplication.java b/relycheck/noah-test/src/main/java/com/noah/NoahApplication.java new file mode 100644 index 00000000..90712586 --- /dev/null +++ b/relycheck/noah-test/src/main/java/com/noah/NoahApplication.java @@ -0,0 +1,36 @@ +package com.noah; + +import com.noah.config.NoahConfiguration; +import com.noah.service.MyBean; +import com.noah.service.YourBean; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import java.util.Arrays; + +/** + * @author noah + * 2023/8/7 10:40 + */ +@SpringBootApplication +public class NoahApplication { + public static void main(String[] args) { + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + context.register(NoahConfiguration.class); + context.refresh(); + + System.out.println(context.getBean(YourBean.class)); + + System.out.println(context.getBean(MyBean.class)); + System.out.println(context.getBean(MyBean.class)); + + System.out.println(context.getBean(NoahConfiguration.class)); + System.out.println(context.getBean(NoahConfiguration.class).myBean()); + Arrays.stream(context.getBeanDefinitionNames()).forEach(t-> System.out.println(t)); + + context.close(); + + } +} diff --git a/relycheck/noah-test/src/main/java/com/noah/config/NoahConfiguration.java b/relycheck/noah-test/src/main/java/com/noah/config/NoahConfiguration.java new file mode 100644 index 00000000..3fd21b80 --- /dev/null +++ b/relycheck/noah-test/src/main/java/com/noah/config/NoahConfiguration.java @@ -0,0 +1,26 @@ +package com.noah.config; + +import com.noah.service.MyBean; +import com.noah.service.YourBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author noah + * 2023/8/7 10:41 + */ +@Configuration(proxyBeanMethods = true) +public class NoahConfiguration { + + @Bean(name = "noahMyBean") + public MyBean myBean() { + return new MyBean(); + } + + @Bean(name = "noahYourBean") + public YourBean yourBean(MyBean myBean) { + // 直接调用 不会执行 bean 的生命周期 + return new YourBean(myBean); + } + +} diff --git a/relycheck/noah-test/src/main/java/com/noah/service/MyBean.java b/relycheck/noah-test/src/main/java/com/noah/service/MyBean.java new file mode 100644 index 00000000..a87eca1c --- /dev/null +++ b/relycheck/noah-test/src/main/java/com/noah/service/MyBean.java @@ -0,0 +1,14 @@ +package com.noah.service; + +import javax.annotation.PostConstruct; + +/** + * @author noah + * 2023/8/7 13:41 + */ +public class MyBean { + @PostConstruct + public void init() { + System.out.println("my bean init"); + } +} diff --git a/relycheck/noah-test/src/main/java/com/noah/service/YourBean.java b/relycheck/noah-test/src/main/java/com/noah/service/YourBean.java new file mode 100644 index 00000000..869d5e87 --- /dev/null +++ b/relycheck/noah-test/src/main/java/com/noah/service/YourBean.java @@ -0,0 +1,21 @@ +package com.noah.service; + +import javax.annotation.PostConstruct; + +/** + * @author noah + * 2023/8/7 13:41 + */ +public class YourBean { + + private final MyBean myBean; + + public YourBean(MyBean myBean) { + this.myBean = myBean; + } + + @PostConstruct + public void init() { + System.out.println("your bean init"); + } +} diff --git a/relycheck/pom.xml b/relycheck/pom.xml new file mode 100644 index 00000000..cc9b8389 --- /dev/null +++ b/relycheck/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + com.inspur.edp + web-jitengine-formmetadata + 0.1.9-SNAPSHOT + + + relycheck + pom + + web-formmetadata-relycheck + + diff --git a/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/config/JitBuildConfiguration.java b/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/config/JitBuildConfiguration.java index 46138c47..0d5fcfbe 100644 --- a/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/config/JitBuildConfiguration.java +++ b/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/config/JitBuildConfiguration.java @@ -30,7 +30,7 @@ import org.springframework.context.annotation.Configuration; public class JitBuildConfiguration { @Bean - public JitBuildService JitBuildService(){ + public JitBuildService jitBuildService(){ return new JitBuildServiceImp(); } diff --git a/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java b/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java index 85e809ac..eea73dc7 100644 --- a/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java +++ b/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java @@ -256,7 +256,6 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen return getterMetadataInfo; }, this.getExecuteEnvironment(), this.isUpgradeTool()); - String[] params = {externalVisualDom.getExternalComponentPath(), externalVisualDom.getJson().getModule().getCode()}; try { resolveFormMetadataWithVisualDom(formMetadata, externalVisualDom.getJson(), diff --git a/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java b/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java index e068453b..e62646f0 100644 --- a/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java +++ b/runtime/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java @@ -80,7 +80,7 @@ public class JitBuildServiceImp implements JitBuildService { FileUtility.deleteFolder(sourceServicePath); WebLogger.Instance.info("delete service path ,the service path is " + sourceServicePath, CurrentClassName); } catch (Exception ignored) { - + WebLogger.Instance.info("delete service path failed ,the service path is " + sourceServicePath + " " + Arrays.toString(ignored.getStackTrace()), CurrentClassName); } // 生成具体的json文件 @@ -148,6 +148,7 @@ public class JitBuildServiceImp implements JitBuildService { /** * 构造对应的编译上下文参数 + * * @param buildParameter * @return */ diff --git a/scriptcache/runtime-scriptcache/libs/bef-engine-core-0.1.12.jar b/scriptcache/runtime-scriptcache/libs/bef-engine-core-0.1.12.jar new file mode 100644 index 0000000000000000000000000000000000000000..b9ed7c9fd5cb0b5745507634c10b4cb4c0138c21 GIT binary patch literal 80073 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


H2 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ℑF&cA?6hftiIW&C8~lsQnS2`ID)#=2ob zKWhg8V}rxnQPoJ7E3a`Upu~b%P8~+UnEwrhrb=D4Kc#~}ukr>?6y8QcR`kQB@9jJr=z0Ggho)NgNAHCPgT74weH-5G7WvNu zM@j_%>vq(fCYUlIW$YAP3~P6sqZ@9PMO9ARCJbm31JEYG{X&Z7>3Ip(baMkf-w=<+ z;16LPfg&_*=J4Q6Zw;{7F0cmBfItxlfpc_Wr{mI2&1iGc0tW*gECTb|QJ^TiLl|A8 zi-w+Dky66`1i*!^21wJi8RGEcCa}Zgw2IQRR)_rqZuZGSd+EKrVzB!=j4#nXi{1nnyFI*CN^N9*8bq~#t zL%u;t$$;L!-3l{J)X4l8v)}roSb6yDQhNISprC|;Aa)J&V`EuQiSqFNCUk@f(3l1>^s)UNmFj6%N;LFfh(4JMJ~eaw6M8P4p*ydn zb0_4Y&-XXrKfA3nPoYq%4BcRX_pL*M|3aRr@dEHo9Rjfx{FHz|QX|3);J5z)|Fm^+ literal 0 HcmV?d00001 diff --git a/scriptcache/runtime-scriptcache/libs/bff-engine-core-0.1.4.jar b/scriptcache/runtime-scriptcache/libs/bff-engine-core-0.1.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..fcfa913205a68e546519930ee7bdd3b8e794bcc5 GIT binary patch literal 80940 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 DhRbbj literal 0 HcmV?d00001 diff --git a/scriptcache/runtime-scriptcache/libs/lcm-metadata-api.jar b/scriptcache/runtime-scriptcache/libs/lcm-metadata-api.jar new file mode 100644 index 0000000000000000000000000000000000000000..0581143447cfe4937e206c2938317ecff6c32d22 GIT binary patch literal 127802 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 On+qFQKfzB4gnt3r7wz}} literal 0 HcmV?d00001 diff --git a/scriptcache/runtime-scriptcache/libs/task-api-0.3.11.jar b/scriptcache/runtime-scriptcache/libs/task-api-0.3.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..30572addaa44da10029bb506fc617b386f7f8b6a GIT binary patch literal 76098 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 O^d8KGEET|{j`Tm}z?x_P literal 0 HcmV?d00001 diff --git a/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/config/ScriptCacheConfiguration.java b/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/config/ScriptCacheConfiguration.java index 4f5560a8..98ddf0ac 100644 --- a/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/config/ScriptCacheConfiguration.java +++ b/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/config/ScriptCacheConfiguration.java @@ -35,7 +35,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -@Configuration +@Configuration(proxyBeanMethods = false) @EnableJpaRepositories("com.inspur.edp.web.jitruntimebuild.scriptcache.domain.repository") @EntityScan({"com.inspur.edp.web.jitruntimebuild.scriptcache.domain.entity"}) public class ScriptCacheConfiguration { @@ -76,7 +76,7 @@ public class ScriptCacheConfiguration { @Bean - public RESTEndpoint ScriptCacheWebServiceEndpoint(ScriptCacheWebServiceImpl webservice) { + public RESTEndpoint scriptCacheWebServiceEndpoint(ScriptCacheWebServiceImpl webservice) { return new RESTEndpoint("/runtime/jit/v1.0/scriptcache", webservice); } diff --git a/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java b/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java index 342b774e..b98b3bbc 100644 --- a/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java +++ b/scriptcache/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java @@ -86,7 +86,7 @@ public class ScriptCacheServiceImpl implements ScriptCacheService { fileList.add(new File(filePath)); } - WebLogger.Instance.info("absoluteBaseDirectory:" + request.getAbsoluteBaseDirectory() + " 获取文件列表个数为:" + fileList.size()); + WebLogger.Instance.info("absoluteBaseDirectory:" + request.getAbsoluteBaseDirectory() + " 获取文件列表个数为:" + ListUtility.getLength(fileList)); // 如果存在文件列表 if (fileList != null && fileList.size() > 0) { FormProjectCache finalFormProjectCache = formProjectCache; @@ -96,7 +96,6 @@ public class ScriptCacheServiceImpl implements ScriptCacheService { pubishScript(t, request.getMetaDataId(), finalFormProjectCache, request); } }); - } // 保存元数据版本 diff --git a/toout.bat b/toout.bat index b217e9c7..3212b408 100644 --- a/toout.bat +++ b/toout.bat @@ -64,6 +64,8 @@ COPY .\web-npmpackage-core\target\web-npmpackage-core-%version%.jar .\out\server COPY .\web-formconfig-api\target\web-formconfig-api-%version%.jar .\out\server\platform\common\libs\web-formconfig-api.jar COPY .\web-formconfig-core\target\web-formconfig-core-%version%.jar .\out\server\platform\common\libs\web-formconfig-core.jar + +COPY .\web-formmetadata-relycheck\target\web-formmetadata-relycheck-%version%.jar .\out\server\platform\dev\main\libs\web-formmetadata-relycheck.jar ::pause ::pause diff --git a/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java index 3a2a12a4..1d6b95bd 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.common.encrypt; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.logger.WebLogger; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; @@ -330,7 +331,7 @@ public class EncryptUtility { try { return new String(Base64.decode(res), charset); } catch (Exception e) { - throw new RuntimeException("base64Decode失败", e); + throw new WebCustomException("base64Decode失败", e); } } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/logger/WebLogger.java b/web-common/src/main/java/com/inspur/edp/web/common/logger/WebLogger.java index 5fd1045f..3d14522c 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/logger/WebLogger.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/logger/WebLogger.java @@ -24,7 +24,8 @@ import java.util.Arrays; /** * web 统一的日志输出类 使用枚举的目的是为了保证绝对单例 - * @author noah + * + * @author noah */ public enum WebLogger { /** @@ -165,7 +166,7 @@ public enum WebLogger { if (StringUtility.isNullOrEmpty(customErrorMessage)) { this.error(ex, loggerName); } else { - this.error(customErrorMessage + ex.getMessage() + ex.getStackTrace(), loggerName); + this.error(customErrorMessage + ex.getMessage() + Arrays.toString(ex.getStackTrace()), loggerName); } } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtility.java index c1dc4826..970eba13 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtility.java @@ -305,7 +305,7 @@ public final class MetadataUtility { try { commandMetadataContent = (WebCommandsMetadata) commandMetadata.getContent(); } catch (RuntimeException e) { - throw new WebCustomException("当前元数据非命令元数据。元数据id是:" + commandMetadata.getHeader().getId()); + throw new WebCustomException("当前元数据非命令元数据。元数据id是:" + commandMetadata.getHeader().getId(), e); } if (commandMetadataContent == null) { diff --git a/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java index 2823c0fc..5ebd3e15 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/serialize/SerializeUtility.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.*; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.logger.WebLogger; import java.io.IOException; @@ -105,7 +106,7 @@ public class SerializeUtility { try { return defaultObjectMapper.readValue(contentString, valueTypeRef); } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw new WebCustomException("反序列化失败", e); } } @@ -267,7 +268,7 @@ public class SerializeUtility { return objectJsonNode; } catch (JsonProcessingException e) { WebLogger.Instance.error(e); - throw new RuntimeException(e); + throw new WebCustomException("readTree执行失败",e); } } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java index 2c1e3ffe..bd276649 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java @@ -151,7 +151,9 @@ public class CommandExecuteInterceptor extends Thread { } finally { try { this.inputStream.close(); - br.close(); + if (br != null) { + br.close(); + } } catch (IOException ex) { WebLogger.Instance.error(ex); } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java index eb0493f9..f78b8111 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.common.utility; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.logger.WebLogger; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.SystemUtils; @@ -135,7 +136,7 @@ public class CommandLineUtility { process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", updateCommand}); } if (updateCommand == null) { - throw new RuntimeException("不支持的操作系统类型,请联系开发人员处理"); + throw new WebCustomException("不支持的操作系统类型,请联系开发人员处理"); } return process; } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/ListUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/ListUtility.java index 17366d21..f27fe962 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/ListUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/ListUtility.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.common.utility; +import java.util.ArrayList; import java.util.List; /** @@ -44,4 +45,71 @@ public class ListUtility { public static boolean isNotEmpty(List sourceList) { return !isEmpty(sourceList); } + + /** + * 获取列表的长度 + * + * @param sourceList + * @return + */ + public static int getLength(List sourceList) { + if (isEmpty(sourceList)) { + return 0; + } + return sourceList.size(); + } + + /** + * 将目标集合添加至源集合中 + * + * @param sourceList 源集合 + * @param targetList 目标集合 + * @param + */ + public static List add(List sourceList, List targetList) { + // 如果目标集合为空 那么不进行任何操作 + if (isEmpty(targetList)) { + return sourceList; + } + if (sourceList == null) { + sourceList = new ArrayList<>(); + } + sourceList.addAll(targetList); + return sourceList; + } + + /** + * 添加具体项至集合列表中 + * + * @param sourceList 源集合 + * @param element + * @param + */ + public static void add(List sourceList, T element) { + if (element == null) { + return; + } + if (sourceList == null) { + sourceList = new ArrayList<>(); + } + sourceList.add(element); + } + + /** + * 判断一个element是否在集合中存在 + * + * @param sourceList + * @param element + * @param + * @return + */ + public static boolean contains(List sourceList, T element) { + if (sourceList == null || sourceList.isEmpty()) { + return false; + } + if (element == null) { + return false; + } + return sourceList.contains(element); + } } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/LoggerUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/LoggerUtility.java index 0a241048..5a3dadd1 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/LoggerUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/LoggerUtility.java @@ -60,16 +60,6 @@ public class LoggerUtility { public static void log(String message, LoggerLevelEnum level, boolean printToBrowser, boolean includeMessageHeader) { log(message, level, includeMessageHeader); - if (printToBrowser) { - try { - if (!StringUtility.isNullOrEmpty(message)) { - // 由于分su问题 在运行时不存在此jar包 因此移除该jar包调用 - // LoggerDisruptorQueue.publishEvent(message); - } - } catch (Exception ignored) { - - } - } } public static void logToBrowser(String message, LoggerLevelEnum level) { diff --git a/web-common/src/test/java/com/inspur/edp/web/common/utility/ListUtilityTest.java b/web-common/src/test/java/com/inspur/edp/web/common/utility/ListUtilityTest.java new file mode 100644 index 00000000..cf7189fa --- /dev/null +++ b/web-common/src/test/java/com/inspur/edp/web/common/utility/ListUtilityTest.java @@ -0,0 +1,126 @@ +package com.inspur.edp.web.common.utility; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + + +public class ListUtilityTest { + + @Test + public void testIsEmpty_withEmptyList_shouldReturnTrue() { + List list = new ArrayList<>(); + boolean result = ListUtility.isEmpty(list); + Assert.assertTrue(result); + } + + @Test + public void testIsEmpty_withNonEmptyList_shouldReturnFalse() { + List list = new ArrayList<>(); + list.add(1); + boolean result = ListUtility.isEmpty(list); + Assert.assertFalse(result); + } + + @Test + public void testIsNotEmpty_withEmptyList_shouldReturnFalse() { + List list = new ArrayList<>(); + boolean result = ListUtility.isNotEmpty(list); + Assert.assertFalse(result); + } + + @Test + public void testIsNotEmpty_withNonEmptyList_shouldReturnTrue() { + List list = new ArrayList<>(); + list.add(1); + boolean result = ListUtility.isNotEmpty(list); + Assert.assertTrue(result); + } + + @Test + public void testGetLength_withEmptyList_shouldReturnZero() { + List list = new ArrayList<>(); + int result = ListUtility.getLength(list); + Assert.assertEquals(0, result); + } + + @Test + public void testGetLength_withNonEmptyList_shouldReturnSize() { + List list = new ArrayList<>(); + list.add(1); + list.add(2); + int result = ListUtility.getLength(list); + Assert.assertEquals(2, result); + } + + @Test + public void testAdd_withNullSourceList_shouldAddTargetListToEmptyList() { + List sourceList = null; + List targetList = new ArrayList<>(); + targetList.add(1); + targetList.add(2); + sourceList = ListUtility.add(sourceList, targetList); + Assert.assertEquals(targetList, sourceList); + } + + @Test + public void testAdd_withNonNullSourceList_shouldAddTargetListToSourceList() { + List sourceList = new ArrayList<>(); + sourceList.add(1); + List targetList = new ArrayList<>(); + targetList.add(2); + targetList.add(3); + ListUtility.add(sourceList, targetList); + List expectedList = new ArrayList<>(); + expectedList.add(1); + expectedList.add(2); + expectedList.add(3); + Assert.assertEquals(expectedList, sourceList); + } + + @Test + public void testAdd_withNullElement_shouldNotAddToSourceList() { + List sourceList = new ArrayList<>(); + sourceList.add(1); + ListUtility.add(sourceList, new ArrayList<>()); + Assert.assertEquals(1, sourceList.size()); + } + + @Test + public void testAdd_withNonNullElement_shouldAddToSourceList() { + List sourceList = new ArrayList<>(); + sourceList.add(1); + ListUtility.add(sourceList, 2); + List expectedList = new ArrayList<>(); + expectedList.add(1); + expectedList.add(2); + Assert.assertEquals(expectedList, sourceList); + } + + @Test + public void testContains_withEmptyList_shouldReturnFalse() { + List list = new ArrayList<>(); + boolean result = ListUtility.contains(list, 1); + Assert.assertFalse(result); + } + + @Test + public void testContains_withNonEmptyListAndElementNotPresent_shouldReturnFalse() { + List list = new ArrayList<>(); + list.add(1); + list.add(2); + boolean result = ListUtility.contains(list, 3); + Assert.assertFalse(result); + } + + @Test + public void testContains_withNonEmptyListAndElementPresent_shouldReturnTrue() { + List list = new ArrayList<>(); + list.add(1); + list.add(2); + boolean result = ListUtility.contains(list, 2); + Assert.assertTrue(result); + } +} \ No newline at end of file diff --git a/web-designschema/pom.xml b/web-designschema/pom.xml index f18e29a2..38daaec9 100644 --- a/web-designschema/pom.xml +++ b/web-designschema/pom.xml @@ -26,6 +26,7 @@ 4.0.0 web-designschema + jar @@ -54,7 +55,7 @@ com.inspur.edp udt-designtime-api - 0.1.7 + 0.1.8 system ${pom.basedir}/libs/com.inspur.edp.udt.designtime.api.jar @@ -68,7 +69,7 @@ com.inspur.edp - caf-cef-schema + caf-cef-customSchema 0.1.7 system ${pom.basedir}/libs/caf-cef-schema.jar @@ -84,12 +85,6 @@ 0.2.85 compile - - com.inspur.edp - cef-api - 0.2.32 - compile - diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldBuilder.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldBuilder.java index a80f7455..77e758ef 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldBuilder.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldBuilder.java @@ -29,6 +29,7 @@ import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; import com.inspur.edp.udt.designtime.api.nocode.BusinessField; import com.inspur.edp.udt.designtime.api.nocode.IBusinessFieldService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; @@ -42,7 +43,6 @@ import com.inspur.edp.web.designschema.elements.type.EntityType; import com.inspur.edp.web.designschema.elements.type.FieldType; import com.inspur.edp.web.designschema.elements.type.ObjectType; import com.inspur.edp.web.designschema.udtextensiondef.FormUdtExtension; -import io.iec.edp.caf.commons.exception.CAFRuntimeException; import io.iec.edp.caf.commons.utils.SpringBeanUtils; import org.springframework.util.StringUtils; @@ -645,7 +645,7 @@ public class FieldBuilder { refObject.argvalue = schemaField; return schemaField.getId(); default: - throw new CAFRuntimeException("NOCODE", "BizFieldError", "不支持的业务字段嵌套层次,请联系技术人员", null); + throw new WebCustomException("不支持的业务字段嵌套层次,请联系技术人员"); } } diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldTypeBuilder.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldTypeBuilder.java index 3f30d3a5..17bda720 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldTypeBuilder.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/FieldTypeBuilder.java @@ -27,6 +27,7 @@ import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; import com.inspur.edp.udt.designtime.api.nocode.BusinessField; import com.inspur.edp.udt.designtime.api.nocode.IBusinessFieldService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -139,7 +140,7 @@ public class FieldTypeBuilder { private EntityType GenerateEntityFieldType(TypeBuildingContext context, TypeBuildingContext parentContext, String scene) { GspAssociationCollection associations = context.getAssociations(); if (associations == null || associations.size() == 0) { - throw new RuntimeException(String.format("字段'%1$s'不包含关联实体信息。", context.Get("Name", String.class))); + throw new WebCustomException(String.format("字段'%1$s'不包含关联实体信息。", context.Get("Name", String.class))); } TypeBuildingContext originalFieldContext = TypeBuildingContext.CreateSimpleTypeContextFromAssociation(context, parentContext); Field originalField = fieldBuilder.build(originalFieldContext, parentContext, scene); @@ -235,7 +236,7 @@ public class FieldTypeBuilder { typeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } if (typeMetadata == null) { - throw new RuntimeException(String.format("未获取到id为'%1$s'的统一数据类型(UDT)元数据。", uri)); + throw new WebCustomException(String.format("未获取到id为'%1$s'的统一数据类型(UDT)元数据。", uri)); } unifiedDataType = (UnifiedDataTypeDef) ((typeMetadata.getContent() instanceof UnifiedDataTypeDef) ? typeMetadata.getContent() : null); return unifiedDataType; diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/TypeBuildingContext.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/TypeBuildingContext.java index 0d344ade..67d9ca08 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/TypeBuildingContext.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/TypeBuildingContext.java @@ -30,6 +30,7 @@ import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; import com.inspur.edp.udt.designtime.api.entity.UnifiedDataTypeDef; import com.inspur.edp.udt.designtime.api.nocode.BusinessField; import com.inspur.edp.udt.designtime.api.nocode.IBusinessFieldService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -445,7 +446,7 @@ public class TypeBuildingContext { public static TypeBuildingContext CreateSimpleTypeContextFromAssociation(TypeBuildingContext context, TypeBuildingContext parent) { GspAssociationCollection associations = context.getAssociations(); if (associations == null || associations.size() == 0) { - throw new RuntimeException(String.format("字段'%1$s'不包含关联实体信息。", context.Get("Name", String.class))); + throw new WebCustomException(String.format("字段'%1$s'不包含关联实体信息。", context.Get("Name", String.class))); } String tempVar = context.Get("Label", String.class); @@ -486,7 +487,7 @@ public class TypeBuildingContext { private static void VerifyUnifiedDataType(IGspCommonField element) { if (element.getIsUdt()) { if (StringUtility.isNullOrEmpty(element.getUdtID().trim())) { - throw new RuntimeException(String.format("标识为'%1$s',标签为'%2$s'的字段'%3$s'被定义为'UnifiedDataType'字段,但是没有指定'UnifiedDataType'标识,请检查业务实体。", element.getID(), element.getLabelID(), element.getName())); + throw new WebCustomException(String.format("标识为'%1$s',标签为'%2$s'的字段'%3$s'被定义为'UnifiedDataType'字段,但是没有指定'UnifiedDataType'标识,请检查业务实体。", element.getID(), element.getLabelID(), element.getName())); } } } @@ -504,7 +505,7 @@ public class TypeBuildingContext { typeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } if (typeMetadata == null) { - throw new RuntimeException(String.format("未获取到id为'%1$s'的统一数据类型(UDT)元数据。", uri)); + throw new WebCustomException(String.format("未获取到id为'%1$s'的统一数据类型(UDT)元数据。", uri)); } unifiedDataType = (UnifiedDataTypeDef) ((typeMetadata.getContent() instanceof UnifiedDataTypeDef) ? typeMetadata.getContent() : null); this.setUnifiedDataTypeDefInstance(unifiedDataType); diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/BaseDesignSchemaChangeHandler.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/BaseDesignSchemaChangeHandler.java index dadb26cf..36068472 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/BaseDesignSchemaChangeHandler.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/BaseDesignSchemaChangeHandler.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.inspur.edp.formserver.viewmodel.GspViewModel; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.designschema.elements.Schema; import com.inspur.edp.web.designschema.synchronization.helplinkconfig.VoMetadataHelpLinkConfigModifierBeforeSaving; @@ -63,7 +64,7 @@ public abstract class BaseDesignSchemaChangeHandler { } } } else { - throw new RuntimeException("表单DOM结构错误:未到module.schemas节点"); + throw new WebCustomException("表单DOM结构错误:未到module.schemas节点"); } } diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/FormMetadataUpdate.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/FormMetadataUpdate.java index a36539f7..69390798 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/FormMetadataUpdate.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/synchronization/FormMetadataUpdate.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.inspur.edp.formserver.viewmodel.GspViewModel; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -79,7 +80,7 @@ public class FormMetadataUpdate { } } } else { - throw new RuntimeException("表单DOM结构错误:未到module.schemas节点"); + throw new WebCustomException("表单DOM结构错误:未到module.schemas节点"); } } } diff --git a/web-designschema/src/test/java/com/inspur/edp/web/designschema/elements/FieldTest.java b/web-designschema/src/test/java/com/inspur/edp/web/designschema/elements/FieldTest.java new file mode 100644 index 00000000..b898906f --- /dev/null +++ b/web-designschema/src/test/java/com/inspur/edp/web/designschema/elements/FieldTest.java @@ -0,0 +1,27 @@ +package com.inspur.edp.web.designschema.elements; + +import com.inspur.edp.web.common.serialize.SerializeUtility; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * @author noah + * 2023/7/31 19:35 + */ +public class FieldTest { + + @Test + public void testFieldSerializer() { + SimpleField simpleField = new SimpleField(); + simpleField.setDefaultValue("simplefield"); + + String serializedField = SerializeUtility.getInstance().serialize(simpleField); + + Field field = SerializeUtility.getInstance().deserialize(serializedField, Field.class); + if (field instanceof SimpleField) { + // + System.out.println("simple field"); + } + } +} \ No newline at end of file diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/QuerySchemaField.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/QuerySchemaField.java index c587daa2..ac9207fb 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/QuerySchemaField.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/QuerySchemaField.java @@ -17,6 +17,8 @@ package com.inspur.edp.web.dynamicform.core.components; import lombok.Data; +import lombok.Getter; +import lombok.Setter; import java.util.HashMap; @@ -74,7 +76,8 @@ public class QuerySchemaField { /** * single-number control */ - @Data + @Getter + @Setter public static class QuerySchemaSingleNumberFieldControl extends QuerySchemaFieldControl { { this.setControltype("single-number"); @@ -92,7 +95,8 @@ public class QuerySchemaField { /** * number field control */ - @Data + @Getter + @Setter public static class QuerySchemaNumberFieldControl extends QuerySchemaSingleNumberFieldControl { { this.setControltype("number"); @@ -102,7 +106,8 @@ public class QuerySchemaField { } } - @Data + @Getter + @Setter public static class QuerySchemaSingleDateFieldControl extends QuerySchemaFieldControl { private String format; @@ -113,7 +118,8 @@ public class QuerySchemaField { } } - @Data + @Getter + @Setter public static class QuerySchemaDateFieldControl extends QuerySchemaFieldControl { private boolean weekSelect; private String format; @@ -126,7 +132,8 @@ public class QuerySchemaField { } } - @Data + @Getter + @Setter public static class QuerySchemaDropdownFieldControl extends QuerySchemaFieldControl { private String valueType; private Object enumValues; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/ModuleFormExpressionFieldItem.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/ModuleFormExpressionFieldItem.java index e867896d..c4aaa213 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/ModuleFormExpressionFieldItem.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/ModuleFormExpressionFieldItem.java @@ -18,6 +18,8 @@ package com.inspur.edp.web.jitengine.expressions; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import lombok.Getter; +import lombok.Setter; /** * description:表单表达式对应的字段定义 @@ -25,7 +27,8 @@ import lombok.Data; * @author Noah Guo * @date 2021/01/07 */ -@Data +@Getter +@Setter public class ModuleFormExpressionFieldItem extends ModuleFormExpressionItem { @JsonProperty("fieldId") private String fieldId; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/parser/EntityExpressionParser.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/parser/EntityExpressionParser.java index f1b78538..849b540c 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/parser/EntityExpressionParser.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/expressions/parser/EntityExpressionParser.java @@ -66,8 +66,7 @@ public class EntityExpressionParser { Matcher matchedItemExpression = ExpressionSourceItemRegex(entityName, matchedExpressionValue); if (matchedItemExpression.find()) { String matchedItemExpressionValue = matchedItemExpression.group(); - if (!StringUtility.isNullOrEmpty(matchedItemExpressionValue) && - !StringUtility.isNullOrEmpty(matchedItemExpressionValue)) { + if (!StringUtility.isNullOrEmpty(matchedItemExpressionValue)) { String replacedMatchedValue = matchedItemExpressionValue .replace(entityName, "ENTITY~") .replace(".", "/") diff --git a/web-form-metadata/pom.xml b/web-form-metadata/pom.xml index 33eb20c5..86706e60 100644 --- a/web-form-metadata/pom.xml +++ b/web-form-metadata/pom.xml @@ -65,6 +65,10 @@ com.inspur.edp web-jitengine-formmetadata-api + + com.inspur.edp + web-designschema-api + org.junit.jupiter junit-jupiter-api diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/config/FormMetadataConfiguration.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/config/FormMetadataConfiguration.java index 6c25a189..b5bc15b0 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/config/FormMetadataConfiguration.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/config/FormMetadataConfiguration.java @@ -24,12 +24,11 @@ import com.inspur.edp.web.formmetadata.service.FormMetadataRTService; import com.inspur.edp.web.formmetadata.service.FormMetadataService; import com.inspur.edp.web.formmetadata.service.FormRelateMetadataService; import com.inspur.edp.web.formmetadata.webservice.FormMetadataWebServiceImpl; -import io.iec.edp.caf.businessobject.api.service.DevBasicInfoService; import io.iec.edp.caf.rest.RESTEndpoint; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; @Configuration("com.inspur.edp.web.formmetadata.config.FormMetadataConfiguration") public class FormMetadataConfiguration { @@ -73,8 +72,11 @@ public class FormMetadataConfiguration { return new FormRelateMetadataService(); } + @Bean public FormResourceManager getFormResourceManager() { return new FormResourceManager(); } + + } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/FormMetadataSaveEventListener.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/FormMetadataSaveEventListener.java index 7249b589..f7f513c4 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/FormMetadataSaveEventListener.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/FormMetadataSaveEventListener.java @@ -35,6 +35,7 @@ import io.iec.edp.caf.commons.utils.SpringBeanUtils; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.function.Consumer; @@ -255,7 +256,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { try { FileUtility.deleteFile(tsFileNameAndPath); } catch (Exception ex) { - WebLogger.Instance.error(ex.getMessage() + ex.getStackTrace()); + WebLogger.Instance.error(ex.getMessage() + Arrays.toString(ex.getStackTrace())); } } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/WebCommandMetadataDelete.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/WebCommandMetadataDelete.java index bc758f7b..72b2683c 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/WebCommandMetadataDelete.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/event/WebCommandMetadataDelete.java @@ -21,6 +21,7 @@ import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.web.command.component.metadata.*; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; @@ -139,7 +140,7 @@ class WebCommandMetadataDelete { metadataGetterParameter.setTargetMetadataNotFoundMessage("获取WebComponent元数据为空,对应元数据id为:" + id); GspMetadata webComponentMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (webComponentMetadata == null) { - throw new RuntimeException("load webComponent metadata is null,the metaDataId is " + id); + throw new WebCustomException("load webComponent metadata is null,the metaDataId is " + id); } return (WebComponentMetadata) webComponentMetadata.getContent(); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formresource/FormResourceManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formresource/FormResourceManager.java index 35322de5..2980d5ac 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formresource/FormResourceManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formresource/FormResourceManager.java @@ -24,6 +24,7 @@ import com.inspur.edp.web.common.logger.WebLogger; import io.iec.edp.caf.commons.utils.SpringBeanUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -55,7 +56,7 @@ public class FormResourceManager { } return resourceList; } catch (MetadataNotFoundException ex) { - WebLogger.Instance.warn(ex.getMessage() + ex.getStackTrace()); + WebLogger.Instance.warn(ex.getMessage() + Arrays.toString(ex.getStackTrace())); } catch (Exception ex) { // 排除掉找不到对应的资源文件的异常 String fileNotFoundException = "java.io.FileNotFoundException"; diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/ComponentUtility.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/ComponentUtility.java index 4fbd408c..ab199975 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/ComponentUtility.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/ComponentUtility.java @@ -101,7 +101,7 @@ public class ComponentUtility { componentId = getName(component); } } - throw new WebCustomException(String.format("Get %1$s's key '%2$s''s Value Failed, Error stack is:", componentId, keyName)); + throw new WebCustomException(String.format("Get %1$s's key '%2$s''s Value Failed, Error stack is:", componentId, keyName), e); } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContent.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContent.java index 560ff46a..817f1b05 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContent.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadata/FormMetadataContent.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.TextNode; import com.inspur.edp.lcm.metadata.api.AbstractMetadataContent; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.serialize.SerializeUtility; @@ -46,12 +47,12 @@ public class FormMetadataContent extends AbstractMetadataContent { private JsonNode Contents; @JsonProperty("Contents") - public final JsonNode getContents() { + public final JsonNode getContents() { if (this.Contents != null && this.Contents instanceof TextNode) { try { this.Contents = SerializeUtility.getInstance().getDefaultObjectMapper().readTree(this.Contents.asText()); - }catch(Exception ex){ - throw new RuntimeException("表单元数据转换为JsonNode失败,对应元数据为:"+this.Contents.asText()); + } catch (Exception ex) { + throw new WebCustomException("表单元数据转换为JsonNode失败,对应元数据为:" + this.Contents.asText(), ex); } } return Contents; @@ -85,7 +86,7 @@ public class FormMetadataContent extends AbstractMetadataContent { formMetaDataContent.setContents(newContent); } catch (JsonProcessingException e) { WebLogger.Instance.error(e); - throw new RuntimeException("Form Content克隆失败, id=" + this.getId() + ", code=" + this.getCode() + ", name=" + this.getName()); + throw new WebCustomException("Form Content克隆失败, id=" + this.getId() + ", code=" + this.getCode() + ", name=" + this.getName(), e); } formMetaDataContent.setName(this.getName()); formMetaDataContent.setCode(this.getCode()); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java index a1f0ae6b..670e47c7 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java @@ -310,14 +310,14 @@ public class CommandsAnalysis extends AbstractMetadataAnalysis { cmpMethodReferingItem.getComponentPath()); cmpMetadata = cmpManager.getComponentMetadata(metadataManagerParameter); if (cmpMetadata == null) { - throw new Exception("标识为'" + ((CmpMethodRefering) item).getComponentId() + "'的服务构件为null。"); + throw new WebCustomException("标识为'" + ((CmpMethodRefering) item).getComponentId() + "'的服务构件为null。"); } WebLogger.Instance.info("Get WebCommands By Id:" + cmpMetadata.getId(), this.getClass().getName()); WebComponentMetadataAndExtra webComponentMetadataAndExtra = WebComponentMetadataAndExtra.init(cmpMetadata, cmpMethodReferingItem.getComponentId(), cmpMethodReferingItem.getName(), cmpMethodReferingItem.getName(), cmpMethodReferingItem.getComponentPath()); cmpList.put(cmpMetadata.getId(), webComponentMetadataAndExtra); projectCmpList.put(cmpMetadata.getId(), webComponentMetadataAndExtra); } catch (Exception ex) { - throw new Exception("获取command元数据" + ((CmpMethodRefering) item).getComponentId() + "失败", ex); + throw new WebCustomException("获取command元数据" + ((CmpMethodRefering) item).getComponentId() + "失败", ex); } } else { WebComponentMetadataAndExtra webComponentMetadataAndExtra = projectCmpList.get(((CmpMethodRefering) item).getComponentId()); @@ -399,11 +399,11 @@ public class CommandsAnalysis extends AbstractMetadataAnalysis { for (HashMap serviceRef : serviceReferenceList) { if (serviceRef.containsKey("name") && serviceRef.containsKey("path")) { if (serviceRef.get("name") == null) { - throw new RuntimeException("标识为'{" + serviceRef.get("cmpId") + "'的服务构件name属性不允许为null。"); + throw new WebCustomException("标识为'{" + serviceRef.get("cmpId") + "'的服务构件name属性不允许为null。"); } if (serviceRef.get("path") == null) { - throw new RuntimeException("标识为'" + serviceRef.get("cmpId") + "'的服务构件path属性不允许为null。"); + throw new WebCustomException("标识为'" + serviceRef.get("cmpId") + "'的服务构件path属性不允许为null。"); } if (serviceRef.get("name").toString().equals(component.getClassName()) && diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/FormMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/FormMetadataManager.java index b06d35ba..5ec1c832 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/FormMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/FormMetadataManager.java @@ -17,6 +17,7 @@ package com.inspur.edp.web.formmetadata.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; @@ -60,7 +61,7 @@ public class FormMetadataManager extends BaseMetaDataManager { return getterMetadataInfo; }, null, this.getDefaultMetadataNotFoundFormatMessage(metadataManagerParameter.getId(), MetadataTypeEnum.Frm)); if (metadata == null) { - throw new RuntimeException("load form metadata is null,the metaDataId is " + metadataManagerParameter.getId()); + throw new WebCustomException("load form metadata is null,the metaDataId is " + metadataManagerParameter.getId()); } return metadata; } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java index bd136365..b952bdd0 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java @@ -33,6 +33,8 @@ import com.inspur.edp.web.formmetadata.metadata.FormMetadataContentService; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import org.apache.commons.lang3.StringUtils; +import java.util.Arrays; + /** * 表单元数据复制器 * @@ -121,7 +123,7 @@ public class FormMetadataReplicator { // 同步复制表单元数据的英文、繁体中文资源元数据 copyResourceMetadataWithSpecificLanguage(context, sourceFormMetadata, replicateFormMetadata); } catch (RuntimeException ex) { - WebLogger.Instance.error("表单复制出现错误," + ex.getMessage() + ex.getStackTrace()); + WebLogger.Instance.error("表单复制出现错误," + ex.getMessage() + Arrays.toString(ex.getStackTrace())); // 执行元数据的清理工作 此处仅删除表单元数据 因此存在表单元数据级联删除动作 if (replicateFormMetadata != null) { MetadataUtility.getInstance().deleteMetadataWithDesign(replicateFormMetadata.getRelativePath(), replicateFormMetadata.getHeader().getFileName()); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataSmManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataSmManager.java index 70b0d027..e31fa7fd 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataSmManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataSmManager.java @@ -26,6 +26,7 @@ import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * description: diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java index 95f12725..f6e5feee 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java @@ -30,6 +30,7 @@ import io.iec.edp.caf.commons.utils.SpringBeanUtils; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * description: diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataCommonServiceImpl.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataCommonServiceImpl.java index 08e74405..195a5a79 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataCommonServiceImpl.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataCommonServiceImpl.java @@ -17,6 +17,7 @@ package com.inspur.edp.web.formmetadata.service; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.api.FormMetadataCommonService; import com.inspur.edp.web.formmetadata.api.entity.FormSuInfoEntity; @@ -39,11 +40,11 @@ public class FormMetadataCommonServiceImpl implements FormMetadataCommonService @Override public FormSuInfoEntity getSuInfoWithBizobjId(String bizObjId) { if (StringUtility.isNullOrEmpty(bizObjId)) { - throw new RuntimeException("根据业务对象获取对应关键应用信息,业务对象id不能为控"); + throw new WebCustomException("根据业务对象获取对应关键应用信息,业务对象id不能为控"); } DevBasicBoInfo basicBoInfo = this.devBasicInfoService.getDevBasicBoInfo(bizObjId); if (basicBoInfo == null) { - throw new RuntimeException(String.format("根据业务对象获取bo信息为控,对应业务对象id为:%s", bizObjId)); + throw new WebCustomException(String.format("根据业务对象获取bo信息为控,对应业务对象id为:%s", bizObjId)); } FormSuInfoEntity formSuInfo = new FormSuInfoEntity(); formSuInfo.setAppCode(basicBoInfo.getAppCode()); diff --git a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/FormMetadataI18nServiceTest.java b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/FormMetadataI18nServiceTest.java index 9e3c0d8d..5d707978 100644 --- a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/FormMetadataI18nServiceTest.java +++ b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/FormMetadataI18nServiceTest.java @@ -23,6 +23,7 @@ import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; class FormMetadataI18nServiceTest { diff --git a/web-form-process-api/src/main/java/com/inspur/edp/web/form/process/api/webservice/FormProcessWebService.java b/web-form-process-api/src/main/java/com/inspur/edp/web/form/process/api/webservice/FormProcessWebService.java new file mode 100644 index 00000000..23ae4123 --- /dev/null +++ b/web-form-process-api/src/main/java/com/inspur/edp/web/form/process/api/webservice/FormProcessWebService.java @@ -0,0 +1,18 @@ +package com.inspur.edp.web.form.process.service; + +import javax.ws.rs.Consumes; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; + +@Path("/") +@Consumes({"application/json"}) +@Produces({"application/json"}) +public class FormProcessWebService { + @Path("/form-format") + @PUT + public void publishFormFormat(@QueryParam("id") String formId, @QueryParam("path") String path) { + FormProcessManager.getInstance().publishFormFormat(formId, path); + } +} diff --git a/web-form-process/src/main/java/com/inspur/edp/web/form/process/service/FormProcessManager.java b/web-form-process/src/main/java/com/inspur/edp/web/form/process/service/FormProcessManager.java new file mode 100644 index 00000000..38b6db02 --- /dev/null +++ b/web-form-process/src/main/java/com/inspur/edp/web/form/process/service/FormProcessManager.java @@ -0,0 +1,73 @@ +package com.inspur.edp.web.form.process.service; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.GspProject; +import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import com.inspur.edp.metadata.businesstype.api.MdBizTypeMappingService; +import com.inspur.edp.wf.bizprocess.entity.FormFormat; +import com.inspur.edp.wf.bizprocess.entity.UrlParameter; +import com.inspur.edp.wf.bizprocess.service.FormFormatRpcService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import io.iec.edp.caf.rpc.client.RpcClassHolder; +import java.util.Arrays; +import java.util.List; + +public class FormProcessManager { + private static class LazyHolder { + private static final FormProcessManager INSTANCE = new FormProcessManager(); + } + + private FormProcessManager() {} + + public static final FormProcessManager getInstance() { + return LazyHolder.INSTANCE; + } + + public void publishFormFormat(String formId, String formPath) { + if (formPath == null || formPath.equals("")) + throw new RuntimeException("); + String unifiedPath = formPath.replace('\\', '/'); + if (unifiedPath.startsWith("/")) + unifiedPath = unifiedPath.substring(1); + MetadataService metadataService = (MetadataService)SpringBeanUtils.getBean(MetadataService.class); + List mdList = metadataService.getMetadataList(unifiedPath); + GspMetadata md = mdList.stream().filter(item -> item.getHeader().getId().equals(formId)).findFirst().orElse(null); + if (md == null) + throw new RuntimeException("" + formId + "+ unifiedPath + "); + MetadataHeader header = md.getHeader(); + GspProject project = metadataService.getGspProjectInfo(unifiedPath); + String deploymentPath = project.getSuDeploymentPath(); + String projectName = project.getMetadataProjectName().toLowerCase(); + String url = "/" + deploymentPath + "/web/" + projectName + "/index.html#/" + header.getCode(); + FormFormat ff = new FormFormat(); + ff.setId(formId); + ff.setCode(header.getCode()); + ff.setName(header.getName()); + ff.setUrlType("url"); + ff.setFormUrl(url); + UrlParameter actionParam = new UrlParameter(); + actionParam.setCode("action"); + actionParam.setName("); + actionParam.setValue("LoadAndView1"); + UrlParameter idParam = new UrlParameter(); + idParam.setCode("id"); + idParam.setName("); + idParam.setValue("{\"expr\":\"DefaultFunction.GetContextParameter(\\\"dataId\\\")\",\"sexpr\":\"\"}\n"); + List list = Arrays.asList(new UrlParameter[] { actionParam, idParam }); + ff.setUrlParameters(list); + ff.setFormatType("wf"); + String boId = project.getBizobjectID(); + ff.setBizCategory(getBizTypeId(boId)); + ff.setTerminal("PC"); + RpcClassHolder rpcHelper = (RpcClassHolder)SpringBeanUtils.getBean(RpcClassHolder.class); + FormFormatRpcService service = (FormFormatRpcService)rpcHelper.getRpcClass(FormFormatRpcService.class); + service.addFormFormat(ff); + } + + private String getBizTypeId(String bizObjectId) { + MdBizTypeMappingService service = (MdBizTypeMappingService)SpringBeanUtils.getBean(MdBizTypeMappingService.class); + List bizTypeIds = service.getBizTypeIdsByBoId(bizObjectId); + return (bizTypeIds == null || bizTypeIds.size() == 0) ? "" : bizTypeIds.get(0); + } +} diff --git a/web-form-process/src/main/java/com/inspur/edp/web/form/process/webservice/FormProcessWebServiceImpl.java b/web-form-process/src/main/java/com/inspur/edp/web/form/process/webservice/FormProcessWebServiceImpl.java new file mode 100644 index 00000000..ce1e282e --- /dev/null +++ b/web-form-process/src/main/java/com/inspur/edp/web/form/process/webservice/FormProcessWebServiceImpl.java @@ -0,0 +1,18 @@ +package com.inspur.edp.web.form.process.service; + +import javax.ws.rs.Consumes; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; + +@Path("/") +@Consumes({"application/json"}) +@Produces({"application/json"}) +public class FormProcessWebServiceImpl { + @Path("/form-format") + @PUT + public void publishFormFormat(@QueryParam("id") String formId, @QueryParam("path") String path) { + FormProcessManager.getInstance().publishFormFormat(formId, path); + } +} diff --git a/web-formconfig-core/src/main/java/com/inspur/edp/web/formconfig/core/entity/FormConfigEntity.java b/web-formconfig-core/src/main/java/com/inspur/edp/web/formconfig/core/entity/FormConfigEntity.java index ced2542d..b4c56bc9 100644 --- a/web-formconfig-core/src/main/java/com/inspur/edp/web/formconfig/core/entity/FormConfigEntity.java +++ b/web-formconfig-core/src/main/java/com/inspur/edp/web/formconfig/core/entity/FormConfigEntity.java @@ -19,6 +19,7 @@ package com.inspur.edp.web.formconfig.core.entity; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.formconfig.api.dto.FormConfig; import com.inspur.edp.web.formconfig.api.dto.FormConfigItem; import io.iec.edp.caf.commons.utils.StringUtils; @@ -139,7 +140,7 @@ public class FormConfigEntity { } formConfig.setItems(items); } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw new WebCustomException("FormConfig toModel失败",e); } formConfig.setId(this.getId()); formConfig.setFormId(this.getFormId()); diff --git a/web-formmetadata-relycheck/.gitignore b/web-formmetadata-relycheck/.gitignore new file mode 100644 index 00000000..5ff6309b --- /dev/null +++ b/web-formmetadata-relycheck/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/web-formmetadata-relycheck/pom.xml b/web-formmetadata-relycheck/pom.xml new file mode 100644 index 00000000..ef4c13ef --- /dev/null +++ b/web-formmetadata-relycheck/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + com.inspur.edp + web + 0.1.9-SNAPSHOT + + + web-formmetadata-relycheck + jar + + + + com.inspur.edp + web-jitengine-common + + + com.inspur.edp + lcm-metadata-spi + 0.1.40-SNAPSHOT + + + com.inspur.edp + formserver-viewmodel + + + com.inspur.edp + web-jitengine-formmetadata + + + com.inspur.edp + web-designschema + + + + + diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/RelyCheckApplication.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/RelyCheckApplication.java new file mode 100644 index 00000000..a7e581ee --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/RelyCheckApplication.java @@ -0,0 +1,14 @@ +package com.inspur.edp.web.relycheck; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author noah + * 2023/8/9 14:30 + */ +@SpringBootApplication +public class RelyCheckApplication { + public static void main(String[] args) { + + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/config/RelyCheckConfig.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/config/RelyCheckConfig.java new file mode 100644 index 00000000..8342de80 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/config/RelyCheckConfig.java @@ -0,0 +1,113 @@ +package com.inspur.edp.web.relycheck.config; + +import com.inspur.edp.web.relycheck.dependencygenerator.SchemaEntityDependencyGenerator; +import com.inspur.edp.web.relycheck.dependencygenerator.SchemaFieldDependencyGenerator; +import com.inspur.edp.web.relycheck.dependencyvalidator.VoElementValidator; +import com.inspur.edp.web.relycheck.dependencyvalidator.VoEntityValidator; +import com.inspur.edp.web.relycheck.dependencyvalidator.element.*; +import com.inspur.edp.web.relycheck.service.FormMetadataElementService; +import com.inspur.edp.web.relycheck.service.MobileFormMetadataElementService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; + +/** + * relyCheck 的配置类 + * + * @author noah + * 2023/7/27 15:44 + */ +@Configuration(proxyBeanMethods = false) +public class RelyCheckConfig { + /** + * PC表单的element service + * + * @return + */ + @Bean + public FormMetadataElementService formMetadataElementService() { + return new FormMetadataElementService(); + } + + /** + * mobile 表单的element service + * + * @return + */ + @Bean + public MobileFormMetadataElementService mobileFormMetadataElementService() { + return new MobileFormMetadataElementService(); + } + + /** + * vo entity 校验 + * + * @return + */ + @Bean + public VoEntityValidator voEntityValidator() { + return new VoEntityValidator(); + } + + /** + * vo element 校验 + * + * @return + */ + @Bean + public VoElementValidator voElementValidator() { + return new VoElementValidator(); + } + + @Bean + public RequireValidator requireValidator() { + return new RequireValidator(); + } + + @Bean + public MultiLanguageValidator multiLanguageValidator(){ + return new MultiLanguageValidator(); + } + + @Bean + public LengthValidator lengthValidator(){ + return new LengthValidator(); + } + + @Bean + public PrecisionValidator precisionValidator(){ + return new PrecisionValidator(); + } + + @Bean + public DataTypeValidator dataTypeValidator(){ + return new DataTypeValidator(); + } + + @Bean + public EnumValueValidator enumValueValidator(){ + return new EnumValueValidator(); + } + + /** + * entity 校验依赖项构造 + * + * @return + */ + @Bean + @Scope(value = "prototype") + public SchemaEntityDependencyGenerator schemaEntityDependencyGenerator() { + return new SchemaEntityDependencyGenerator(); + } + + /** + * field 校验依赖项构造 + * + * @return + */ + @Bean + @Scope(value = "prototype") + public SchemaFieldDependencyGenerator schemaFieldDependencyGenerator() { + return new SchemaFieldDependencyGenerator(); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckLengthType.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckLengthType.java new file mode 100644 index 00000000..05f2dc1f --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckLengthType.java @@ -0,0 +1,45 @@ +package com.inspur.edp.web.relycheck.constant; + +import com.inspur.edp.web.common.utility.ListUtility; +import com.inspur.edp.web.designschema.elements.type.BigNumericType; +import com.inspur.edp.web.designschema.elements.type.NumericType; +import com.inspur.edp.web.designschema.elements.type.StringType; +import com.inspur.edp.web.designschema.elements.type.TextType; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 允许检测字段长度的类型 + * + * @author noah + * 2023/8/7 16:29 + */ +public class NeedCheckLengthType { + private List needCheckLengthList = new ArrayList<>(); + + public NeedCheckLengthType() { + this.needCheckLengthList.add(new BigNumericType().get$type()); + this.needCheckLengthList.add(new NumericType().get$type()); + this.needCheckLengthList.add(new StringType().get$type()); + this.needCheckLengthList.add(new TextType().get$type()); + } + + public static NeedCheckLengthType getInstance() { + return new NeedCheckLengthType(); + } + + public boolean contains(String $type) { + return ListUtility.contains(this.needCheckLengthList, $type); + } + + /** + * 获取所有可以检测length的 $type 参数 + * + * @return + */ + public List getNeedCheckLengthList() { + return this.needCheckLengthList; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckPrecisionType.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckPrecisionType.java new file mode 100644 index 00000000..191b8f49 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/NeedCheckPrecisionType.java @@ -0,0 +1,29 @@ +package com.inspur.edp.web.relycheck.constant; + +import com.inspur.edp.web.common.utility.ListUtility; +import com.inspur.edp.web.designschema.elements.type.BigNumericType; +import com.inspur.edp.web.designschema.elements.type.NumericType; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author noah + * 2023/8/7 16:39 + */ +public class NeedCheckPrecisionType { + private List needCheckPrecisionList = new ArrayList<>(); + + public NeedCheckPrecisionType() { + this.needCheckPrecisionList.add(new BigNumericType().get$type()); + this.needCheckPrecisionList.add(new NumericType().get$type()); + } + + public static NeedCheckPrecisionType getInstance() { + return new NeedCheckPrecisionType(); + } + + public boolean contains(String $type) { + return ListUtility.contains(this.needCheckPrecisionList, $type); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java new file mode 100644 index 00000000..9cb8238f --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java @@ -0,0 +1,51 @@ +package com.inspur.edp.web.relycheck.constant; + +/** + * 一致性检查类型定义 + * + * @author noah + */ +public enum RelyCheckType { + /** + * schema entity 实体类型 + */ + SchemaEntity { + @Override + public String getType() { + return "SchemaEntity"; + } + + @Override + public String getReferenceType() { + return "Schema-VoEntity"; + } + }, + /** + * schema field 字段类型 + */ + SchemaField { + @Override + public String getType() { + return "SchemaField"; + } + + @Override + public String getReferenceType() { + return "Schema-VoElement"; + } + }; + + /** + * 获取具体的类型参数字符串表示 + * + * @return + */ + public abstract String getType(); + + /** + * 获取对应的referenceType参数值 + * + * @return + */ + public abstract String getReferenceType(); +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/ValidateConstants.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/ValidateConstants.java new file mode 100644 index 00000000..80ad9c96 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/ValidateConstants.java @@ -0,0 +1,22 @@ +package com.inspur.edp.web.relycheck.constant; + +/** + * @author noah + * 2023/8/7 17:28 + */ +public class ValidateConstants { + + public static final String Name = "名称"; + + public static final String Code = "编号"; + + /** + * 校验常量 逗号 + */ + public static final String Comma = ","; + + /** + * 校验常量 冒号 + */ + public static final String Colon = ":"; +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataElementGenerator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataElementGenerator.java new file mode 100644 index 00000000..12eea004 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataElementGenerator.java @@ -0,0 +1,37 @@ +package com.inspur.edp.web.relycheck.dependencygenerator; + +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElement; +import com.inspur.edp.web.relycheck.constant.RelyCheckType; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.BaseSourceElement; + +/** + * 元数据 element 实体构造 + * + * @author noah + */ +class MetadataElementGenerator { + /** + * 构造 metadataElement 实例 + * + * @param type + * @param content + * @return + */ + static MetadataElement generate(String type, BaseSourceElement content) { + MetadataElement metadataElement = new MetadataElement(); + metadataElement.setType(type); + metadataElement.setContent(content); + return metadataElement; + } + + /** + * 构造 metadataElement 实例 + * + * @param relyCheckType + * @param content + * @return + */ + static MetadataElement generate(RelyCheckType relyCheckType, BaseSourceElement content) { + return generate(relyCheckType.getType(), content); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataVOElementLocatorGenerator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataVOElementLocatorGenerator.java new file mode 100644 index 00000000..8749e6aa --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/MetadataVOElementLocatorGenerator.java @@ -0,0 +1,49 @@ +package com.inspur.edp.web.relycheck.dependencygenerator; + +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElementLocator; +import com.inspur.edp.web.relycheck.constant.RelyCheckType; + +import java.util.function.Supplier; + +/** + * metadataElementLocator 实例构造 + * + * @author noah + */ +class MetadataVOElementLocatorGenerator { + + + /** + * 构造 metadataElementLocator 实例 + * 主要参数是构造对应的 id 及 id + * + * @param id + * @return + */ + static MetadataElementLocator generate(RelyCheckType relyCheckType, String id) { + MetadataElementLocator metadataElementLocator = new MetadataElementLocator(); + metadataElementLocator.setId(id); + metadataElementLocator.setPath(relyCheckType.getReferenceType()); + return metadataElementLocator; + } + + /** + * 构造 metadataElementLocator 实例 + * 主要参数是构造对应的 id 及 path + * + * @param idSupplier + * @param pathSupplier + * @return + */ + static MetadataElementLocator generate(Supplier idSupplier, Supplier pathSupplier) { + MetadataElementLocator metadataElementLocator = new MetadataElementLocator(); + if (idSupplier != null) { + metadataElementLocator.setId(idSupplier.get()); + } + if (pathSupplier != null) { + metadataElementLocator.setPath(pathSupplier.get()); + } + + return metadataElementLocator; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaEntityDependencyGenerator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaEntityDependencyGenerator.java new file mode 100644 index 00000000..c943910e --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaEntityDependencyGenerator.java @@ -0,0 +1,90 @@ +package com.inspur.edp.web.relycheck.dependencygenerator; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElementDependencyDetail; +import com.inspur.edp.web.common.utility.ListUtility; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.relycheck.constant.RelyCheckType; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementEntity; +import com.inspur.edp.web.relycheck.elements.CustomEntity; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * 表单元数据 schema entity 依赖项构造 + * 此处每次返回新实例的原因是该方法执行次数极少,定义bean的scope 为 prototype + * 所以为了更加方便垃圾回收 设计为每次 new 新实例 + * + * @author noah + */ +public class SchemaEntityDependencyGenerator { + + private final RelyCheckType entityRelyCheckType = RelyCheckType.SchemaEntity; + + /** + * 字段一致性检查 + * 字段生成项 + */ + @Resource + private SchemaFieldDependencyGenerator schemaFieldDependencyGenerator; + + /** + * 依据 schema entity 列表构造依赖 + * + * @param schemaCustomEntityList schema entity 列表 + * @return + */ + public List generateDependencyDetailWithSchemaEntityList(List schemaCustomEntityList, FormDOM formDOM, GspMetadata gspMetadata) { + if (ListUtility.isEmpty(schemaCustomEntityList)) { + return new ArrayList<>(0); + } + List dependencyDetailList = new ArrayList<>(); + schemaCustomEntityList.forEach(entityItem -> { + // 依据字段列表 构造对应的依赖信息 + List entityDependencyDetailList = this.generateDependencyDetailWithSchemaEntity(entityItem, formDOM, gspMetadata); + ListUtility.add(dependencyDetailList, entityDependencyDetailList); + }); + return dependencyDetailList; + } + + + /** + * 依据 schemaEntity 构造对应的依赖信息 + * + * @param schemaCustomEntity schema entity 信息 + */ + private List generateDependencyDetailWithSchemaEntity(CustomEntity schemaCustomEntity, FormDOM formDOM, GspMetadata gspMetadata) { + if (schemaCustomEntity == null) { + return new ArrayList<>(0); + } + List entityDependencyDetailList = new ArrayList<>(); + + MetadataElementDependencyDetail metadataElementDependencyDetail = new MetadataElementDependencyDetail(); + + // 构造传递的源参数 + SourceElementEntity sourceElementEntity = SourceElementEntity.init(schemaCustomEntity, formDOM, gspMetadata); + + metadataElementDependencyDetail.setSourceElement(MetadataElementGenerator.generate(entityRelyCheckType, sourceElementEntity)); + metadataElementDependencyDetail.setReferenceType(entityRelyCheckType.getReferenceType()); + metadataElementDependencyDetail.setTargetElementLocator(MetadataVOElementLocatorGenerator.generate(entityRelyCheckType, schemaCustomEntity.getId())); + + ListUtility.add(entityDependencyDetailList, metadataElementDependencyDetail); + + + if (schemaCustomEntity.getType() != null) { + // 添加对应的 field 字段依赖信息 + List elementDependencyDetailList = this.schemaFieldDependencyGenerator.generateDependencyDetailWithSchemaFieldList(schemaCustomEntity, schemaCustomEntity.getType().getFields(), formDOM, gspMetadata); + ListUtility.add(entityDependencyDetailList, elementDependencyDetailList); + + // 如果当前 entity 存在子表 那么递归进行子表依赖项的构造 + if (ListUtility.isNotEmpty(schemaCustomEntity.getType().getEntities())) { + List childEntityDependencyDetailList = this.generateDependencyDetailWithSchemaEntityList(schemaCustomEntity.getType().getEntities(), formDOM, gspMetadata); + ListUtility.add(entityDependencyDetailList, childEntityDependencyDetailList); + } + } + + return entityDependencyDetailList; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaFieldDependencyGenerator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaFieldDependencyGenerator.java new file mode 100644 index 00000000..16328350 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/SchemaFieldDependencyGenerator.java @@ -0,0 +1,71 @@ +package com.inspur.edp.web.relycheck.dependencygenerator; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElementDependencyDetail; +import com.inspur.edp.web.common.utility.ListUtility; + +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.relycheck.constant.RelyCheckType; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementField; +import com.inspur.edp.web.relycheck.elements.CustomField; +import com.inspur.edp.web.relycheck.elements.CustomEntity; + + +import java.util.ArrayList; +import java.util.List; + +/** + * schema 字段依赖信息构造 + * + * @author noah + */ +public class SchemaFieldDependencyGenerator { + + private final RelyCheckType fieldRelyCheckType = RelyCheckType.SchemaField; + + /** + * 构造字段列表对应的依赖信息 + * + * @param fieldList schema 中的字段信息列表 + * @return + */ + public List generateDependencyDetailWithSchemaFieldList(CustomEntity schemaCustomEntity, List fieldList, FormDOM formDOM, GspMetadata gspMetadata) { + if (ListUtility.isEmpty(fieldList)) { + return new ArrayList<>(0); + } + + List metadataElementDependencyDetailList = new ArrayList<>(); + + fieldList.forEach(fieldItem -> { + // 从字段中构造对应的依赖信息 + MetadataElementDependencyDetail metadataElementDependencyDetail = this.generateDependencyDetailWithSchemaField(schemaCustomEntity, fieldItem, formDOM, gspMetadata); + ListUtility.add(metadataElementDependencyDetailList, metadataElementDependencyDetail); + }); + return metadataElementDependencyDetailList; + } + + /** + * 构造的是字段的依赖信息 + * + * @param fieldItem 传递的表单schema中美 + * @return + */ + private MetadataElementDependencyDetail generateDependencyDetailWithSchemaField(CustomEntity schemaCustomEntity, CustomField fieldItem, FormDOM formDOM, GspMetadata gspMetadata) { + if (fieldItem == null) { + return null; + } + MetadataElementDependencyDetail dependencyDetail = new MetadataElementDependencyDetail(); + + SourceElementField sourceElementField = SourceElementField.init(schemaCustomEntity, fieldItem, formDOM, gspMetadata); + + dependencyDetail.setSourceElement(MetadataElementGenerator.generate(fieldRelyCheckType, sourceElementField)); + dependencyDetail.setReferenceType(fieldRelyCheckType.getReferenceType()); + dependencyDetail.setTargetElementLocator(MetadataVOElementLocatorGenerator.generate( + () -> schemaCustomEntity.getId() + "/" + fieldItem.getId(), + () -> fieldRelyCheckType.getReferenceType() + + )); + + return dependencyDetail; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/BaseSourceElement.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/BaseSourceElement.java new file mode 100644 index 00000000..b1cf262e --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/BaseSourceElement.java @@ -0,0 +1,76 @@ +package com.inspur.edp.web.relycheck.dependencygenerator.entity; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; + +/** + * entity 和 field的传递参数 + * 传递对应的元数据相关信息 + * + * @author noah + * 2023/7/25 11:40 + */ +public class BaseSourceElement { + /** + * 元数据id参数 + */ + private String metadataId; + /** + * 元数据code参数 + */ + private String metadataCode; + /** + * 元数据name参数 + */ + private String metadataName; + /** + * 元数据 namespace参数 + */ + private String metadataNameSpace; + + public String getMetadataId() { + return metadataId; + } + + public void setMetadataId(String metadataId) { + this.metadataId = metadataId; + } + + public String getMetadataCode() { + return metadataCode; + } + + public void setMetadataCode(String metadataCode) { + this.metadataCode = metadataCode; + } + + public String getMetadataName() { + return metadataName; + } + + public void setMetadataName(String metadataName) { + this.metadataName = metadataName; + } + + public String getMetadataNameSpace() { + return metadataNameSpace; + } + + public void setMetadataNameSpace(String metadataNameSpace) { + this.metadataNameSpace = metadataNameSpace; + } + + /** + * 依据元数据进行参数构造 + * + * @param gspMetadata + */ + protected void initWithGspMetadata(GspMetadata gspMetadata) { + if (gspMetadata == null) { + return; + } + this.setMetadataId(gspMetadata.getHeader().getId()); + this.setMetadataCode(gspMetadata.getHeader().getCode()); + this.setMetadataName(gspMetadata.getHeader().getName()); + this.setMetadataNameSpace(gspMetadata.getHeader().getNameSpace()); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementEntity.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementEntity.java new file mode 100644 index 00000000..42aedcd5 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementEntity.java @@ -0,0 +1,44 @@ +package com.inspur.edp.web.relycheck.dependencygenerator.entity; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.relycheck.elements.CustomEntity; + + +/** + * 用于记录需要针对entity进行验证时,传递的参数值 + * + * @author noah + * 2023/7/25 11:34 + */ +public class SourceElementEntity extends BaseSourceElement { + private CustomEntity sourceCustomEntity; + private FormDOM formDOM; + + public CustomEntity getSourceEntity() { + return sourceCustomEntity; + } + + public FormDOM getFormDOM() { + return formDOM; + } + + private SourceElementEntity() { + } + + /** + * sourceEntity的参数构造 + * @param sourceCustomEntity + * @param formDOM + * @param gspMetadata + * @return + */ + public static SourceElementEntity init(CustomEntity sourceCustomEntity, FormDOM formDOM, GspMetadata gspMetadata) { + SourceElementEntity sourceElementEntity = new SourceElementEntity(); + sourceElementEntity.sourceCustomEntity = sourceCustomEntity; + sourceElementEntity.formDOM = formDOM; + sourceElementEntity.initWithGspMetadata(gspMetadata); + return sourceElementEntity; + } + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementField.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementField.java new file mode 100644 index 00000000..704c004b --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencygenerator/entity/SourceElementField.java @@ -0,0 +1,42 @@ +package com.inspur.edp.web.relycheck.dependencygenerator.entity; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.relycheck.elements.CustomField; +import com.inspur.edp.web.relycheck.elements.CustomEntity; + +/** + * 用于进行字段验证时 ,字段验证需要的参数值 + * + * @author noah + * 2023/7/25 11:34 + */ +public class SourceElementField extends BaseSourceElement { + private CustomEntity sourceCustomEntity; + private CustomField sourceField; + private FormDOM formDOM; + + public CustomEntity getSourceEntity() { + return sourceCustomEntity; + } + + public CustomField getSourceField() { + return sourceField; + } + + public FormDOM getFormDOM() { + return formDOM; + } + + private SourceElementField() { + } + + public static SourceElementField init(CustomEntity sourceCustomEntity, CustomField sourceField, FormDOM formDOM, GspMetadata gspMetadata) { + SourceElementField sourceElementField = new SourceElementField(); + sourceElementField.sourceCustomEntity = sourceCustomEntity; + sourceElementField.sourceField = sourceField; + sourceElementField.formDOM = formDOM; + sourceElementField.initWithGspMetadata(gspMetadata); + return sourceElementField; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/AbstractDependencyValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/AbstractDependencyValidator.java new file mode 100644 index 00000000..f60a48b1 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/AbstractDependencyValidator.java @@ -0,0 +1,17 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator; + +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.lcm.metadata.spi.entity.ValidationLevelEnum; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +/** + * 定义抽象类 + * + * @author noah + */ +public abstract class AbstractDependencyValidator { + + + + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidator.java new file mode 100644 index 00000000..037ab1d7 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidator.java @@ -0,0 +1,174 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator; + +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.MetadataElementValidator; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElement; +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.common.customexception.WebCustomException; +import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.relycheck.constant.RelyCheckType; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementField; +import com.inspur.edp.web.relycheck.dependencyvalidator.element.*; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +import javax.annotation.Resource; + +/** + * VoElement 依赖检查 + * + * @author noah + */ +public class VoElementValidator extends AbstractDependencyValidator implements MetadataElementValidator { + @Resource + private RequireValidator requireValidator; + + @Resource + private MultiLanguageValidator multiLanguageValidator; + + @Resource + private LengthValidator lengthValidator; + + @Resource + private PrecisionValidator precisionValidator; + + @Resource + private DataTypeValidator dataTypeValidator; + + @Resource + private EnumValueValidator enumValueValidator; + + @Override + public String getReferenceType() { + return RelyCheckType.SchemaField.getReferenceType(); + } + + @Override + public ValidateResult validate(MetadataElement sourceMetadataElement, MetadataElement targetMetadataElement, GspMetadata sourceGspMetadata, GspMetadata targetGspMetadata) { + if (targetGspMetadata == null) { + // 如果VO元数据不存在 从VOEntity中进行校验 不在此处校验 + return ValidateResultUtility.success(); + } + + // 目标元数据必须为VO元数据 + if (!(targetGspMetadata.getContent() instanceof GspViewModel)) { + throw new WebCustomException("表单元数据字段校验,目标类型必须为GspViewModel,当前为:" + targetGspMetadata.getContent().getClass().getName()); + } + + ValidateResult warningValidateResult = ValidateResultUtility.success(); + if (sourceMetadataElement.getType().equals(RelyCheckType.SchemaField.getType()) && + targetMetadataElement.getType().equals(RelyCheckType.SchemaField.getReferenceType())) { + SourceElementField field = (SourceElementField) sourceMetadataElement.getContent(); + GspViewModelElement gspViewModelElement = (GspViewModelElement) targetMetadataElement.getContent(); + // 新增字段不关心 放在实体校验中进行warning 提示 + + String voMetadataName = targetGspMetadata.getHeader().getName(); + String formMetadataName = sourceGspMetadata.getHeader().getName(); + String entityCode = field.getSourceEntity().getCode(); + + ElementValidateParameter validateParameter = new ElementValidateParameter() { + { + this.setFormMetadata(sourceGspMetadata); + this.setSourceElementField(field); + this.setGspViewModelElement(gspViewModelElement); + this.setViewModelMetadata(targetGspMetadata); + this.setVoMetadataName(voMetadataName); + this.setFormMetadataName(formMetadataName); + this.setEntityCode(entityCode); + } + }; + + + // 1.删除字段 表中删除了字段 + if (gspViewModelElement == null) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s删除了字段%3$s" + ValidateConstants.Comma + "请在表单%4$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(voMetadataName, true), + StringConcatUtility.concatWithCodePrefix(entityCode, true), + StringConcatUtility.concatWithCodePrefix(field.getSourceField().getCode(), true), + StringConcatUtility.concatWithNamePrefix(formMetadataName, true))); + } + // 2.修改字段 code,理论上 字段code是不允许更改 + if (!StringUtility.equals(field.getSourceField().getCode(), gspViewModelElement.getCode())) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段编号由%3$s更改为%4$s" + ValidateConstants.Comma + "请在表单%5$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(voMetadataName, true), + StringConcatUtility.concatWithCodePrefix(entityCode, true), + StringConcatUtility.concatWithCodePrefix(field.getSourceField().getCode(), true), + StringConcatUtility.concatWithCodePrefix(gspViewModelElement.getCode(), true), + StringConcatUtility.concatWithNamePrefix(formMetadataName, true))); + } + + // 3.修改字段名称,表单不是必须需要调整,但可以依据新的字段名称进行调整 warning + if (!StringUtility.equals(field.getSourceField().getName(), gspViewModelElement.getName())) { + warningValidateResult = ValidateResultUtility.failureWithWarning(String.format("视图对象%1$s中子表%2$s的字段名称由%3$s更改为%4$s" + ValidateConstants.Comma + "请在表单%5$s的实体树种执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(voMetadataName, true), + StringConcatUtility.concatWithCodePrefix(entityCode, true), + StringConcatUtility.concatWithCodePrefix(field.getSourceField().getCode(), true), + StringConcatUtility.concatWithNamePrefix(gspViewModelElement.getName(), true), + StringConcatUtility.concatWithNamePrefix(formMetadataName, true) + )); + } + + // 是否必填 + ValidateResult requireValidateResult = this.requireValidator.validate(validateParameter); + if (ValidateResultUtility.canContinute(requireValidateResult)) { + warningValidateResult = requireValidateResult; + } else { + return requireValidateResult; + } + + + // 是否多语 + ValidateResult multiLanguageValidateResult = this.multiLanguageValidator.validate(validateParameter); + if (ValidateResultUtility.canContinute(multiLanguageValidateResult)) { + warningValidateResult = multiLanguageValidateResult; + } else { + return multiLanguageValidateResult; + } + + // 比较长度 + // 仅比较存在长度的字段参数 + ValidateResult lengthValidateResult = this.lengthValidator.validate(validateParameter); + if (ValidateResultUtility.canContinute(lengthValidateResult)) { + warningValidateResult = lengthValidateResult; + } else { + return lengthValidateResult; + } + + // 比较精度 + ValidateResult precisionValidateResult = this.precisionValidator.validate(validateParameter); + if (ValidateResultUtility.canContinute(precisionValidateResult)) { + warningValidateResult = precisionValidateResult; + } else { + return precisionValidateResult; + } + + + // 比较数据类型 + ValidateResult checkDataTypeRelateResult = this.dataTypeValidator.validate(validateParameter); + if (ValidateResultUtility.canContinute(checkDataTypeRelateResult)) { + warningValidateResult = checkDataTypeRelateResult; + } else { + return checkDataTypeRelateResult; + } + + // 比较枚举值 首先如果数据类型发生了变更,需要先检测数据类型发生了变化 + // 在检测枚举值是否发生变化时,可以认为类型一致 且均为枚举类型 + ValidateResult enumValueValidateResul = this.enumValueValidator.validate(validateParameter); + if (ValidateResultUtility.canContinute(enumValueValidateResul)) { + warningValidateResult = enumValueValidateResul; + } else { + return enumValueValidateResul; + } + + } + + if (!warningValidateResult.isValid()) { + return warningValidateResult; + } + return ValidateResultUtility.success(); + } + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidator.java new file mode 100644 index 00000000..aa102168 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidator.java @@ -0,0 +1,113 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator; + +import com.inspur.edp.formserver.viewmodel.GspViewObject; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.MetadataElementValidator; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElement; +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.relycheck.constant.RelyCheckType; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementEntity; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +import java.util.concurrent.atomic.AtomicReference; + +/** + * 关联的 VoEntity 依赖验证 + * + * @author noah + */ +public class VoEntityValidator extends AbstractDependencyValidator implements MetadataElementValidator { + private final RelyCheckType relyCheckType = RelyCheckType.SchemaEntity; + + @Override + public String getReferenceType() { + return RelyCheckType.SchemaEntity.getReferenceType(); + } + + @Override + public ValidateResult validate(MetadataElement sourceMetadataElement, MetadataElement targetMetadataElement, + GspMetadata sourceGspMetadata, GspMetadata targetGspMetadata) { + if (sourceMetadataElement != null && sourceGspMetadata != null && + sourceMetadataElement.getType().equals(relyCheckType.getType()) && + targetMetadataElement.getType().equals("VoEntity")) { + // 比较 SchemaEntity 的名称 + SourceElementEntity schemaEntity = (SourceElementEntity) sourceMetadataElement.getContent(); + GspViewObject gspViewObject = (GspViewObject) targetMetadataElement.getContent(); + String formMetadataName = sourceGspMetadata.getHeader().getName(); + // 1.VO元数据被删除 + if (targetGspMetadata == null) { + // 说明VO元数据已经不存在 那么需要将对应表单移除 + // 理论上不应该出现此种情况 + return ValidateResultUtility.failureWithError(String.format("表单%1$s关联视图对象不存在" + ValidateConstants.Comma + "该表单将无法正确运行" + ValidateConstants.Comma + "请调整关联视图对象或移除该表单", + StringConcatUtility.concatWithNamePrefix(formMetadataName, true) + )); + } + String voMetadataName = targetGspMetadata.getHeader().getName(); + // 2.VO元数据中子表删除 + if (targetMetadataElement.getContent() == null) { + // 说明删除了对应的对象 + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s删除了子表%2$s" + ValidateConstants.Comma + "请在表单%3$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(voMetadataName, true), + StringConcatUtility.concatWithCodePrefix(schemaEntity.getSourceEntity().getCode(), true), + StringConcatUtility.concatWithNamePrefix(formMetadataName, true) + )); + } + // 3.VO元数据中子表编号更改 + if (!StringUtility.equals(schemaEntity.getSourceEntity().getCode(), gspViewObject.getCode())) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s更改了%2$s的子表" + ValidateConstants.Comma + "请在表单%3$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(voMetadataName, true), + StringConcatUtility.concatWithCodePrefix(gspViewObject.getCode(), true), + StringConcatUtility.concatWithNamePrefix(formMetadataName, true) + )); + } + + // 判断 schema 中的字段是否全部在vo 存在 + // 字段删除判断放在vo element 校验中 +// AtomicReference schemaEntityFieldCode = new AtomicReference<>(""); +// boolean allSchemaFieldsInVo = schemaEntity.getSourceEntity().getType().getFields().stream().allMatch(t -> { +// boolean exists = gspViewObject.getContainElements().stream().anyMatch(m -> m.getCode().equals(t.getCode())); +// if (!exists) { +// schemaEntityFieldCode.set(t.getCode()); +// } +// return exists; +// } +// ); +// if (!allSchemaFieldsInVo) { +// return this.failureWithError(String.format("视图对象%1$s删除了字段" + ValidateConstants.Colon + "%2$s" + ValidateConstants.Comma + "请在表单%3$s的实体树中执行更新schema操作", +// StringConcatUtility.concatWithNamePrefix(voMetadataName, true), +// StringConcatUtility.concatWithCodePrefix(schemaEntityFieldCode.get(), true), +// StringConcatUtility.concatWithNamePrefix(formMetadataName, true) +// )); +// } + + // 判断vo 中的字段是否全部在 schema 中 + AtomicReference addedVoFieldCode = new AtomicReference<>(""); + AtomicReference addedVoFieldName = new AtomicReference<>(""); + boolean allVoFieldsInSchema = gspViewObject.getContainElements().stream().allMatch(t -> { + boolean exists = schemaEntity.getSourceEntity().getType().getFields().stream().anyMatch(m -> m.getCode().equals(t.getCode())); + if (!exists) { + addedVoFieldCode.set(t.getCode()); + addedVoFieldName.set(t.getName()); + } + return exists; + } + ); + + if (!allVoFieldsInSchema) { + return ValidateResultUtility.failureWithWarning(String.format("视图对象%1$s新增了字段" + ValidateConstants.Colon + "%2$s" + ValidateConstants.Comma + "若要在表单使用该字段" + ValidateConstants.Comma + "请在表单%3$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(voMetadataName, true), + StringConcatUtility.concatWithCodePrefix(addedVoFieldCode.get(), true), + StringConcatUtility.concatWithNamePrefix(formMetadataName, true) + )); + } + + } else { + WebLogger.Instance.info("SchemaEntity 校验,不是有效的 SchemaEntity 类型"); + } + return ValidateResultUtility.success(); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/BaseElementValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/BaseElementValidator.java new file mode 100644 index 00000000..9d40f7ea --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/BaseElementValidator.java @@ -0,0 +1,57 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementField; +import com.inspur.edp.web.relycheck.elements.CustomField; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +import java.util.Optional; + + +/** + * element 依赖检查 + * + * @author noah + * 2023/8/10 10:45 + */ +public abstract class BaseElementValidator { + public abstract ValidateResult validate(ElementValidateParameter parameter); + + protected String getVoMetadataName(ElementValidateParameter parameter) { + return Optional.ofNullable(parameter.getVoMetadataName()).orElseGet(() -> parameter.getViewModelMetadata().getHeader().getName()); + } + + protected String getEntityCode(ElementValidateParameter parameter) { + return Optional.ofNullable(parameter.getEntityCode()).orElseGet(() -> parameter.getSourceElementField().getSourceEntity().getCode()); + } + + protected String getFormMetadataName(ElementValidateParameter parameter) { + return Optional.ofNullable(parameter.getFormMetadataName()).orElseGet(() -> parameter.getFormMetadata().getHeader().getName()); + } + + protected String getSourceFieldCode(ElementValidateParameter parameter) { + return parameter.getSourceElementField().getSourceField().getCode(); + } + + protected CustomField getSourceField(ElementValidateParameter parameter) { + return parameter.getSourceElementField().getSourceField(); + } + + /** + * 构造快捷访问 + * + * @return + */ + protected ValidateResult success() { + return ValidateResultUtility.success(); + } + + protected ValidateResult failureWithWarning(String message) { + return ValidateResultUtility.failureWithWarning(message); + } + + protected ValidateResult failureWithError(String message){ + return ValidateResultUtility.failureWithError(message); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/DataTypeValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/DataTypeValidator.java new file mode 100644 index 00000000..aa573877 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/DataTypeValidator.java @@ -0,0 +1,113 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.cef.designtime.api.element.GspElementDataType; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.common.utility.ListUtility; +import com.inspur.edp.web.designschema.elements.ComplexField; +import com.inspur.edp.web.designschema.elements.Entity; +import com.inspur.edp.web.designschema.elements.Field; +import com.inspur.edp.web.designschema.elements.Schema; +import com.inspur.edp.web.designschema.generator.SchemaBuilder; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementField; +import com.inspur.edp.web.relycheck.elements.CustomEntity; +import com.inspur.edp.web.relycheck.elements.CustomField; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 数据类型验证 + * + * @author noah + * 2023/8/10 16:50 + */ +public class DataTypeValidator extends BaseElementValidator { + @Override + public ValidateResult validate(ElementValidateParameter parameter) { + ValidateResult warningValidateResult = ValidateResultUtility.success(); + + SchemaBuilder schemaBuilder = new SchemaBuilder(); + GspViewModel targetViewModel = (GspViewModel) parameter.getViewModelMetadata().getContent(); + // 通过当前的ViewModel构造出来对应的表单schema节点 + Schema schema = schemaBuilder.buildWithScene(targetViewModel, "", false); + Optional optionalTargetFindField = this.findFieldInFormSchema(schema, parameter.getSourceElementField()); + + // 如果查找到目标 Field + if (optionalTargetFindField.isPresent()) { + GspElementDataType voFieldType = parameter.getGspViewModelElement().getMDataType(); + Field targetFindField = optionalTargetFindField.get(); + CustomField sourceField = this.getSourceField(parameter); + // 字段类型比较 + if (!sourceField.getType().get$type().equals(targetFindField.getType().get$type())) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s类型变更为" + ValidateConstants.Colon + "%4$s" + ValidateConstants.Comma + "而表单字段类型为" + ValidateConstants.Colon + "%5$s" + ValidateConstants.Comma + "实际应为" + ValidateConstants.Colon + "%6$s" + ValidateConstants.Comma + "请在表单%7$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concat("", voFieldType.name(), true), + StringConcatUtility.concat("", sourceField.get$type(), true), + StringConcatUtility.concat("", targetFindField.get$type(), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + + // 复杂类型更换 例如 从人员 UDT 更改为 部门 UDT + if (targetFindField instanceof ComplexField) { + ComplexField targetComplexField = (ComplexField) targetFindField; + + if (!sourceField.getType().getName().equals(targetComplexField.getType().getName())) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s的引用关系由" + ValidateConstants.Colon + "%4$s调整为" + ValidateConstants.Colon + "%5$s" + ValidateConstants.Comma + "请在表单%6$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concat("", sourceField.getType().getName(), true), + StringConcatUtility.concat("", targetComplexField.getType().getName(), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + } + + } + return warningValidateResult; + } + + private Optional findFieldInFormSchema(Schema schema, SourceElementField sourceElementField) { + CustomEntity sourceEntity = sourceElementField.getSourceEntity(); + CustomField sourceField = sourceElementField.getSourceField(); + + Entity relateEntity = this.findEntityRescure(schema.getEntities(), sourceEntity); + if (relateEntity != null) { + // 获取对应的字段 + Optional optionalField = relateEntity.getType().getFields().stream().filter(t -> t.getId().equals(sourceField.getId()) && t.getCode().equals(sourceField.getCode())).findFirst(); + return optionalField; + } + return Optional.empty(); + } + + private Entity findEntityRescure(List entityList, CustomEntity sourceEntity) { + if (ListUtility.isEmpty(entityList)) { + return null; + } + Optional optionalEntity = entityList.stream().filter(t -> t.getId().equals(sourceEntity.getId()) && t.getCode().equals(sourceEntity.getCode())).findFirst(); + if (optionalEntity.isPresent()) { + return optionalEntity.get(); + } + + List hasChildrenEntities = entityList.stream().filter(t -> ListUtility.isNotEmpty(t.getType().getEntities())).collect(Collectors.toList()); + if (ListUtility.isNotEmpty(hasChildrenEntities)) { + for (Entity entity : hasChildrenEntities) { + Entity result = this.findEntityRescure(entity.getType().getEntities(), sourceEntity); + if (result != null) { + return result; + } + } + } + return null; + } + + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/ElementValidateParameter.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/ElementValidateParameter.java new file mode 100644 index 00000000..7dc07436 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/ElementValidateParameter.java @@ -0,0 +1,47 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.formserver.viewmodel.GspViewModelElement; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.relycheck.dependencygenerator.entity.SourceElementField; +import lombok.Data; + +/** + * element 验证参数 + * + * @author noah + * 2023/8/10 10:48 + */ +@Data +public class ElementValidateParameter { + /** + * 校验源字段 + */ + private SourceElementField sourceElementField; + /** + * 校验viewmodel 字段 + */ + private GspViewModelElement gspViewModelElement; + /** + * 校验 表单元数据 + */ + private GspMetadata formMetadata; + /** + * 校验 viewmodel 元数据 + */ + private GspMetadata viewModelMetadata; + + /** + * vo 元数据 name + */ + private String voMetadataName; + + /** + * 表单元数据 name + */ + private String formMetadataName; + + /** + * vo 关联实体 code + */ + private String entityCode; +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/EnumValueValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/EnumValueValidator.java new file mode 100644 index 00000000..28a77938 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/EnumValueValidator.java @@ -0,0 +1,59 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.cef.designtime.api.collection.GspEnumValueCollection; +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.common.serialize.SerializeUtility; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.elements.type.CustomEnumItem; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 枚举元素验证 + * + * @author noah + * 2023/8/10 16:56 + */ +public class EnumValueValidator extends BaseElementValidator { + @Override + public ValidateResult validate(ElementValidateParameter parameter) { + ValidateResult warningValidateResult = ValidateResultUtility.success(); + + GspEnumValueCollection voEnumValueCollection = parameter.getGspViewModelElement().getContainEnumValues(); + List fieldCustomEnumItemList = this.getSourceField(parameter).getType().getEnumValues(); + + // 必须是枚举类型比较对应的枚举值 + if (this.getSourceField(parameter).getType().get$type().equals("EnumType") && parameter.getGspViewModelElement().getObjectType().name().equals("Enum")) { +// if (voEnumValueCollection.size() != fieldCustomEnumItemList.size()) { +// return this.failureWithError(String.format("视图对象%1$s中子表%2$s更改了%3$s的枚举项。为使表单生效" + ValidateConstants.Comma + "请在表单%4$s的实体树中执行更新schema操作", +// StringConcatUtility.concatWithNamePrefix(voMetadataName, true), +// StringConcatUtility.concatWithCodePrefix(entityCode, true), +// StringConcatUtility.concatWithCodePrefix(field.getSourceField().getCode(), true), +// StringConcatUtility.concatWithNamePrefix(formMetadataName, true) +// )); +// } + + List customEnumItemList = voEnumValueCollection.stream().map(t -> { + CustomEnumItem customEnumItem = new CustomEnumItem(); + customEnumItem.setName(t.getName()); + customEnumItem.setValue(t.getValue()); + return customEnumItem; + }).collect(Collectors.toList()); + String serializedVoEnum = SerializeUtility.getInstance().serialize(customEnumItemList); + String serializedFieldEnum = SerializeUtility.getInstance().serialize(fieldCustomEnumItemList); + if (!serializedVoEnum.equals(serializedFieldEnum)) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s更改了%3$s的枚举项,其中视图对象中枚举项为:%5$s,表单字段枚举项为:%6$s。为使表单生效" + ValidateConstants.Comma + "请在表单%4$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true), + serializedVoEnum, serializedFieldEnum + )); + } + } + return warningValidateResult; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/LengthValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/LengthValidator.java new file mode 100644 index 00000000..3fe0b0aa --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/LengthValidator.java @@ -0,0 +1,45 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.relycheck.constant.NeedCheckLengthType; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +/** + * 长度校验 + * + * @author noah + * 2023/8/10 14:01 + */ +public class LengthValidator extends BaseElementValidator { + @Override + public ValidateResult validate(ElementValidateParameter parameter) { + ValidateResult warningValidateResult = ValidateResultUtility.success(); + if (NeedCheckLengthType.getInstance().contains(this.getSourceField(parameter).getType().get$type())) { + int voElementLength = parameter.getGspViewModelElement().getLength(); + int fieldLength = this.getSourceField(parameter).getType().getLength(); + if (voElementLength > fieldLength) { + warningValidateResult = ValidateResultUtility.failureWithWarning(String.format("视图对象%1$s中子表%2$s的字段%3$s长度增加为" + ValidateConstants.Colon + "%4$s" + ValidateConstants.Comma + "而表单对应字段长度为" + ValidateConstants.Colon + "%5$s。为同步表单控件长度属性" + ValidateConstants.Comma + "请在表单%6$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concat("", String.valueOf(voElementLength), true), + StringConcatUtility.concat("", String.valueOf(fieldLength), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + if (voElementLength < fieldLength) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s长度减小了为" + ValidateConstants.Colon + "%4$s" + ValidateConstants.Comma + "而表单对应字段长度为" + ValidateConstants.Colon + "%5$s。为同步表单控件长度属性" + ValidateConstants.Comma + "请在表单%6$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concat("", String.valueOf(voElementLength), true), + StringConcatUtility.concat("", String.valueOf(fieldLength), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + } + return warningValidateResult; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/MultiLanguageValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/MultiLanguageValidator.java new file mode 100644 index 00000000..c99d3c46 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/MultiLanguageValidator.java @@ -0,0 +1,38 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +/** + * 是否多语验证 + * @author noah + * 2023/8/10 16:35 + */ +public class MultiLanguageValidator extends BaseElementValidator { + @Override + public ValidateResult validate(ElementValidateParameter parameter) { + ValidateResult warningValidateResult = ValidateResultUtility.success(); + + boolean voElementIsMultiLanguage = parameter.getGspViewModelElement().getIsMultiLanguage(); + boolean fieldIsMultiLanguage = this.getSourceField(parameter).getMultiLanguage(); + if (voElementIsMultiLanguage && !fieldIsMultiLanguage) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s启用多语属性" + ValidateConstants.Comma + "而表单对应字段不是多语属性。若要使表单控件变更为多语控件" + ValidateConstants.Comma + "请在表单%4$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + if (!voElementIsMultiLanguage && fieldIsMultiLanguage) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s关闭多语属性" + ValidateConstants.Comma + "而表单对应字段仍是多语。若要同步变更表单控件" + ValidateConstants.Comma + "请在表单%4$s实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + return warningValidateResult; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/PrecisionValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/PrecisionValidator.java new file mode 100644 index 00000000..852460b7 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/PrecisionValidator.java @@ -0,0 +1,43 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.relycheck.constant.NeedCheckPrecisionType; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +/** + * @author noah + * 2023/8/10 14:01 + */ +public class PrecisionValidator extends BaseElementValidator { + @Override + public ValidateResult validate(ElementValidateParameter parameter) { + ValidateResult warningValidateResult = ValidateResultUtility.success(); + if (NeedCheckPrecisionType.getInstance().contains(this.getSourceField(parameter).getType().get$type())) { + int voElementPrecision = parameter.getGspViewModelElement().getPrecision(); + int fieldPrecision = this.getSourceField(parameter).getType().getPrecision(); + if (voElementPrecision > fieldPrecision) { + warningValidateResult = ValidateResultUtility.failureWithWarning(String.format("视图对象%1$s中子表%2$s的字段%3$s精度增加为" + ValidateConstants.Colon + "%4$s" + ValidateConstants.Comma + "而表单对应字段精度为" + ValidateConstants.Colon + "%5$s。为同步表单控件精度属性" + ValidateConstants.Comma + "请在表单%6$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concat("", String.valueOf(voElementPrecision), true), + StringConcatUtility.concat("", String.valueOf(fieldPrecision), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + if (voElementPrecision < fieldPrecision) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s精度减小为" + ValidateConstants.Colon + "%4$s" + ValidateConstants.Comma + "而表单对应字段精度为" + ValidateConstants.Colon + "%5$s。为同步表单控件精度属性" + ValidateConstants.Comma + "请在表单%6$s的实体树种执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concat("", String.valueOf(voElementPrecision), true), + StringConcatUtility.concat("", String.valueOf(fieldPrecision), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + } + return warningValidateResult; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/RequireValidator.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/RequireValidator.java new file mode 100644 index 00000000..a8ebcccc --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/dependencyvalidator/element/RequireValidator.java @@ -0,0 +1,38 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator.element; + +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; +import com.inspur.edp.web.relycheck.utility.StringConcatUtility; +import com.inspur.edp.web.relycheck.utility.ValidateResultUtility; + +/** + * 必填校验 + * + * @author noah + * 2023/8/10 14:00 + */ +public class RequireValidator extends BaseElementValidator { + @Override + public ValidateResult validate(ElementValidateParameter parameter) { + ValidateResult warningValidateResult = this.success(); + boolean voElementRequire = parameter.getGspViewModelElement().getIsRequire(); + boolean fieldRequire = this.getSourceField(parameter).getRequire(); + if (!voElementRequire && fieldRequire) { + warningValidateResult = ValidateResultUtility.failureWithWarning(String.format("视图对象%1$s中子表%2$s的字段%3$s由必填调整为非必填" + ValidateConstants.Comma + "而表单对应字段为必填。若要使表单生效" + ValidateConstants.Comma + "请在表单%4$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + if (voElementRequire && !fieldRequire) { + return ValidateResultUtility.failureWithError(String.format("视图对象%1$s中子表%2$s的字段%3$s启用必填属性" + ValidateConstants.Comma + "而表单对应字段为非必填。若要使表单控件生效" + ValidateConstants.Comma + "请在表单%4$s的实体树中执行更新schema操作", + StringConcatUtility.concatWithNamePrefix(this.getVoMetadataName(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getEntityCode(parameter), true), + StringConcatUtility.concatWithCodePrefix(this.getSourceFieldCode(parameter), true), + StringConcatUtility.concatWithNamePrefix(this.getFormMetadataName(parameter), true) + )); + } + return warningValidateResult; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/BaseField.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/BaseField.java new file mode 100644 index 00000000..6f4f0282 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/BaseField.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements; + +import com.inspur.edp.web.relycheck.elements.type.CustomBaseFieldType; + +/** + * 字段元素 + * + * @author noah + */ +public class BaseField { + + public BaseField() { + } + + public BaseField(String _$type) { + this.$type = _$type; + } + + private String Id; + + public final String getId() { + return Id; + } + + public final void setId(String value) { + Id = value; + } + + + private String OriginalId; + + public final String getOriginalId() { + return OriginalId; + } + + public final void setOriginalId(String value) { + OriginalId = value; + } + + + private String Code; + + public final String getCode() { + return Code; + } + + public final void setCode(String value) { + Code = value; + } + + + private String Name; + + public final String getName() { + return Name; + } + + public final void setName(String value) { + Name = value; + } + + + private String Label; + + public final String getLabel() { + return Label; + } + + public final void setLabel(String value) { + Label = value; + } + + + private String BindingField; + + public final String getBindingField() { + return BindingField; + } + + public final void setBindingField(String value) { + BindingField = value; + } + + + private CustomBaseFieldType Type; + + public final CustomBaseFieldType getType() { + return Type; + } + + public final void setType(CustomBaseFieldType value) { + Type = value; + } + + + private String Path; + + public final String getPath() { + return Path; + } + + public final void setPath(String value) { + Path = value; + } + + private String BindingPath; + + public final String getBindingPath() { + return BindingPath; + } + + public final void setBindingPath(String value) { + BindingPath = value; + } + + private String $type; + + public String get$type() { + return $type; + } + + public void set$type(String $type) { + this.$type = $type; + } + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomEntity.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomEntity.java new file mode 100644 index 00000000..4248105f --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomEntity.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements; + +import com.inspur.edp.web.relycheck.elements.type.CustomEntityTypeBase; + +/** + * 实体元素 + * @author noah + */ +public class CustomEntity { + /** + * 实体标识 + */ + private String Id; + + public final String getId() { + return Id; + } + + public final void setId(String value) { + Id = value; + } + + /** + * 实体编号 + */ + private String Code; + + public final String getCode() { + return Code; + } + + public final void setCode(String value) { + Code = value; + } + + /** + * 实体名称 + */ + private String Name; + + public final String getName() { + return Name; + } + + public final void setName(String value) { + Name = value; + } + + /** + * 实体标签,即别名 + */ + private String Label; + + public final String getLabel() { + return Label; + } + + public final void setLabel(String value) { + Label = value; + } + + /** + * 实体类型描述 + */ + private CustomEntityTypeBase Type; + + public final CustomEntityTypeBase getType() { + return Type; + } + + public final void setType(CustomEntityTypeBase value) { + Type = value; + } +} \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomField.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomField.java new file mode 100644 index 00000000..e9b1db4e --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomField.java @@ -0,0 +1,66 @@ +package com.inspur.edp.web.relycheck.elements; + + + +/** + * 增加此属性的目的 是因为反序列化需要到具体的子类,但鉴于反序列化到子类需要调整较多源代码 + * 因此将子类的属性复制到该类中,用于进行反序列化 + * @author noah + * 2023/8/3 14:35 + */ +public class CustomField extends BaseField { + + private String defaultValue; + + public final String getDefaultValue() { + return defaultValue; + } + + public final void setDefaultValue(String value) { + defaultValue = value; + } + + + private boolean require; + + public final boolean getRequire() { + return require; + } + + public final void setRequire(boolean value) { + require = value; + } + + + private boolean readonly; + + public final boolean getReadonly() { + return readonly; + } + + public final void setReadonly(boolean value) { + readonly = value; + } + + + private CustomFieldEditor editor ; + + public final CustomFieldEditor getEditor() { + return editor; + } + + public final void setEditor(CustomFieldEditor value) { + editor = value; + } + + + private boolean multiLanguage = false; + + public final boolean getMultiLanguage() { + return multiLanguage; + } + + public final void setMultiLanguage(boolean value) { + multiLanguage = value; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomFieldEditor.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomFieldEditor.java new file mode 100644 index 00000000..6cf7afb1 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomFieldEditor.java @@ -0,0 +1,124 @@ +package com.inspur.edp.web.relycheck.elements; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cdp.common.utils.json.JsonUtil; +import com.inspur.edp.web.relycheck.elements.editor.DataSource; +import com.inspur.edp.web.relycheck.elements.editor.FieldEditor; + +import java.io.IOException; +import java.util.HashMap; + +/** + * @author noah + * 2023/8/3 14:37 + */ +public class CustomFieldEditor extends FieldEditor { + protected CustomFieldEditor(String _$type) { + super(_$type); + } + + public CustomFieldEditor() { + super(""); + } + + private String format; + + public final String getFormat() { + return format; + } + + public final void setFormat(String value) { + format = value; + } + + private String helpId; + + public final String getHelpId() { + return helpId; + } + + public final void setHelpId(String value) { + helpId = value; + } + + private String uri; + + public final String getUri() { + return uri; + } + + public final void setUri(String value) { + uri = value; + } + + private String textField; + + public final String getTextField() { + return textField; + } + + public final void setTextField(String value) { + textField = value; + } + + private String valueField; + + public final String getValueField() { + return valueField; + } + + public final void setValueField(String value) { + valueField = value; + } + + private String displayType; + + public final String getDisplayType() { + return displayType; + } + + public final void setDisplayType(String value) { + displayType = value; + } + + private com.inspur.edp.web.relycheck.elements.editor.DataSource DataSource; + + public final DataSource getDataSource() { + return DataSource; + } + + public final void setDataSource(DataSource value) { + DataSource = value; + } + + private HashMap map; + + + @JsonProperty(value = "mapFields") + public final HashMap getMap() { + return map; + } + + public final void setMap(HashMap value) { + map = value; + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + private JsonNode options; + + public final JsonNode getOptions() { + return options; + } + + public final void setOptions(JsonNode options) { + this.options = options; + } +} + + diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomSchema.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomSchema.java new file mode 100644 index 00000000..bbf5c9cf --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomSchema.java @@ -0,0 +1,178 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 表单Schema元素 + * + * @author guozhiqi + */ +@Data +public class CustomSchema { + private String Id; + + public final String getId() { + return Id; + } + + public final void setId(String value) { + Id = value; + } + + private String Code; + + public final String getCode() { + return Code; + } + + public final void setCode(String value) { + Code = value; + } + + private String Name; + + public final String getName() { + return Name; + } + + public final void setName(String value) { + Name = value; + } + + private String SourceUri; + + public final String getSourceUri() { + return SourceUri; + } + + public final void setSourceUri(String value) { + SourceUri = value; + } + + private String SourceType; + + public final String getSourceType() { + return SourceType; + } + + public final void setSourceType(String value) { + SourceType = value; + } + + private String eapiId; + private String eapiCode; + private String eapiName; + private String eapiNameSpace; + private String voPath; + private String voNameSpace; + + public String getEapiId() { + return eapiId; + } + + public void setEapiId(String eapiId) { + this.eapiId = eapiId; + } + + public String getEapiCode() { + return eapiCode; + } + + public void setEapiCode(String eapiCode) { + this.eapiCode = eapiCode; + } + + public String getEapiName() { + return eapiName; + } + + public void setEapiName(String eapiName) { + this.eapiName = eapiName; + } + + public String getEapiNameSpace() { + return eapiNameSpace; + } + + public void setEapiNameSpace(String eapiNameSpace) { + this.eapiNameSpace = eapiNameSpace; + } + + public String getVoPath() { + return voPath; + } + + public void setVoPath(String voPath) { + this.voPath = voPath; + } + + public String getVoNameSpace() { + return voNameSpace; + } + + public void setVoNameSpace(String voNameSpace) { + this.voNameSpace = voNameSpace; + } + + private List Entities; + + public final List getEntities() { + if (this.Entities == null) { + this.Entities = new ArrayList<>(); + } + return Entities; + } + + public final void setEntities(List value) { + Entities = value; + } + + private List Variables; + + public final List getVariables() { + if (this.Variables == null) { + this.Variables = new ArrayList<>(); + } + return Variables; + } + + public final void setVariables(List value) { + Variables = value; + } + + @JsonProperty("extendProperties") + private Map ExtendProperties; + + public Map getExtendProperties() { + if (this.ExtendProperties == null) { + this.ExtendProperties = new HashMap<>(); + } + return ExtendProperties; + } + + public void setExtendProperties(Map extendProperties) { + ExtendProperties = extendProperties; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomVariable.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomVariable.java new file mode 100644 index 00000000..b3d6b8e4 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/CustomVariable.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements; + +/** + * 变量定义 + * @author noah + */ +public class CustomVariable { + private String Id; + + public final String getId() { + return Id; + } + + public final void setId(String value) { + Id = value; + } + + private String Code; + + public final String getCode() { + return Code; + } + + public final void setCode(String value) { + Code = value; + } + + private String Name; + + public final String getName() { + return Name; + } + + public final void setName(String value) { + Name = value; + } + + private String Type; + + public final String getType() { + return Type; + } + + public final void setType(String value) { + Type = value; + } +} \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/CheckBox.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/CheckBox.java new file mode 100644 index 00000000..6c478c74 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/CheckBox.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +/** + * checkbox 编辑器 + * @author noah + */ +public class CheckBox extends FieldEditor { + public CheckBox() { + super("CheckBox"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DataSource.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DataSource.java new file mode 100644 index 00000000..be852923 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DataSource.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +/** + * datasource 数据源实体配置 + * @author noah + */ +public class DataSource { + private String Uri; + + public final String getUri() { + return Uri; + } + + public final void setUri(String value) { + Uri = value; + } + + private String DisplayName; + + public final String getDisplayName() { + return DisplayName; + } + + public final void setDisplayName(String value) { + DisplayName = value; + } + + private String IdField; + + public final String getIdField() { + return IdField; + } + + public final void setIdField(String value) { + IdField = value; + } + + private String Type; + + public final String getType() { + return Type; + } + + public final void setType(String value) { + Type = value; + } +} \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DateBox.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DateBox.java new file mode 100644 index 00000000..e214f90a --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DateBox.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +/** + * datebox 实体 + * @author noah + */ +public class DateBox extends FieldEditor { + private String Format; + + public final String getFormat() { + return Format; + } + + public final void setFormat(String value) { + Format = value; + } + + public DateBox() { + super("DateBox"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DefaultEditor.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DefaultEditor.java new file mode 100644 index 00000000..ca9a41c1 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/DefaultEditor.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +/** + * 同步schema 默认editor + * @author noah + */ +public class DefaultEditor extends FieldEditor { + public DefaultEditor() { + super("DefaultEditor"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/EnumField.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/EnumField.java new file mode 100644 index 00000000..2906976a --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/EnumField.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +/** + * 枚举字段 + * @author noah + */ +public class EnumField extends FieldEditor { + + public EnumField() { + super("EnumField"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/FieldEditor.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/FieldEditor.java new file mode 100644 index 00000000..df5c2159 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/FieldEditor.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +/** + * 字段编辑器类型 + * @author noah + */ +public class FieldEditor { + private String $type; + + public String get$type() { + return $type; + } + + public void set$type(String $type) { + this.$type = $type; + } + + protected FieldEditor(String _$type) { + this.$type = _$type; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LanguageTextBox.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LanguageTextBox.java new file mode 100644 index 00000000..d4bac05b --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LanguageTextBox.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +public class LanguageTextBox extends FieldEditor { + public LanguageTextBox() { + super("LanguageTextBox"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LookupEdit.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LookupEdit.java new file mode 100644 index 00000000..c9dfdb1a --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/LookupEdit.java @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.inspur.edp.cdp.common.utils.json.JsonUtil; + +import java.io.IOException; +import java.util.HashMap; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class LookupEdit extends FieldEditor { + private String HelpId; + + public final String getHelpId() { + return HelpId; + } + + public final void setHelpId(String value) { + HelpId = value; + } + + private String Uri; + + public final String getUri() { + return Uri; + } + + public final void setUri(String value) { + Uri = value; + } + + private String TextField; + + public final String getTextField() { + return TextField; + } + + public final void setTextField(String value) { + TextField = value; + } + + private String ValueField; + + public final String getValueField() { + return ValueField; + } + + public final void setValueField(String value) { + ValueField = value; + } + + private String DisplayType; + + public final String getDisplayType() { + return DisplayType; + } + + public final void setDisplayType(String value) { + DisplayType = value; + } + + private com.inspur.edp.web.relycheck.elements.editor.DataSource DataSource; + + public final com.inspur.edp.web.relycheck.elements.editor.DataSource getDataSource() { + return DataSource; + } + + public final void setDataSource(com.inspur.edp.web.relycheck.elements.editor.DataSource value) { + DataSource = value; + } + + private HashMap Map; + + @JsonSerialize(using = MapFieldsSerializer.class) + @JsonProperty(value = "mapFields") + public final HashMap getMap() { + return Map; + } + + public final void setMap(HashMap value) { + Map = value; + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + private JsonNode options; + + public final JsonNode getOptions() { + return options; + } + + public final void setOptions(JsonNode options) { + this.options = options; + } + + public LookupEdit() { + super("LookupEdit"); + } +} + +class MapFieldsSerializer extends JsonSerializer> { + + @Override + public void serialize(HashMap map, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + String mapString = JsonUtil.toJson(map); + jsonGenerator.writeString(mapString); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/MultiTextBox.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/MultiTextBox.java new file mode 100644 index 00000000..ddb09815 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/MultiTextBox.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +public class MultiTextBox extends FieldEditor { + public MultiTextBox() { + super("MultiTextBox"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/NumericBox.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/NumericBox.java new file mode 100644 index 00000000..14c3d06a --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/NumericBox.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +public class NumericBox extends FieldEditor { + public NumericBox() { + super("NumericBox"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/RadioGroup.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/RadioGroup.java new file mode 100644 index 00000000..4fdfb509 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/RadioGroup.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +public class RadioGroup extends FieldEditor { + public RadioGroup() { + super("RadioGroup"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/SwitchField.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/SwitchField.java new file mode 100644 index 00000000..0a64b85c --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/SwitchField.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +public class SwitchField extends FieldEditor { + public SwitchField() { + super("SwitchField"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/TextBox.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/TextBox.java new file mode 100644 index 00000000..ce696b9e --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/editor/TextBox.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.editor; + +public class TextBox extends FieldEditor { + + public TextBox() { + super("TextBox"); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/BaseFieldType.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/BaseFieldType.java new file mode 100644 index 00000000..1aac0ab2 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/BaseFieldType.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.type; + +/** + * 字段类型 + * @author noah + */ +public class BaseFieldType { + private String $type; + + public String get$type() { + return $type; + } + + public void set$type(String $type) { + this.$type = $type; + } + + + public BaseFieldType() { + + } + public BaseFieldType(String _$type) { + this.$type = _$type; + } + + private String Name; + + public String getName() { + return Name; + } + + public void setName(String value) { + Name = value; + } + + private String DisplayName; + + public String getDisplayName() { + return DisplayName; + } + + public void setDisplayName(String value) { + DisplayName = value; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomBaseFieldType.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomBaseFieldType.java new file mode 100644 index 00000000..eb77d847 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomBaseFieldType.java @@ -0,0 +1,77 @@ +package com.inspur.edp.web.relycheck.elements.type; + +import com.inspur.edp.web.relycheck.elements.CustomField; +import com.inspur.edp.web.relycheck.elements.CustomEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author noah + * 2023/8/4 16:56 + */ +public class CustomBaseFieldType extends BaseFieldType { + + + private int Length; + + public final int getLength() { + return Length; + } + + public final void setLength(int value) { + Length = value; + } + + private int Precision; + + public final int getPrecision() { + return Precision; + } + + public final void setPrecision(int value) { + Precision = value; + } + + private String Primary; + + public final String getPrimary() { + return Primary; + } + + public final void setPrimary(String value) { + Primary = value; + } + + private List Fields = new ArrayList<>(); + + public final List getFields() { + return Fields; + } + + public final void setFields(List value) { + Fields = value; + } + + private List Entities = new ArrayList<>(); + + public final List getEntities() { + return Entities; + } + + public final void setEntities(List value) { + Entities = value; + } + + private ArrayList EnumValues = new ArrayList<>(); + + public final ArrayList getEnumValues() { + return EnumValues; + } + + public final void setEnumValues(ArrayList value) { + EnumValues = value; + } + + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEntityTypeBase.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEntityTypeBase.java new file mode 100644 index 00000000..b0d787e5 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEntityTypeBase.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.type; + +import com.inspur.edp.web.relycheck.elements.CustomField; +import com.inspur.edp.web.relycheck.elements.CustomEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * 实体类型 + * @author noah + */ +public class CustomEntityTypeBase extends BaseFieldType { + + public CustomEntityTypeBase() { + super("EntityType"); + } + + private String Primary; + + public final String getPrimary() { + return Primary; + } + + public final void setPrimary(String value) { + Primary = value; + } + + private List Fields = new ArrayList<>(); + + public final List getFields() { + return Fields; + } + + public final void setFields(List value) { + Fields = value; + } + + private List Entities = new ArrayList<>(); + + public final List getEntities() { + return Entities; + } + + public final void setEntities(List value) { + Entities = value; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEnumItem.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEnumItem.java new file mode 100644 index 00000000..30ad3ff7 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/elements/type/CustomEnumItem.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.inspur.edp.web.relycheck.elements.type; + +/** + * 枚举项定义 + * @author noah + */ +public class CustomEnumItem { + + private String Value; + + public final String getValue() { + return Value; + } + + public final void setValue(String value) { + Value = value; + } + + private String Name; + + public final String getName() { + return Name; + } + + public final void setName(String value) { + Name = value; + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/BaseMetadataElementService.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/BaseMetadataElementService.java new file mode 100644 index 00000000..ad6dcd81 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/BaseMetadataElementService.java @@ -0,0 +1,74 @@ +package com.inspur.edp.web.relycheck.service; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataDependencyDetail; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElementDependencyDetail; +import com.inspur.edp.web.common.customexception.WebCustomException; +import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.serialize.SerializeUtility; +import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; +import com.inspur.edp.web.formmetadata.metadata.FormMetadataContentService; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.relycheck.dependencygenerator.SchemaEntityDependencyGenerator; +import com.inspur.edp.web.relycheck.elements.CustomSchema; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 元数据检测 service base + */ +public abstract class BaseMetadataElementService implements ApplicationContextAware { + protected ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + + /** + * 获取表单元数据对应的依赖项 + * + * @param gspMetadata + * @return + */ + protected List getMetadataDependencyDetails(GspMetadata gspMetadata) { + if (gspMetadata == null) { + throw new WebCustomException("元数据一致性检查,getMetadataDependencyDetails 传递的gspMetadata参数为空"); + } + if (gspMetadata.getContent() instanceof FormMetadataContent) { + List dependencyDetailList = new ArrayList<>(); + + // 如果是表单元数据 那么提取其中的schema节点 + FormMetadataContent formMetadataContent = (FormMetadataContent) gspMetadata.getContent(); + FormDOM formDOM = FormMetadataContentService.getInstance().getFormContent(formMetadataContent); + List> schemsList = formDOM.getModule().getSchemas(); + schemsList.forEach(schemaItem -> { + String voMetadataId = (String) schemaItem.get("id"); + if (StringUtility.isNotNullOrEmpty(voMetadataId)) { + SchemaEntityDependencyGenerator schemaEntityDependencyGenerator = this.applicationContext.getBean(SchemaEntityDependencyGenerator.class); + + MetadataDependencyDetail schemaDependencyDetail = new MetadataDependencyDetail(); + schemaDependencyDetail.setMetadataId(voMetadataId); + + String serializedSchema = SerializeUtility.getInstance().serialize(schemaItem); + CustomSchema deserializedCustomSchema = SerializeUtility.getInstance().deserialize(serializedSchema, CustomSchema.class); + // 当前共检查两类 + List schemaEntityDependencyDetailList = schemaEntityDependencyGenerator.generateDependencyDetailWithSchemaEntityList(deserializedCustomSchema.getEntities(), formDOM, gspMetadata); + schemaDependencyDetail.setElementReferences(schemaEntityDependencyDetailList); + + dependencyDetailList.add(schemaDependencyDetail); + } else { + WebLogger.Instance.info(String.format("表单元数据依赖 VO metadataId 为空,对应表单元数据 id:%s,对应 namespace:%s", gspMetadata.getHeader().getId(), gspMetadata.getHeader().getNameSpace())); + } + }); + return dependencyDetailList; + } + return new ArrayList<>(0); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/FormMetadataElementService.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/FormMetadataElementService.java new file mode 100644 index 00000000..d57b54df --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/FormMetadataElementService.java @@ -0,0 +1,38 @@ +package com.inspur.edp.web.relycheck.service; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.MetadataElementService; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataDependencyDetail; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElement; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElementLocator; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 表单元数据依赖检查 + * 注册为bean,通过外部统一调用 + * + * @author noah + */ +public class FormMetadataElementService extends BaseMetadataElementService implements MetadataElementService { + + + @Override + public String getMetadataType() { + return "Form"; + } + + + @Override + public Map getMetadataElement(GspMetadata gspMetadata, Set set) { + return null; + } + + @Override + public List getMetadataDependencyDetails(GspMetadata gspMetadata) { + return super.getMetadataDependencyDetails(gspMetadata); + } + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/MobileFormMetadataElementService.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/MobileFormMetadataElementService.java new file mode 100644 index 00000000..882f8cc1 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/service/MobileFormMetadataElementService.java @@ -0,0 +1,35 @@ +package com.inspur.edp.web.relycheck.service; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.spi.MetadataElementService; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataDependencyDetail; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElement; +import com.inspur.edp.lcm.metadata.spi.entity.MetadataElementLocator; + +import java.util.*; + +/** + * 移动表单元数据依赖检查 + * 注册为bean 统一外部统一进行调用 + * + * @author noah + */ +public class MobileFormMetadataElementService extends BaseMetadataElementService implements MetadataElementService { + + @Override + public String getMetadataType() { + return "MobileForm"; + } + + + @Override + public Map getMetadataElement(GspMetadata gspMetadata, Set set) { + return null; + } + + @Override + public List getMetadataDependencyDetails(GspMetadata gspMetadata) { + return super.getMetadataDependencyDetails(gspMetadata); + } + +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/StringConcatUtility.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/StringConcatUtility.java new file mode 100644 index 00000000..3a6296cb --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/StringConcatUtility.java @@ -0,0 +1,46 @@ +package com.inspur.edp.web.relycheck.utility; + +import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.relycheck.constant.ValidateConstants; + +/** + * @author noah + * 2023/8/7 17:30 + */ +public class StringConcatUtility { + + /** + * 合并前缀 后缀及其对应的是否包含边界 + * @param prefix + * @param suffix + * @param includeBorder + * @return + */ + public static String concat(String prefix, String suffix, boolean includeBorder) { + String result = !StringUtility.isNullOrEmpty(prefix) ? (prefix + ":" + suffix) : suffix; + if (includeBorder) { + return "【" + result + "】"; + } + return result; + } + + /** + * 快捷方式 合并 名称前缀 + * @param suffix + * @param includeBorder + * @return + */ + public static String concatWithNamePrefix(String suffix, boolean includeBorder) { + return concat(ValidateConstants.Name, suffix, includeBorder); + } + + /** + * 快捷方式 合并编号前缀 + * @param suffix + * @param includeBorder + * @return + */ + public static String concatWithCodePrefix(String suffix, boolean includeBorder) { + return concat(ValidateConstants.Code, suffix, includeBorder); + } +} diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/ValidateResultUtility.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/ValidateResultUtility.java new file mode 100644 index 00000000..4b254a80 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/utility/ValidateResultUtility.java @@ -0,0 +1,76 @@ +package com.inspur.edp.web.relycheck.utility; + +import com.inspur.edp.lcm.metadata.spi.entity.ValidateResult; +import com.inspur.edp.lcm.metadata.spi.entity.ValidationLevelEnum; + +/** + * 校验返回值信息构造 + * + * @author noah + * 2023/8/10 16:13 + */ +public class ValidateResultUtility { + /** + * 定义成功的返回结果 + * + * @return + */ + public static ValidateResult success() { + ValidateResult validateResult = new ValidateResult(); + validateResult.setValid(true); + return validateResult; + } + + /** + * 定义失败的返回结果 + * 默认级别为error + * + * @param message + * @return + */ + public static ValidateResult failureWithError(String message) { + return failure(message, ValidationLevelEnum.ERROR); + } + + /** + * 校验提示信息 + * 校验级别为warning + * + * @param message + * @return + */ + public static ValidateResult failureWithWarning(String message) { + return failure(message, ValidationLevelEnum.WARNING); + } + + + /** + * 传递校验级别 + * + * @param message + * @param validationLevel + * @return + */ + public static ValidateResult failure(String message, ValidationLevelEnum validationLevel) { + ValidateResult validateResult = new ValidateResult(); + validateResult.setValid(false); + validateResult.setMessage(message); + validateResult.setLevel(validationLevel); + return validateResult; + } + + /** + * 判断校验结果是否应该继续进行验证 + * @param validateResult + * @return + */ + public static boolean canContinute(ValidateResult validateResult) { + if (validateResult == null) { + return true; + } + if (!validateResult.isValid() && validateResult.getLevel() == ValidationLevelEnum.ERROR) { + return false; + } + return true; + } +} diff --git a/web-formmetadata-relycheck/src/main/resources/META-INF/spring.factories b/web-formmetadata-relycheck/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..258c71c7 --- /dev/null +++ b/web-formmetadata-relycheck/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.inspur.edp.web.relycheck.config.RelyCheckConfig \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/CustomApplication.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/CustomApplication.java new file mode 100644 index 00000000..d4223599 --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/CustomApplication.java @@ -0,0 +1,25 @@ +package com.inspur.edp.web.relycheck.custom; + +import org.junit.Test; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ConfigurableApplicationContext; + +/** + * @author noah + * 2023/8/7 09:04 + */ +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) +public class CustomApplication { + @Test + public void test() { + ConfigurableApplicationContext context = SpringApplication.run(CustomApplication.class); + TestBean testBean = context.getBean(MyConfig.class).testBean(); + TestBean testBean1 = context.getBean(TestBean.class); + System.out.println(testBean); + System.out.println(testBean1); + + context.close(); + } +} diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/MyConfig.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/MyConfig.java new file mode 100644 index 00000000..a9e051b6 --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/MyConfig.java @@ -0,0 +1,16 @@ +package com.inspur.edp.web.relycheck.custom; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author noah + * 2023/8/7 09:03 + */ +@Configuration +public class MyConfig { + @Bean + public TestBean testBean() { + return new TestBean(); + } +} diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/TestBean.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/TestBean.java new file mode 100644 index 00000000..6dd37173 --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/custom/TestBean.java @@ -0,0 +1,13 @@ +package com.inspur.edp.web.relycheck.custom; + +import lombok.Data; + +/** + * @author noah + * 2023/8/7 09:03 + */ +@Data +public class TestBean { + private String name; + +} diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidatorTest.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidatorTest.java new file mode 100644 index 00000000..b9fae073 --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoElementValidatorTest.java @@ -0,0 +1,40 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator; + +import com.inspur.edp.web.relycheck.config.RelyCheckConfig; +import org.junit.Test; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.ConfigurableEnvironment; + +import javax.annotation.Resource; + +import static org.junit.Assert.*; + +/** + * @author noah + * 2023/7/31 16:50 + */ +@SpringBootTest +public class VoElementValidatorTest implements ApplicationContextAware { + + private ApplicationContext context; + + @Autowired + private VoElementValidator voElementValidator; + + @Test + public void test() { + System.out.println(this.voElementValidator); + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.context = applicationContext; + } +} \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidatorTest.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidatorTest.java new file mode 100644 index 00000000..0c5594ab --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/dependencyvalidator/VoEntityValidatorTest.java @@ -0,0 +1,18 @@ +package com.inspur.edp.web.relycheck.dependencyvalidator; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * @author noah + * 2023/8/8 10:57 + */ +public class VoEntityValidatorTest { + + @Test + public void testFormat(){ + String result=String.format("Noah name is %1$s %2$s",55,66); + System.out.println(result); + } +} \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/elements/SchemaTest.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/elements/SchemaTest.java new file mode 100644 index 00000000..97b193c3 --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/elements/SchemaTest.java @@ -0,0 +1,21 @@ +package com.inspur.edp.web.relycheck.elements; + +import com.inspur.edp.web.common.serialize.SerializeUtility; +import org.junit.Test; + +/** + * @author noah + * 2023/8/4 16:23 + */ +public class SchemaTest { + @Test + public void test() { + CustomSchema customSchema = new CustomSchema(); + customSchema.setCode("fff"); + String jsonResult = SerializeUtility.getInstance().serialize(customSchema); + CustomSchema ss = SerializeUtility.getInstance().deserialize(jsonResult, CustomSchema.class); + + System.out.println(ss.getCode().equals("fff")); + } + +} \ No newline at end of file diff --git a/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/utility/StringConcatUtilityTest.java b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/utility/StringConcatUtilityTest.java new file mode 100644 index 00000000..e515eab2 --- /dev/null +++ b/web-formmetadata-relycheck/src/test/java/com/inspur/edp/web/relycheck/utility/StringConcatUtilityTest.java @@ -0,0 +1,43 @@ +package com.inspur.edp.web.relycheck.utility; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.Assert; +import org.junit.Test; + +public class StringConcatUtilityTest { + + @Test + public void testConcat() { + String prefix = "Hello"; + String suffix = "World"; + boolean includeBorder = true; + + String expected = "【Hello:World】"; + String actual = StringConcatUtility.concat(prefix, suffix, includeBorder); + + Assert.assertEquals(expected, actual); + } + + @Test + public void testConcatWithNamePrefix() { + String suffix = "John"; + boolean includeBorder = false; + + String expected = "名称:John"; + String actual = StringConcatUtility.concatWithNamePrefix(suffix, includeBorder); + + Assert.assertEquals(expected, actual); + } + + @Test + public void testConcatWithCodePrefix() { + String suffix = "123"; + boolean includeBorder = true; + + String expected = "【编号:123】"; + String actual = StringConcatUtility.concatWithCodePrefix(suffix, includeBorder); + + Assert.assertEquals(expected, actual); + } +} \ No newline at end of file diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithMobile.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithMobile.java index 89e7355c..0dc88290 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithMobile.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithMobile.java @@ -29,6 +29,7 @@ import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * description:移动表单调试Url地址 diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java index cce6f1f4..bd30f80a 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/metadata/FormMetadataManager.java @@ -20,6 +20,7 @@ import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.service.MetadataService; import com.inspur.edp.web.appconfig.api.entity.GspAppConfig; import com.inspur.edp.web.appconfig.core.service.GspAppConfigService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.utility.RandomUtility; @@ -117,11 +118,11 @@ public class FormMetadataManager { // 如果对应的表单元数据路径为绝对路径 那么需要进行调整 if (FileUtility.isAbsolute(pageRelativePath)) { - throw new RuntimeException("页面流文件(后缀为.pf)中包含绝对路径,依赖于单个环境路径配置,请调整为相对路径。具体操作:打开页面流文件,通过将表单从页面流中先移除再添加的方式,自动进行调整。 对应表单元数据为:" + page.getName() + ",当前绝对路径为:" + page.getRelativePath()); + throw new WebCustomException("页面流文件(后缀为.pf)中包含绝对路径,依赖于单个环境路径配置,请调整为相对路径。具体操作:打开页面流文件,通过将表单从页面流中先移除再添加的方式,自动进行调整。 对应表单元数据为:" + page.getName() + ",当前绝对路径为:" + page.getRelativePath()); } // 增加表单元数据的存在检测 if (!metadataService.isMetadataExist(pageRelativePath, page.getFileName())) { - throw new RuntimeException("页面流文件(后缀为.pf)中配置表单元数据路径不正确,请移除。对应表单元数据code:" + page.getCode() + ",name: " + page.getName()); + throw new WebCustomException("页面流文件(后缀为.pf)中配置表单元数据路径不正确,请移除。对应表单元数据code:" + page.getCode() + ",name: " + page.getName()); } GspMetadata currentRouteMetadata = metadataService.loadMetadata(page.getFileName(), pageRelativePath); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeConstants.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeConstants.java index f64865da..00f37752 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeConstants.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeConstants.java @@ -25,11 +25,11 @@ public class ZeroCodeConstants { /** * 零代码-代码部署路径--根路径 */ - public static String ZeroCodePath = "zerocode"; + public static final String ZeroCodePath = "zerocode"; /** * 零代码部署路径 相对于 server 的路径 */ - public static String ZeroCodeRelativePath="web/runtime/projects"; + public static final String ZeroCodeRelativePath="web/runtime/projects"; } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeParameterValidator.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeParameterValidator.java index 54c4e188..0461cd50 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeParameterValidator.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/zerocode/ZeroCodeParameterValidator.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.frontendproject.zerocode; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; public class ZeroCodeParameterValidator { @@ -26,25 +27,25 @@ public class ZeroCodeParameterValidator { */ public static void validate(ZeroCodeParameter zeroCodeParameter) { if (zeroCodeParameter == null) { - throw new RuntimeException("零代码编译入参不能为null"); + throw new WebCustomException("零代码编译入参不能为null"); } if (StringUtility.isNullOrEmpty(zeroCodeParameter.getAbsoluteBasePath())) { - throw new RuntimeException("零代码编译入参路径参数absoluteBasePath不能为空"); + throw new WebCustomException("零代码编译入参路径参数absoluteBasePath不能为空"); } if (StringUtility.isNullOrEmpty(zeroCodeParameter.getProjectName())) { - throw new RuntimeException("零代码编译入参工程名称projectName不能为空"); + throw new WebCustomException("零代码编译入参工程名称projectName不能为空"); } if (StringUtility.isNullOrEmpty(zeroCodeParameter.getRelyNodeModulesPath())) { - throw new RuntimeException("零代码编译入参依赖node_modules 路径不能为空"); + throw new WebCustomException("零代码编译入参依赖node_modules 路径不能为空"); } if (zeroCodeParameter.getFormParameters() == null || zeroCodeParameter.getFormParameters().size() == 0) { - throw new RuntimeException("零代码编译入参,至少包含一个表单参数"); + throw new WebCustomException("零代码编译入参,至少包含一个表单参数"); } if(StringUtility.isNullOrEmpty(zeroCodeParameter.getServiceUnitPath())){ - throw new RuntimeException("服务单元serviceUnitPath参数未配置"); + throw new WebCustomException("服务单元serviceUnitPath参数未配置"); } } -- Gitee From 75954abfa84fa34a5ebd42d09a6f6f703697cde6 Mon Sep 17 00:00:00 2001 From: volibear0110 Date: Tue, 21 Nov 2023 14:18:11 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9icodescan=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- toout.bat | 2 +- .../edp/web/common/encrypt/EncryptUtility.java | 2 +- .../inspur/edp/web/common/entity/TerminalType.java | 2 +- .../com/inspur/edp/web/common/io/FileUtility.java | 7 ++++--- .../edp/web/common/utility/CommandLineUtility.java | 6 +++--- .../metadataanalysis/CommandsAnalysis.java | 4 ++-- .../metadataanalysis/FormAnalysis.java | 3 ++- .../metadatamanager/ComponentMetadataManager.java | 3 ++- .../metadatamanager/EapiMetadataManager.java | 3 ++- .../StateMachineMetadataManager.java | 3 ++- .../replication/FormMetadataReplicator.java | 3 ++- .../replication/FormMetadataVoManager.java | 3 ++- .../service/FormRelateMetadataService.java | 3 ++- .../replication/FormMetadataReplicatorTest.java | 5 +++-- .../FormMetadataContentSerializerTest.java | 5 +++-- .../edp/web/relycheck/constant/RelyCheckType.java | 14 ++++++++++++-- 16 files changed, 44 insertions(+), 24 deletions(-) diff --git a/toout.bat b/toout.bat index 3212b408..fc96c05d 100644 --- a/toout.bat +++ b/toout.bat @@ -65,7 +65,7 @@ COPY .\web-npmpackage-core\target\web-npmpackage-core-%version%.jar .\out\server COPY .\web-formconfig-api\target\web-formconfig-api-%version%.jar .\out\server\platform\common\libs\web-formconfig-api.jar COPY .\web-formconfig-core\target\web-formconfig-core-%version%.jar .\out\server\platform\common\libs\web-formconfig-core.jar -COPY .\web-formmetadata-relycheck\target\web-formmetadata-relycheck-%version%.jar .\out\server\platform\dev\main\libs\web-formmetadata-relycheck.jar +COPY .\web-formmetadata-relycheck\target\web-formmetadata-relycheck-%version%.jar .\out\server\platform\common\libs\web-formmetadata-relycheck.jar ::pause ::pause diff --git a/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java index 1d6b95bd..706184cb 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/encrypt/EncryptUtility.java @@ -313,7 +313,7 @@ public class EncryptUtility { try { result = Base64.encode(res.getBytes(charset)); } catch (Exception e) { - throw new RuntimeException("编码失败:" + res, e); + throw new WebCustomException("编码失败:" + res, e); } return result; } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/entity/TerminalType.java b/web-common/src/main/java/com/inspur/edp/web/common/entity/TerminalType.java index a7514b23..6e64ac17 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/entity/TerminalType.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/entity/TerminalType.java @@ -435,7 +435,7 @@ public enum TerminalType { } else if (TerminalType.MOBILE.getMetadataType().equals(sourceMetadataType)) { return TerminalType.MOBILE; } else { - throw new RuntimeException("未知的数据类型转换成TerminalType,对应数据类型为:" + sourceMetadataType); + throw new WebCustomException("未知的数据类型转换成TerminalType,对应数据类型为:" + sourceMetadataType); } } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/io/FileUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/io/FileUtility.java index 02bd37dc..d57290c3 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/io/FileUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/io/FileUtility.java @@ -154,7 +154,7 @@ public class FileUtility { in.close(); } catch (IOException e) { WebLogger.Instance.error(e); - throw new RuntimeException("readAsString failed", e); + throw new WebCustomException("readAsString failed", e); } try { @@ -201,6 +201,7 @@ public class FileUtility { file.setWritable(true, false); file.setExecutable(true, false); } catch (Exception ex) { + WebLogger.Instance.info(ex.getMessage()); } } @@ -228,7 +229,7 @@ public class FileUtility { try { FileUtils.forceDelete(new File(directoryPath)); } catch (IOException e) { - throw new RuntimeException(e.getMessage(), e); + throw new WebCustomException(e.getMessage(), e); } } } @@ -774,7 +775,7 @@ public class FileUtility { String absolutePath = new File(currentPath).getAbsolutePath(); int index = absolutePath.indexOf(':'); if (index <= 0) { - throw new RuntimeException("Get Directory Root Failed When doing the GetPathVolume function"); + throw new WebCustomException("Get Directory Root Failed When doing the GetPathVolume function"); } absolutePathHead = absolutePath.substring(index - 1, 2); } else { diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java index f78b8111..c9b7b890 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandLineUtility.java @@ -74,12 +74,12 @@ public class CommandLineUtility { // 如果出现编译错误 那么通过异常的方式将错误信息进行抛出 // 增加自定义异常抛出 进行特定异常捕获 if (!StringUtility.isNullOrEmpty(errorMessage)) { - throw new RuntimeException("jit command executed failed!" + errorMessage); + throw new WebCustomException("jit command executed failed!" + errorMessage); } // 如果存在输出异常 那么不再继续执行 if (!StringUtility.isNullOrEmpty(errorSB.toString())) { - throw new RuntimeException("jit command executed failed!" + errorSB); + throw new WebCustomException("jit command executed failed!" + errorSB); } return errorMessage; @@ -163,7 +163,7 @@ public class CommandLineUtility { return "/bin/bash"; } - throw new RuntimeException("未识别的操作系统系统。请联系开发人员处理。"); + throw new WebCustomException("未识别的操作系统系统。请联系开发人员处理。"); } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java index 670e47c7..baf29f18 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/CommandsAnalysis.java @@ -344,7 +344,7 @@ public class CommandsAnalysis extends AbstractMetadataAnalysis { HashMap serviceRef = new HashMap<>(); WebComponentMetadataAndExtra component = v; if (component == null) { - throw new RuntimeException("不存在标识为'" + k + "'的服务构件"); + throw new WebCustomException("不存在标识为'" + k + "'的服务构件"); } WebComponentMetadata webComponentMetadata = component.getWebComponentMetadata(); @@ -371,7 +371,7 @@ public class CommandsAnalysis extends AbstractMetadataAnalysis { HashMap serviceRef = new HashMap<>(); WebComponentMetadataAndExtra component = (WebComponentMetadataAndExtra) entry.getValue(); if (component == null) { - throw new RuntimeException("不存在标识为'" + entry.getKey() + "'的服务构件"); + throw new WebCustomException("不存在标识为'" + entry.getKey() + "'的服务构件"); } WebComponentMetadata webComponentMetadata = component.getWebComponentMetadata(); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java index a2423444..14100112 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadataanalysis/FormAnalysis.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.formmetadata.metadataanalysis; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; @@ -122,7 +123,7 @@ public class FormAnalysis extends AbstractMetadataAnalysis { externalComponentPath), externalComponentCode.toLowerCase() + ".frm.json", formMetaDataStr); } else { - throw new RuntimeException("暂时无法处理frmJsonSavePath为空场景,请咨询开发人员该功能完成情况"); + throw new WebCustomException("暂时无法处理frmJsonSavePath为空场景,请咨询开发人员该功能完成情况"); } } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java index a5313f6b..74508558 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/ComponentMetadataManager.java @@ -18,6 +18,7 @@ package com.inspur.edp.web.formmetadata.metadatamanager; import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; @@ -45,7 +46,7 @@ public class ComponentMetadataManager extends BaseMetaDataManager { return getterMetadataInfo; }, null, this.getDefaultMetadataNotFoundFormatMessage(metadataManagerParameter.getId(), MetadataTypeEnum.Component)); if (webComponentMetadata == null) { - throw new RuntimeException("load webComponent metadata is null,the metaDataId is " + metadataManagerParameter.getId()); + throw new WebCustomException("load webComponent metadata is null,the metaDataId is " + metadataManagerParameter.getId()); } return (WebComponentMetadata) webComponentMetadata.getContent(); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java index 4f089044..6b29b2ab 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/EapiMetadataManager.java @@ -17,6 +17,7 @@ package com.inspur.edp.web.formmetadata.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; @@ -50,7 +51,7 @@ public class EapiMetadataManager extends BaseMetaDataManager { return getterMetadataInfo; }, null, this.getDefaultMetadataNotFoundFormatMessage(metadataManagerParameter.getId(), MetadataTypeEnum.Eapi)); if (eapiMetadata == null) { - throw new RuntimeException("load eapi metadata is null,the metaDataId is " + metadataManagerParameter.getId()); + throw new WebCustomException("load eapi metadata is null,the metaDataId is " + metadataManagerParameter.getId()); } return Optional.ofNullable(eapiMetadata); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java index aeaa413c..73c84ac8 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/metadatamanager/StateMachineMetadataManager.java @@ -17,6 +17,7 @@ package com.inspur.edp.web.formmetadata.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; @@ -44,7 +45,7 @@ public class StateMachineMetadataManager extends BaseMetaDataManager { return getterMetadataInfo; }, null, this.getDefaultMetadataNotFoundFormatMessage(metadataManagerParameter.getId(), MetadataTypeEnum.StateMachine)); if (stateMachineMetaData == null) { - throw new RuntimeException("load statemachine metadata is null,the metaDataId is " + metadataManagerParameter.getId()); + throw new WebCustomException("load statemachine metadata is null,the metaDataId is " + metadataManagerParameter.getId()); } return stateMachineMetaData; } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java index b952bdd0..1415f569 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicator.java @@ -21,6 +21,7 @@ import com.inspur.edp.i18n.resource.api.metadata.LinguisticResource; import com.inspur.edp.i18n.resource.api.metadata.ResourceItem; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; import com.inspur.edp.web.common.io.FileUtility; @@ -129,7 +130,7 @@ public class FormMetadataReplicator { MetadataUtility.getInstance().deleteMetadataWithDesign(replicateFormMetadata.getRelativePath(), replicateFormMetadata.getHeader().getFileName()); } - throw new RuntimeException(ex); + throw new WebCustomException("", ex); } return ResultCode.success(); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java index f6e5feee..2a06ff3e 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataVoManager.java @@ -21,6 +21,7 @@ import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; import com.inspur.edp.sgf.api.common.ResourceType; import com.inspur.edp.sgf.api.entity.SgMetadata; import com.inspur.edp.sgf.api.service.EapiMetadataDtService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -60,7 +61,7 @@ class FormMetadataVoManager { GspMetadata viewObjectMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (viewObjectMetadata == null) { - throw new RuntimeException("根据VoId获取对应元数据为空,对应voId为:" + viewObjectId); + throw new WebCustomException("根据VoId获取对应元数据为空,对应voId为:" + viewObjectId); } MetadataDto viewObjectMetadataDto = new MetadataDto(); viewObjectMetadataDto.setCode(viewObjectMetadata.getHeader().getCode().replace(sourceFormMetadata.getHeader().getCode(), targetMetadataDescription.getCode())); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java index 2c6bff49..8cc915cc 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormRelateMetadataService.java @@ -17,6 +17,7 @@ package com.inspur.edp.web.formmetadata.service; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -70,7 +71,7 @@ public class FormRelateMetadataService { try { combineCompletableFuture.get(); } catch (ExecutionException | InterruptedException e) { - throw new RuntimeException(e); + throw new WebCustomException("", e); } safeFormRelateMetadataInDesignResultList.addAll(formRelateMetadataInDesignResultDtoConcurrentHashMap.values()); diff --git a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicatorTest.java b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicatorTest.java index 48c78c7a..bbb07e70 100644 --- a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicatorTest.java +++ b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/replication/FormMetadataReplicatorTest.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.formmetadata.replication; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.io.FileUtility; import org.apache.commons.lang3.StringUtils; import org.junit.Test; @@ -72,9 +73,9 @@ public class FormMetadataReplicatorTest { int ii = 4 / 0; } catch (Exception ex) { source = "noah catch"; - throw new RuntimeException(ex); + throw new WebCustomException("", ex); } finally { source = "noah finally"; } } -} \ No newline at end of file +} diff --git a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java index a78c1128..6e4926f8 100644 --- a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java +++ b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/serializer/FormMetadataContentSerializerTest.java @@ -18,6 +18,7 @@ package com.inspur.edp.web.formmetadata.serializer; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; @@ -55,12 +56,12 @@ class FormMetadataContentSerializerTest { try { future2.get(); } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); + throw new WebCustomException("", e); } try { future3.get(); } catch (InterruptedException | ExecutionException e) { - throw new RuntimeException(e); + throw new WebCustomException("", e); } return null; }); diff --git a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java index 9cb8238f..c8faa87d 100644 --- a/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java +++ b/web-formmetadata-relycheck/src/main/java/com/inspur/edp/web/relycheck/constant/RelyCheckType.java @@ -17,8 +17,13 @@ public enum RelyCheckType { @Override public String getReferenceType() { - return "Schema-VoEntity"; + return "VoEntity"; } +// +// @Override +// public String getValidateRefType() { +// return "Schema-VoEntity"; +// } }, /** * schema field 字段类型 @@ -31,8 +36,13 @@ public enum RelyCheckType { @Override public String getReferenceType() { - return "Schema-VoElement"; + return "VoElement"; } + +// @Override +// public String getValidateRefType() { +// return "Schema-VoElement"; +// } }; /** -- Gitee From 974082bd9ac403296579c44e423e073e736068b6 Mon Sep 17 00:00:00 2001 From: liuyuan <739331171@qq.com> Date: Mon, 4 Dec 2023 18:10:38 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=8F=90=E5=8F=96jar=E5=8C=85=E5=91=BD?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- toout.sh | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 toout.sh diff --git a/toout.sh b/toout.sh new file mode 100755 index 00000000..f7c7caeb --- /dev/null +++ b/toout.sh @@ -0,0 +1,63 @@ +version=$(sed -n 's/.*\([^<]*\)<\/custom.version>.*/\1/p' pom.xml) +echo $version +rm -rf out + +mkdir -p out/server/platform/dev/main/libs +mkdir -p out/server/platform/common/libs +mkdir -p out/server/platform/runtime/bcc/libs +cp web-appconfig-core/target/web-appconfig-core-$version.jar ./out/server/platform/common/libs/web-appconfig-core.jar +cp web-appconfig-manager/target/web-appconfig-manager-$version.jar ./out/server/platform/dev/main/libs/web-appconfig-manager.jar +cp web-appconfig-webapi/target/web-appconfig-webapi-$version.jar ./out/server/platform/dev/main/libs/web-appconfig-webapi.jar +cp web-common/target/web-common-$version.jar ./out/server/platform/common/libs/web-common.jar + +cp runtime-api/target/web-jitengine-runtimebuild-api-$version.jar ./out/server/platform/common/libs/web-jitengine-runtimebuild-api.jar +cp runtime-core/target/web-jitengine-runtimebuild-core-$version.jar ./out/server/platform/common/libs/web-jitengine-runtimebuild-core.jar + +cp runtime-scriptcache/target/web-jitengine-runtimebuild-scriptcache-$version.jar ./out/server/platform/common/libs/web-jitengine-runtimebuild-scriptcache.jar +cp runtime-scriptcache-api/target/web-jitengine-runtimebuild-scriptcache-api-$version.jar ./out/server/platform/common/libs/web-jitengine-runtimebuild-scriptcache-api.jar + +cp web-appconfig-core/target/web-appconfig-core-$version.jar ./out/server/platform/common/libs/web-appconfig-core.jar +cp web-appconfig-api/target/web-appconfig-api-$version.jar ./out/server/platform/common/libs/web-appconfig-api.jar + +cp web-common/target/web-jitengine-common-$version.jar ./out/server/platform/common/libs/web-jitengine-common.jar + + +cp web-form-jitengine/target/web-jitengine-$version.jar ./out/server/platform/common/libs/web-jitengine.jar + +cp web-form-metadata/target/web-jitengine-formmetadata-$version.jar ./out/server/platform/common/libs/web-jitengine-formmetadata.jar +cp web-form-metadata-api/target/web-jitengine-formmetadata-api-$version.jar ./out/server/platform/common/libs/web-jitengine-formmetadata-api.jar + +cp web-frontendproject/target/web-jitengine-frontendproject-$version.jar ./out/server/platform/common/libs/web-jitengine-frontendproject.jar +cp web-frontendproject-api/target/web-jitengine-frontendproject-api-$version.jar ./out/server/platform/common/libs/web-jitengine-frontendproject-api.jar + +cp web-designschema/target/web-designschema-$version.jar ./out/server/platform/common/libs/web-designschema.jar +cp web-designschema-api/target/web-designschema-api-$version.jar ./out/server/platform/common/libs/web-designschema-api.jar + +cp web-dynamic-form-api/target/web-dynamicform-api-$version.jar ./out/server/platform/common/libs/web-dynamicform-api.jar +cp web-dynamic-form-core/target/web-dynamicform-core-$version.jar ./out/server/platform/common/libs/web-dynamicform-core.jar + +cp web-pageflow-metadata/target/web-pageflow-metadata-$version.jar ./out/server/platform/common/libs/web-pageflow-metadata.jar +cp web-statemachine/target/web-statemachine-metadata-$version.jar ./out/server/platform/common/libs/web-statemachine-metadata.jar + +cp web-sourcecode-metadata/target/web-sourcecode-metadata-$version.jar ./out/server/platform/common/libs/web-sourcecode-metadata.jar + +cp web-tsfile-api/target/web-tsfile-api-$version.jar ./out/server/platform/common/libs/web-tsfile-api.jar +cp web-tsfile-core/target/web-tsfile-core-$version.jar ./out/server/platform/common/libs/web-tsfile-core.jar + +cp jitengine-web-api/target/web-jitengine-web-api-$version.jar ./out/server/platform/common/libs/web-jitengine-web-api.jar +cp jitengine-web-core/target/web-jitengine-web-core-$version.jar ./out/server/platform/common/libs/web-jitengine-web-core.jar + +cp web-approval-format-api/target/web-approval-format-api-$version.jar ./out/server/platform/runtime/bcc/libs/web-approval-format-api.jar +cp web-approval-format-core/target/web-approval-format-core-$version.jar ./out/server/platform/runtime/bcc/libs/web-approval-format-core.jar +cp web-approval-format-rpc/target/web-approval-format-rpc-$version.jar ./out/server/platform/common/libs/web-approval-format-rpc.jar + +cp web-npmpackage-api/target/web-npmpackage-api-$version.jar ./out/server/platform/common/libs/web-npmpackage-api.jar +cp web-npmpackage-core/target/web-npmpackage-core-$version.jar ./out/server/platform/common/libs/web-npmpackage-core.jar + +cp web-npmpackage-api/target/web-npmpackage-api-$version.jar ./out/server/platform/common/libs/web-npmpackage-api.jar +cp web-npmpackage-core/target/web-npmpackage-core-$version.jar ./out/server/platform/common/libs/web-npmpackage-core.jar + +cp web-formconfig-api/target/web-formconfig-api-$version.jar ./out/server/platform/common/libs/web-formconfig-api.jar +cp web-formconfig-core/target/web-formconfig-core-$version.jar ./out/server/platform/common/libs/web-formconfig-core.jar + +cp web-formmetadata-relycheck/target/web-formmetadata-relycheck-$version.jar ./out/server/platform/dev/main/libs/web-formmetadata-relycheck.jar -- Gitee